Commit graph

619 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
2f84bee41c * src/tgbaalgos/neverclaim.hh (never_claim_reachable): Document
arguments.
* src/tgbaalgos/neverclaim.cc (never_claim_bfs::state_is_accepting):
New method.
(never_claim_bfs::get_state_label, never_claim_bfs::process_state):
Use it.
2004-04-21 20:08:36 +00:00
Alexandre Duret-Lutz
8d8af2e53a * src/ltlvisit/tostring.hh (to_spin_string): New function.
Convert a formula into a string parsable by Spin.
* src/tgbaalgos/neverclaim.hh, src/tgbaalgos/neverclaim.cc: New files.
Print the never claim in Spin format of a degeneralized TGBA.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/ltl2tgba.cc: Add the option -N which outputs the
never claim in Spin format of a degeneralized TGBA.
* src/tgbatest/ltl2neverclaim.test: New file.
* src/tgbatest/Makefile.am: Add it.
2004-04-21 15:18:07 +00:00
Alexandre Duret-Lutz
8ff4ca08ce * src/tgbaalgos/gtec/nsheap.cc (numbered_state_heap_hash_map::find):
Rewrite.
(numbered_state_heap_hash_map::index): New functions.
(numbered_state_heap_hash_map::filter): Delete.
* src/tgbaalgos/gtec/nsheap.hh
(numbered_state_heap_hash_map::index): New functions.
(numbered_state_heap_hash_map::filter): Delete.
* iface/gspn/eesrg.cc (numbered_state_heap_eesrg_semi::find,
numbered_state_heap_eesrg_semi::index): Rewrite.
(numbered_state_heap_eesrg_semi::filter): Remove.
* src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/gtec/ce.cc:
Adjust to use find() and index() instead of filter()..
2004-04-15 11:50:29 +00:00
Alexandre Duret-Lutz
be4f4e3370 * iface/gspn/eesrg.cc (connected_component_eesrg::has_state):
Free filtered states.
(emptiness_check_shy_eesrg): New class.
(emptiness_check_eesrg_shy): New function.
* iface/gspn/eesrg.hh (emptiness_check_eesrg_shy): New function.
* iface/gspn/ltlgspn.cc (main) [EESRG]: Handle -e3, -e4, and -e5.
* * src/tgbaalgos/gtec/gtec.hh, src/tgbaalgos/gtec/gtec.cc
(emptiness_check_shy::check): Move arc, num, succ_queue, and todo
as attributes.
(emptiness_check_shy::find_state): New virtual function.
2004-04-15 09:12:11 +00:00
Alexandre Duret-Lutz
a2cd1de267 * src/tgbaalgos/gtec/nsheap.hh (numbered_state_heap_factory,
numbered_state_heap_hash_map_factory): New class.
* src/tgbaalgos/gtec/nsheap.cc (numbered_state_heap_hash_map_factory):
Implement it.
* src/tgbaalgos/gtec/gtec.hh (emptiness_check::emptiness_check,
emptiness_check_shy::emptiness_check_shy): Take a
numbered_state_heap_factory argument.
* tgbaalgos/gtec/status.hh
(emptiness_check_status::emptiness_check_status): Likewise.
(emptiness_check_status::h): Make it a numbered_state_heap*.
* src/tgbaalgos/gtec/ce.cc, tgbaalgos/gtec/gtec.cc,
tgbaalgos/gtec/status.cc: Adjust uses of ecs_->h.
2004-04-14 11:30:41 +00:00
Alexandre Duret-Lutz
579c343e13 * src/tgbaalgos/emptinesscheck.hh, src/tgbaalgos/emptinesscheck.cc:
Delete and split into ...
* src/tgbaalgos/gtec/ce.cc, src/tgbaalgos/gtec/ce.hh,
src/tgbaalgos/gtec/explscc.cc, src/tgbaalgos/gtec/explscc.hh,
src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/gtec/gtec.hh,
src/tgbaalgos/gtec/nsheap.cc, src/tgbaalgos/gtec/nsheap.hh,
src/tgbaalgos/gtec/sccstack.cc, src/tgbaalgos/gtec/sccstack.hh,
src/tgbaalgos/gtec/status.cc, src/tgbaalgos/gtec/status.hh: ...
these new files.
* src/tgbaalgos/gtec/Makefile.am: New file.
* src/tgbaalgos/Makefile.am (SUBDIRS, libtgbaalgos_la_LIBADD):
Recurse into gtec and link gtec/libgtec.la.
(tgbaalgos_HEADERS, libtgbaalgos_la_SOURCES): Remove emptinesscheck.hh
and emptinesscheck.cc.
* configure.ac: Output src/tgbalagos/gtec/Makefile.
* iface/gspn/ltlgspn.cc, src/tgbatest/ltl2tgba.cc: Update includes.
* README: Update tree description.
2004-04-14 10:56:36 +00:00
Alexandre Duret-Lutz
d8f5bf608a * tgbaalgos/emptinesscheck.hh (numbered_state_heap_const_iterator,
numbered_state_heap, numbered_state_heap_hash_map): New classes.
* tgbaalgos/emptinesscheck.cc
(numbered_state_heap_hash_map_const_iterator): New class.
(numbered_state_heap_hash_map): Implement it.
2004-04-13 15:32:10 +00:00
Alexandre Duret-Lutz
7305dbb658 * src/tgbaalgos/emptinesscheck.hh
(explicit_connected_component_factory,
connected_component_hash_set_factory): New classes.
(counter_example::counter_example): Take an
explicit_connected_component_factory factory argument.
* src/tgbaalgos/emptinesscheck.cc: Adjust.
2004-04-13 13:57:59 +00:00
Alexandre Duret-Lutz
3e63c1a0ca * src/tgbaalgos/emptinesscheck.hh (explicit_connected_component):
New class.
(counter_example::connected_component_set): Rename as ...
(connected_component_hash_set): ... this, and inherit from
explicit_connected_component.
(counter_example::accepting_path, counter_example::complete_cycle):
2004-04-13 13:25:19 +00:00
Alexandre Duret-Lutz
1ea3c2ce5a * src/tgbaalgos/emptinesscheck.hh
(counter_example::connected_component_set::has_state): Return
a const state* and behave like h_filt.
* src/tgbaalgos/emptinesscheck.cc: Adjust.
2004-04-13 12:16:33 +00:00
Alexandre Duret-Lutz
b85e930232 * src/tgbaalgos/emptinesscheck.hh (emptiness_check::check2): Move
into ...
(emptiness_check_shy): This new subclass of emptiness_check.
* src/tgbaalgos/emptinesscheck.cc, src/tgbatest/ltl2tgba.cc,
iface/gspn/ltlgspn.cc: Adjust.
2004-04-13 11:44:42 +00:00
Alexandre Duret-Lutz
8a84cc6fb3 * src/tgbaalgo/semptinesscheck.hh (counter_example): New class,
extracted from ...
(emptiness_check): ... here.
* src/tgbaalgos/emptinesscheck.cc, src/tgbatest/ltl2tgba.cc,
iface/gspn/ltlgspn.cc: Adjust.
2004-04-13 09:39:30 +00:00
Alexandre Duret-Lutz
5eb2cf2cac * src/tgbaalgo/semptinesscheck.hh (emptiness_check_status): New class,
extracted from ...
(emptiness_check): ... here.
* src/tgbaalgos/emptinesscheck.cc: Adjust.
2004-04-13 08:53:10 +00:00
Alexandre Duret-Lutz
f8321633b7 * src/tgbaalgo/semptinesscheck.hh (scc_stack): New class, extracted
from ...
(emptiness_check): ... here.
(emptiness_check::root): Redefined as a scc_stack object.
* src/tgbaalgos/emptinesscheck.cc: Adjust.
2004-04-13 08:33:24 +00:00
Alexandre Duret-Lutz
7fd9459a63 * src/tgbaalgos/emptinesscheck.cc (emptiness_check::complete_cycle):
Do not visit a state more than once.  Report from Soheib Baarir.
2004-04-05 12:43:06 +00:00
Alexandre Duret-Lutz
fa6ac39cfb * src/tgbaalgos/ltl2tgba_fm.cc (translate_dict): Reuse Acc and Var
variables from a shared bdd_dict.  Register Next variables as
anonymous variables.
(translate_dict::translate_dict, translate_dict::~translate_dict,
translate_dict::register_proposition,
translate_dict::register_a_variable,
translate_dict::register_next_variable,
translate_dict::dump, translate_dict::var_to_formula,
ltl_to_tgba_fm): Adjust.
(translate_dict::dict): New attribute.
(translate_dict::a_map, translate_dict::a_formula_map,
translate_dict::var_map, translate_dict::var_formula_map): Delete.
2004-03-25 16:24:05 +00:00
Alexandre Duret-Lutz
aba2dc75d7 * src/tgbaalgos/emptinesscheck.cc (emptiness_check::accepting_path)
Fix handling of PATH when backtracking.  Report from Soheib Baarir.
2004-03-23 09:33:27 +00:00
Alexandre Duret-Lutz
249a114f29 * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm) <exprop>: Do not
blindly enumerate all combinations of atomic properties; initially
set all_props to the set of all possibly satisfiable combinations.
2004-03-08 17:24:17 +00:00
Alexandre Duret-Lutz
af27439d87 * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Fix example
in comment.  Skip false transitions, and do not compute
sub-formulae reachable only via false transitions.
2004-02-20 14:18:54 +00:00
Alexandre Duret-Lutz
0f7625b17d * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Revert
yesterday's change.  This optimization is NOT covered by exprop.
In fact it could be generalized.
2004-02-20 09:29:00 +00:00
Alexandre Duret-Lutz
3350ff7176 * src/tgba/tgbatba.cc (tgba_tba_proxy_succ_iterator::current_state):
Fix reference to Oddoux's thesis.
2004-02-19 15:46:30 +00:00
Alexandre Duret-Lutz
4e793ef418 * src/tgbaalgos/ltl2tgba_fm.hh (ltl_to_tgba_fm): Add the
symb_merge argument.
* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Likewise.
* src/tgbatest/ltl2tgba.cc (main): Rename -fx as -x, and add -y
to unset symb_merge.
* wrap/python/cgi/ltl2tgba.in: Remove the exprop version
of the FM translator, make exprop and symb_merge options.
2004-02-16 16:07:47 +00:00
Alexandre Duret-Lutz
5cb4048120 * src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor::visit) <unop::G>:
suppress the GFy optimisation introduced on 2003-11-26, it is
generalized by the identification of states with same symbolic
rewriting introduced on 2004-02-02.
2004-02-16 12:25:59 +00:00
Alexandre Duret-Lutz
07ba321e0a * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Take an exprop
argument.  Consider all possible combinations of propositions when
generating arcs.  Suggested by Jean-Michel Couvreur.
* src/tgbaalgos/ltl2tgba_fm.hh (ltl_to_tgba_fm): Adjust.
* src/tgbatest/ltl2tgba.cc: Honor -fx.
* src/tgbatest/spotlbtt.test: Exercise -fx.
* wrap/python/cgi/ltl2tgba.in: Support Couvreur/FM with exploded
properties.
2004-02-09 23:23:29 +00:00
Alexandre Duret-Lutz
7069d5406b This should help getting accurate statistics (on both the
formula automaton and the synchronized product) from LBTT.
Idea from Jean-Michel Couvreur.

* src/tgbaalgos/lbtt.cc (nonacceptant_lbtt_bfs): New class.
(nonacceptant_lbtt_reachable): New function.
* src/tgbaalgos/lbtt.hh (nonacceptant_lbtt_reachable): New
function.
* src/tgbatest/ltl2tgba.cc (main): Call nonacceptant_lbtt_reachable
if the -T option is used.
* src/tgbatest/spotlbtt.test: Setup the -T variants, disabled by
default.
2004-02-07 23:49:28 +00:00
Alexandre Duret-Lutz
0816a4505f * src/tgbaalgos/lbtt.hh: Typos. 2004-02-05 18:44:09 +00:00
Alexandre Duret-Lutz
834ce05235 * src/tgbalagos/stats.hh, src/tgbalagos/stats.cc: New files.
* src/tgbalagos/Makefile.am: Add them.
* wrap/python/spot.i: Include src/tgbalagos/dupexp.hh and
src/tgbalagos/stats.hh
2004-02-02 17:32:01 +00:00
Alexandre Duret-Lutz
d13c9c179b * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Identify states
with identical successors.  This optimizes the translation
of `a R (b R c)', for instance.
* src/tgbatest/ltl2tgba.test: Add two new tests.
2004-02-02 16:26:15 +00:00
Alexandre Duret-Lutz
872f7efbeb * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Identify states
with identical successors.  This optimizes the translation
of `a R (b R c)', for instance.
* src/tgbatest/ltl2tgba.test: Add two new tests.
2004-02-02 16:12:13 +00:00
Alexandre Duret-Lutz
0dd81f7d16 * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Identify states
with identical successors.  This optimizes the translation
of `a R (b R c)', for instance.
* src/tgbatest/ltl2tgba.test: Add two new tests.
2004-02-02 16:12:13 +00:00
Alexandre Duret-Lutz
1d72cdc86e * src/tgba/tgbaexplicit.cc (tgba_explicit::get_acceptance_condition):
Do not treat true and false specially.  Otherwise it breaks
translation of F(false).
* src/tgbatest/explprod.test, src/tgbatest/tripprod.test: Do not
use true as acceptance condition.

* src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor): Use Acc[b] as
acceptance condition for Fb, not Acc[Fb].

After this change, degeneralized automata are 40% smaller
2004-01-29 17:05:19 +00:00
Alexandre Duret-Lutz
bdbaa8356c * src/tgbaalgos/magic.cc (magic_search::~magic_search): Release
all iterators on the stack.
(magic_search::check): Release iterators that are popped off the
stack.
2004-01-26 12:46:39 +00:00
Alexandre Duret-Lutz
e434ccbec0 * src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Merge transitions
with same destination and acceptance conditions directly, without
calling a->merge_transition().  If one transitions goes to "True",
subtract its conditions from all other transitions; this optimizes
a U b.
2004-01-23 17:36:04 +00:00
Alexandre Duret-Lutz
e73ce85cfc * src/tgbaalgos/ltl2tgba_fm.cc: Typos in comments. 2004-01-23 13:01:43 +00:00
Alexandre Duret-Lutz
90d139db24 * src/tgbaalgos/emptinesscheck.hh (emptiness_check::check,
emptiness_check::check2): Document them.
2004-01-13 16:45:55 +00:00
Alexandre Duret-Lutz
93f1cc0d47 * src/tgbaalgos/emptinesscheck.cc (emptiness_check::check2):
New function, variant of emptiness_check::check().
* src/tgbaalgos/emptinesscheck.hh (emptiness_check::check2):
Likewise.
* src/tgbatest/emptchk.test, src/tgbatest/emptchke.test: Exercize -e2.
* src/tgbatest/ltl2tgba.cc: Support -e2, for emptiness_check::check2().
* iface/gspn/Makefile.am [WITH_GSPN_EESRG] (check_PROGRAMS):
Compile ltlgspn-eesrg instead of ltleesrg.
(ltleesrg_SOURCES, ltleesrg_LDADD): Replace by...
(ltlgspn_eesrg_SOURCES, ltlgspn_eesrg_LDADD, LIBGSPNESRG_LDFLAGS):
... these.
* iface/gspn/ltleesrg.cc: Delete.
* iface/gspn/ltlgspn.cc [EESRG]: Support EESRG conditionally.
Support -e2.
2004-01-09 17:22:09 +00:00
Alexandre Duret-Lutz
a1f990b125 * src/tgbaalgos/ltl2tgba_lacim.cc: Typo in comment. 2004-01-09 16:19:12 +00:00
Alexandre Duret-Lutz
036cfd30f8 * src/tgbaalgos/emptinesscheck.cc (emptiness_check::check): Typos
in comment.
2004-01-09 13:34:14 +00:00
Alexandre Duret-Lutz
f01267f36f * src/tgbaalgos/emptinesscheck.cc (emptiness_check::check): Typos
in comment.
2004-01-09 13:34:14 +00:00
Alexandre Duret-Lutz
7a54e04800 * src/tgbaalgos/emptinesscheck.cc (emptiness_check::print_stats):
New function.
* src/tgbaalgos/emptinesscheck.hh (emptiness_check::print_stats):
Likewise.
* iface/gspn/ltlgspn.cc (main) <Couvreur>: Call print_stats().
* iface/gspn/ltleesrg.cc (main): Likewise.
2004-01-09 10:56:56 +00:00
Alexandre Duret-Lutz
9297d6dd9f * iface/gspn/eesrg.cc (format_state): Do not rewrite n's,
just strip the last one.  Escaping must be done at output.
* iface/gspn/gspm.cc (format_state): Likewise.
* src/misc/escape.hh, src/misc/escape.cc: New files.
* src/misc/Makefile.am: Add them.
* src/tgba/bddprint.cc (bdd_format_accset): New function.
* src/tgba/bddprint.hh (bdd_format_accset): New function.
* src/tgbaalgos/dotty.cc (dotty_bfs::process_state):
Escape the state name using escape_str().
(dotty_bfs::process_link): Escape conditions and acceptance
conditions using escape_str().
* src/tgbaalgos/save.cc (save_bfs::start): Call print_acc().
(save_bfs::print_acc): New function extracted from save_bfs::start().
Escape each acceptance condition.
(save_bfs::process_state): Use escape_str() and print_acc()
2004-01-06 16:56:07 +00:00
Alexandre Duret-Lutz
8008deeddd * src/ltlvisit/tostring.cc
(to_string_visitor::visit(const atomic_prop*)): Quote propositions
that start with F, G, or X.
* src/ltltest/tostring.test: Test quoted propositions.
* src/tgbaalgos/save.cc (save_bfs::process_state): Escape " and +	characters in formulae.
* src/tgbatest/readsave.test: Test for this.
2004-01-06 15:45:00 +00:00
Alexandre Duret-Lutz
a7ab42e422 * src/tgbaalgos/reachiter.hh: Typos in comments. 2004-01-06 12:34:24 +00:00
Alexandre Duret-Lutz
24fec22e52 * src/tgbaalgos/emptinesscheck.cc (emptiness_check::complete_cycle):
Do not skip this computation if from == to but the period is empty.
2004-01-06 11:52:16 +00:00
Alexandre Duret-Lutz
791c389080 * src/tgbaalgos/reachiter.cc (tgba_reachable_iterator::run)
Reuse s->second to avoid a hash lookup.
* src/tgbaalgos/save.cc (save_bfs::process_state): Delete dest.
2004-01-05 17:27:39 +00:00
Alexandre Duret-Lutz
95f6f2a639 * src/tgbaalgos/reachiter.cc (tgba_reachable_iterator::run)
Reuse s->second to avoid a hash lookup.
* src/tgbaalgos/save.cc (save_bfs::process_state): Delete dest.
2004-01-05 16:36:23 +00:00
Alexandre Duret-Lutz
d07c66944e * src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh
(tgba_explicit::merge_transitions): New method.
* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Factorize all
variables (not just Next and A) when computing prime implicants,
and then call merge_transitions().
2003-12-03 13:29:11 +00:00
Alexandre Duret-Lutz
e341cc9ab6 * iface/gspn/eesrg.cc, iface/gspn/eesrg.hh, iface/gspn/gspn.cc,
iface/gspn/gspn.hh, src/tgba/bdddict.cc, src/tgba/bdddict.hh,
src/tgba/bddprint.hh, src/tgba/succiter.hh,
src/tgba/succiterconcrete.cc, src/tgba/succiterconcrete.hh,
src/tgba/tgba.hh, src/tgba/tgbabddconcrete.cc,
src/tgba/tgbabddconcrete.hh, src/tgba/tgbabddconcretefactory.cc,
src/tgba/tgbabddconcretefactory.hh, src/tgba/tgbabddcoredata.cc,
src/tgba/tgbabddcoredata.hh, src/tgba/tgbaexplicit.cc,
src/tgba/tgbaexplicit.hh, src/tgba/tgbaproduct.cc,
src/tgba/tgbaproduct.hh, src/tgba/tgbatba.cc, src/tgba/tgbatba.hh,
src/tgbaalgos/dotty.cc, src/tgbaalgos/dupexp.cc,
src/tgbaalgos/emptinesscheck.cc, src/tgbaalgos/emptinesscheck.hh,
src/tgbaalgos/lbtt.cc, src/tgbaalgos/lbtt.hh,
src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc,
src/tgbaalgos/save.cc, src/tgbatest/explicit.cc,
src/tgbatest/ltl2tgba.cc, src/tgbaparse/tgbaparse.yy,
wrap/python/tests/ltl2tgba.py:
Rewrite `accepting condition' as `acceptance condition'.
The symbols which have been renamed are:
tgba::all_accepting_conditions
tgba::neg_accepting_conditions
succ_iterator::current_accepting_conditions
bdd_dict::register_accepting_variable
bdd_dict::register_accepting_variables
bdd_dict::is_registered_accepting_variable
tgba_bdd_concrete_factory::declare_accepting_condition
tgba_bdd_core_data::accepting_conditions
tgba_bdd_core_data::all_accepting_conditions
tgba_explicit::declare_accepting_condition
tgba_explicit::complement_all_accepting_conditions
tgba_explicit::has_accepting_condition
tgba_explicit::get_accepting_condition
tgba_explicit::add_accepting_condition
tgba_explicit::all_accepting_conditions
tgba_explicit::neg_accepting_conditions
state_tba_proxy::acceptance_cond
accepting_cond_splitter
2003-11-28 16:34:42 +00:00
Alexandre Duret-Lutz
334ae6e757 * src/tgbaalgos/ltl2tgba_fm.cc (ltl_trad_visitor::visit) <G>:
Optimize translation of GFy.
2003-11-26 18:02:51 +00:00
Alexandre Duret-Lutz
7e81306d45 * src/tgba/bddprint.cc (print_accset_handler, bdd_print_accset): New
functions.
* src/tgba/bddprint.cc (bdd_print_accset): Declare it.
* src/tgbaalgos/dotty.cc (dotty_bfs::process_link): Use it.
* src/tgbatest/tgbaread.test, src/tgbatest/explicit.test: Adjust
expected output.
2003-11-26 17:34:09 +00:00