Commit graph

619 commits

Author SHA1 Message Date
Damien Lefortier
e48338e8d8 Modify the ELTL parser to be able to support PSL operators. Add a
new keyword in the ELTL format: finish, which applies to an
automaton operator and tells whether it just completed.

* src/eltlparse/eltlparse.yy: Clean it. Add finish.
* src/eltlparse/eltlscan.ll: Add finish.
* src/formula_tree.cc, src/formula_tree.hh: New files. Define a
small AST representing formulae where atomic props are unknown
which is used in the ELTL parser.
* src/ltlast/automatop.cc, ltlast/automatop.hh, ltlast/nfa.cc,
ltlast/nfa.hh: Adjust.
* src/ltlast/unop.cc, src/ltlast/unop.hh: Finish is an unop.
* src/ltlvisit/basicreduce.cc, src/ltlvisit/nenoform.cc,
src/ltlvisit/reduce.cc, src/ltlvisit/syntimpl.cc,
src/ltlvisit/tostring.cc, src/ltlvisit/tunabbrev.cc,
src/tgba/formula2bdd.cc, src/tgbaalgos/ltl2tgba_fm.cc,
src/tgbaalgos/ltl2tgba_lacim.cc: Handle finish in switches.
* src/tgbaalgos/eltl2tgba_lacim.cc: Translate finish.
* src/tgbatest/eltl2tgba.test: More tests.
2009-06-05 12:01:24 +02:00
Alexandre Duret-Lutz
a2b6bef003 * src/tgbatest/scc.test: New file.
* src/tgbatest/Makefile.am: Adjust.
* src/tgbaalgos/scc.hh: More documentation.
* src/tgbaalgos/scc.cc (scc_recurse): Fix computation of
acc_paths and dead_paths.  Prevent recursions in states that
have already been visited.
2009-06-02 15:47:01 +02:00
Alexandre Duret-Lutz
352984293a Test "ltl2tgba -FC" and plug the memory leaks of scc_map.
* src/tgbaalgos/scc.hh (scc_map::~scc_map): Declare it.
* src/tgbaalgos/scc.cc (scc_map::~scc_map): Implement it.
(scc_map::build_map): Delete duplicate states.
* src/tbbatest/ltl2tgba.test: Run ltl2tgba -FV to catch
memory leaks with valgrind.
2009-05-28 18:42:18 +02:00
Alexandre Duret-Lutz
a375972f5c * src/tgbaalgos/scc.cc (dump_scc_dot): Use a bit vector instead of
a map to track visited SCC since they are sequentially numbered.
2009-05-28 18:42:18 +02:00
Alexandre Duret-Lutz
15b3b9e07d Number states using negative values and SCCs using nonnegative
values.

Before this change states were numbered using positive values and
SCCs using negative values.  That meant the user had to work with
negative values.  With this changes, the nonnegative values used
to label SCCs can also directly be used as index in the scc_map_.

* src/tgbaalgos/scc.hh (scc_map::scc_of_state,
scc_map::cond_set_of, scc_map::acc_set_of, scc_map::states_of,
scc_map::initial, scc_map::scc_type, scc_map::succ,
scc_map::accepting): Adjust prototypes to take or return unsigned
arguments.
* src/tgbaalgos/scc.cc: Adjust prototypes of the above functions.
(scc_map::build_map, scc_map::relabel_component): Number states
using negative values, and SCCs using nonnegative values.
(dump_scc_dot): Adjust to use nonnegative values.
2009-05-28 18:42:18 +02:00
Alexandre Duret-Lutz
96a7a49c52 Store the scc_map_ as a vector instead of a std::map. There is no
point in using a map since the SCC are numbered in sequence.

* src/tgbaalgos/scc.hh (scc_map::relabel_component): Return the
number of the SCC instead of taking it as argument.
(scc_map::scc_num_): Delete this variable.  scc_map_.size() gives
the same information.
(scc_map::scc_map_type): Define using std::vector instead of
std::map.
* src/tgbaalgos/scc.cc: Adjust all uses.
2009-05-28 18:42:18 +02:00
Alexandre Duret-Lutz
07ead6134e Keep track of conditions in SCC, and add a more verbose dump.
* src/tgbaalgos/scc.hh (scc_map::scc_of_state,
scc_map::cond_set_of, scc_map::acc_set_of, scc_map::states_of):
New functions.
(scc_map::scc::conds): New attribute.
(dump_scc_dot): Take an optional VERBOSE argument.
* src/tgbaalgos/scc.cc (scc_map::scc_of_state,
scc_map::cond_set_of, scc_map::acc_set_of, scc_map::states_of):
Implement these new functions.
(dump_scc_dot): Display number of states, conditions and
acceptance conditions, with VERBOSE is set.
(build_map): Fill the new scc_map::scc::cond field.
2009-05-28 18:41:58 +02:00
Alexandre Duret-Lutz
cbfdcca1f9 Fix assertion in scc.cc 2009-05-28 18:24:34 +02:00
Damien Lefortier
b06c9cd563 Extend the ELTL parser to support more complex aliases of
automaton operators such as Strong=G(F($0))->G(F($1)) and
G=R(false, $0).

* src/eltlparse/eltlparse.yy, src/eltlparse/eltlscan.ll: Add
support for more complex aliases.
* src/eltltest/acc.cc, src/eltltest/acc.test: Adjust.
* src/ltlast/nfa.cc, src/ltlast/nfa.hh (arity): Now returns an
unsigned value.
* src/tgbatest/eltl2tgba.test: Adjust.
* src/tgbalagos/eltl2tgba_lacim.cc: Fix sanity.
2009-04-26 01:41:57 +02:00
Damien Lefortier
7643c49cbd Correct LaCIM for ELTL and make it work with LBTT.
* src/eltlparse/eltlparse.yy: Adjust.
* src/ltlast/automatop.cc, src/ltlast/automatop.hh,
src/ltlvisit/clone.cc, src/ltlvisit/nenoform.cc: Clean the way we
handle the negation of automaton operators.
* src/ltlvisit/tostring.cc, src/ltlvisit/tostring.hh: Add an
optional argument to output a fully parenthesized string.
* src/tgbaalgos/eltl2tgba_lacim.cc: Fix it.
* src/tgbatest/eltl2tgba.cc: Add a new option (-L) to read formulae
from an LBTT-compatible file.
* src/tgbatest/eltl2tgba.test: A new tests.
* src/tgbatest/spotlbtt.test: Add LaCIM for ELTL.
2009-04-08 20:19:42 +02:00
Damien Lefortier
2fbcd7e52f Add support for ELTL (AST & parser), and an adaptation of LaCIM
for ELTL.  This is a new version of the work started in 2008 with
LTL and ELTL formulae now sharing the same class hierarchy.

* configure.ac: Adjust for src/eltlparse/ and src/eltltest/
directories, and call AX_BOOST_BASE.
* m4/boost.m4: New file defining AX_BOOST_BASE([MINIMUM-VERSION]).
* src/Makefile.am: Add eltlparse and eltltest.
* src/eltlparse/: New directory.  Contains the ELTL parser.
* src/eltltest/: New directory.  Contains tests related to
ELTL (parser and AST).
* src/ltlast/Makefile.am: Adjust for ELTL AST files.
* src/ltlast/automatop.cc, src/ltlast/automatop.hh: New files.
Represent automaton operators nodes used in ELTL ASTs.
* src/ltlast/nfa.cc, src/ltlast/nfa.hh: New files.  Represent
simple NFAs used internally by automatop nodes.
* src/ltlast/allnode.hh, src/ltlast/predecl.hh,
src/ltlast/visitor.hh: Adjust for automatop.
* src/ltlvisit/basicreduce.cc, src/ltlvisit/clone.cc,
src/ltlvisit/clone.hh, src/ltlvisit/contain.cc,
src/ltlvisit/dotty.cc, src/ltlvisit/nenoform.cc,
src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh,
src/ltlvisit/reduce.cc, src/ltlvisit/syntimpl.cc,
src/ltlvisit/tostring.cc: Because LTL and ELTL formulae share the
same class hierarchy, LTL visitors need to handle automatop nodes
to compile.  When it's meaningful the visitor applies on automatop
nodes or simply assert(0) otherwise.
* src/tgba/tgbabddconcretefactory.cc (create_anonymous_state),
src/tgba/tgbabddconcretefactory.hh (create_anonymous_state): New
function used by the LaCIM translation algorithm for ELTL.
* src/tgbaalgos/Makefile.am: Adjust for eltl2tgba_lacim* files.
* src/tgbaalgos/eltl2tgba_lacim.cc,
src/tgbaalgos/eltl2tgba_lacim.hh: New files.  Implementation of
the LaCIM translation algorithm for ELTL.
* src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc:
Handle automatop nodes in the translation by an assert(0).
* src/tgbatest/Makefile.am: Adjust for eltl2tgba.* files.
* src/src/tgbatest/eltl2tgba.cc, src/tgbatest/eltl2tgba.test: New
files
2009-03-26 12:05:08 +01:00
Alexandre Duret-Lutz
70b6bcf8eb * src/tgbaalgos/scc.hh: Add missing misc/hash.hh inclusion. 2009-03-25 16:44:47 +01:00
Alexandre Duret-Lutz
b1bfdee870 Revert everything related to Damien's work in 2008 (he will commit a new version soon).
Here are the reverted patches:
8c0d1003b0,
25a3114287,
9afbaf6342,
dc0005f4e1,
543190f2bc.
2009-03-25 16:44:05 +01:00
Guillaume SADEGH
1d58493be3 Update to compile with the Intel compiler. 2008-12-18 23:41:10 +01:00
Alexandre Duret-Lutz
7998fff056 Compute more statistics about SCCs. 2008-12-11 13:06:58 +01:00
Alexandre Duret-Lutz
b2f7c2d76d Fix tracking of SCCs on the search stack 2008-12-11 13:06:32 +01:00
Alexandre Duret-Lutz
c44d6277f2 Introduce scc.cc to compute SCC stats and map. 2008-12-10 18:14:44 +01:00
Alexandre Duret-Lutz
d5235c6901 Add option -k to ltl2tgba 2008-12-10 18:14:34 +01:00
Damien Lefortier
8c0d1003b0 Start the ELTL translation (LACIM).
Merge all eltlast/ files into formula.hh (except automatop.hh).
2008-06-20 00:27:06 +02:00
Alexandre Duret-Lutz
25a3114287 Merge all ltlast/ files into formula.hh. The forward declaration of visitor was causing error messages too cryptic for users. 2008-06-12 16:33:03 +02:00
Damien Lefortier
543190f2bc Template ltlast/ & ltlenv/ classes in internal/ & Add ELTL parser. 2008-04-17 11:41:41 +02:00
Alexandre Duret-Lutz
21c98c0a01 Kill some FIXMEs.
* src/ltlenv/environment.hh, src/ltlvisit/basicreduce.cc: Remove
useless FIXMEs.
* src/ltlvisit/reduce.cc (reduce_visitor::visit(binop)): Compute
syntactic implications only when needed.
* src/tgbaalgos/reductgba_sim_del.cc
(build_recurse_successor_spoiler): Remplace the FIXME by an assert.
* src/tgba/tgbareduc.cc: Reword some comments, discard old
commented code.
2008-04-14 11:35:57 +02:00
Alexandre Duret-Lutz
d3b702a97c Make sure Spot compiles with g++-4.3.
* src/ltlast/formula.hh (hash): Remove const from return type.
This kills a g++-4.3 warning.
* src/misc/hash.hh: Adjust to use unordered_set and unordered_map
from TR1 when g++-4.3 is used.
* src/evtgba/product.cc, src/ltltest/randltl.cc,
src/ltlvisit/randomltl.cc, src/ltlvisit/tostring.cc,
src/misc/freelist.hh, src/misc/optionmap.cc,
src/tgba/tgbareduc.hh, src/tgbaalgos/gv04.cc,
src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/randomgraph.cc,
src/tgbatest/ltl2tgba.cc, src/tgbatest/randtgba.cc,
src/ltltest/equals.cc, src/ltltest/readltl.cc,
src/ltltest/reduc.cc, src/ltltest/syntimpl.cc,
src/ltltest/tostring.cc, src/tgbatest/ltlprod.cc,
src/tgbatest/powerset.cc, src/tgbatest/explprod.cc,
src/tgbatest/mixprod.cc, src/tgbatest/readsave.cc,
src/tgbatest/reductgba.cc, src/tgbatest/tgbaread.cc,
src/tgbatest/tripprod.cc, src/evtgbatest/product.cc,
src/evtgbatest/readsave.cc, src/evtgbatest/ltl2evtgba.cc,
src/evtgbatest/readsave.cc: Add missing includes.
* src/tgbatest/explicit.test, src/tgbatest/explprod.test,
src/tgbatest/explpro2.test, src/tgbatest/troprod.test,
src/tgbatest/emptchk.test: Cope with different outputs.
2008-03-14 22:45:37 +01:00
Alexandre Duret-Lutz
5ef7084b61 Add .gitignore files 2008-03-14 16:59:32 +01:00
Alexandre Duret-Lutz
8c829cf3e1 * src/tgbaalgos/reachiter.hh: Typos in comments. 2008-02-27 16:14:45 +01:00
Alexandre Duret-Lutz
b5f4ba982c * src/tgbaalgos/gtec/gtec.cc (couvreur99_check_shy::dump_queue):
Remove superfluous semicolon.
2008-02-25 14:37:55 +01:00
Alexandre Duret-Lutz
fbbaef0ab8 * src/tgbaalgos/reductgba_sim.cc (reduc_tgba_sim): Add two
assert().  This patch has been lying in my tree since 2007-04-30.
2008-02-25 14:37:55 +01:00
Alexandre Duret-Lutz
cc0ca4ae54 This is something Soheib and I worked on back in July, but a
intricate memory corruption bug prevented me to check the patch
in.  It took me two days to realize why find_state() must do a
double loop over the candidates to check for equality before
checking for inclusion(s).

* iface/gspn/ltlgspn.cc: New options, -e45 and -n.
* iface/gspn/ssp.cc, iface/gspn/ssp.hh: Handle these.
* src/tgbaalgos/gtec/gtec.cc (TRACE): Add some debugging traces.
(couvreur99_check_shy::dump_queue): New function.
* src/tgbaalgos/gtec/gtec.hh (couvreur99_check_shy::dump_queue):
New function.
2008-02-25 14:37:55 +01:00
Alexandre Duret-Lutz
1eb47b1a94 * src/tgbaalgos/randomgraph.cc (random_graph): Fix the
generation of the graph.  Some states had no successors or
duplicate transitions because of that bug.
2008-02-25 14:36:59 +01:00
Alexandre Duret-Lutz
cb9549e4d4 * src/tgbaalgos/ltl2tgba_fm.cc (language_containment_checker): Move ...
* src/ltlvisit/contain.cc, src/ltlvisit/contain.hh
(spot::ltl::language_containment_checker): ... in these new files.
* src/ltlvisit/Makefile.am: Adjust.
2008-02-25 14:36:58 +01:00
Alexandre Duret-Lutz
c2bc76816b * src/misc/memusage.cc, src/misc/memusage.hh: New files.
* src/misc/Makefile.am: Add them.
* src/tgbaalgos/gtec/gtec.cc,
src/tgbaalgos/gtec/gtec.hh: Add a "vmsize" statistic.
2008-02-25 14:36:58 +01:00
Alexandre Duret-Lutz
85c5c870db * src/tgbaalgos/ltl2tgba_fm.hh, src/tgbaalgos/ltl2tgba_fm.cc
(ltl_to_tgba_fm): Add a new option "containment_checks" to enable
some language containment checks (via emptiness checks) during the
translation.  This first attempt currently only use containment
checks to merge states bisimulating each other.
* src/tgbatest/ltl2tgba.cc: Bind this to option "-c".
* src/tgbatest/spotlbtt.test: Check it.
2008-02-25 14:36:57 +01:00
Alexandre Duret-Lutz
983d12cc5a * src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/gtec/gtec.hh:
(couvreur99_check_shy_ssp): Add a onepass_ attribute to
disable the "shyness", and do not increment pos before calling
find_state since gspn's implementation uses it.
* iface/gspn/ssp.cc: Enable "onepass_" for all "shy" variants,
and also fix find_state for the case where onepass_ is
disabled (but I do not yet know why the latter fix isn't enough).
2008-02-25 14:36:57 +01:00
Alexandre Duret-Lutz
bb47e31b1e * src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/gtec/gtec.hh:
Count the number of removed components.
2008-02-25 14:36:57 +01:00
Alexandre Duret-Lutz
236742aed8 * src/tgbaalgos/gtec/gtec.cc (couvreur99_check_shy::check):
Reorganize this function so that syntactically there is only one
loop over the successors, and not two.  Call reintroduce the call
to couvreur99_check_shy::state_index(), needed by SSP, and
suppress that to index_and_insert introduced on 2004-12-29.  Also
split the "group" option in two: "group" and "group2".  "group2"
is the equivalent of the older "group", while the new "group" is
weaker and faster.
(couvreur99_check_shy::state_index): Change prototype as needed by
the algorithm.
* src/tgbaalgos/gtec/gtec.hh: Adjust.
* src/tgbaalgos/gtec/nsheap.hh, src/tgbaalgos/gtec/nsheap.cc
(index_and_insert): Remove.
* iface/gspn/ssp.cc (couvreur99_check_shy_ssp::state_index): Adjust
to new prototype.
* bench/emptchk/README, bench/emptchk/algorithms: Adjust references
to group/group2.
2008-02-25 14:36:56 +01:00
Alexandre Duret-Lutz
396894f7a7 * src/tgbaalgos/ndfs_result.hxx (ndfs_result::construct_cycle):
Initialize tmp to suppress a GCC 4.0.1 warning (seen on Darwin).
2008-02-25 14:36:56 +01:00
Alexandre Duret-Lutz
f7fe379e60 * src/tgbatest/randtgba.cc: New option -H.
* src/tgbaalgos/emptiness_stats.hh (unsigned_statistics_copy): New
class.
2008-02-25 14:36:56 +01:00
Alexandre Duret-Lutz
8e00065d84 * src/tgbaalgos/lbtt.cc: Typo. 2008-02-25 14:36:55 +01:00
Alexandre Duret-Lutz
3f22bc17ff * src/tgbaalgos/tau03opt.cc: Include <vector>.
(tau03_opt_search): Add option "ordering" (off by default).
If enabled, initialize an explicit ordering for acceptance
conditions into the new member "cond" (a vector of bdds).
(project_acc): New helper function for projecting a set of
acceptance conditions to a subset that maximizes the number
of initial consecutive conditions covered by the set in the
condition ordering.
(dfs_blue): Implement the ordering heuristic.
(dfs_red): Use a sentinel in condition_stack to avoid explicit
checks for the stack's emptiness.
Consider also the conditions in acc when checking for the
completion of an accepting cycle.
Fix the implementation of condition heuristic.
Implement the ordering heuristic.
Simplify the removal of elements from condition_stack (due to
the way in which elements are pushed on the stack, there can
be at most one element with a given depth in the stack at any
one time).
2008-02-25 14:36:55 +01:00
Alexandre Duret-Lutz
5b6e79ad96 * src/tgbaalgos/ndfs_result.hxx (ndfs_result::construct_prefix):
Initialize tmp to suppress a GCC 4.0 warning.
* src/ltltest/randltl.cc (main): Likewise with another variable.
2008-02-25 14:36:55 +01:00
Alexandre Duret-Lutz
6bcc8c3ce1 * src/tgbaalgos/magic.hh: fixme is not a doxygen command. Use bug. 2008-02-25 14:36:55 +01:00
Alexandre Duret-Lutz
8a5fd909b3 * src/tgbaalgos/reductgba_sim_del.cc
(parity_game_graph_delayed::get_relation): Disable for generalized
automata, it's wrong.
2005-06-06 13:53:56 +00:00
Alexandre Duret-Lutz
fc4f4f7288 * src/tgbaalgos/reductgba_sim_del.cc
(parity_game_graph_delayed::nb_set_acc_cond): Simplify.
2005-05-25 09:00:19 +00:00
Alexandre Duret-Lutz
35aa277164 * sanity/style.test: Catch misuses of Sgi::.
* tgba/tgbareduc.hh, tgbaalgos/reductgba_sim.cc,
tgbaalgos/reductgba_sim.hh, tgbaalgos/reductgba_sim_del.cc: Fix them.
2005-05-25 08:56:15 +00:00
Alexandre Duret-Lutz
2e15a93525 * src/tgbaalgos/ltl2tgba_fm.cc: Fix handling of fair_loop_approx. 2005-05-12 18:01:27 +00:00
Alexandre Duret-Lutz
9063c5abb4 * src/tgbaalgos/ltl2tgba_fm.hh, src/tgbaalgos/ltl2tgba_fm.cc: Add
the reduce_ltl argument.
* src/tgbatest/ltl2tgba.cc: Add options -fr1, -fr2, -fr3, and -fr4.
* src/tgbatest/spotlbtt.test, bench/ltl2tgba/algorithms: Test -fr4.
* bench/ltl2tgba/parseout.pl: Suppress Perl warnings on disabled
algorithms.
2005-05-04 13:47:38 +00:00
Alexandre Duret-Lutz
5d0f702383 * src/tgbaparse/tgbaparse.yy (acc_list): Do not explicitly delete
an undeclared acceptance condition.
* src/tgbaalgos/save.cc (print_acc): Unquote atomic propositions.
2005-04-06 17:23:29 +00:00
Alexandre Duret-Lutz
dd1bc78786 * src/tgbaalgos/tau03opt.cc (tau03_opt_search): Add options "weights"
and "redweights" (on by default).
2005-02-22 17:37:33 +00:00
Alexandre Duret-Lutz
fa9614e997 * src/tgbaalgos/tau03opt.cc (tau03_opt_search): Do not
account for the size of condition_stack.
2005-02-22 13:43:47 +00:00
Alexandre Duret-Lutz
a2cbe9cab8 * src/sanity/style.test: Catch occurrences of "accepting condition".
* bench/emptchk/ltl-human.sh, bench/emptchk/ltl-random.sh,
src/sanity/style.test, src/tgba/bdddict.cc,
src/tgba/succiterconcrete.hh, src/tgba/tgbabddcoredata.hh,
src/tgba/tgbareduc.cc, src/tgba/tgbareduc.hh,
src/tgbaalgos/gv04.cc, src/tgbaalgos/gv04.hh,
src/tgbaalgos/magic.cc, src/tgbaalgos/magic.hh,
src/tgbaalgos/se05.cc, src/tgbaalgos/se05.hh,
src/tgbaalgos/tau03.cc, src/tgbaalgos/tau03.hh,
src/tgbaalgos/tau03opt.cc, src/tgbaalgos/tau03opt.hh,
src/tgbatest/dfs.test: Replace them by "acceptance condition".
2005-02-20 22:41:11 +00:00