Commit graph

1906 commits

Author SHA1 Message Date
Ala-Eddine Ben-Salem
422bb842bf Properly free memory and print logs
* src/tgbatest/ltl2tgba.cc: Properly free memory
* src/taalgos/tgba2ta.cc, src/taalgos/emptinessta.cc: print logs
2012-07-15 18:10:01 +02:00
Ala-Eddine Ben-Salem
83e7f0fa18 GTA (Generalized Testing Automata) implementation
* src/ta/ta.cc, src/ta/ta.hh, src/ta/taexplicit.cc,
src/ta/taexplicit.hh, src/ta/taproduct.cc, src/ta/taproduct.hh,
src/taalgos/Makefile.am, src/taalgos/dotty.cc,
src/taalgos/emptinessta.cc, src/taalgos/minimize.cc,
src/taalgos/minimize.hh, src/taalgos/tgba2ta.cc, src/taalgos/tgba2ta.hh,
src/tgbatest/ltl2tgba.cc: changes introduced to add a new form of TA
called GTA (Generalized Testing Automata). GTA is a TA with acceptance-
conditions added on transitions.
2012-07-15 18:10:01 +02:00
Ala-Eddine Ben-Salem
c7f4b8e262 Single-pass Testing Automata (STA) optimizations
* src/taalgos/sba2ta.cc, src/taalgos/emptinessta.cc: STA optimizations
2012-07-15 18:10:01 +02:00
Ala-Eddine Ben-Salem
782ba0010b Add a new form of TA with a Single-pass emptiness check (STA)
* src/ta/ta.cc, src/ta/ta.hh, src/ta/taexplicit.cc,
src/ta/taexplicit.hh, src/ta/taproduct.cc,src/ta/taproduct.hh,
src/taalgos/dotty.cc, src/taalgos/emptinessta.cc,
src/taalgos/emptinessta.hh, src/taalgos/minimize.cc,
src/taalgos/reachiter.cc, src/taalgos/sba2ta.cc, src/taalgos/sba2ta.hh,
src/tgbatest/ltl2ta.test, src/tgbatest/ltl2tgba.cc: Impacts of the
implementation of a new variant of TA, called STA, which involve a
Single-pass emptiness check. The new options (-in and -lv) added to
build the new variants of TA allow to add two artificial states:
1- an initial artificial state to have an unique initial state (-in)
2- a livelock artificial state which has no successors in order to
obtain the new form of TA which requires only a Single-pass emptiness-
check: STA (-lv).
2012-07-15 18:10:01 +02:00
Ala-Eddine Ben-Salem
310973f88c Improvement of TA Product/Minimisation and of WFair generation
* src/ta/taproduct.hh, src/ta/taproduct.cc: improvement of TA Product
* src/ltltest/randltl.cc: improvement of WFair Formulas generation
* src/taalgos/minimize.cc: improvement of TA minimization
2012-07-15 18:10:01 +02:00
Ala-Eddine Ben-Salem
2aad5b10d2 TA Product optimization and WFair Formulas generation
* src/ta/taproduct.cc: TA Product optimization
* src/ltltest/randltl.cc: WFair Formulas generation
2012-07-15 18:10:01 +02:00
Alexandre Duret-Lutz
c774ba141d Use downcast when appropriate.
* src/taalgos/sba2ta.cc, src/ta/ta.cc, src/ta/taexplicit.cc,
src/ta/taproduct.cc, src/taalgos/emptinessta.cc: Use downcast
and cleanup whitespace.
2012-07-15 18:10:00 +02:00
Ala Eddine
bf01501e15 Impacts of the new method state.destroy()
* src/ta/taexplicit.cc, src/ta/taproduct.cc,
src/taalgos/minimize.cc, src/taalgos/sba2ta.cc:
changes to use the new method destroy() added to state.hh
2012-07-15 18:10:00 +02:00
Ala Eddine
cd04d9acf3 Add TA minimization: merge bisimulating states
* src/taalgos/minimize.hh, src/taalgos/minimize.cc: implements a
minimization of TA by merging bisimular states.
* src/taalgos/statessetbuilder.hh, src/taalgos/statessetbuilder.cc:
returns the set of reachable states of a TA (used in minimize.cc).
* src/taalgos/Makefile.am: add them.
* src/tgbatest/ltl2tgba.cc: add commands to test TA minimization
2012-07-15 18:10:00 +02:00
Ala Eddine
81e80e6069 Add Testing Automata Product & Emptiness Check
* src/taalgos/stats.hh, src/taalgos/stats.cc: Compute statistics for a
automaton.
* src/ta/ta.hh, src/ta/ta.cc: Abstract representation of a Testing
Automata(TA)
* src/ta/taexplicit.hh, src/ta/taexplicit.cc: Explicit representation of
a Testing Automata (TA)
* src/taalgos/dotty.cc: Print a TA in dot format.
* src/taalgos/reachiter.hh, src/taalgos/reachiter.cc: Iterate over all
reachable states of a TA
* src/taalgos/sba2ta.cc: implements the construction of a TA from a BA
(Buchi Automata)
* src/tgbatest/ltl2tgba.cc: add commands to test the TA implementation
* src/taalgos/emptinessta.hh, src/taalgos/emptinessta.cc: implementation
 of the TA emptiness-check algorithm
* src/ta/taproduct.hh, src/ta/taproduct.cc: representation of the
product (automaton) between a TA and a Kripke structure.
* src/ta/Makefile.am, src/taalgos/Makefile.am: add them
2012-07-15 18:10:00 +02:00
Ala Eddine
ba47b821c6 Preliminary implementation of Testing Automata.
* configure.ac: Generate src/ta/Makefile and src/taalgos/Makefile.
* src/Makefile.am (SUBDIRS): Add them.
* src/tgbatest/ltl2tgba.cc (main): Add option -TA.
* src/ta/Makefile.am, src/ta/ta.hh, src/ta/taexplicit.cc,
src/ta/taexplicit.hh, src/taalgos/Makefile.am,
src/taalgos/dotty.cc, src/taalgos/dotty.hh,
src/taalgos/reachiter.cc, src/taalgos/reachiter.hh,
src/taalgos/sba2ta.cc, src/taalgos/sba2ta.hh: New files.
2012-07-15 18:10:00 +02:00
Alexandre Duret-Lutz
c373a2f35e * NEWS, configure.ac: Bump version to 0.9.2a. 2012-07-02 18:02:49 +02:00
Alexandre Duret-Lutz
ddb18b4084 Relase Spot 0.9.2.
* NEWS, configure.ac: Bump version number.
2012-07-02 17:35:23 +02:00
Alexandre Duret-Lutz
85391ab9fe * wrap/python/ajax/Makefile.am (EXTRA_DIST): Add loading.gif. 2012-07-02 17:35:23 +02:00
Alexandre Duret-Lutz
fc22fe56e4 * NEWS: Mention recent changes. 2012-07-02 17:35:23 +02:00
Alexandre Duret-Lutz
786499534f Please the upcoming g++ 4.8.
* src/tgbaalgos/simulation.cc: Remove unused typedef.
2012-07-02 17:35:23 +02:00
Alexandre Duret-Lutz
3793454864 [lbtt] Fix issues reported by Clang++ 3.1.
* src/Graph.h.in (PathElement::hasEdge): Check the correct
pointer, not the address of some member function.
* src/BuchiAutomaton.cc, src/Configuration.cc,
src/TestOperations.cc, src/TestOperations.h: Recode these files in
utf-8.
2012-07-02 17:35:22 +02:00
Alexandre Duret-Lutz
141baae57e ltl2tgba.html: Use the new degeneralization routine.
* wrap/python/spot.i: Export degeneralize().
* wrap/python/ajax/spot.in: Use it.
2012-07-02 17:35:22 +02:00
Alexandre Duret-Lutz
bc5a4ba416 [buddy] Fix the recent Automake workaround for VPATH builds.
* examples/bddcalc/Makefile.am (ACLOCAL_AMFLAGS): Add -I. for
parse.c.  Reported by Pierre Parutto.
2012-06-20 20:56:03 +02:00
Thomas Badie
3acc53d55a Add a bench script for the output of `lbtt'.
* bench/ltl2tgba/lbtt2csv.pl: Write a perl script to change the
format outputted by `lbtt' into a csv format.
* bench/ltl2tgba/Makefile.am: Add the script to EXTRA_DIST.
2012-06-20 14:04:57 +02:00
Alexandre Duret-Lutz
0c1fec1259 LTL parser: better error recovery.
* src/ltlparse/ltlparse.yy: Keep the left operand of binary operator,
if the right one is erroneous.  Also keep the sane beginning of
parenthesized blocks.
* src/ltltest/parseerr.test: Adjust test cases.
* NEWS: Mention it.
2012-06-20 10:54:26 +02:00
Alexandre Duret-Lutz
ac41825efd * src/tgbaalgos/degen.cc (~unicity_table): Accommodate g++ 4.0.1. 2012-06-20 08:31:28 +02:00
Thomas Badie
d5bb0ffe89 Fix a perl warning in `parseout.pl'.
* bench/ltl2tgba/parseout.pl: Fix a warning when using an option
by shifting the option when there is one.
2012-06-19 22:19:22 +02:00
Alexandre Duret-Lutz
6d047a1d6b Document recent changes.
* NEWS: Update.
* wrap/python/ajax/README: Explain the ltl3ba requirement.
2012-06-19 22:13:00 +02:00
Alexandre Duret-Lutz
bb8142910e * wrap/python/ajax/ltl2tgba.html: Typos, and better WDBA doc. 2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
601fbedbf6 * wrap/python/ajax/ltl2tgba.html: Add a favicon link. 2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
b0193e1418 Apply Jan's comments on ltl3ba's interface.
* wrap/python/ajax/ltl2tgba.html: Adjust text.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
5c04022505 * wrap/python/ajax/ltl2tgba.html: Add tooltips for LTL, PSL, SERE. 2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
c4c42a37c6 ltl2tgba.html: Update tooltips with Tomáš Babiak's comments.
* wrap/python/ajax/ltl2tgba.html: Update tooltips for LTL3BA.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
8d9d0f7b5b ltl2tgba.html: add meta description, and validate page.
* wrap/python/ajax/ltl2tgba.html: Here.
2012-06-19 21:55:08 +02:00
Alexandre Duret-Lutz
81d3ee48f0 ltl2tgba.html: Display a loading logo for delayed results.
* wrap/python/ajax/css/loading.gif: New file.
* wrap/python/ajax/css/ltl2tgba.css (.loading): New class.
* wrap/python/ajax/ltl2tgba.html: Display loading.gif after 200ms if
the answer hasn't arrived
* wrap/python/ajax/spot.in: Do not suggest not to draw the automaton
on timeout.
* wrap/python/ajax/js/jquery.ba-dotimeout.min.js: New file.
* wrap/python/ajax/Makefile.am: Distribute it.
2012-06-19 21:55:08 +02:00
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