Commit graph

321 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
9d9ba1bed7 Hide the tgba_gspn and tgba_gspn_eesrg classes. Offer the
corresponding automaton via the automaton() method of the
gspn_interface and gspn_eesrg_interface classes.

* iface/gspn/gspn.hh (gspn_interface::gspn_interface): Take dict and
env arguments.
(gspn_interface::automaton): New method.
(tgba_gspn): Move all the declaration ...
* iface/gspn/gspn.cc (tgba_gspn): ... here.
(gspn_interface::automaton): Implement it.
* iface/gspn/eesrg.hh (gspn_eesrg_interface::gspn_eesrg_interface):
Take dict and env arguments.
(gspn_eesrg_interface::automaton): New method.
(tgba_gspn_eesrg): Move all the declaration ...
* iface/gspn/gspn.cc (tgba_gspn_eesrg): ... here.
(gspn_eesrg_interface::automaton): Implement it.
* iface/gspn/dottygspn.cc, iface/gspn/dottyeesrg.cc,
iface/gspn/ltlgspn.cc: Adjust.
2004-02-02 09:55:48 +00:00
Alexandre Duret-Lutz
2f7d46d719 * src/ltlvisit/tostring.cc: Fix output of F0, F1, G0, G1, X0, and X1.
* src/ltltest/tostring.test: Test these.
2004-01-30 16:55:12 +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
440029c1b5 After this changes, degeneralized automata are 40% smaller
in LBTT's statistics.

* src/tgba/tgbatba.cc (state_tba_proxy): Store an iterator,
pointing somewhere into the acceptance conditions list, instead of
an acceptance condition.
(state_tba_proxy::acceptance_iterator): New method.
(tgba_tba_proxy_succ_iterator): Adjust to use iterators too.
(tgba_tba_proxy_succ_iterator::current_state): If the current
transition is in several consecutive acceptance steps after the
expected one, advance many steps at once.
(tgba_tba_proxy::tgba_tba_proxy): Build the acceptance cycle
as a list, not a map.
(tgba_tba_proxy::get_init_state, tgba_tba_proxy::succ_iter):
Adjust.
* src/tgba/tgbatba.hh (tgba_tba_proxy::acc_cycle_): Declare as
a list, not a map.
2004-01-29 13:02:55 +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
57ddf52df0 * src/tgbatest/explpro2.test: Fix reordering regex. 2004-01-26 10:16:18 +00:00
Alexandre Duret-Lutz
468a32ea6e * src/tgbatest/defs.in (run): Use libtool --mode=execute. 2004-01-26 08:37:58 +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
314768bf28 * src/ltlast/refformula.hh (ref_formula::ref_count_): New method.
* src/ltlast/refformula.cc (ref_formula::ref_count_): New method.
* src/ltlast/atomic_prop.hh (atomic_prop::dump_instance): New method.
* src/ltlast/atomic_prop.cc (atomic_prop::dump_instance): New method.
2004-01-23 17:08:45 +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
b9b365e731 * configure.ac, NEWS: Bump version to 0.0o. 2004-01-13 17:57:07 +00:00
Alexandre Duret-Lutz
770943adc3 * configure.ac: Bump version to 0.0n.
* NEWS: Update.
2004-01-13 17:37:06 +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
e481e1218e * iface/gspn/ltlgspn.cc (main): Typo, use MIN_ARG. 2004-01-12 10:24:13 +00:00
Alexandre Duret-Lutz
c9d438aef4 * iface/gspn/dcswaveeltl.test, iface/gspn/udcsefm.test,
iface/gspn/udcseltl.test: Exercize -e2.
2004-01-09 17:33:23 +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
06877eac24 * m4/gspnlib.m4 (AX_CHECK_GSPNLIB): Do not warn about a missing
library for eesrg.  Define the WITH_GSPN_EESRG conditional.
* iface/gspn/Makefile.am (gspn_HEADERS, check_PROGRAMS): Add the
eesrg items in condition WITH_GSPN_EESRG.
(libspotgspneesrg_la_LIBADD, libspotgspneesrg_la_CPPFLAGS)
(libspotgspneesrg_la_SOURCES): Define only in condition
WITH_GSPN_EESRG.
2004-01-09 12:12:48 +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
4732d165db * iface/gspn/ltlgspn.cc: Add option -P. 2004-01-09 10:31:01 +00:00
Alexandre Duret-Lutz
92cc5f9b9f Run valgrind in test cases.
* src/tgbatest/defs.in (VALGRIND, run): Define.
* src/tgbatest/bddprod.test, src/tgbatest/dupexp.test,
src/tgbatest/emptchk.test, src/tgbatest/emptchke.test,
src/tgbatest/explicit.test, src/tgbatest/explpro2.test,
src/tgbatest/explpro3.test, src/tgbatest/explprod.test,
src/tgbatest/ltl2tgba.test, src/tgbatest/ltlprod.test,
src/tgbatest/mixprod.test, src/tgbatest/readsave.test,
src/tgbatest/tgbaread.test, src/tgbatest/tripprod.test: Use run().
2004-01-08 15:44:27 +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
c0210abb55 * iface/gspn/eesrg.cc (tgba_gspn_eesrg::all_acceptance_conditions,
tgba_gspn_eesrg::neg_acceptance_conditions): Forward to
data_->operand.
2004-01-06 11:59: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
3c363aa11a * iface/gspn/eesrg.cc (state_gspn_eesrg::clone): Clone the right
state.
2004-01-06 11:34:41 +00:00
Alexandre Duret-Lutz
23f1a6f2c6 * iface/gspn/ltleesrg.cc: Emptinesscheck the full product, not
the control automaton.
2004-01-06 10:12:00 +00:00
Alexandre Duret-Lutz
4341a7553e * iface/gspn/eesrg.cc (tgba_gspn_eesrg::project_state): New method.
* iface/gspn/eesrg.hh: Likewise.
2004-01-06 10:07:19 +00:00
Alexandre Duret-Lutz
f59eeb75cd * src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/powerset.cc: New file.
* src/tgbatest/Makefile.am: Construct powerset and expldot from
powerset.cc.
2004-01-05 17:29:36 +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
5a5459f8be * src/ltlparse/Makefile.am ($(FROM_LTLPARSE_YY_MAIN)):
Use $(FROM_LTLPARSE_YY_MAIN), not $@, because $@ can contains
VPATH and we do not want Bison to see absolute paths.
* src/tgbaparse/Makefile.am ($(FROM_TGBAPARSE_YY_MAIN)): Likewise.
2004-01-05 15:24:18 +00:00
Alexandre Duret-Lutz
a87c9d3d33 * src/ltltest/parseerr.test: Adjust.
* src/ltlparse/ltlparse.yy: Simplify error handling now that Bison
will call destructors.  Give each operator a full name, so that
Bison uses it in error messages.
2004-01-05 12:17:38 +00:00
Alexandre Duret-Lutz
03704d635e * iface/gspn/ltleesrg.cc: New file.
* iface/gspn/Makefile.am (check_PROGRAMS): Add ltleesrg.
(ltleesrg_LDADD, ltleesrg_SOURCES): New variables.
2003-12-30 16:08:18 +00:00
Alexandre Duret-Lutz
e8a0fbc9a7 * src/ltltest/defs.in (run): Reun valgrind with --leak-check=yes.
* src/ltlparse/ltlparse.yy: Add `%destructor's.
2003-12-30 12:56:05 +00:00
Alexandre Duret-Lutz
6f88e518a9 * src/ltltest/defs.in (run): New function, run valgrind.
* src/ltltest/equals.test, src/ltltest/lunabbrev.test,
src/ltltest/nenoform.test, src/ltltest/parse.test,
src/ltltest/parseerr.test, src/ltltest/tostring.test,
src/ltltest/tunabbrev.test, src/ltltest/tunenoform.test: Use run().
* Makefile.am (EXTRA_DIST): Don't list the m4/*.m4 files,
Automake 1.8 find them automatically.
* configure.ac: Require Automake 1.8, in gnits mode, and check
for valgrind.
* THANKS: New empty file.
2003-12-29 17:30:51 +00:00
Alexandre Duret-Lutz
c2892a8275 * doc/Doxyfile.in: Upgrade to Doxygen 1.3.5. Build
documentation for iface/.
* dox/mainpage.dox: Fix reference to ltl_to_tgba.
* src/ltlenv/environment.hh: Typo.
2003-12-29 12:14:04 +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
9b0ab316c2 * configure.ac: Bump version to 0.0m. 2003-12-01 11:57:01 +00:00
Alexandre Duret-Lutz
0033466598 * configure.ac, NEWS: Bump version to 0.0l.
* doc/Makefile.am ($(srcdir)/spotref.pdf): Do not assume spot.latex is
in the srcdir.
2003-12-01 11:48:58 +00:00
Alexandre Duret-Lutz
1811786597 * src/tgbaparse/tgbaparse.yy (cond_list): Simplify into...
(condition): ... this.  We now accept only one condition, which
is a formula.
* src/tgba/tgbaexplicit.hh (tgba_explicit::add_neg_condition,
tgba_explicit::get_condition): Remove, unused.
* src/tgba/tgbaexplicit.cc: Likewise.
2003-11-28 16:57:55 +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
Alexandre Duret-Lutz
6877f378bd * src/tgbaparse/tgbaparse.yy: Remove a random character.
* src/tgba/formula2bdd.cc: Include cassert.
2003-11-25 14:19:14 +00:00
Alexandre Duret-Lutz
20289e4e7f Explicit automata can now have arbitrary logic formula on their
arcs.  ltl2tgba_fm benefits from this and join multiple arcs with
the same destination and acceptance conditions.
* src/tgba/formula2bdd.cc, src/tgba/formula2bdd.hh: New files.
* src/tgba/Makefile.am (tgba_HEADERS, libtgba_la_SOURCES): Add them.
* src/tgba/bddprint.cc, src/tgba/bddprint.hh (bdd_pring_formula,
bdd_format_formula): New functions.
* src/tgba/tgbaexplicit.hh (tgba_explicit::get_condition,
tgba_explicit::add_condition, tgba_explicit::add_neg_condition,
tgba_explicit::declare_accepting_condition,
tgba_explicit::has_accepting_condition,
tgba_explicit::get_accepting_condition,
tgba_explicit::add_accepting_condition): Take a const formula*.
* src/tgba/tgbaexplicit.cc (tgba_explicit::add_condition):
Rewrite using formula_to_bdd.
* src/tgbaalgos/dotty.cc (dotty_bfs::process_link): Use
bdd_print_formula to display conditions.
* src/tgbaalgos/save.cc (save_bfs::process_state): Likewise.
* src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::bdd_to_formula):
New function.
(translate_dict::conj_bdd_to_atomic_props): Remove.
(ltl_to_tgba_fm): Factor successors on accepting conditions
and destinations, not conditions.  Use bdd_to_formula to translate
the conditions.
* src/tgbaparse/tgbaparse.yy: Expect conditions as a formula
in a string, call the LTL parser for this.
* src/tgbaparse/tgbascan.ll: Process " and \ escapes in
strings.
* src/tgbatest/emptchke.test, src/tgbatest/explicit.test,
src/tgbatest/explpro2.test, src/tgbatest/explpro3.test,
src/tgbatest/explprod.test, src/tgbatest/mixprod.test,
src/tgbatest/readsave.test, src/tgbatest/tgbaread.test,
src/tgbatest/tripprod.test: Adjust to new syntax for explicit
automata.
2003-11-24 18:30:09 +00:00
Alexandre Duret-Lutz
3126e49b28 * src/misc/minato.hh (minato_isop(bdd,bdd)): New constructor variant.
(minato_isop::local_vars::vars): New attribute.
(minato_isop::local_vars::local_vars): Add the vars arguments.
(minato_isop::todo, minato_isop::cube, minato_isop::ret): Rename as ...
(minato_isop::todo_, minato_isop::cube_, minato_isop::ret_): ... these.
* src/misc/minato.cc: Adjust to factorize only variables in vars.
2003-11-24 11:24:34 +00:00
Alexandre Duret-Lutz
e6c113f953 * m4/devel.m4: Fix quoting and simplify default setting of
enable_devel.
2003-11-24 10:48:53 +00:00
Alexandre Duret-Lutz
ea8a5782e2 * AUTHORS: New file.
* configure.ac (AM_INIT_AUTOMAKE): Remove `foreign' option.
2003-11-21 16:23:27 +00:00