Commit graph

4722 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
0e039a36b1 * AUTHORS: Add Henrich Lauko. 2017-06-07 14:46:31 +02:00
Henrich Lauko
784681d833 remfin: Make removing of fins more modular.
* spot/twaalgos/remfin.cc: Refactore remove_fin implementation. Enable
filtering of strategies used for fin removing.
* spot/priv/enumflags.hh: Add support for enum flags from brick-types.
* spot/priv/Makefile.am: Add enumflags.hh to make.
* debian/copyright: Update copyright with bricks library license.
2017-06-07 14:33:01 +00:00
Maximilien Colange
4f8a8f7305 Properly handle "simulated-states" property in twagraph::defrag_states.
* spot/twa/twagraph.cc: Implement the change.
* spot/twaalgos/simulation.hh: Improve documentation.
* tests/python/simstate.py: Improve the test.
* doc/org/concepts.org: Typo.
2017-06-05 15:48:36 +02:00
Alexandre Duret-Lutz
acbb51062a * tests/core/ltlcross4.test: Ignore space diff in pandas' output. 2017-06-03 12:21:24 +02:00
Alexandre Duret-Lutz
526e19d4b6 * tests/core/ltlcross4.test: Ignore space diff in pandas' output. 2017-06-03 11:03:58 +02:00
Alexandre Duret-Lutz
526b299de8 work around change in pandas 0.20
* tests/core/ltlcross4.test: Replace describe() by agg() to work
around a backward incompatible change in pandas 0.20.
2017-06-03 10:04:14 +02:00
Alexandre Duret-Lutz
ae0e84ac9e simulation: do not depend on bdd numbers for ordering classes
Fixes #262 again.  Reported by Maximilien Colange.

* spot/twaalgos/simulation.cc: Use state numbers to order classes, not
their signatures.  The problem was that even if two simulation of the
same automaton assign the same signature, the BDD identifier used for
that signature might be different, and therefore the ordering obtained
by using BDDs as keys in a map can be different.  A side-effect of
this change is that the order of states in automata produced by
simulation-based reduction may change; many tests had to be updated.
* tests/core/ltl2tgba.test: Add a new test case based on Maximilien's
report.
* tests/core/complement.test, tests/core/det.test,
tests/core/parseaut.test, tests/core/prodor.test,
tests/python/atva16-fig2a.ipynb, tests/python/automata.ipynb,
tests/python/decompose.ipynb, tests/python/highlighting.ipynb,
tests/python/piperead.ipynb, tests/python/testingaut.ipynb,
tests/python/word.ipynb: Update test cases for new order of states.
2017-06-03 10:03:59 +02:00
Alexandre Duret-Lutz
dbcde8e346 work around change in pandas 0.20
* tests/core/ltlcross4.test: Replace describe() by agg() to work
around a backward incompatible change in pandas 0.20.
2017-06-02 19:07:34 +02:00
Alexandre Duret-Lutz
9ab4b840fd simulation: do not depend on bdd numbers for ordering classes
Fixes #262 again.  Reported by Maximilien Colange.

* spot/twaalgos/simulation.cc: Use state numbers to order classes, not
their signatures.  The problem was that even if two simulation of the
same automaton assign the same signature, the BDD identifier used for
that signature might be different, and therefore the ordering obtained
by using BDDs as keys in a map can be different.  A side-effect of
this change is that the order of states in automata produced by
simulation-based reduction may change; many tests had to be updated.
* tests/core/ltl2tgba.test: Add a new test case based on Maximilien's
report.
* tests/core/complement.test, tests/core/det.test,
tests/core/parseaut.test, tests/core/prodor.test, tests/core/scc.test,
tests/python/atva16-fig2a.ipynb, tests/python/automata.ipynb,
tests/python/decompose.ipynb, tests/python/decompose_scc.py,
tests/python/highlighting.ipynb, tests/python/piperead.ipynb,
tests/python/sccinfo.py, tests/python/simstate.py,
tests/python/testingaut.ipynb, tests/python/word.ipynb: Update
test case for new order of states.
2017-06-02 14:10:34 +02:00
Alexandre Duret-Lutz
7b6cfd448c dot: fix printing of alternating automata
Related to #208.

* spot/twaalgos/dot.cc: Fix missing definitions of universal nodes,
and inclusion of universal nodes inside of SCC when none of the
destination comes back to the SCC.
* tests/python/_altscc.ipynb: Adjust and add more test cases.
* tests/core/alternating.test, tests/core/neverclaimread.test,
tests/core/readsave.test, tests/core/sccdot.test,
tests/python/decompose.ipynb: Adjust test cases.
* NEWS: Mention the bug.
2017-06-02 11:38:43 +02:00
Alexandre Duret-Lutz
101c2533f1 sanity: ensure that all environment variables are documented
* tests/sanity/getenv.test: New file.
* tests/Makefile.am: Add it.
* bin/man/spot-x.x: Document SPOT_STUTTER_CHECK and SPOT_DEBUG_PARSER.
2017-05-31 20:32:56 +02:00
Alexandre Duret-Lutz
93969758ee sanity: catch undocumented named properties
* tests/sanity/namedprop.test: New file.
* tests/Makefile.am: Add it.
* doc/org/concepts.org: Add documentation for degen-levels and
simulated-states.
2017-05-31 20:32:53 +02:00
Alexandre Duret-Lutz
97f3efabe3 dot: fix printing of alternating automata
Related to #208.

* spot/twaalgos/dot.cc: Fix missing definitions of universal nodes,
and inclusion of universal nodes inside of SCC when none of the
destination comes back to the SCC.
* tests/python/_altscc.ipynb: Adjust and add more test cases.
* tests/core/alternating.test, tests/core/neverclaimread.test,
tests/core/readsave.test, tests/core/sccdot.test,
tests/python/decompose.ipynb: Adjust test cases.
* NEWS: Mention the bug.
2017-05-31 17:55:15 +02:00
Alexandre Duret-Lutz
617a7187b3 scc_info: keep track of common acceptance sets
* spot/twaalgos/sccinfo.hh, spot/twaalgos/sccinfo.cc: Do it.
* tests/core/sccdot.test: Add a test case.
* NEWS: Mention it.
2017-05-31 17:18:03 +02:00
Alexandre Duret-Lutz
78add1d44b acc: add a maybe_accepting() method
* spot/twa/acc.cc, spot/twa/acc.hh: Implement the new method, and
use it to implement inf_accepting().
* tests/python/accparse2.py: Add some tests.
2017-05-31 17:18:03 +02:00
Maximilien Colange
f7d14ab526 Degeneralization keeps track of levels.
* NEWS: Document this.
* spot/twa/twagraph.cc: `copy_state_names_from` handles this new info.
* spot/twaalgos/degen.hh, spot/twaalgos/degen.cc: Implement it.
* tests/python/origstate.py, tests/python/simstate.py: Update tests to
  reflect the change.
2017-05-31 13:28:42 +02:00
Maximilien Colange
7b5ab54530 Simulation keeps track of simulated states in the input automaton.
* NEWS: Document the change.
* spot/twaalgos/simulation.cc: Implement the change.
* spot/twa/twagraph.cc: `copy_state_names_from` uses simulated states
  info if present.
* spot/twaalgos/determinize.cc: Pretty-print in determinization follows
  simulated states, avoiding possible confusion.
* tests/Makefile.am, tests/python/simstate.py: Add a test.
2017-05-31 13:28:41 +02:00
Alexandre Duret-Lutz
967b1a4192 remfin: use an scc_info filter to avoid copying automata
* spot/twaalgos/remfin.cc (is_scc_ba_type): Replace the call
to mask_keep_states by the use of an scc_info filter.
2017-05-30 15:40:28 +02:00
Alexandre Duret-Lutz
425620150a scc_info: make it possible to ignore or cut edges
* spot/twaalgos/sccinfo.hh, spot/twaalgos/sccinfo.cc: Take
a filter function as optional argument.
* tests/core/sccif.cc, tests/core/sccif.test: New files.
* tests/Makefile.am, tests/core/.gitignore: Adjust.
* NEWS: Mention the new feature.
2017-05-30 15:40:28 +02:00
Thomas Medioni
4da6a5cde1 rs_like: fix bug to accept Fin | Fin , Inf & Inf
co-Büchi is now recognized as Streett-like, Büchi as Rabin-like.
Also recognized Inf & Inf & Inf... as Streett-like and
Fin | Fin | Fin... as Rabin-like.

* spot/twa/acc.cc: Fix the bug
* tests/python/rs_like.py: Add some test case
2017-05-29 11:45:02 +02:00
Alexandre Duret-Lutz
f6607f1a2c bin: release all subformulas between runs
Fixes #262, reported by Maximilien Colange.

* bin/common_output.cc, bin/common_aoutput.cc, bin/common_aoutput.hh:
Clear the set of atomic propositions if --stats=%[...]x was used.
* spot/twa/bdddict.cc: Release any formula associated to a BDD when it
is unregistered, do not wait for the dictionary's destruction.  This
was the main culprit for #262.
* tests/core/ltl2tgba.test: Add test cases.
* NEWS: Mention the bug.
2017-05-18 18:25:55 +02:00
Alexandre Duret-Lutz
acdaaac4f0 bin: release all subformulas between runs
Fixes #262, reported by Maximilien Colange.

* bin/common_output.cc, bin/common_aoutput.cc, bin/common_aoutput.hh:
Clear the set of atomic propositions if --stats=%[...]x was used.
* spot/twa/bdddict.cc: Release any formula associated to a BDD when it
is unregistered, do not wait for the dictionary's destruction.  This
was the main culprit for #262.
* tests/core/ltl2tgba.test: Add test cases.
* NEWS: Mention the bug.
2017-05-18 18:24:49 +02:00
Maximilien Colange
cdef3d69f0 Fix uninitialized value.
* spot/twaalgos/sccinfo.hh: initialize t_, and remove useless data from
  class scc_edges.
2017-05-11 10:20:44 +02:00
Alexandre Duret-Lutz
7dfa0ec15d Merge branch 'master' into next 2017-05-11 10:18:00 +02:00
Alexandre Duret-Lutz
b9c250894b * NEWS, configure.ac: Bump version number. 2017-05-11 10:16:03 +02:00
Alexandre Duret-Lutz
52b5491b8e Release Spot 2.3.4
* NEWS, configure.ac, doc/org/setup.org: Update version to 2.3.4.
2017-05-11 10:10:48 +02:00
Alexandre Duret-Lutz
866263ecc6 parseaut: misc cleanups
* spot/parseaut/parseaut.yy: Remove extra ;.
* spot/parseaut/scanaut.ll: Use nullptr instead of 0.
2017-05-10 17:25:41 +02:00
Alexandre Duret-Lutz
762dd4555d parseaut: misc cleanups
* spot/parseaut/parseaut.yy: Remove extra ;.
* spot/parseaut/scanaut.ll: Use nullptr instead of 0.
2017-05-10 17:24:35 +02:00
Alexandre Duret-Lutz
aa40482352 ltl2tgba: clear simplification cache between translations
The cache used in formula simplification will keep atomic propositions
defined between several translations, and may impact variable order.
Reported by Maximilien Colange.

* spot/tl/simplify.hh, spot/tl/simplify.cc,
spot/twaalgos/translate.cc, spot/twaalgos/translate.hh (clear_cache):
New method.
* bin/ltl2tgba.cc, bin/ltl2tgta.cc: Call it.
* spot/twaalgos/stats.cc: Do not keep a point to the formula after
printing statistics.
* tests/core/ltl2tgba.test: Add a test case.
* tests/core/readsave.test: Adjust one formula.
* NEWS: Mention the issue.
2017-05-10 17:03:05 +02:00
Alexandre Duret-Lutz
f07fbbae79 ltl2tgba: clear simplification cache between translations
The cache used in formula simplification will keep atomic propositions
defined between several translations, and may impact variable order.
Reported by Maximilien Colange.

* spot/tl/simplify.hh, spot/tl/simplify.cc,
spot/twaalgos/translate.cc, spot/twaalgos/translate.hh (clear_cache):
New method.
* bin/ltl2tgba.cc, bin/ltl2tgta.cc: Call it.
* spot/twaalgos/stats.cc: Do not keep a point to the formula after
printing statistics.
* tests/core/ltl2tgba.test: Add a test case.
* tests/core/readsave.test: Adjust one formula.
* NEWS: Mention the issue.
2017-05-10 16:18:37 +02:00
Alexandre Duret-Lutz
8e19d3f47e scc_info: introduce edges_of() and inner_edges_of()
This is motivated by some upcoming patch by Heňo.

* spot/twaalgos/sccinfo.hh (edges_of, inner_edges_of): New methods.
* spot/twaalgos/sccinfo.cc, spot/twaalgos/strength.cc: Use them.
* spot/twa/twagraph.hh (edge_number): Add an overload.
* python/spot/impl.i: Bind the new methods.
* tests/python/sccinfo.py: Add tests.
* NEWS: Mention the changes.
2017-05-09 22:12:42 +02:00
Alexandre Duret-Lutz
d3d2364ad0 org: list ltlfilt's transformation
* doc/org/ltlfilt.org: A the list of transformation option.
Suggested by Yann Thierry-Mieg.
2017-05-09 14:30:57 +02:00
Alexandre Duret-Lutz
e089509a0c org: list ltlfilt's transformation
* doc/org/ltlfilt.org: A the list of transformation option.
Suggested by Yann Thierry-Mieg.
2017-05-09 14:29:42 +02:00
Alexandre Duret-Lutz
8968bf6c4e simplify: fix related to event_univ handling
Fixes #260.  Reported by František Blahoudek.

The simplification F(f)|q = F(f|q), where q designates an event_univ
formula, was not always applied because of a couple of issue: (1) the
mospliter was ignoring event_univ unless favor_event_univ was set, (2)
when processing formulas from res_EventUniv they were not put back
into res_F or res_G to be subject to the F/G rules.

* spot/tl/simplify.cc: Improve handling of the above points.
* tests/core/reduccmp.test: Adjust and add test case.
* tests/core/ltl2tgba2.test, tests/python/atva16-fig2a.ipynb: Adjust.
2017-05-08 13:32:55 +02:00
Alexandre Duret-Lutz
845958834f simplify: fix related to event_univ handling
Fixes #260.  Reported by František Blahoudek.

The simplification F(f)|q = F(f|q), where q designates an event_univ
formula, was not always applied because of a couple of issue: (1) the
mospliter was ignoring event_univ unless favor_event_univ was set, (2)
when processing formulas from res_EventUniv they were not put back
into res_F or res_G to be subject to the F/G rules.

* spot/tl/simplify.cc: Improve handling of the above points.
* tests/core/reduccmp.test: Adjust and add test case.
* tests/core/ltl2tgba2.test, tests/python/atva16-fig2a.ipynb: Adjust.
2017-05-08 11:52:41 +02:00
Alexandre Duret-Lutz
7e4238149b debian: fix the changelog of buddy
* debian/rules (override_dh_installchangelogs): New rule.
2017-05-05 23:02:53 +02:00
Alexandre Duret-Lutz
19aae6f9cf introduce spot::split_edges()
Fixes #255.

* spot/twaalgos/split.cc, spot/twaalgos/split.hh,
tests/core/split.test: New files.
* spot/twaalgos/Makefile.am, tests/Makefile.am: Add them.
* bin/autfilt.cc (--split-edges): New option.
* python/spot/impl.i: Process split.hh.
* tests/python/alternating.py: Test split_edges() on
an alternating automaton.
2017-05-05 22:25:12 +02:00
Alexandre Duret-Lutz
3d8c48555b debian: fix the changelog of buddy
* debian/rules (override_dh_installchangelogs): New rule.
2017-05-05 20:28:57 +02:00
Alexandre Duret-Lutz
679b6cff78 degen: consider incoming edges to select initial levels
Fixes #257.

* spot/twaalgos/degen.cc: Implement this optimization.
* tests/core/degendet.test: Add a few test cases.
* tests/core/ltl2tgba2.test: Adjust expected sizes.
* NEWS: Mention the change.
2017-05-05 16:50:04 +02:00
Alexandre Duret-Lutz
e1c14eb90a twa_graph: honor state-names & product-states in format_state()
* spot/twa/twagraph.cc, spot/twa/twagraph.hh (format_state): Honor
the state-names and product-states properties.
* tests/python/highlighting.ipynb: Adjust.
2017-05-05 14:44:06 +02:00
Alexandre Duret-Lutz
46d8aaaae1 twa_graph: introduce copy_state_names_from()
* spot/twa/twagraph.cc, spot/twa/twagraph.hh: Here.  Also
make sure "original-states" survives defrag_states().
* NEWS: Mention it.
* tests/python/origstate.py: New file.
* tests/Makefile.am: Add it.
2017-05-05 14:44:06 +02:00
Thomas Medioni
865171230f sum: remove useless include
* spot/twaalgos/sum.cc: Remove useless include.
2017-05-04 17:54:23 +02:00
Alexandre Duret-Lutz
04640af135 bin: remove temporary files even on errors
Fixes #259.

* bin/common_setup.cc: Register a cleanup_tmpfiles() via atexit.
* tests/core/ltldo.test: Add a test case.
* NEWS: Mention the bug.
2017-05-04 15:37:39 +02:00
Alexandre Duret-Lutz
e21499ea7c * Makefile.am (gen-ChangeLog): Generate BuDDy's ChangeLog. 2017-05-04 15:36:53 +02:00
Alexandre Duret-Lutz
4b72e2b4c5 [buddy] rename ChangeLog
We generate ChangeLog from git log now.

* ChangeLog: Rename as...
* ChangeLog.1: ... this.
* Makefile.am: Distribute the latter.
2017-05-04 15:36:40 +02:00
Alexandre Duret-Lutz
cd87be1595 fix libspot.pc and libspotltsmin.pc generation
Report from Jeroen Meijer.

* spot/Makefile.am (libspot.pc): Depends on Makefile.  Use a
temporary.  Declare in CLEANFILES instead of DISTCLEANFILES.
* spot/ltsmin/Makefile.am (libspotltsmin.pc): Likewise.
2017-05-04 15:36:40 +02:00
Alexandre Duret-Lutz
b9ca038850 [buddy] fix libbddx.pc generation
Report from Jeroen Meijer.

* src/Makefile.am (libbddx.pc): Depends on Makefile.  Use a
temporary.  Declare in CLEANFILES instead of DISTCLEANFILES.
2017-05-04 15:36:40 +02:00
Alexandre Duret-Lutz
b6808115b9 bin: remove temporary files even on errors
Fixes #259.

* bin/common_setup.cc: Register a cleanup_tmpfiles() via atexit.
* tests/core/ltldo.test: Add a test case.
* NEWS: Mention the bug.
2017-05-04 15:35:17 +02:00
Alexandre Duret-Lutz
5601806e24 * Makefile.am (gen-ChangeLog): Generate BuDDy's ChangeLog. 2017-05-04 13:33:52 +02:00
Alexandre Duret-Lutz
613c485c24 [buddy] rename ChangeLog
We generate ChangeLog from git log now.

* ChangeLog: Rename as...
* ChangeLog.1: ... this.
* Makefile.am: Distribute the latter.
2017-05-04 13:32:52 +02:00