Commit graph

486 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
ef317685c8 Speed up the obligation test.
* src/tgbaalgos/minimize.cc (minimize_obligation): Do not
minimize aut_neg_f, complement min_aut_f instead.
* src/tgbaalgos/minimize.hh: Adjust description.
2011-01-05 14:15:15 +01:00
Alexandre Duret-Lutz
f06fc8ac77 * src/tgbaalgos/minimize.cc (minimize): Use the Loeding algorithm
to label transient states.
2011-01-05 12:34:37 +01:00
Alexandre Duret-Lutz
358d4bfdf2 Rewrite the check of WDBA state acceptance in minimize().
* src/tgbaalgos/powerset.hh (power_map): New structure, allowing
the caller to retrieve the set of original states corresponding to
the set in the deterministic automaton.
(power_set): Adjust prototype to take a power_map instead of the
acc_list.
* src/tgbaalgos/powerset.cc (power_set): Strip all code using
acc_list, and update power_set.
* src/tgbaalgos/minimize.cc (minimize): Rewrite, using an
algorithm similar to the one in the Dax paper to check whether
state of the minimized automaton should be accepting.
2011-01-05 08:02:39 +01:00
Alexandre Duret-Lutz
37a8d1dc92 Add trivial() and one_state_of() functions to scc_map.
* src/tgbaalgos/scc.hh, src/tgbaalgos/scc.cc (scc_map::trivial,
scc_map::one_state_of): Two new helper functions.
2011-01-05 08:02:39 +01:00
Alexandre Duret-Lutz
607676d701 * src/tgbaalgos/scc.hh: Typo in documentation. 2011-01-05 08:02:38 +01:00
Alexandre Duret-Lutz
907d173d6a Move the logic for detecting when the minimize() algorithm is
correct from ltl2tgba to the library.

* src/tgbaalgos/minimize.hh,
src/tgbaalgos/minimize.cc (minimize_obligation): New function.
* src/tgbatests/ltl2tgba.cc (main): Fix constness of automata,
and call minimize_obligation() for -R3b.
2011-01-05 08:02:38 +01:00
Alexandre Duret-Lutz
cc8dd49d06 Preliminary support for monitors.
* src/tgbatest/ltl2tgba.cc (-M): New option for building
deterministic monitors.
* src/tgbaalgos/minimize.cc (minimize): Take a monitor
argument and adjust the code.
* src/tgbaalgos/minimize.hh (minimize): Document it.
2011-01-05 08:02:38 +01:00
Alexandre Duret-Lutz
7d8a5310e4 Fix bugs in minimize().
* src/tgbaalgos/minimize.cc (init_sets, minimize): Fix memory
leaks and a usage of the wrong automaton.
* src/tgbatest/wdba.test: Try using -Rm with -R3 or -R3b, and with
valgrind.  This caught all the bugs fixed above.
2011-01-05 08:02:38 +01:00
Alexandre Duret-Lutz
72139fd760 Fix bugs in minimize(), caught by spotlbtt.test.
* src/tgbaalgos/minimize.cc (minimize): Don't add acceptance
conditions if the final set is empty.
* src/tgbaalgos/powerset.cc (tgba_powerset): Add the initial state
to acc_list if it is accepting.  Also do not compute an SCC build
map if we don't have to build acc_list.
2011-01-05 08:02:38 +01:00
Alexandre Duret-Lutz
f9e84ac245 Better resource handling in minimization.
* src/tgbatest/ltl2tgba.cc (main): Delete the minimized automaton.
* src/tgbaalgos/minimize.cc (minimize): Remove the call to
unregister_variable() at the end.  It was both
wrong (unregistering only the first variable) and useless ("delete
del_a" will unregister all these variables).  Use a map and a set
to keep track of free BDD variable and reuse them, otherwise the
algorithm would sometimes use more variables than allocated.
2011-01-05 08:02:38 +01:00
Alexandre Duret-Lutz
0af8d03261 Implement is_safety_automaton().
* src/tgbaalgos/safety.hh, src/tgbaalgos/safety.cc: New
files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatests/ltl2tgba.cc: Add option "-O".
* src/tgbaalgos/scc.hh: Update documentation.
* src/tgbatest/Makefile.am (TESTS): Add safety.test.
* src/tgbatest/safety.test: New file.
2011-01-05 08:02:38 +01:00
Felix Abecassis
99c1b607de * src/tgbaalgos/minimize.cc: Now use register_anonymous_variables. 2011-01-05 08:02:38 +01:00
Felix Abecassis
52090e4875 Small fixes.
* src/tgbatest/minimize.cc: Delete useless includes.
* src/tgbaalgos/minimize.cc: Delete useless includes,
fixed acceptance conditions.
* src/tgbatest/ltl2tgba.cc: Add -Rm option for minimization.
* src/tgba/tgbaexplicit.cc: Fixed typo.
2011-01-05 08:02:38 +01:00
Felix Abecassis
03e6dc4769 * src/tgbaalgos/minimize.cc, src/tgbaalgos/minimize.hh:
New files.  Algorithm to minimize an automaton using first the powerset
construction to determinize the input automaton, the automaton is then
minimized using the standard algorithm, using BDDs to check if states
are equivalent.
2011-01-05 08:02:37 +01:00
Felix Abecassis
e2e138f6e6 Modify the powerset algorithm to keep track of accepting states
from the initial automaton.

* src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh:
Added class tgba_explicit_number, a tgba_explicit where states are
labelled by integers.
* src/tgbaalgos/powerset.hh, src/tgbaalgos/powerset.cc:
When building the deterministic automaton, keep track of which states
were created from an accepting state in the initial automaton.
The states are added to the new optional parameter (if not 0),
acc_list.
Use tgba_explicit_number instead of tgba_explicit_string to build
the result.
* src/tgbaalgos/scc.cc (spot): Small fix.
Print everything on std::cout.
2011-01-05 08:02:37 +01:00
Alexandre Duret-Lutz
019c85dff6 Fix more errors reported by Clang.
* src/tgbaalgos/reducerun.hh (tgba_run): Predeclare as a struct
since this is what it is.
* src/tgbatest/randtgba.cc (main): Avoid using "i" with two
different type in the same loop.
2010-11-27 10:21:44 +01:00
Alexandre Duret-Lutz
0dca4be69d * src/tgbaalgos/scc.hh: Typos in the documentation. 2010-11-25 19:57:10 +01:00
Alexandre Duret-Lutz
0a2dbab413 * src/tgbaalgos/sccfilter.hh: Fix some typos in the documentation. 2010-11-24 22:00:57 +01:00
Alexandre Duret-Lutz
0fc0ea3166 Add support for W (weak until) and M (strong release) operators.
* src/ltlast/binop.cc, src/ltlast/binop.cc: Add support for
these new operators.
* src/ltlparse/ltlparse.yy, src/ltlparse/ltlscan.ll: Parse them.
* src/ltltest/reduccmp.test: Add new tests for W and M.
* src/ltlvisit/basicreduce.cc, src/ltlvisit/contain.cc,
src/ltlvisit/lunabbrev.cc, src/ltlvisit/nenoform.cc,
src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh,
src/ltlvisit/reduce.cc, src/ltlvisite/simpfg.cc,
src/ltlvisit/simpfg.hh, src/ltlvisit/syntimpl.cc,
src/ltlvisit/tostring.cc, src/tgba/formula2bdd.cc,
src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/ltl2taa.cc,
src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc:
Add support for W and M.
* src/tgbatest/ltl2neverclaim.test: Test never claim output
using LBTT, this is more thorough.  Also we cannot use -N
any more in the spotlbtt.test.
* src/tgbatests/ltl2tgba.cc: Define M and W for ELTL.
* src/tgbatest/ltl2neverclaim.test: Test W and M, and use
-DS instead of -N, because lbtt-translate does not want
to translate these operators for tools that masquerade as Spin.
2010-04-12 16:40:41 +02:00
Alexandre Duret-Lutz
27b419ce17 Keep acceptance conditions on transitions going to accepting SCCs
by default in scc_filter().

Doing so helps the degeneralization algorithm, because it will
have more opportunity to be in an accepting level when it reaches
the accepting SCCs.

* src/tgbaalgos/sccfilter.cc (filter_iter::filter_iter): Take a
remove_all_useless argument.
(filter_iter::process_link): Use the flag to decide whether to
filter acceptance conditions going to accepting SCCs.
(scc_filter): Take a remove_all_useless argument and pass it to
filter_iter.
* src/tgbaalgos/sccfilter.hh (filter_iter): Add the new argument
and document the function.
* src/tgbatest/tgbatests/ltl2tgba.cc (main): Add option use -R3
for remove_all_useless=false and add -R3f for
remove_all_useless=true.
* src/tgbatest/ltl2tgba.test: Show one case where -R3f makes
the degeneralization worse than -R3.
2010-03-06 00:24:16 +01:00
Alexandre Duret-Lutz
2183276008 Fix random_graph() not to generate dead states.
This is actually the third time I fix random_graph().  On
2007-02-06 I changed the function not to generated dead states,
but in a way that made it non-deterministic.  On 2010-01-20 I made
the function deterministic again, but it started to generate dead
states as a side effect.  This time, I'm making sure that dead
states won't come again with a test-case that we should have had
from the beginning.

* src/tgbaalgos/randomgraph.cc (random_graph): Add an extra
indirection array, state_randomizer[], so that we can reorder
states indices after a random selection without actually changing
the value of the indices used by unreachable_states and
nodes_to_process.
* src/tgbatest/randtgba.test: New file.
* src/tgbatest/Makefile.am: Add randtgba.test.
2010-02-23 17:20:59 +01:00
Alexandre Duret-Lutz
dac0502706 Touch up some doxygen comments and copyrights.
* eltlparse/public.hh, saba/saba.hh, tgba/tgbakvcomplement.hh,
tgba/tgbasafracomplement.hh, tgbaalgos/eltl2tgba_lacim.cc,
tgbaalgos/eltl2tgba_lacim.hh, tgbaalgos/ltl2taa.hh: Comment
changes.
2010-01-30 16:00:37 +01:00
Alexandre Duret-Lutz
a4766f2f82 Add SCC pruning options to the CGI script.
* wrap/python/cgi-bin/ltl2tgba.in: Add options to symbolically
prune unaccepting SCCs in LaCIM, and explicitely pruns unaccepting
SCCs in all algorithms.
* src/tgbaalgos/reductgba_sim.hh: Conceal most of the file to
SWIG.
* wrap/python/spot.i: Include reductgba_sim.hh.
2010-01-30 14:52:16 +01:00
Alexandre Duret-Lutz
dd71e37df2 Remove the theoretically bogus "containment" option of ltl2tgba_fm.
* src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_fm.hh:
Remove the containment option.
* src/tgbafromfile.cc, src/tgbafromfile.hh: Remove the
containment_ member.
* src/tgbatest/ltl2tgba.cc (syntax): Remove -c option for
FM algorithm, use it exclusively for TAA.
2010-01-30 12:32:01 +01:00
Alexandre Duret-Lutz
28289f95b5 * src/tgbaalgos/gtec/gtec.hh: Fix copyright. 2010-01-29 15:48:55 +01:00
Alexandre Duret-Lutz
f83e0d7a10 * src/tgbaalgos/ltl2tgba_fm.cc: More comments. 2010-01-29 15:48:22 +01:00
Guillaume Sadegh
3a974d61f0 Fix copyrights.
* bench/Makefile.am, bench/gspn-ssp/Makefile.am,
bench/gspn-ssp/defs.in, bench/scc-stats/Makefile.am,
bench/split-product/Makefile.am, configure.ac,
iface/Makefile.am, iface/gspn/Makefile.am, iface/gspn/ssp.hh,
iface/nips/Makefile.am, iface/nips/common.cc,
iface/nips/common.hh, iface/nips/dottynips.cc,
iface/nips/nips.cc, iface/nips/nips.hh, src/Makefile.am,
src/eltlparse/Makefile.am, src/eltlparse/eltlparse.yy,
src/eltlparse/eltlscan.ll, src/eltlparse/fmterror.cc,
src/eltlparse/parsedecl.hh, src/eltltest/Makefile.am,
src/eltltest/defs.in, src/eltltest/nfa.cc, src/evtgba/evtgba.hh,
src/evtgba/product.cc, src/evtgba/product.hh,
src/evtgbaalgos/tgba2evtgba.cc, src/evtgbaparse/Makefile.am,
src/evtgbaparse/evtgbaparse.yy, src/evtgbatest/defs.in,
src/evtgbatest/explicit.test, src/evtgbatest/ltl2evtgba.cc,
src/evtgbatest/ltl2evtgba.test, src/evtgbatest/product.cc,
src/evtgbatest/product.test, src/evtgbatest/readsave.cc,
src/evtgbatest/readsave.test, src/ltlast/atomic_prop.cc,
src/ltlast/atomic_prop.hh, src/ltlast/binop.cc,
src/ltlast/binop.hh, src/ltlast/constant.cc,
src/ltlast/constant.hh, src/ltlast/formula.cc,
src/ltlast/formula.hh, src/ltlast/formula_tree.cc,
src/ltlast/formula_tree.hh, src/ltlast/multop.cc,
src/ltlast/multop.hh, src/ltlast/nfa.cc, src/ltlast/nfa.hh,
src/ltlast/unop.cc, src/ltlast/unop.hh, src/ltlenv/declenv.cc,
src/ltlenv/declenv.hh, src/ltlenv/environment.hh,
src/ltlparse/Makefile.am, src/ltlparse/ltlparse.yy,
src/ltltest/Makefile.am, src/ltltest/defs.in,
src/ltltest/equals.cc, src/ltltest/equals.test,
src/ltltest/lunabbrev.test, src/ltltest/nenoform.test,
src/ltltest/parse.test, src/ltltest/parseerr.test,
src/ltltest/randltl.cc, src/ltltest/readltl.cc,
src/ltltest/reduccmp.test, src/ltltest/syntimpl.cc,
src/ltltest/syntimpl.test, src/ltltest/tostring.cc,
src/ltltest/tostring.test, src/ltltest/tunabbrev.test,
src/ltltest/tunenoform.test, src/ltlvisit/basicreduce.cc,
src/ltlvisit/clone.cc, src/ltlvisit/clone.hh,
src/ltlvisit/contain.cc, src/ltlvisit/destroy.cc,
src/ltlvisit/destroy.hh, src/ltlvisit/lunabbrev.cc,
src/ltlvisit/nenoform.cc, src/ltlvisit/randomltl.cc,
src/ltlvisit/reduce.cc, src/ltlvisit/syntimpl.cc,
src/ltlvisit/tostring.cc, src/misc/bddalloc.cc,
src/misc/bddop.cc, src/misc/bddop.hh, src/misc/freelist.hh,
src/misc/hash.hh, src/misc/minato.cc, src/misc/minato.hh,
src/misc/optionmap.cc, src/misc/timer.cc, src/misc/timer.hh,
src/saba/Makefile.am, src/saba/explicitstateconjunction.cc,
src/saba/explicitstateconjunction.hh, src/saba/saba.cc,
src/saba/saba.hh, src/saba/sabacomplementtgba.cc,
src/saba/sabacomplementtgba.hh, src/saba/sabastate.hh,
src/saba/sabasucciter.hh, src/sabaalgos/Makefile.am,
src/sabaalgos/sabadotty.cc, src/sabaalgos/sabadotty.hh,
src/sabaalgos/sabareachiter.cc, src/sabaalgos/sabareachiter.hh,
src/sabatest/Makefile.am, src/sabatest/defs.in,
src/sanity/Makefile.am, src/tgba/Makefile.am,
src/tgba/bdddict.cc, src/tgba/bddprint.cc,
src/tgba/formula2bdd.cc, src/tgba/state.hh,
src/tgba/succiterconcrete.cc, src/tgba/taatgba.hh,
src/tgba/tgba.hh, src/tgba/tgbabddconcretefactory.cc,
src/tgba/tgbabddconcretefactory.hh, src/tgba/tgbacomplement.cc,
src/tgba/tgbacomplement.hh, src/tgba/tgbaexplicit.cc,
src/tgba/tgbaexplicit.hh, src/tgba/tgbaproduct.cc,
src/tgba/tgbareduc.cc, src/tgba/tgbareduc.hh,
src/tgba/tgbasafracomplement.cc, src/tgba/tgbasgba.cc,
src/tgba/tgbasgba.hh, src/tgba/tgbaunion.cc,
src/tgba/tgbaunion.hh, src/tgbaalgos/dupexp.cc,
src/tgbaalgos/eltl2tgba_lacim.cc,
src/tgbaalgos/eltl2tgba_lacim.hh, src/tgbaalgos/emptiness.cc,
src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/ltl2taa.cc,
src/tgbaalgos/ltl2taa.hh, src/tgbaalgos/ltl2tgba_lacim.cc,
src/tgbaalgos/neverclaim.cc, src/tgbaalgos/neverclaim.hh,
src/tgbaalgos/powerset.cc, src/tgbaalgos/reachiter.cc,
src/tgbaalgos/reachiter.hh, src/tgbaalgos/reductgba_sim.cc,
src/tgbaalgos/reductgba_sim.hh,
src/tgbaalgos/reductgba_sim_del.cc, src/tgbaalgos/stats.cc,
src/tgbaalgos/stats.hh, src/tgbaparse/Makefile.am,
src/tgbaparse/tgbaparse.yy, src/tgbatest/Makefile.am,
src/tgbatest/bddprod.test, src/tgbatest/complementation.cc,
src/tgbatest/complementation.test, src/tgbatest/defs.in,
src/tgbatest/dfs.test, src/tgbatest/dupexp.test,
src/tgbatest/explicit.cc, src/tgbatest/explicit.test,
src/tgbatest/explpro3.test, src/tgbatest/explpro4.test,
src/tgbatest/explprod.cc, src/tgbatest/explprod.test,
src/tgbatest/ltl2neverclaim.test, src/tgbatest/ltl2tgba.cc,
src/tgbatest/ltl2tgba.test, src/tgbatest/ltlprod.cc,
src/tgbatest/ltlprod.test, src/tgbatest/mixprod.cc,
src/tgbatest/mixprod.test, src/tgbatest/powerset.cc,
src/tgbatest/readsave.cc, src/tgbatest/readsave.test,
src/tgbatest/reduccmp.test, src/tgbatest/reductgba.cc,
src/tgbatest/reductgba.test, src/tgbatest/taatgba.cc,
src/tgbatest/tgbaread.cc, src/tgbatest/tgbaread.test,
src/tgbatest/tripprod.cc, src/tgbatest/tripprod.test,
wrap/python/cgi/ltl2tgba.in, wrap/python/tests/ltl2tgba.py,
wrap/python/tests/ltlparse.py, wrap/python/tests/ltlsimple.py:
Fix copyrights.
2010-01-24 20:51:09 +01:00
Alexandre Duret-Lutz
e733f951be Please the style checks...
* src/tgbaalgos/randomgraph.cc: Fix the copyright and make it fit
on 80 columns.
2010-01-21 22:09:10 +01:00
Alexandre Duret-Lutz
79cb3ff512 Fix a memory leak in Cou99 statistics.
* src/tgbaalgos/gtec/ce.cc (couvreur99_check_result::acss_states):
Delete the iterator after using it.
* src/tgbatest/emptchkr.test: Run 'randtgba -z' with valgrind too.
2010-01-21 12:00:04 +01:00
Alexandre Duret-Lutz
99884e8e0f Fix a longstanding bug in our implementation of GV04.
* src/tgbaalgos/gv04.cc (push): Fix the tracking of the accepting
link.  This bug was discovered on a random generated graph with
a complex accepting cycle.
* src/tgbatest/emptchk.test: Add the troublesome graph as
test case.
2010-01-21 12:00:04 +01:00
Damien Lefortier
0d6fd3225a Minor fixes to compile with GCC 3.3
* src/ltlast/automatop.cc, src/ltlast/automatop.hh: Rename nfa as
get_nfa to avoid a name clash with the `nfa' class.
* src/ltlvisit/clone.cc, src/ltlvisit/nenoform.cc,
src/ltlvisit/tostring.cc, src/tgbaalgos/eltl2tgba_lacim.cc: Use
get_nfa instead of nfa.
* src/tgba/tgbasafracomplement.cc: Don't use a
const_reverse_iterator.
2010-01-20 18:06:00 +01:00
Alexandre Duret-Lutz
dcf7eed11f Remove some non-determinism in random_graph()
* src/tgbaalgos/randomgraph.cc (random_graph): Revert the part of
the patch from 2007-02-06 which silently replaced the use of state
index by state pointers.  Storing states pointer in this map cause
some non-determinism because of the memory layout.  It was almost
impossible to reproduce bugs found by tests based on randtgba.
2010-01-20 15:24:29 +01:00
Damien Lefortier
9fb8701667 * src/tgbaalgos/ltl2taa.cc: Fix the previous patch. 2010-01-19 10:43:43 +01:00
Damien Lefortier
9cebcdc124 * src/tgba/taatgba.cc, src/tgba/taatgba.hh: Fix memory issues
occuring when labels are pointers.
* src/tgbaalgos/ltl2taa.cc: Fix a bug.
* src/tgbatest/ltl2tgba.cc: Fix a bug.
2010-01-18 18:27:53 +01:00
Damien Lefortier
beb3744581 Use taa_tgba_formula instead of taa_tgba_string in ltl_to_taa to
speed up a little the translation.

* src/tgbaalgos/ltl2taa.cc: Adjust.  Also fix a bug with
acceptance conditions in all_n_tuples.
* src/tgba/taatgba.cc, src/tgba/taatgba.hh: Adjust.
2010-01-17 00:50:37 +01:00
Damien Lefortier
7c20d8ae5d Introduce taa_tgba_labelled<label> so that we can build
taa_tgba instances labelled by other objects than strings
in the same way Alexandre did for tgba_explicit.

* src/tgba/taatgba.cc, src/tgba/taatgba.hh: Split taa_tgba in two
levels: taa_tgba with no label and taa_tgba_labelled templated by
the type of the label.  Define taa_tgba_string (with the interface
of the former taa_tgba class) and taa_tgba_formula for future use
in ltl2taa.cc.
* src/tgbaalgos/ltl2taa.cc, src/tgbatest/taatgba.cc: Adjust to use
taa_tgba_string.
2010-01-16 13:15:42 +01:00
Guillaume Sadegh
f00aa49dc3 Rename the class taa as taa_tgba.
* src/tgba/taa.cc, src/tgba/taa.hh: Rename as ...
* src/tgba/taatgba.cc, src/tgba/taatgba.hh: ... these, and
rename the class taa as taa_tgba.
* src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2taa.hh,
src/tgbaalgos/Makefile.am: Adjust.
* src/tgbatest/ltl2tgba.cc, src/tgbatest/Makefile.am: Adjust.
* src/tgbatest/taa.test: Rename as ...
* src/tgbatest/taatgba.test ... this.
* src/tgbatest/taa.cc: Rename as ...
* src/tgbatest/taatgba.cc ... this, and adjust.
2009-11-27 23:28:23 +01:00
Alexandre Duret-Lutz
ab02ee60fe * src/tgbaalgos/sccfilter.cc (create_transition): Do not clone
the same node twice when dealing with loops.
2009-11-23 22:24:55 +01:00
Alexandre Duret-Lutz
81e0872b5d Specialize scc_filter when handling tgba_explicit_formula automata.
If the input is a tgba_explicit_formula we can output a
tgba_explicit_formula too, and we want to do that because it is
more space efficient.

* src/tgba/tgbaexplicit.hh (get_label): New method.
* src/tgbaalgos/sccfilter.cc (create_transition): New function,
to handle tgba_explicit_formula and tgba_explicit_string output
differently.
(filter_iter): Template it on the output tgba type, and adjust
to call create_transition.
(scc_filter): Use filter_iter<tgba_explicit_formula> or
filter_iter<tgba_explicit_string> depending on the input tgba
type.
2009-11-23 10:19:38 +01:00
Alexandre Duret-Lutz
dfb9c6622b Strip useless acceptance conditions in scc_filter().
A useless acceptance conditions is one that is always implied by
another.

* src/misc/bddop.hh, src/misc/bddop.cc
(compute_neg_acceptance_conditions): New function.
* src/tgba/tgbaexplicit.hh, src/tgba/tgbaexplicit.cc
(set_acceptance_conditions): New function.
* src/tgbaalgos/scc.cc (build_map, build_scc_stats, dump_scc_dot):
Keep track of useful acceptance conditions.
(useful_acc_of): New function.
* src/tgbaalgos/scc.hh (scc_stats, scc_map::scc::useful_scc): New
attributes.
* src/tgbaalgos/sccfilter.cc (filter_iter): Adjust to filter
useless acceptance conditions.
(scc_filter): Compute useful acceptance conditions and pass them
to filter_iter.
2009-11-20 19:21:12 +01:00
Alexandre Duret-Lutz
5d427f6d15 * src/tgbaalgos/sccfilter.cc (scc_filter): Merge transitions
after removing acceptance conditions.
2009-11-20 15:33:40 +01:00
Alexandre Duret-Lutz
7ea51cc65f Replace prune_scc() by scc_filter().
prune_scc() leaked memory and failed to remove chains of useless SCCs.

* src/tgbaalgos/reductgba_sim.cc (reduc_tgba_sim): Call
scc_filter() instead of prune_scc(), and do it before running
any simulation-based reduction.
* src/tgbaalgos/reductgba_sim.hh (reduc_tgba_sim): Return a const
tgba*.
* src/tgbatest/ltl2tgba.cc: Call scc_filter() instead of
prune_scc().
* src/tgbatest/scc.test: Add two more tests that failed with
prune_scc().
2009-11-18 18:22:45 +01:00
Alexandre Duret-Lutz
74f620d192 Quick implementation of a "useless SCC" filter using scc_map.
* src/tgbaalgos/sccfilter.hh, src/tgbaalgos/sccfilter.cc: New
files.
* src/tgbaalgos/Makefile.am: Add them.
2009-11-18 15:36:35 +01:00
Alexandre Duret-Lutz
99981153e6 Fix acceptance check in scc_map: trivial SCCs are not accepting.
Also compute useless SCCs.

* src/tgbaalgos/scc.cc (scc_map::scc::trivial): New field.
(scc_stats::useless_scc_map): New field.
* src/tgbaalgos/scc.cc (scc_map::build_map): Mark SCCs that are
not trivial.
(scc_map::accepting): Always return false for trivial SCC.
(build_scc_stats): Fill in useless_scc_map.
2009-11-18 15:18:40 +01:00
Alexandre Duret-Lutz
ac5dda1032 Make it easy to filter states while iterating over an automaton.
* src/tgbaalgos/reachiter.hh (tgba_reachable_iterator::want_state):
New method.
* src/tgbaalgos/reachiter.cc (tgba_reachable_iterator::want_state):
Implement it.
(tgba_reachable_iterator::run): Call want_state before processing
a state.
2009-11-18 14:54:53 +01:00
Alexandre Duret-Lutz
38148f87f8 * src/tgbaalgos/cutscc.cc (cut_scc): Pass `s' by reference instead
of by pointer.
* src/tgbaalgos/cutscc.cc, src/tgbaalgos/cutscc.hh: Fix copyright
header.
2009-11-17 16:48:42 +01:00
Alexandre Duret-Lutz
7c946878e4 Typo from a previous patch.
* src/tgbaalgos/ltl2tgba_fm.cc (ltl_to_tgba_fm): Fix a typo
introduced three patches ago in the handling of unobserved events.
2009-11-11 00:01:14 +01:00
Alexandre Duret-Lutz
8c6a2b33d9 Do not comment states in the never claim by default. It takes too
much time when the formula is large, and it is useless when the
purpose is model-checking with Spin.

* src/tgbaalgos/neverclaim.hh (never_claim_reachable): Add the
comments option.
* src/tgbaalgos/neverclaim.cc (never_claim_bfs,
never_claim_reachable): Honor the comment option.
* src/tgba/tests/ltl2tgba.cc (-N): Do not comment states.
(-NN) New option to output a commented never claim.
2009-11-10 17:46:25 +01:00
Damien Lefortier
1d8b115b83 * src/tgba/taa.cc, src/tgba/taa.hh: Fix it.
* src/tgbaalgos/ltl2taa.cc: Do NOT use the same bdd_dict for both
the translation and the language containment checker.
* src/tgbatest/spotlbtt.test: Update TAA related tests.
2009-11-10 17:43:43 +01:00
Alexandre Duret-Lutz
007e2bd0b9 Use tgba_explicit_formula instead of tgba_explicit_string in FM.
This gives a nice speedup (>1.4) in the ltlcounter benchmark,
because we no longer have to generate a copy the string
representations of the LTL formulae.

* src/tgbaalgos/ltl2tgba_fm.cc: Adjust.  Also get rid of the
formulae_seen map, since we can now ask the tgba_explicit_formula
if it knows the state.
2009-11-10 17:24:39 +01:00