Commit graph

1875 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
bfc668246c Add more ltl3ba options.
* wrap/python/ajax/ltl2tgba.html, wrap/python/ajax/protocol.txt:
Add options 'o' and 'p'.
* wrap/python/ajax/spot.in: Handle these, and use '-v' to check
version.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
689f56f480 ltl2tgba.html: Detect ltl3ba's presence and version.
* wrap/python/ajax/ltl2tgba.html: Display the ltl3ba version, and
disable its tab when unavailable.
* wrap/python/ajax/protocol.txt: Add option for ltl3ba's version.
* wrap/python/ajax/spot.in: Implement this option, and catch
errors when ltl3ba is not installed.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
04cc63cac2 Use tgba_explicit_numbered to create SCC-filtered automata.
* src/tgbaalgos/sccfilter.cc: tgba_explicit_numbered replace
tgba_explicit_string for the general case.  This way we don't have to
prefix the result of format_state() in case to states have the same
description.  We just number the states instead.  For the specific
cases where the input automata are instance of tgba_explicit_string or
tgba_explicit_formula, we clone the label.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
988e7e2499 Preliminary work on integrating LTL3BA in ltl2tgba.html.
* wrap/python/ajax/ltl2tgba.html: Add a dedicated tab with
two columns of options.
* wrap/python/ajax/css/ltl2tgba.css: Support for two columns.
* wrap/python/ajax/protocol.txt: Document new options.
* wrap/python/ajax/spot.in: Handle the new options.
* wrap/python/ajax/Makefile.am: Substitude LTL3BA in spot.in.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
7ceca326ad Small speedup in sba_explicit::state_is_accepting().
* src/tgba/tgbaexplicit.hh (state_is_accepting): Implement without
creating then deleting an iterator.
2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
09864a9d3c * NEWS: Mention that Safra is faster. 2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
334366a78c * src/tgba/tgbasafracomplement.cc: Use the new offline degeneralization. 2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
59dc4a9822 * src/tgbaalgos/degen.cc: Use a small map instead of merge_transitions. 2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
509fb7e2a8 * src/tgbaalgos/degen.cc: Use the new bdd_implies() function. 2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
b7c77dca31 * src/tgbatest/ltl2tgba.cc: Clock the degeneralization. 2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
59a2763f41 * src/tgbaalgos/degen.cc (outgoing_acc): Fill both caches at once. 2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
5dbee4faab Offline version of the degeneralization.
* src/tgbaalgos/degen.cc, src/tgbaalgos/degen.hh: New files, with
most of the logic extracted from src/tgba/tgbatba.cc (SBA version).
* src/tgbaalgos/Makefile.am: Distribute these.
* src/tgbatest/ltl2tgba.cc: Use the new degeneralization instead of
the on-the-fly version.
2012-06-19 21:53:37 +02:00
Alexandre Duret-Lutz
b68d9d189c * NEWS: Summarize recent BDD speedups. 2012-06-19 21:52:03 +02:00
Alexandre Duret-Lutz
3a1a71016d * m4/buddy.m4: Check for bdd_implies. 2012-06-19 21:52:03 +02:00
Alexandre Duret-Lutz
484ea488c3 Use bdd_implies() to speedup various algorithms.
* src/ltlvisit/simplify.cc, src/tgba/tgbaproduct.cc,
src/tgba/tgbatba.cc, src/tgbaalgos/sccfilter.cc,
src/tgbaalgos/simulation.cc: Here.
2012-06-19 21:52:03 +02:00
Alexandre Duret-Lutz
821d5e54b7 Export bdd_implies to the Python interface, and test it.
* wrap/python/buddy.i (bdd_implies): New function.
* wrap/python/tests/implies.py: New file.
* wrap/python/tests/Makefile.am: Add it.
2012-06-19 21:52:03 +02:00
Alexandre Duret-Lutz
a814b97543 [buddy] Add a function bdd_implies to decide implications between BDDs.
* src/bdd.h (bdd_implies): New function.
* src/bddop.c (bdd_implies): Implement it.
(CACHEID_IMPLIES, IMPLIES_HASH): New helper macros.
2012-06-19 21:52:03 +02:00
Alexandre Duret-Lutz
e7a46e10e2 [buddy] Reduce the size of bddNode to improve cache efficiency.
The unicity table was mixed with the bddNode table for now
apparent reason.  After the hash of some node is computed,
bddnodes[hash] did only contain some random node (not the one
looked for) whose .hash member would point to the actual node with
this hash.  So that's a two step lookup.  With this patch, we sill
have a two step lookup, but the .hash member have been moved to a
separate array.  A consequence is that bddNode is now 16-byte long
(instead of 20) so it will never span across two cache lines.

* src/kernel.h (bddNode): Remove the hash member, and move it...
(bddhash): ... as this new separate table.
* src/kernel.c, src/reorder.c: Adjust all code.
2012-06-19 21:52:03 +02:00
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