Commit graph

1857 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
96c436e0e2 Accomodate Automake 1.12.x.
* wrap/python/tests/Makefile.am (TEST_ENVIRONMENT): Rename as...
(LOG_COMPILER): ... this.
2012-06-19 19:03:01 +02:00
Alexandre Duret-Lutz
e9e132dd29 [lbtt] Adjust parsers to accommodate old and new versions of Automake.
* src/Config-parse.yy, src/Ltl-parse.yy, src/NeverClaim-parse.yy:
Rename these as..
* src/Config-parse.y, src/Ltl-parse.y, src/NeverClaim-parse.y:
... these.
* src/Config-parse_.cc, src/Ltl-parse_.cc,
src/NeverClaim-parse_.cc: New files to hack around
incompatibilities between Automake 1.12 and Automake 1.11.
* src/Makefile.am: Adjust.
* NEWS: Mention this change.
2012-06-19 17:34:28 +02:00
Alexandre Duret-Lutz
b98c47246c [buddy] Adjust parser construction to support Automake 1.11 and 1.12.
* examples/bddcalc/parser.yxx: Rename as ...
* examples/bddcalc/parser.y: ... this.
* examples/bddcalc/parser_.cxx: New file that includes parser.c.
* examples/bddcalc/Makefile.am: Adjust.
* examples/bddcalc/parser.hxx: Delete this unused file.
2012-06-19 17:03:34 +02:00
Alexandre Duret-Lutz
25aca9ab7a Fix a few files that claimed to be distributed under GPLv3 by mistake.
* src/eltlparse/Makefile.am, src/ltlvisit/randomltl.cc,
src/ltlvisit/simplify.cc, src/ltlvisit/snf.cc, src/ltlvisit/snf.hh:
Fix GPL to version 2 or later.
2012-06-19 16:22:43 +02:00
Alexandre Duret-Lutz
9460e0761e FM: Translate X(a&b) as if it were X(a)&X(b).
This helps reducing (p&XF!p)|(!p&XFp)|X(Fp&F!p) to (p&XF!p)|(!p&XFp).

* src/tgbaalgos/ltl2tgba_fm.cc: Adjust rewriting rules of X.
* src/tgbatest/ltl2tgba.test: Add a test case.
2012-06-18 18:25:07 +02:00
Alexandre Duret-Lutz
d7ff066513 Fix computation of support_conditions in tgba_wdba_comp_proxy.
* src/tgba/wdbacomp.cc
(tgba_wdba_comp_proxy::compute_support_conditions): Fix.
* src/tgbatest/wdba2.test: Test a formula that used to be wrongly
minimized if translated by LaCIM, because the product of a
tgbabddconcrete automaton with another automaton (done during
WDBA-minimization) use the support conditions to speed things up.
2012-06-07 22:34:00 +02:00
Alexandre Duret-Lutz
03b13891e3 * bench/ltl2tgba/algorithms: Add two missing degeneralized config. 2012-06-06 21:57:37 +02:00
Thomas Badie
cec5b3f41e * bench/ltlclasses/README: Fix a typo. 2012-06-06 15:51:28 +02:00
Alexandre Duret-Lutz
fdbdb1a436 Fix a memory leak on failure to WDBA-minimize.
* src/tgbaalgos/minimize.cc (minimize_obligation): Delete the powerset
automaton when we return 0 because we know if the result is correct
and don't have the formulae to check it.  Reported by Étienne Renault.
2012-06-06 10:40:16 +02:00
Alexandre Duret-Lutz
fddfafcd60 * doc/tl/tl.tex: Typos. 2012-06-05 18:10:13 +02:00
Alexandre Duret-Lutz
57ec1c61c9 * doc/mainpage.dox: Use a better title. 2012-06-04 18:42:55 +02:00
Alexandre Duret-Lutz
7b7a946485 Rework the timeout of the CGI script.
The previous implementation was fine to catch timeout of third-party
tools (like dot), but to good to catch timeout in Spot itself, because
Python will not deliver a SIGALRM while a native function (e.g. Spot's
translation) is running.  So we fork() the Python process, with a
parent that does nothing but wait for the termination of the child or
for an alarm.  On SIGALRM, the parent kills all children.

* wrap/python/ajax/spot.in: Adjust to fork.
* wrap/python/tests/alarm.py: New test file to test this
scenario in a more controled environment.
* wrap/python/tests/Makefile.am: Add it.
2012-06-04 18:41:36 +02:00
Alexandre Duret-Lutz
75862a3284 * doc/tl/tl.tex: Add a tricky example for the {r} operator. 2012-06-04 15:49:42 +02:00
Alexandre Duret-Lutz
87765ca8e8 * doc/tl/tl.tex: Remarks from Denis Poitrenaud. 2012-06-04 15:49:42 +02:00
Alexandre Duret-Lutz
f620d9a231 * NEWS, configure.ac: Bump version to 0.9.1a. 2012-05-23 13:19:30 +02:00
Alexandre Duret-Lutz
669d796eb4 Release Spot 0.9.1
* configure.ac, NEWS: Bump version number.
2012-05-23 12:02:37 +02:00
Alexandre Duret-Lutz
9559799637 Export tgba_parse() to the python interface.
* src/tgbaparse/public.hh: Hide tgba_parse_errorlist to SWIG.
* wrap/python/spot.i: Export tgba_parse.
* wrap/python/tests/parsetgba.py: New file.
* wrap/python/tests/Makefile.am: Add it.
2012-05-23 11:59:58 +02:00
Alexandre Duret-Lutz
ebf4d2585d Make it easier to convert acc-conditions to associated formulae.
This is motivated by the fact that sog-its used the low-level data
structures used by the bdd_dict to do such work, and broke because of
the recent changes in this area.

* src/tgba/bdddict.cc, src/tgba/bdddict.hh (oneacc_to_formula):
New method.
* src/tgbaalgos/save.cc: Use it.
2012-05-22 17:57:12 +02:00
Alexandre Duret-Lutz
8893f34da1 * NEWS: Summarize recent changes. 2012-05-22 13:46:44 +02:00
Alexandre Duret-Lutz
72f36c50a5 Clear the contaiment cache after -r7.
Doing so will release all BDD variables used by automata created for
syntactic implication.  This way the main translation will create
acceptance variables again in a more natural order, which will help
the degeneralization (until we get a better degeneralization).

* src/ltlvisit/contain.cc, src/ltlvisit/contain.hh
(language_containment_checker::clear): New method to clear the
containment cache.
* src/ltlvisit/simplify.cc, src/ltlvisit/simplify.hh
(clear_as_bdd_cache): Also call language_containment_checker::clear.
2012-05-21 22:35:51 +02:00
Alexandre Duret-Lutz
1c1c95f65f Use the distributed LBTT is the installed one is not 1.2.1a.
* m4/lbtt.m4: Check version number.
2012-05-21 15:37:42 +02:00
Alexandre Duret-Lutz
a8fd9e8b14 [lbtt] Make it clearer this is not LBTT 1.2.1.
* configure.ac: Bump the version number to 1.2.1a.
* NEWS: Summarize all changes since 1.2.1.
* README: Warn this is not 1.2.1, and add pointers to NEWS and
ChangeLog.
2012-05-21 15:37:42 +02:00
Alexandre Duret-Lutz
faed4e8be2 Adjust parseout.pl to the new LBTT output.
* bench/ltl2tgba/parseout.pl: Adjust to output nondeterministic
indices and number of nondeterministic automata.
* bench/ltl2tgba/README: Update explanations.
2012-05-21 14:39:33 +02:00
Tomáš Babiak
f2b188d9ec [lbtt] Count deterministic automata and deterministic states.
* src/BuchiAutomaton.h, src/BuchiAutomaton.cc
(BuchiState::isDeterministic, BuchiAutomaton::isDeterministic,
BuchiAutomaton::nondeterminismIndex): New methods.
* src/TestOperations.cc (generateBuchiAutomaton): Collect
nondeterminism indices, and count deterministic automata.
* src/TestStatistics.cc, src/TestStatistics.h: Add storage
for these statistics.
* src/StatDisplay.cc (printBuchiAutomatonStats,
printCollectiveStats): Display these statistics.
2012-05-21 14:39:27 +02:00
Alexandre Duret-Lutz
31b3a22805 FM: Simplify promises of U, M, and F formulae.
* src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::register_a_variable):
Simplify promises by replacing P(a U b), P(b M a), and P(Fb), by P(b).
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
cb068599dc ltl2tgba: Set assume_sba for automata read from a neverclaim.
This cause double-circles for accepting states in dot output.

* src/tgbatest/ltl2tgba.cc: Set assume_sba for automata read from
neverclaims.  Reset assume_sba after scc_filter and simulation.
* src/tgbatest/neverclaimread.test: Expect a double circle.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
e5a86290cf Clean the as_bdd() cache after LTL simplification.
Syntactic implication checks may use as_bdd() to compare Boolean
formulae.  By doing so, they register Boolean variables in an order
that is usially detrimental to the LTL translator.  The new,
clear_as_bdd_cache() function offers a mean to unregister these
variables, so that the LTL translator will register them again in the
a more natural way.

* src/ltlvisit/simplify.hh, src/ltlvisit/simplify.cc
(clear_as_bdd_cache): New function.
* src/tgbatest/ltl2tgba.cc, wrap/python/ajax/spot.in: Call it.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
9633dd6e88 Speedup syntactic implication by not comparing literals using bdd.
* src/ltlvisit/simplify.cc
(ltl_simplifier_cache::syntactic_implication): If the lhs and rhs are
literals that are not equal, return false immediately.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
a80a5137fd Add -rD option to ltl2tgba, to display some caching statistics.
* src/ltlvisit/simplify.cc, src/ltlvisit/simplify.hh (print_stats):
New function.
* src/tgbatest/ltl2tgba.cc: Call it.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
babc024097 Correctly handle ltl2tgba's option -rL.
* src/tgbatest/ltl2tgba.cc: Fix mismatch between the help text,
documenting -rL, and the handling code, expecting -rs.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
8c454f9ddf FM: use a vector to store the Next BDD->formula map.
* src/tgbaalgos/ltl2tgba_fm.cc: Here.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
191fa370e2 Overhaul bdddict to speedup bdd->formula lookups.
* src/tgba/bdddict.hh, src/tgba/bdddict.cc: Store variable types and
associated formula in a vector indexed by BDD variable numbers,
instead of using several maps.
* src/evtgbaalgos/tgba2evtgba.cc, src/tgba/bddprint.cc,
src/tgba/formula2bdd.cc, src/tgbaalgos/ltl2tgba_fm.cc,
src/tgbaalgos/save.cc: Adjust usage.
2012-05-20 21:00:40 +02:00
Alexandre Duret-Lutz
c5b294c786 FM: collect implied formulae in & arguments; do not to translate them
* src/tgbaalgos/ltl2tgba_fm.cc (implied_subforfmulae): New function.
(ltl_trad_visitor::visit(const binop*)): Use it.  This is an attempt
to correct the unoptimal translation of 'Fa & GFa' left by previous
patch.  It still fails to optimize 'Fa & GF(a&b)', but this is not a
regression compared to previous version.
2012-05-14 10:18:58 +02:00
Alexandre Duret-Lutz
1b143067c0 Faster translation of GFa.
* src/tgbaalgos/ltl2tgba_fm.cc: Add a "recurring" mode for the
translation of the child of G.  This generalizes Couvreur's original
trick to translate GFa as (a|Prom(a))&X(GFa) without generating an
intermediate GF(a)&F(a) state that would have to be merged with GF(a)
latter.  This implementation will also speedup formulas such a G((a U
b) & (c M d)).  With this patch, translating GF(p1) & GF(p2) &
... GF(p20) into a TGBA takes 57s instead of 128s on my computer.
However it alsos causes some formulas to be translated into larger
automata that are not immediately reduced (the simulation-reduction is
needed).  For instance Fa & GFa now has a different signature than
GFa, so translating 'Fa & GFa' generates two states where is used to
generate only one.
2012-05-14 10:15:07 +02:00
Alexandre Duret-Lutz
e2f70e72b8 Fix translation of !{r}.
We need a marked version of !{r} to perform breakpoint unroling.

* src/ltlast/unop.cc, src/ltlast/unop.hh: Declare a NegClosureMarked
operator.
* src/ltlvisit/mark.hh, src/ltlvisit/mark.cc,
src/tgbaalgos/ltl2tgba_fm.cc: Adjust to deal with NegClosureMarked
and NegClosure as apropriate.
* src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc,
src/ltlvisit/tunabbrev.cc, src/tgbaalgos/eltl2tgba_lacim.cc,
src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2tgba_lacim.cc,
src/tgba/formula2bdd.cc: Deal with NegClosureMarked in the same way as
we deal with NegClosure.
* src/tgbatest/ltl2tgba.test: More tests.
* src/ltltest/kind.test: Adjust.
* doc/tl/tl.tex: Mention the marked negated closure.
2012-05-12 12:21:41 +02:00
Alexandre Duret-Lutz
14144f3b3b * wrap/python/ajax/README: More debugging help. 2012-05-11 23:35:49 +02:00
Alexandre Duret-Lutz
2d0ac3eb75 * src/tgbaalgos/simulation.cc (get_state): Do not lookup the map twice. 2012-05-11 07:58:50 +02:00
Alexandre Duret-Lutz
ebe2362bc9 Equip the LTL parser with printers for formulas and other token.
* src/ltlparse/ltlparse.yy: Add new printers.  Suggested by Akim
Demaille.
2012-05-10 10:23:13 +02:00
Alexandre Duret-Lutz
509edabab4 Missing space in help text.
* src/tgbatest/ltl2tgba.cc (syntax): Here.  Reported by Akim Demaille.
2012-05-10 10:23:12 +02:00
Alexandre Duret-Lutz
9f127deae6 Fix generation of randome SERE formulae.
* src/ltlvisit/randomltl.cc: Use the correct flavor of And and Or.
Reported by Etienne Renault.
* NEWS: Mention the bug.
2012-05-10 10:22:59 +02:00
Alexandre Duret-Lutz
de64a48e8b * m4/buddy.m4: Typo, reported by Thomas Badie. 2012-05-09 21:49:20 +02:00
Alexandre Duret-Lutz
c18c153209 * configure.ac, NEWS: Bump version to 0.9a. 2012-05-09 17:42:28 +02:00
Alexandre Duret-Lutz
1e0ae54892 Release Spot 0.9
* configure.ac, NEWS: Bump version to 0.9.
2012-05-09 13:20:22 +02:00
Alexandre Duret-Lutz
2945668021 Update the help text for the Couvreur/FM algorithm.
* wrap/python/ajax/ltl2tgba.html: Mention PSL.
2012-05-09 13:20:22 +02:00
Alexandre Duret-Lutz
b71eadd8e3 Fix syntactic implication rule between R/M and U/W.
* doc/tl/tl.tex, src/ltlvisit/simplify.cc: Fix the rule.
* src/ltltest/reduccmp.test, src/ltltest/syntimpl.test:
Add more tests.
2012-05-07 16:36:13 +02:00
Alexandre Duret-Lutz
70e3e2cd04 * NEWS: Typo in date. 2012-05-07 16:36:13 +02:00
Alexandre Duret-Lutz
b9afd8e705 Fix mismatch between srand/srand48 and rand/rand48.
Because only the configure macros of spot::srand() had been updated to
the introduction of _config.h, rand() was used even if drand48() was
available, and yet srand48() was being called by spot::srand().  The
consequence is that setting the seed with srand48() had not effect on
the value returned by rand().  Reported by Etienne Renault.

* src/misc/random.cc (drand): Fix configure macros used.
2012-05-07 16:36:10 +02:00
Alexandre Duret-Lutz
a2893520ca Properly thank Christian and Felix.
* THANKS, src/tgbaalgos/ltl2tgba_fm.cc: Here.
2012-05-07 14:44:50 +02:00
Alexandre Duret-Lutz
7438fa3c65 Fix LTL output for Spin.
* src/ltlvisit/tostring.cc (spin_kw): Output X, not ().
2012-05-05 11:05:58 +02:00
Alexandre Duret-Lutz
927d745805 80columns.test: Add workaround for non-unicode systems.
* src/sanity/80columns.test: If the system cannot count unicode
characters, only search for long ascii lines.
2012-05-03 20:46:59 +02:00