Commit graph

792 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
e5a37ff98f symplify_acceptance: More rules
Fixes #297. Implement the following rules.

Fin(i) & Fin(j) by f if i and j are complementary
Fin(i) & Inf(i) by f
Inf(i) | Inf(j) by t if i and j are complementary
Fin(i) | Inf(i) by t.

* spot/twaalgos/cleanacc.cc, spot/twaalgos/cleanacc.hh: Here.
* tests/python/merge.py: Add more test cases.
* NEWS: Mention the change.
2017-11-06 17:31:59 +01:00
Alexandre Duret-Lutz
75a1d6ac61 bin: add %g options to print acceptance name
Fixes #289.

* spot/twaalgos/stats.cc, spot/twaalgos/stats.hh,
bin/common_aoutput.cc, bin/common_aoutput.hh: plug %g and %G into
acc_cond::name() when arguments are given as %[arg]g.  or %[arg]G.
* tests/core/acc2.test: Add test case.
* doc/org/randaut.org, NEWS: Document it.
2017-11-04 07:43:41 +01:00
Alexandre Duret-Lutz
bd39edde27 acc: introduce acc_cond::name()
* spot/twa/acc.cc, spot/twa/acc.hh (acc_cond::name): New method.
* spot/twaalgos/dot.cc: Use it.
* tests/python/acc_cond.ipynb: Add a small test.
* NEWS: Mention it.
2017-11-04 07:38:24 +01:00
Alexandre Duret-Lutz
4711dcd74f introduce stutter_invariant_letters()
* spot/twaalgos/stutter.cc,
spot/twaalgos/stutter.hh (stutter_invariant_letters)
(stutter_invariant_states): Get rid of the broken local variant.
* tests/python/stutter-inv.ipynb, NEWS: Document.
* python/spot/impl.i: Bind vector<bdd>.
2017-11-03 17:02:30 +01:00
Alexandre Duret-Lutz
679fdfd853 doc: fix some doxygen commands
* spot/twaalgos/iscolored.hh, spot/twaalgos/parity.hh: Here.
2017-11-01 10:40:41 +01:00
Alexandre Duret-Lutz
6459877a1a overhaul the stutter-invariance checks
* spot/twaalgos/stutter.cc, spot/twaalgos/stutter.hh: Cleanup and
document the api.
* spot/twa/twa.hh, doc/mainpage.dox: Add a stutter-invariant section.
* tests/python/stutter-inv-states.ipynb: Rename as ...
* tests/python/stutter-inv.ipynb: ... this, and add more comments.
* tests/Makefile.am, doc/org/tut.org: Adjust renaming.
* bench/stutter/stutter_invariance_randomgraph.cc,
bench/stutter/stutter_invariance_formulas.cc,
bench/stutter/Makefile.am: Make it compile again.
* bin/autfilt.cc: Call inplace variants.
* NEWS: Mention the overhaul.
2017-11-01 10:35:11 +01:00
Maximilien Colange
bd739a5712 Heavily rewrite and optimize the determinization
* NEWS: document the rewrite
* spot/twaalgos/determinize.cc: lots of code optimizations
* tests/core/safra.test, tests/python/highlighting.ipynb,
  tests/python/simstate.py: Update tests
2017-10-19 14:17:55 +02:00
Alexandre Duret-Lutz
689aa7fdc0 translate: add support for -x tls-impl=N
This is long overdue, and we probably want to use tls-impl=1 in
ltlsynt.

* spot/twaalgos/translate.cc, spot/twaalgos/translate.hh:
Add support for tls-impl=N.
* tests/core/ltl2tgba.test: Test it.
* bin/spot-x.cc, NEWS: Document it.
2017-10-13 07:42:48 +02:00
Alexandre Duret-Lutz
9b18729721 stutter: detect stutter-invariance at the state level
* spot/twaalgos/stutter.cc, spot/twaalgos/stutter.hh: Implement
stutter-invariance detection at the state level.
* python/spot/impl.i: Instantiate std::vector<bool>
* tests/python/stutter-inv-states.ipynb: New file.
* tests/Makefile.am, doc/org/tut.org: Add it.
2017-10-11 15:01:29 +02:00
Alexandre Duret-Lutz
4fa24a7ddd simulation: do not create scc_info
* spot/twaalgos/simulation.cc: Remove useless creation of scc_info
object.
2017-10-07 13:12:56 +02:00
Alexandre Duret-Lutz
9ca5b8c2f1 scc_info: add ways to speedup scc_info
* spot/twaalgos/sccinfo.hh, spot/twaalgos/sccinfo.cc: Add an optional
argument to abort on accepting SCC, to not keep track of SCC states,
and some one_accepting_scc() method.
* NEWS: Mention it.
* bin/ltlcross.cc, spot/twaalgos/alternation.cc,
spot/twaalgos/cobuchi.cc, spot/twaalgos/degen.cc,
spot/twaalgos/determinize.cc, spot/twaalgos/dtbasat.cc,
spot/twaalgos/dtwasat.cc, spot/twaalgos/isunamb.cc,
spot/twaalgos/powerset.cc, spot/twaalgos/remfin.cc,
spot/twaalgos/sbacc.cc, spot/twaalgos/sccfilter.cc,
spot/twaalgos/totgba.cc: Adjust arguments passed to scc_info.
2017-10-07 13:12:56 +02:00
Alexandre Duret-Lutz
11704d31eb scc_info: improve split_on_sets
* spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh (split_on_set):
Allow names to be preserved
* python/spot/impl.i: Instantiate std::vector<spot::twa_graph_ptr>.
2017-10-06 09:55:01 +02:00
Alexandre Duret-Lutz
900b344c9a degen: detect superfluous SCCs and remove them
Suggested by Maximilien Colange.

* spot/twaalgos/degen.cc: If the output has more SCC than the input,
detect useless SCCs and remove them.
* spot/twaalgos/postproc.cc, spot/twaalgos/postproc.hh,
spot/twaalgos/degen.hh: Add support for a degen-remscc option.
* bin/spot-x.cc, NEWS: Document it.
* tests/core/degenscc.test: New file.
* tests/Makefile.am: Add it.
* tests/core/det.test: Lower some expected size (yay!).
2017-09-29 11:06:01 +02:00
Alexandre Duret-Lutz
ce5e3b654f simulation: incorrect setting of non-deterministic property
Fixes #286.

* spot/twaalgos/simulation.cc: Only set the deterministic
property, not the non-deterministic one.
* tests/core/ltl2tgba.test: Add test case.
* NEWS: Mention the issue.
2017-09-28 20:47:47 +02:00
Thibaud Michaud
a13a4e7d23 remove universal transitions on the fly
* spot/twaalgos/alternation.cc, spot/twaalgos/alternation.hh: Implement
remove_univ_otf.
* tests/python/alternating.py: Test it.
* python/spot/impl.i: Bindings.
* NEWS: Document it.
2017-09-27 19:30:42 +02:00
Alexandre Duret-Lutz
c379acad8a * spot/twaalgos/totgba.cc: Typos in comment. 2017-09-26 22:27:35 +02:00
Alexandre Duret-Lutz
f81fb31136 streett_to_generalized_buchi: fix incorrect algorithm
Fixes #284, reported by Juraj Major.

* spot/twaalgos/totgba.cc: Fix the algorithm.
* spot/twa/acc.hh: More doc for future generations.
* tests/core/scc.test: More test cases.
* NEWS: Mention the issues.
2017-09-26 17:22:56 +02:00
Maximilien Colange
2697fcddbf Fix a bug in scc_info, and clarify documentation
* spot/twaalgos/sccinfo.hh, spot/twaalgos/sccinfo.cc: Implement it
* tests/python/sccinfo.py: Test it
* NEWS: Document the fix
2017-09-25 15:28:33 +02:00
Laurent XU
7a11842613 parity: add spot::parity_product_or()
parity_product_or constructs the sum of two parity automata and it keeps
the parity.

* spot/twaalgos/parity.cc, spot/twaalgos/parity.hh: Here.
* tests/core/parity.cc: Add tests here.
2017-09-25 12:10:14 +02:00
Laurent XU
192fb6c1e7 parity: merge states having same cleaned matrices in parity_product
Some states can become identical once their history matrix are
cleaned. These states are merged and only store the cleaned matrix.

* spot/twaalgos/parity.cc: Here.
2017-09-25 12:10:14 +02:00
Laurent XU
cb7e43cb7d parity: remove history matrices in parity_product()
The history matrix of size n*m is replaced by couples of vectors with a
total size of n + m. These couples of vectors are simplified
representations of the history matrices, they ecnode the exact same
data. They are cached as well as the method to get the next history
matrix using the acc_sets and the current history matrix.

* spot/twaalgos/parity.cc: Here.
2017-09-25 12:10:14 +02:00
Laurent XU
b92320cc33 parity: add spot::parity_product()
Compute the synchronized product of two parity automata, this product
keeps the parity acceptance.

* spot/twaalgos/parity.cc, spot/twaalgos/parity.hh: Here
* tests/core/parity.cc: Add tests for spot::parity_product()
2017-09-25 12:10:14 +02:00
Laurent XU
3e650f18d9 parity: add spot::cleanup_parity_acceptance()
Merge the acceptance sets of a parity acceptance with the same priority
level to simplify this acceptance.

* spot/twaalgos/parity.cc, spot/twaalgos/parity.hh: Here
* tests/core/parity.cc: Add tests for spot::cleanup_parity_acceptance()
2017-09-25 12:10:14 +02:00
Laurent XU
0bf0a99d6d parity: add spot::colorize_parity()
These functions colorize automata with parity acceptance. They output
parity automata.

* spot/twaalgos/parity.cc, spot/twaalgos/parity.hh: Here
* tests/core/parity.cc: Add tests for spot::colorize_parity()
* tests/python/parity.ipynb: Add documentation about
spot::colorize_parity()
2017-09-25 12:10:14 +02:00
Laurent XU
27982fb80f parity: add spot::change_parity()
This function changes the parity acceptance of an automaton.

* spot/twaalgos/parity.cc, spot/twaalgos/parity.hh: Here
* python/spot/impl.i: Add spot/twaalgos/parity.hh
* spot/twaalgos/Makefile.am: Add spot/twaalgos/parity.{cc,hh}
* tests/core/parity.cc, tests/core/parity.test: Add
spot::change_parity() tests
* tests/python/parity.ipynb: Add documentation about
spot::change_parity()
* tests/Makefile.am: Add tests/core/parity.{cc,hh} and
tests/python/parity.ipynb
* doc/org/tut.org: Add the html page of tests/python/parity.ipynb
2017-09-25 12:10:14 +02:00
Laurent XU
b7ef7c55d7 misc: add spot::is_colored()
This function checks whether an automaton is colored, an automaton
is said to be colored iff all the transitions belong to exactly one
acceptance set.

* spot/twaalgos/iscolored.cc, spot/twaalgos/iscolored.hh: Here.
* spot/twaalgos/Makefile.am: add spot/twaalgos/iscolored.{cc,hh}
* python/spot/impl.i: add spot/twaalgos/iscolored.hh
2017-09-25 12:10:14 +02:00
Alexandre Duret-Lutz
2bca21f7f8 postproc: fix a comment
* spot/twaalgos/postproc.cc: Here.
2017-09-24 16:09:29 +02:00
Alexandre GBAGUIDI AISSE
ad9bc644ba misc/timer: Gather handling of %r and %R options
* bin/autcross.cc: Update.
* bin/autfilt.cc: Update.
* bin/common_aoutput.cc: Gather them. Move process_timer struct.
* bin/common_aoutput.hh: Gather them.
* bin/common_output.hh: Update.
* bin/dstar2tgba.cc: Update.
* bin/ltl2tgba.cc: Update.
* bin/ltlcross.cc: Update.
* bin/ltldo.cc: Update.
* bin/ltlfilt.cc: Update.
* bin/randaut.cc: Update.
* spot/misc/formater.hh: Remove an useless function.
* spot/misc/timer.hh: Add process_timer struct definition.
* spot/misc/timer.cc: Remove old dead code.
* spot/twaalgos/stats.cc: Update.
* spot/twaalgos/stats.hh: Update.
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
302095ff9e typos
* spot/twaalgos/alternation.hh: Typos.
* spot/twa/twa.hh: Typos.
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
8ae10f744f twaalgos/cobuchi: Add dnf_to_dca()
* NEWS: Update news with all co-Büching functions.
* spot/twaalgos/cobuchi.hh: Declare it.
* spot/twaalgos/cobuchi.cc: Implement it.
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
5f6a71d27a twaalgos/cobuchi: Add breakpoint construction and nsa_to_dca()
* spot/twaalgos/cobuchi.hh: Declare nsa_to_dca().
* spot/twaalgos/cobuchi.cc: Implement nsa_to_dca().
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
f2616069be twaalgos/cobuchi: Add dnf_to_nca() method
* NEWS: Update.
* spot/twaalgos/cobuchi.hh: Declare dnf_to_nca().
* spot/twaalgos/cobuchi.cc: Implement it.
* tests/core/dca.test: Add tests.
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
50e99cdca7 twaalgos/totgba: Add dnf_to_streett() method
* NEWS: Update.
* spot/twaalgos/totgba.hh: Declare dnf_to_streett().
* spot/twaalgos/totgba.cc: Implement dnf_to_streett().
* bin/autfilt.cc: Add --dnf-to-streett cmd line option.
* tests/core/dnfstreett.test: Add test.
* tests/Makefile.am: Add test file.
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
cf18c06940 twaalgos/cobuchi: Add nsa_to_nca()
* NEWS: Update.
* spot/twaalgos/cobuchi.hh: Declare to_dca() and nsa_to_nca().
* spot/twaalgos/cobuchi.cc: Implement them.
* python/spot/impl.i: Include new file for python bindings.
* spot/twaalgos/Makefile.am: Add new file.
* bin/autfilt.cc: Add --dca command line option. This option does not
return a deterministic automaton yet, but it will.
* tests/core/dca.test: Add tests for Büchi automata.
* tests/python/dca.py: Add a python script that builds a nondet. Streett
automaton.
* tests/python/dca.test: Add tests for Streett automata.
* tests/Makefile.am: Add all tests.
2017-09-19 17:37:00 +01:00
Alexandre GBAGUIDI AISSE
37c1a19b39 twaalgos/scc_info: Add states_on_acc_cycle_of() method
* NEWS: Update.
* spot/twaalgos/sccinfo.hh: Declare states_on_acc_cycle_of().
* spot/twaalgos/sccinfo.cc: Implement it.
2017-09-19 17:37:00 +01:00
Maximilien Colange
bd5c6920b1 Use clearer names for three methods of spot::scc_info
scc_info::used_acc() and spot::info::used_acc_of() have been renamed to
scc_info::marks() and scc_info::marks_of().
scc_info::acc() has been renamed to (the already existing and redundant)
scc_info::acc_sets_of().
Old names have been deprecated.

* spot/twaalgos/sccinfo.hh, spot/twaalgos/sccinfo.cc: implement it.
* spot/twaalgos/dtwasat.cc, spot/twaalgos/isweakscc.cc,
  spot/twaalgos/remfin.cc, spot/twaalgos/sccfilter.cc: update names.
* NEWS: documentate it.
2017-09-19 10:24:12 +02:00
Clément Gillard
ad3588420c fix typos and indentation
* bin/autfilt.cc, python/spot/__init__.py, spot/twa/twa.hh,
spot/twa/twaproduct.cc, spot/twaalgos/couvreurnew.cc,
tests/python/bugdet.py: Here.
2017-09-05 13:23:01 +02:00
Alexandre Duret-Lutz
bc626788af dot: make 'x' compatible with 'b'/'r'/'R'
* spot/twaalgos/dot.cc: Implement.
* doc/org/oaut.org: Illustrate.
* tests/core/dot2tex.test: Add some limited tests.
2017-09-05 07:45:11 +02:00
Alexandre Duret-Lutz
190d4cfaf1 ltl2tgba_fm: implement a small optimization
Fixes #277.

* spot/twaalgos/ltl2tgba_fm.cc: Improve the translation of f U g
when f is universal.  Suggested by Maximilien Colange.
* tests/core/ltl2tgba.test: Test it.
2017-09-02 14:48:52 +02:00
Alexandre Duret-Lutz
cd6f1c2c3e get rid of some unnecessary code
* spot/priv/enumflags.hh: Delete.
* spot/priv/Makefile.am, debian/copyright: Adjust.
* spot/twaalgos/remfin.cc: Replace the complex enum
definition by a plain enum that is almost not used.
2017-09-01 22:09:52 +02:00
Alexandre Duret-Lutz
15cc7301cc remove_fin: apply Rabin conversion before Streett
* spot/twaalgos/remfin.cc (remove_fin_impl): Apply the Rabin strategy
before the Streett one.
2017-09-01 22:09:52 +02:00
Alexandre Duret-Lutz
f7ba490898 streett_to_generalize_buchi: fix handling of SCCs without Fin
The generalization to Streett-like of 7b5b8f34 was incomplete for this
case.  Thanks to František Blahoudek for reporting the bug.
Fixes #279.

* spot/twaalgos/totgba.cc (streett_to_generalized_buchi): Here.
* tests/core/remfin.test: Add more tests.
2017-09-01 22:09:49 +02:00
Alexandre Duret-Lutz
fbb9e4374e dot: add x option for dot2tex
* spot/twa/acc.cc, spot/twa/acc.hh: Add a LaTeX output for acceptance
conditions.
* spot/twaalgos/dot.cc: Implement the 'x' option and refactor the code
a bit to limit duplication.
* tests/core/dot2tex.test: New test case (requires dot2tex).
* tests/Makefile.am: Add dot2tex.test.
* tests/core/alternating.test, tests/core/readsave.test,
tests/python/automata-io.ipynb: Adjust expected output.
* NEWS, doc/org/oaut.org: Mention the new option.
2017-08-31 19:50:08 +02:00
Alexandre Duret-Lutz
b242122ce8 dot: add option 'A' to disable 'a'
This way in 2.5 we can make 'a' the default, and tell people to use
SPOT_DOTDEFAULT=A if they want the old behavior in both 2.4 and 2.5.

* spot/twaalgos/dot.cc: Implement the option.
* NEWS, bin/common_aoutput.cc: Mention it.
* tests/core/readsave.test: Test it.
2017-08-30 16:15:53 +02:00
Alexandre Duret-Lutz
205294c2c2 dot: display Rabin-like and Streett-like acceptances
* spot/twaalgos/dot.cc (print_acceptance_for_human): Add Rabin-like
and Streett-like checks.
* tests/core/sccdot.test, tests/python/decompose.ipynb,
tests/python/randaut.ipynb, tests/core/alternating.test: Adjust.
2017-08-30 16:15:48 +02:00
Maximilien Colange
1b2f2a79c1 Fix a bug in spot.complete()
spot.complete() could complete an empty co-Büchi automaton into an
automaton accepting everything.

* NEWS: Document it
* spot/twaalgos/complete.cc: Fix it
* tests/core/complete.test, tests/core/prodor.test: Test it
2017-08-28 17:55:32 +02:00
Maximilien Colange
eb91ecf66f Typos
* NEWS, doc/org/concepts.org, doc/org/hierarchy.org,
  spot/misc/optionmap.hh, spot/twa/acc.hh, spot/twaalgos/ltl2tgba_fm.hh,
  spot/twaalgos/sccinfo.hh, spot/twaalgos/translate.cc: fix typos
2017-08-28 17:54:21 +02:00
Alexandre Duret-Lutz
f5dce597c6 switch to C++14 compilation
* configure.ac: Compile in C++14 by default and rename
--enable-c++14 as c++17.
* doc/org/compile.org, doc/org/concepts.org, doc/org/index.org,
doc/org/install.org, doc/org/tut.org, doc/org/upgrade2.org, HACKING,
NEWS, README: Adjust all mentions of C++11.
* spot/twaalgos/stats.hh: Use std::make_unique.
2017-08-22 18:21:49 +02:00
Alexandre Duret-Lutz
1cc45b2413 dot: display acceptance names
* spot/twaalgos/dot.cc: Display common acceptance names.
* NEWS: Mention the change.
* doc/org/oaut.org: Adjust text.
* tests/core/alternating.test, tests/core/readsave.test,
tests/python/_altscc.ipynb, tests/python/alternation.ipynb,
tests/python/atva16-fig2a.ipynb, tests/python/atva16-fig2b.ipynb,
tests/python/automata.ipynb, tests/python/decompose.ipynb,
tests/python/gen.ipynb, tests/python/highlighting.ipynb,
tests/python/product.ipynb, tests/python/randaut.ipynb: Adjust test
cases.
2017-08-17 15:21:59 +02:00
Alexandre Duret-Lutz
e3b30e6d8e remfin: remove some unnecessary copies
* spot/twaalgos/remfin.cc (tra_to_tba, is_scc_tba_type): Here.
2017-08-17 15:21:59 +02:00