Commit graph

208 commits

Author SHA1 Message Date
Amaury Fauchille
1fd76ee918 word: implement twa word parsing
* spot/twaalgos/word.hh: add parse_word method and a new constructor
* spot/twaalgos/word.cc: implement word parsing
* python/spot/__init__.py: add parse_word method binding
* tests/python/word.ipynb: add word parsing tests
2016-03-07 20:17:00 +01:00
Alexandre Duret-Lutz
61b1f200b6 rename tgba_reachable_iterator as twa_reachable_iterator
* spot/twaalgos/reachiter.cc, spot/twaalgos/reachiter.hh: Here.
* spot/twaalgos/stats.cc, spot/twaalgos/lbtt.cc: Adjust.
* doc/org/upgrade2.org, NEWS: Mention the renaming.
2016-03-06 11:40:42 +01:00
Alexandre Duret-Lutz
ad08a585af rename two confusing methods of emptiness_check_instantiator
* spot/twaalgos/emptiness.hh (emptiness_check_instantiator): rename
min_acceptance_conditions and max_acceptance_conditions to
min_sets and max_sets.
* spot/twaalgos/emptiness.cc, python/ajax/spotcgi.in,
tests/core/ikwiad.cc, tests/core/emptchk.cc, tests/core/randtgba.cc:
Adjust.
* doc/org/upgrade2.org, NEWS: Mention the change.
2016-03-03 18:18:39 +01:00
Alexandre Duret-Lutz
cf79cefd9a fix installation of gtec.hh
* spot/twaalgos/gtec/Makefile.am: install it in spot/twaalgos/gtec,
not spot/tgbaalgos/gtec.
* NEWS: Mention it.
2016-03-03 16:47:16 +01:00
Alexandre Duret-Lutz
65726c0f60 twa: rename as_var() as as_vars()
* spot/twa/twa.hh, spot/twaalgos/stutter.cc: Here.
* NEWS: Mention the change.
2016-03-02 16:44:49 +01:00
Etienne Renault
092e3630f4 Force casts to please clang on OSX
* spot/twa/twagraph.hh, spot/twaalgos/minimize.cc,
spot/twaalgos/remfin.cc: Here.
2016-02-29 09:06:06 +01:00
Alexandre Duret-Lutz
5d272fd256 use more override and final keywords
This patch is mostly focused on tagging most virtual methods that
override as such.  I found a few methods that where not meant to be
virtual this way, and tagged a few classes "final" along the way.

* bin/common_output.cc, spot/kripke/fairkripke.hh,
spot/kripke/kripke.hh, spot/kripke/kripkegraph.hh,
spot/ltsmin/ltsmin.cc, spot/misc/formater.hh, spot/priv/bddalloc.hh,
spot/ta/ta.hh, spot/ta/taexplicit.hh, spot/ta/taproduct.hh,
spot/ta/tgta.hh, spot/ta/tgtaexplicit.cc, spot/ta/tgtaexplicit.hh,
spot/ta/tgtaproduct.hh, spot/taalgos/emptinessta.hh, spot/tl/declenv.hh,
spot/tl/defaultenv.hh, spot/tl/randomltl.hh, spot/tl/relabel.cc,
spot/twa/bdddict.cc, spot/twa/taatgba.hh, spot/twa/twagraph.hh,
spot/twa/twaproduct.hh, spot/twaalgos/gtec/ce.cc,
spot/twaalgos/gtec/ce.hh, spot/twaalgos/gtec/gtec.hh,
spot/twaalgos/gv04.cc, spot/twaalgos/ltl2taa.cc, spot/twaalgos/magic.cc,
spot/twaalgos/minimize.cc, spot/twaalgos/ndfs_result.hxx,
spot/twaalgos/reachiter.hh, spot/twaalgos/se05.cc,
spot/twaalgos/stutter.cc, spot/twaalgos/tau03.cc: Add more override and
final keywords.
2016-02-16 11:59:00 +01:00
Alexandre Duret-Lutz
a3e0c8624e remove twa::compute_support_conditions
Fixes #148.

* spot/twa/twa.hh, spot/twa/twa.cc, spot/kripke/fairkripke.hh,
spot/kripke/fairkripke.cc, spot/ta/tgtaexplicit.hh,
spot/ta/tgtaexplicit.cc, spot/twa/twagraph.hh, spot/twa/twaproduct.hh,
spot/twa/twaproduct.cc, spot/twaalgos/stutter.cc, spot/twa/taatgba.hh,
spot/twa/taatgba.cc: Remove the method.
* spot/taalgos/tgba2ta.cc: Emulate it with a simple loop.
* NEWS: Mention the removal.
2016-02-15 11:04:48 +01:00
Alexandre Duret-Lutz
39b95474f8 remove twa::transition_annotation
Fixes #149.

* spot/twa/twa.hh, spot/twa/twa.cc, spot/kripke/fairkripke.hh,
spot/kripke/kripke.hh, spot/twa/twaproduct.cc, spot/twa/twaproduct.hh:
Remove this method.
* spot/twaalgos/emptiness.cc, spot/twaalgos/emptiness.hh,
tests/ltsmin/finite.test: Adjust.
* NEWS: Mention the removal.
2016-02-15 11:04:48 +01:00
Alexandre Duret-Lutz
b066c6f3f2 postproc: add fine-tuning options for determinization
* spot/twaalgos/postproc.cc, spot/twaalgos/postproc.hh:
Add options det-scc, det-simul, det-stutter.
* bin/spot-x.cc: Document them.
* doc/org/ltl2tgba.org: Illustrate one of them and link
to the spot-x man page.
2016-02-12 14:07:58 +01:00
Alexandre Duret-Lutz
8feab7e2bb postproc: more documentation
* spot/twaalgos/postproc.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
8a5f652384 determinize: Correct scc optimisation
* spot/twaalgos/determinize.cc:  Don't reuse previous SCC's.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
8568c3b423 postproc: integrate tgba_determinize()
* spot/twa/acc.hh: Add a smaller version of is_parity().
* spot/twaalgos/postproc.cc: Call tgba_determinize() if asked for
Generic acceptance and Deterministic output.
* bin/common_post.cc: Add 'G' as a shorthand for --generic.
* doc/org/ltl2tgba.org: Illustrate =ltl2tgba -G -D=.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
03d9a7512a determinize: do not work on deterministic automata
* spot/twaalgos/determinize.cc: Here.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
c18ee329fb determinize: rename the main function
* spot/twaalgos/determinize.cc, spot/twaalgos/determinize.hh,
tests/core/safra.cc (tgba_determinisation): Rename as...
(twa_determinisation): ... this.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
4635ce44a9 determinize: add some doc
* spot/twaalgos/determinize.hh: Add documentaion and rename options.
* spot/twaalgos/determinize.cc: Rename options as well.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
8e26852a1b determinize: remove superfluous options
bisimulation and complete just trigger extra algorithms to be called at
the end of this one, so they need not be part of this algorithm.

* spot/twaalgos/determinize.cc, spot/twaalgos/determinize.hh: Reduce
the number of options.
* tests/core/safra.cc: Implement those options here.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
e0c2452534 determinize: hide private data structures
* spot/twaalgos/determinize.hh: Move class definitions...
* spot/twaalgos/determinize.cc: ... here.
2016-02-12 14:07:28 +01:00
Alexandre Duret-Lutz
f9252aa703 safra: rename as determinize
* spot/twaalgos/safra.cc, spot/twaalgos/safra.hh: Rename as...
* spot/twaalgos/determinize.cc, spot/twaalgos/determinize.hh: ... these.
* spot/twaalgos/Makefile.am, tests/core/safra.cc: Adjust.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
cd71286fb5 safra: Add stutter-invarience optimisation
* spot/twaalgos/safra.cc, spot/twaalgos/safra.hh: Here.
* tests/core/safra.cc: Add option.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
1d68decaca safra: Add compute_succ function
* spot/twaalgos/safra.cc, spot/twaalgos/safra.hh:  Enables use to
compute successor safra state for any edge.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
be0e6bffcf safra: Build safra-state after each AP
* spot/twaalgos/safra.cc: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
dbd7740874 safra: Iterate on APs to compute successors
* spot/twaalgos/safra.cc, spot/twaalgos/safra.hh: Here.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
8068cfad93 safra: Add complete option and rename files
* src/tests/safra.cc, src/twaalgos/safra.cc,
src/twaalgos/safra.hh, src/tests/safra.test: Rename as...
* spot/twaalgos/safra.cc, spot/twaalgos/safra.hh, tests/core/safra.cc
tests/core/safra.test: ... these.
* tests/Makefile.am: Update.
2016-02-12 14:07:28 +01:00
Alexandre Lewkowicz
f88154e507 safra: Add bisimulation optimisation
* src/tests/safra.cc, src/twaalgos/safra.cc,
src/twaalgos/safra.hh, spot/twaalgos/simulation.cc,
spot/twaalgos/simulation.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
e146527852 twa_run: add a highlight method
* spot/twaalgos/emptiness.hh, spot/twaalgos/emptiness.cc: Add
the method.
* tests/python/highlighting.ipynb: Add a small test.
2016-02-06 17:10:55 +01:00
Alexandre Duret-Lutz
77b0b5b3fe dot: add option C(COLOR)
This fixes the output gliches visible in the previous patches,
where highlighting a state would remove its fill color.

* spot/twaalgos/dot.cc, spot/taalgos/dot.cc: Implement option C(COLOR).
* bin/common_aoutput.cc, doc/org/oaut.org: Document it.
* doc/org/.dir-locals.el.in, doc/org/init.el.in,
python/spot/__init__.py: Use it.
* tests/python/automata-io.ipynb, tests/python/automata.ipynb,
tests/python/highlighting.ipynb: Test it.
* tests/core/readsave.test: Adjust.
* NEWS: Mention recent changes.
2016-02-05 19:26:38 +01:00
Alexandre Duret-Lutz
23c2cbf46a python: highlighting functions for edges and states
* python/spot/impl.i (highlight_state, highlight_edge): New function.
* python/spot/__init__.py (highlight_states, highlight_edges): New
functions.
* spot/twaalgos/dot.cc: Add a '#' option.
* spot/taalgos/dot.cc: Ignore '#'.
* tests/python/highlighting.ipynb: New file to illustrate everything.
* tests/Makefile.am, doc/org/tut.org: Add it.
2016-02-05 17:29:30 +01:00
Alexandre Duret-Lutz
be4418257e * spot/twaalgos/dot.cc: Rename a variable. 2016-02-05 15:58:41 +01:00
Alexandre Duret-Lutz
348f7cce0b parseaut, dot: install a highlighting framework
* spot/parseaut/parseaut.yy, spot/parseaut/scanaut.ll:
Parse "spot.highlight.edges" and "spot.highlight.states" to
fill the "highlight-edges" and "highlight-states" properties.
* spot/twaalgos/dot.cc: Use these properties to highlight states.
* tests/core/readsave.test: Add a small test.
2016-02-04 23:02:28 +01:00
Alexandre Duret-Lutz
35c8beaa3c dot, hoa: enable "k" also for fair_kripke
* spot/twaalgos/dot.cc, spot/twaalgos/hoa.cc: Here.
2016-02-03 08:46:50 +01:00
Alexandre Duret-Lutz
aebe6593f9 twa: make acc_ private
* spot/twa/twa.hh: Here.
* spot/ta/ta.hh, spot/twa/taatgba.cc, spot/twa/taatgba.hh,
spot/twa/twagraph.hh, spot/twa/twasafracomplement.cc,
spot/twaalgos/stutter.cc: Adjust.
2016-02-02 17:08:11 +01:00
Alexandre Duret-Lutz
02b5460b91 dot, hoa: default to "k" for kripke structure
* spot/twaalgos/dot.cc, spot/twaalgos/hoa.cc: If a Kripke
structure is passed, automatically enable the "k" option.
* tests/core/parse_print_test.cc, tests/ltsmin/modelcheck.cc,
tests/python/ltsmin.ipynb: Remove the explicit use of "k".
* NEWS: Mention the change.
2016-02-01 22:12:13 +01:00
Alexandre Duret-Lutz
a9b4560f3d dot: add option "k"
Fixes #134.

* spot/twaalgos/dot.cc: Implement it.
* bin/common_aoutput.cc, spot/twaalgos/dot.hh, NEWS: Document it.
* tests/core/readsave.test, tests/python/ltsmin.ipynb: Test it.
2016-02-01 08:38:45 +01:00
Alexandre Duret-Lutz
eb0a0b6b34 dot: use circles if state names are all short
* spot/twaalgos/dot.cc: Check for state names sizes.
* tests/core/readsave.test: Test the change.
* tests/core/tgbagraph.test: Adjust.
2016-01-29 13:39:17 +01:00
Alexandre Duret-Lutz
b11c07b351 dot: add a <N option
* spot/twaalgos/dot.cc: Implement it.
* spot/taalgos/dot.cc: Ignore it.
* spot/twaalgos/copy.cc, spot/twaalgos/copy.hh: Add option
to limit the number of states.
* tests/python/ltsmin.ipynb: Improve test case.
* tests/Makefile.am: Cleanup the files generated by ltsmin.ipynb.
* python/spot/__init__.py (setup): Add a max_states argument
that default to 50.
* bin/common_aoutput.cc: Mention the <INT option.
* NEWS: Likewise.
2016-01-29 09:09:05 +01:00
Alexandre Duret-Lutz
4571d6dd3a copy: rewrite as a BFS without using reachiter
* spot/twaalgos/copy.hh: Trim includes.
* spot/twaalgos/copy.cc: Rewrite.
* tests/python/ltsmin.ipynb: Adjust.
2016-01-28 15:37:00 +01:00
Alexandre Duret-Lutz
9b95b697a5 twa: introduce the state_map template alias
* spot/twa/twa.hh: Introduce the type.
* spot/taalgos/emptinessta.cc, spot/taalgos/emptinessta.hh,
spot/taalgos/minimize.cc, spot/taalgos/reachiter.cc,
spot/taalgos/reachiter.hh, spot/taalgos/tgba2ta.cc,
spot/twa/twasafracomplement.cc, spot/twaalgos/dtwasat.cc,
spot/twaalgos/emptiness.cc, spot/twaalgos/gtec/status.cc,
spot/twaalgos/gtec/status.hh, spot/twaalgos/gv04.cc,
spot/twaalgos/magic.cc, spot/twaalgos/minimize.cc,
spot/twaalgos/minimize.hh, spot/twaalgos/reachiter.cc,
spot/twaalgos/reachiter.hh, spot/twaalgos/se05.cc,
spot/twaalgos/tau03.cc, spot/twaalgos/tau03opt.cc: Use it.
2016-01-28 13:15:48 +01:00
Alexandre Duret-Lutz
c968e7b856 ltl2tgba_fm: fix setting of unambiguous property
Report from Joachim Klein.

* spot/twaalgos/ltl2tgba_fm.cc: Set the property, do not read it.
* tests/core/unambig.test: Add a test.
* NEWS: Mention the bug.
2016-01-26 19:38:50 +01:00
Alexandre Duret-Lutz
c4e9083f4e product: raise an exception if the dict are different
Fixes #132.

* python/spot.py (translate): Allow changing the dictionary.
* tests/python/prodexpt.py: New file.
* tests/Makefile.am: Add it.
* spot/twa/twaproduct.cc, spot/twaalgos/product.cc: Add them.
* NEWS: Mention the change.
2016-01-23 21:28:35 +01:00
Alexandre Duret-Lutz
2364ff8148 typos
* bin/autfilt.cc, spot/twaalgos/degen.cc, spot/twaalgos/dtwasat.cc,
spot/twaalgos/remfin.cc, spot/twaalgos/sccfilter.cc: "only work" ->
"only works".
2016-01-21 19:11:25 +01:00
Alexandre Duret-Lutz
51483b9b7f fix complete
Alexandre Lewkowicz reported a case where complete() would peek an
existing state that is accepting, and wrongly use it as a sink.

* spot/twaalgos/complete.cc: Fix the function.
* tests/core/complete.test: Add two more tests.
* NEWS: Mention the bug.
2016-01-14 17:16:17 +01:00
Alexandre Duret-Lutz
da391492f3 twa: store property bits as trivals
* spot/twa/twa.hh: Store property bits as trivals.
* NEWS: Mention the change.
* spot/parseaut/parseaut.yy, spot/twaalgos/are_isomorphic.cc,
spot/twaalgos/complete.cc, spot/twaalgos/dot.cc, spot/twaalgos/hoa.cc,
spot/twaalgos/isdet.cc, spot/twaalgos/isunamb.cc, spot/twaalgos/lbtt.cc,
spot/twaalgos/ltl2tgba_fm.cc, spot/twaalgos/postproc.cc,
spot/twaalgos/remfin.cc, spot/twaalgos/strength.cc,
spot/twaalgos/stutter.cc, spot/twaalgos/stutter.hh,
spot/twaalgos/totgba.cc, tests/core/ikwiad.cc,
tests/python/product.ipynb, tests/python/remfin.py: Adjust.
* doc/org/hoa.org, doc/org/tut21.org: Update documentation.
2016-01-13 17:57:54 +01:00
Alexandre Duret-Lutz
d22ecba9b6 twa: call unregister_all_my_variables()
Fixes #129.

* spot/twa/twa.cc (~twa): call unregister_all_my_variables()
* spot/twa/twagraph.hh, spot/twa/twaproduct.cc,
spot/twaalgos/stutter.cc: Simplify.
* NEWS: Mention the change.
2016-01-10 21:02:31 +01:00
Alexandre Duret-Lutz
6e854b6d83 move the sanity tests in tests/sanity/
* spot/sanity/: Move ...
* tests/sanity/: ... here.
* spot/sanity/Makefile.am: Merge with...
* tests/Makefile.am: ... this.
* tests/run.in: Learn to run perl tests.
* README, configure.ac, spot/Makefile.am: Adjust.
* spot/tl/mark.hh: Add missing SPOT_API detected by
fixed private.test.

* spot/twaalgos/weight.cc, spot/twaalgos/weight.hh: Move...
* spot/priv/weight.cc, spot/priv/weight.hh: ... here, as
suggested by fixed private.test.
* spot/twaalgos/tau03opt.cc, spot/twaalgos/Makefile.am,
spot/priv/Makefile.am: Adjust.
2016-01-05 17:20:51 +01:00
Alexandre Duret-Lutz
74ec9c54c4 show how to implement product in Python
* wrap/python/tests/product.ipynb: New file.
* wrap/python/tests/Makefile.am, doc/org/tut.org: Add it.
* wrap/python/tests/ipnbdoctest.py: Ignore %timeit results.
* wrap/python/spot_impl.i: Add bindings for
set_state_names()/get_state_names().
* spot/twaalgos/product.cc: Fix computation of properties.
* doc/org/hoa.org: Name.
* NEWS: Update.
2015-12-24 19:47:15 +01:00
Alexandre Duret-Lutz
ad37cacbc0 twa: fix duplicate propositions in ap()
Calling register_ap() with same atomic proposition several time, for
instance via copy_ap() in a product, would create duplicate atomic
propositions.  This fix will be exercised by the next patch.

* spot/twa/twa.hh: Here.
* spot/twaalgos/compsusp.cc, spot/twaalgos/ltl2taa.cc: Fix
to correctly register atomic propositions.
* NEWS: Mention it.
2015-12-24 19:46:43 +01:00
Alexandre Duret-Lutz
fbf5ac0ea7 acc_cond: get rid of generalized_buchi()
It is already in acc_cond::acc_code::generalized_buchi() along with all
other acceptance condition constructors.

* spot/twa/acc.hh (acc_cond::generalized_buchi): Remove.
* spot/tests/ikwiad.cc, spot/twaalgos/postproc.cc: Adjust.
2015-12-18 18:18:47 +01:00
Alexandre Duret-Lutz
df1ef302e8 acc_code: parse from the constructor
* spot/twa/acc.hh, spot/twa/acc.cc (parse_acc_code): Rename as...
(acc_cond::acc_code): ... this, making it a lot easier to build
acceptance conditions from strings.
* NEWS: Mention the change.
* spot/twaalgos/dtwasat.cc, spot/bin/randaut.cc, spot/tests/acc.cc:
Adjust.
* wrap/python/tests/acc_cond.ipynb, wrap/python/tests/accparse.ipynb,
wrap/python/tests/accparse2.py: Simplify, but not completely to exercise
all variants.
* wrap/python/spot_impl.i: Make acc_code's constructor implicit.
2015-12-18 18:18:28 +01:00