Commit graph

2422 commits

Author SHA1 Message Date
Alexandre Lewkowicz
d15b5f43a6 safra: Fix properties and use new API
* src/tests/safra.cc, src/twaalgos/safra.cc: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
bb93f6e9af safra: Nodes are grouped by SCC
* src/tests/safra.cc, src/tests/safra.test: Update it.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: all nodes in a safra
state are grouped by SCC. This is done by putting them in different
braces.  The same SCC can have different ids depending on the safra
state.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
b59b31f806 safra: Give more explicit names to types
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
18396e5973 safra: SSC based construction
* src/tests/safra.test: Update it.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: Acceptance is now MIN
ODD.  We only track runs within an SCC and only consider accepting SCC.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
0cf83d7cbc safra: Update pretty printer function
* src/twaalgos/safra.cc: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
3bd95c32e7 safra: Remove paths when leaving an SCC
* src/tests/safra.cc:  Add option.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh:  When a node leaves an
SCC, all the subpaths of that node are removed.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
e8c428d0a3 safra: Edges to accepting SCC are accepting
*  src/twaalgos/safra.cc, src/twaalgos/safra.hh: Implement optimisation.
Update function calls with new API.
* src/tests/safra.cc, src/tests/safra.test: Use new API.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
f29de22b8a safra: Add bisimulation option
* src/tests/safra.cc, src/twaalgos/safra.cc,
src/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
64b27a9a26 safra: Add pretty printer for states
* src/tests/safra.cc, src/tests/safra.test: Add options and test.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
64cdd1adc7 safra: Fix the nesting comparision function
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
ebe03cf3d0 safra: Fix nesting comparision
* src/tests/safra.cc:  Output error message for wrong ltl formula.
* src/twaalgos/safra.cc:  Default comparision of vector does not
correspond to the desired comparision.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
8362bf3a5f safra: Ensure parity min even acceptance
* src/tests/safra.cc, src/tests/safra.test:  Use HOA format in tests.
* src/twaalgos/safra.cc:  Make sure the number of sets are always odd so
that cycles without any acceptance set are rejected.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
d0d42f86f9 safra: Use sub-transitions during determinization
* src/tests/safra.cc, src/tests/safra.test:  Update results.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: The use of transitions
resulted in non deterministic automata.  By using sub-transitions the
problem is solved.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
8b1f9d3712 safra: Ensure automata is degeneralized
* src/tests/safra.cc, src/tests/safra.test:  Update it.
* src/twaalgos/safra.cc: Here;
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
20fc8b0269 safra: Use std::map to represent macrostates
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
3ecdba6094 safra: Add a couple of tests
* src/tests/safra.cc, src/tests/safra.test: New.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
ef3143f048 safra: Output parity acceptance sets
* src/twaalgos/safra.cc, src/twaalgos/safra.hh:  Note that the created
automaton is not a true parity automaton as they are not handled yet
by Spot.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
f2fa92004c safra: handle single accepting set
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
496083b14a safra: implement powerset construction
* spot/twaalgos/Makefile.am: Update it.
* src/twaalgos/safra.cc, src/twaalgos/safra.hh: New.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
f120dd3206 rename src/ as spot/ and use include <spot/...>
* NEWS: Mention the change.
* src/: Rename as ...
* spot/: ... this, adjust all headers to include <spot/...> instead of
"...", and adjust all Makefile.am to search headers from the top-level
directory.
* HACKING: Add conventions about #include.
* spot/sanity/style.test: Add a few more grep to catch cases
that do not follow these conventions.
* .gitignore, Makefile.am, README, bench/stutter/Makefile.am,
bench/stutter/stutter_invariance_formulas.cc,
bench/stutter/stutter_invariance_randomgraph.cc, configure.ac,
debian/rules, doc/Doxyfile.in, doc/Makefile.am,
doc/org/.dir-locals.el.in, doc/org/g++wrap.in, doc/org/init.el.in,
doc/org/tut01.org, doc/org/tut02.org, doc/org/tut03.org,
doc/org/tut10.org, doc/org/tut20.org, doc/org/tut21.org,
doc/org/tut22.org, doc/org/tut30.org, iface/ltsmin/Makefile.am,
iface/ltsmin/kripke.test, iface/ltsmin/ltsmin.cc,
iface/ltsmin/ltsmin.hh, iface/ltsmin/modelcheck.cc,
wrap/python/Makefile.am, wrap/python/ajax/spotcgi.in,
wrap/python/spot_impl.i, wrap/python/tests/ltl2tgba.py,
wrap/python/tests/randgen.py, wrap/python/tests/run.in: Adjust.
2015-12-04 20:13:59 +01:00
Alexandre Duret-Lutz
e357c0c5bc hoa: allow dots in identifiers
As discussed at https://github.com/adl/hoaf/issues/56

* src/parseaut/scanaut.ll: Allow dots.
* src/tests/parseaut.test: Test it.
* NEWS: Mention it.
2015-12-02 15:31:03 +01:00
Alexandre Duret-Lutz
2052e73af8 word: store the bdd dict for easier printing
* src/twaalgos/word.hh, src/twaalgos/word.cc: Store the
bdd_dict, and replace the print() method by a << overload.
* NEWS: Mention it.
* src/bin/ltlcross.cc, src/bin/common_aoutput.hh: Adjust.
2015-12-01 01:57:37 +01:00
Alexandre Duret-Lutz
06b176991e fix constness of twa::get_init_state() and twa_succ_iterator::dst()
Fixes #125.

* src/kripke/kripkegraph.hh, 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/ta/tgtaproduct.cc, src/ta/tgtaproduct.hh,
src/taalgos/dot.cc, src/taalgos/emptinessta.cc,
src/taalgos/emptinessta.hh, src/taalgos/minimize.cc,
src/taalgos/reachiter.cc, src/taalgos/tgba2ta.cc, src/twa/twa.hh,
src/twa/twagraph.hh, src/twa/twaproduct.cc, src/twa/twaproduct.hh,
src/twaalgos/compsusp.cc, src/twaalgos/gtec/gtec.cc,
src/twaalgos/ltl2tgba_fm.cc, src/twaalgos/reachiter.cc,
src/twaalgos/stutter.cc: Adjust.
2015-11-28 21:47:04 +01:00
Alexandre Duret-Lutz
afbaa54d92 rewrite explicit Kripke structures and their parser
Fixes #4 and fixes #5.

* NEWS: Mention the change.
* src/kripkeparse/: Delete.
* README, src/Makefile.am, configure.ac: Adjust.
* src/kripke/kripkeexplicit.cc, src/kripke/kripkeexplicit.hh,
src/kripke/kripkeprint.cc, src/kripke/kripkeprint.hh: Delete.
* src/kripke/kripkegraph.hh: New file.
* src/kripke/Makefile.am: Adjust.
* src/parseaut/parseaut.yy, src/parseaut/public.hh: Add
an option to read kripke structures.
* src/tests/bad_parsing.test: Delete.
* src/tests/Makefile.am: Adjust.
* src/tests/kripke.test, src/tests/parse_print_test.cc: Rewrite.
* src/tests/ikwiad.cc, src/tests/parseaut.test,
iface/ltsmin/modelcheck.cc, wrap/python/spot_impl.i: Adjust.
2015-11-28 02:18:39 +01:00
Alexandre Duret-Lutz
745fda1a4f print_hoa: add option "k"
* src/twaalgos/hoa.cc, src/twaalgos/hoa.hh: Implement it.
* NEWS, doc/org/hoa.org, src/bin/common_aoutput.cc: Document it.
* src/tests/readsave.test: Test it.
2015-11-28 02:18:13 +01:00
Alexandre Duret-Lutz
a825fa91e5 dtwa_sat_minimize: better selection of the reference automaton
* src/twaalgos/dtwasat.cc: Choose the reference automaton based on its
size.  With this change, the last example of my LPAR'15 talk goes from
~7s to under 1s.
* NEWS: Mention it.
2015-11-24 06:23:44 +01:00
Alexandre Duret-Lutz
a5ca9dbc43 sat: rename dtgbasat as dtwasat
* src/twaalgos/dtgbasat.cc, src/twaalgos/dtgbasat.hh: Rename as...
* src/twaalgos/dtwasat.cc, src/twaalgos/dtwasat.hh: ... these.
* src/bin/autfilt.cc, src/tests/ikwiad.cc, src/twaalgos/Makefile.am,
src/twaalgos/postproc.cc, wrap/python/spot_impl.i: Adjust.
* NEWS: Mention the renamings.
2015-11-24 05:44:51 +01:00
Alexandre Duret-Lutz
b3ff5655fb dot: add support for option +N
* src/twaalgos/dot.cc: Here.
* NEWS, src/bin/common_aoutput.cc: Document it.
* wrap/python/tests/automata.ipynb: Test it.
2015-11-14 14:49:31 +01:00
Alexandre Duret-Lutz
6b516df34a dot: display pairs of states for products
* src/twaalgos/dot.cc: Here.
* wrap/python/tests/automata.ipynb: Test it.
* NEWS: Document this.
2015-11-14 10:22:59 +01:00
Alexandre Duret-Lutz
d23eaec7ef make sure --dot=Bb is the same as --dot=b
* NEWS: Mention the fixed bug.
* src/twaalgos/dot.cc: Fix.
* wrap/python/tests/decompose.ipynb: Use it.
2015-11-13 17:50:12 +01:00
Alexandre Duret-Lutz
5a7abe8582 rename tgba_run as twa_run
Fixes #122.

* src/twaalgos/word.cc, src/twaalgos/word.hh: Here.
* src/bin/ltlcross.cc, src/bin/common_aoutput.hh: Adjust.
* NEWS: Mention the renaming.
2015-11-11 12:45:59 +01:00
Alexandre Duret-Lutz
d14f0998e0 hide trim() from the public interface
* src/misc/escape.cc, src/misc/escape.hh (trim): Move...
* src/priv/trim.cc, src/priv/trim.hh: ... in these new files.
* src/priv/Makefile.am: Add them.
* src/parseaut/scanaut.ll, src/parsetl/scantl.ll: Adjust.
2015-11-11 11:33:15 +01:00
Alexandre Duret-Lutz
86abd6c1c0 Use -Bsymbolic-functions and -Bsymbolic
This avoids dynamic lookups to resolve symbols inside the library, but
disallows symbol interposition.

* m4/symbolic.m4: New file.
* buddy/m4/symbolic.m4: New link.
* configure.ac, buddy/configure.ac: Add AX_SYMBOLIC.
* buddy/src/Makefile.am, iface/ltsmin/Makefile.am, src/Makefile.am,
wrap/python/Makefile.am: Link with $(SYMBOLIC_LDFLAGS).
2015-11-10 15:10:11 +01:00
Alexandre Duret-Lutz
1396b7f710 * src/parsetl/.gitignore: Adjust to no-that-recent renamings. 2015-11-10 11:19:37 +01:00
Alexandre Duret-Lutz
458fc53b71 * src/bin/man/autfilt.x: Fix description. 2015-11-09 08:25:58 +01:00
Alexandre Duret-Lutz
104a372c41 Add a notebook illustrating decompose_strength()
* wrap/python/tests/decompose.ipynb: New file.
* wrap/python/tests/Makefile.am: Add it.
* src/twaalgos/strength.cc: Fix corner cases.
* src/tests/strength.test: Adjust corner case.
* NEWS, doc/org/tut.org: Mention the notebook.
2015-11-08 22:07:43 +01:00
Alexandre Duret-Lutz
a7db0b5435 Add a decompose_strength() function.
* src/twaalgos/strength.cc, src/twaalgos/strength.hh
(decompose_stregth): New function.
* src/bin/autfilt.cc: Add a --decompose-strength option.
* src/bin/man/autfilt.x: Add bibliography.
* src/tests/strength.test: Test it.
* NEWS: Mention it.
2015-11-08 22:07:43 +01:00
Alexandre Duret-Lutz
3428fb32cd Add support for --check=strength
* src/twaalgos/strength.cc, src/twaalgos/strength.hh (check_strength):
New function.
* src/bin/common_aoutput.cc: Add --check=strength.
* src/tests/strength.test: New file.
* src/tests/Makefile.am: Add it.
* doc/org/hoa.org, NEWS: Document it.
2015-11-07 21:40:04 +01:00
Alexandre Duret-Lutz
f4cf0f4078 autfilt: Add --is-terminal and --is-weak.
Fixes #47.

* src/twaalgos/strength.cc, src/twaalgos/strength.hh
(is_weak_automaton): New function.
(is_terminal_automaton): Generalize slightly.
* src/bin/autfilt.cc: Add options --is-terminal and --is-weak.
* src/tests/readsave.test: Add a test.
* NEWS: Update.
2015-11-07 16:40:26 +01:00
Alexandre Duret-Lutz
81cfa05aef rename safety.hh as strength.hh
* src/twaalgos/safety.cc, src/twaalgos/safety.hh: Rename as ...
* src/twaalgos/strength.cc, src/twaalgos/strength.hh: ... these.
* src/bin/ltlfilt.cc, src/tests/ikwiad.cc, src/twaalgos/Makefile.am,
src/twaalgos/compsusp.cc, src/twaalgos/minimize.cc,
wrap/python/spot_impl.i: Adjust.
2015-11-07 14:28:40 +01:00
Alexandre Duret-Lutz
8a8ec21de7 rename is_guarantee_automaton() as is_terminal_automaton()
* src/twaalgos/safety.hh, src/twaalgos/safety.cc: Here.
* src/bin/ltlfilt.cc, src/tests/ikwiad.cc, src/twaalgos/minimize.cc,
wrap/python/ajax/spotcgi.in: Adjust.
* NEWS: Mention the change.
2015-11-07 14:05:01 +01:00
Alexandre Duret-Lutz
0c5f87b442 add support for the "terminal" property
* src/twa/twa.hh: Store the terminal property.
* src/twaalgos/hoa.cc, src/parseaut/parseaut.yy: Add I/O for "terminal".
* src/twaalgos/ltl2tgba_fm.cc, src/twaalgos/minimize.cc: Set terminal
as apropriate.
* src/twaalgos/safety.cc: Use it.
* doc/org/tut21.org, doc/org/hoa.org, NEWS: Document it.
* src/tests/complement.test, src/tests/monitor.test,
wrap/python/tests/automata-io.ipynb: Adjust.
2015-11-07 14:04:44 +01:00
Alexandre Duret-Lutz
654888718c add support for the weak property
This fixes #119.

* doc/org/tut21.org, doc/org/hoa.org, NEWS: Document it.
* src/twa/twa.hh: Support it in automata.
* src/twaalgos/hoa.cc, src/parseaut/parseaut.yy: Add I/O support.
* src/twaalgos/minimize.cc, src/twaalgos/totgba.cc: Set weak
automata on output.
* src/tests/complement.test, src/tests/parseaut.test,
src/tests/readsave.test, src/tests/remfin.test, src/tests/sccsimpl.test,
src/tests/wdba2.test, wrap/python/tests/automata-io.ipynb: Adjust.
2015-11-06 21:51:48 +01:00
Alexandre Duret-Lutz
33c234da11 hoa: output "unambiguous" only for non-deterministic automata by default
* src/twaalgos/hoa.cc: Output do not output "unambiguous" if the
automaton is deterministic.  Add option "v" to cancel this restriction,
and also output "no-univ-branch".
* src/twaalgos/hoa.hh: Document the "v" option.
* src/tests/readsave.test: Test it.
* src/tests/unambig.test: Adjust for unambiguous not being output
if the automaton is deterministic.
* src/bin/common_aoutput.cc, NEWS: Document it.
* doc/org/hoa.org: Add a summary table about how properties are handled.
* src/twa/twa.hh (prop_deterministic): Setting this should also
set the unambiguous property.
* src/twaalgos/isunamb.cc: Simplify the property check.
2015-11-05 19:42:08 +01:00
Alexandre Duret-Lutz
cbb2e64e7c twa: rename the is_* getters as prop_*
This fixes #116.

* src/twa/twa.hh: Rename those methods.
* NEWS: Document the renamings.
* doc/org/hoa.org, doc/org/tut21.org, src/parseaut/parseaut.yy,
src/tests/ikwiad.cc, src/twa/twagraph.hh,
src/twaalgos/are_isomorphic.cc, src/twaalgos/complete.cc,
src/twaalgos/degen.cc, src/twaalgos/dot.cc, src/twaalgos/dtbasat.cc,
src/twaalgos/dtgbasat.cc, src/twaalgos/hoa.cc, src/twaalgos/isdet.cc,
src/twaalgos/isunamb.cc, src/twaalgos/lbtt.cc,
src/twaalgos/minimize.cc, src/twaalgos/postproc.cc,
src/twaalgos/product.cc, src/twaalgos/randomgraph.cc,
src/twaalgos/remfin.cc, src/twaalgos/sbacc.cc,
src/twaalgos/simulation.cc, src/twaalgos/stutter.cc,
src/twaalgos/totgba.cc: Adjust.
2015-11-05 09:51:53 +01:00
Alexandre Duret-Lutz
8ea5f73c1a twa: no default argument for property setters
This is a preliminary for the renaming suggested in #116.

* src/twa/twa.hh (prop_state_based_acc, prop_inherently_weak,
prop_deterministic, prop_unambiguous, prop_stutter_invariant,
prop_stutter_sensitive): Do not default the argument to true.
* src/parseaut/parseaut.yy, src/twaalgos/degen.cc,
src/twaalgos/dtbasat.cc, src/twaalgos/dtgbasat.cc,
src/twaalgos/minimize.cc, src/twaalgos/randomgraph.cc,
src/twaalgos/remfin.cc, src/twaalgos/sbacc.cc,
src/twaalgos/simulation.cc, src/twaalgos/totgba.cc,
wrap/python/tests/remfin.py: Adjust.
2015-11-04 18:25:49 +01:00
Alexandre Duret-Lutz
bf5749189e parseaut: do not ignore the "unambiguous" property
Fixes #115.

* src/parseaut/parseaut.yy: Set the property on the output automaton.
* src/tests/unambig.test: Add a test case.
* NEWS: Mention the fix.
2015-11-04 17:11:25 +01:00
Alexandre Duret-Lutz
aaff42ee22 python: fix output of twa_run
* src/twaalgos/emptiness.hh, src/twaalgos/emptiness.cc: Declare the
operator<< for twa_run, not for twa_run_ptr (the shared_ptr
automatically forward operator<<).
* wrap/python/spot_impl.i: Add __str__ to twa_run, not twa_run_ptr.
2015-10-29 17:24:10 +01:00
Alexandre Duret-Lutz
f6af2a84cb twa_succ_iterator: rename accessors
* src/twa/twa.hh, src/ta/ta.hh (current_state,
current_acceptance_conditions, current_condition): Rename as...
(dst, acc, cond): ... these.
* iface/ltsmin/ltsmin.cc, src/kripke/fairkripke.cc,
src/kripke/fairkripke.hh, src/kripke/kripke.cc,
src/kripke/kripke.hh, src/kripke/kripkeexplicit.cc,
src/kripke/kripkeexplicit.hh, src/kripke/kripkeprint.cc,
src/ta/taexplicit.cc, src/ta/taexplicit.hh, src/ta/taproduct.cc,
src/ta/taproduct.hh, src/ta/tgtaproduct.cc, src/ta/tgtaproduct.hh,
src/taalgos/dot.cc, src/taalgos/emptinessta.cc,
src/taalgos/minimize.cc, src/taalgos/reachiter.cc,
src/taalgos/tgba2ta.cc, src/twa/taatgba.cc, src/twa/taatgba.hh,
src/twa/twagraph.hh, src/twa/twaproduct.cc,
src/twa/twasafracomplement.cc, src/twaalgos/bfssteps.cc,
src/twaalgos/bfssteps.hh, src/twaalgos/compsusp.cc,
src/twaalgos/copy.cc, src/twaalgos/emptiness.cc,
src/twaalgos/gtec/gtec.cc, src/twaalgos/gv04.cc,
src/twaalgos/lbtt.cc, src/twaalgos/ltl2tgba_fm.cc,
src/twaalgos/magic.cc, src/twaalgos/minimize.cc,
src/twaalgos/ndfs_result.hxx, src/twaalgos/reachiter.cc,
src/twaalgos/se05.cc, src/twaalgos/stats.cc,
src/twaalgos/stutter.cc, src/twaalgos/tau03.cc,
src/twaalgos/tau03opt.cc, wrap/python/tests/interdep.py: Adjust.
* NEWS: Mention the renamings.
2015-10-28 21:16:21 +01:00
Alexandre Duret-Lutz
1b5b9e4a65 * src/bin/common_post.cc: Fix description of --any. 2015-10-27 08:01:18 +01:00