Commit graph

5707 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
8df616ee0d partial_degeneralization: generalize to terms that contain todegen
* spot/twaalgos/degen.cc: Implement this.
* tests/python/pdegen.py: Add tests.
2020-02-04 13:47:44 +01:00
Alexandre Duret-Lutz
b733d486be fix degeneralize_tba after accepting transition
* spot/twaalgos/degen.cc (degeneralize_tba): Here.
* tests/python/pdegen.py, tests/python/simstate.py: Adjust expected
values.
* NEWS: Mention the bug.
2020-02-03 15:38:51 +01:00
Alexandre Duret-Lutz
f9e75de647 partial_degeneralize: a support for disjunction of Fin
* spot/twaalgos/degen.cc, spot/twaalgos/degen.hh: Implement this.
Also throw a runtime error in case were todegen does not match any
subformula.
* tests/python/pdegen.py: Add tests.
2020-02-03 11:08:20 +01:00
Alexandre Duret-Lutz
f1008c156b improve partial_degeneralize() on several cases
On these 4 cases, added to pdegen.py, and supplied by Florian Renkin,
partial_degeneralize() is now at least as good as degeneralize_tba(),
and sometimes better.  This is achieved as follows: (1) a
propagate_marks procedure is introduced to propagate marks as far as
possible on the automaton (e.g., common outgoing marks can be push
onto the incoming transitions and vice-versa), (2) the
degeneralization order is compute dynamically, and (3) whenever and
fully-accepting transition is taken in the original automaton, the
destination level is chosen to be the highest existing level.

* spot/twaalgos/degen.cc,
spot/twaalgos/degen.hh (propagate_marks_vector, propagate_marks_here):
New functions.
(partial_degeneralize): Improve, as described above.
* tests/python/pdegen.py: Add test cases.
2020-02-03 09:52:54 +01:00
Alexandre Duret-Lutz
da3333477f * doc/org/concepts.org: Typo. 2020-01-28 09:37:33 +01:00
Alexandre Duret-Lutz
50c0f880dc Inf(i)|Inf(j) -> Inf(k) and Fin(i)&Fin(j) -> Fin(k)
Implement those rules in simplify_acceptance_here().

* NEWS: Mention the change.
* spot/twa/acc.cc,
spot/twa/acc.hh (acc_cond::acc_code::used_once_sets): New method.
* spot/twaalgos/cleanacc.cc, spot/twaalgos/cleanacc.hh:
Implement the above rule.
* tests/core/remfin.test: Adjust expected results.
* tests/python/simplacc.py: New file.
* tests/Makefile.am: Add it.
2020-01-28 09:37:28 +01:00
Alexandre Duret-Lutz
5dc6da0b20 ipnbdoctest: attempt to restart when the kernel dies
* tests/python/ipnbdoctest.py: Catch kernel deaths, wait a random
number of seconds, and try again up to three times.
2020-01-04 18:05:45 +01:00
Alexandre Duret-Lutz
9d70eeef97 ltlcross: display short names when supplied
Suggested by František Blahoudek.

* bin/ltlcross.cc: Implement this.
* NEWS, doc/org/ltlcross.org: Document it.
* tests/core/ltlcross4.test: Test it.
2020-01-04 15:54:18 +01:00
Alexandre Duret-Lutz
6a531be052 Merge branch 'master' into next 2020-01-04 14:25:35 +01:00
Alexandre Duret-Lutz
d8ed0fb8ab * NEWS, configure.ac: Bump version to 2.8.5.dev. 2020-01-04 14:24:49 +01:00
Alexandre Duret-Lutz
68435915e7 Release Spot 2.8.5
* NEWS, configure.ac, doc/org/setup.org: Bump version number.
2020-01-04 14:19:33 +01:00
Alexandre Duret-Lutz
49bfefb46e ipnbdoctest: attempt to deal with buildfarm timeouts
* tests/python/ipnbdoctest.py: Use shorter timeouts, and flush the
shell messages without expecting them.
2020-01-03 20:32:58 +01:00
Alexandre Duret-Lutz
5e6de9dad4 ipnbdoctest: attempt to deal with buildfarm timeouts
* tests/python/ipnbdoctest.py: Use shorter timeouts, and flush the
shell messages without expecting them.
2020-01-03 15:22:05 +01:00
Alexandre Duret-Lutz
a65ddf5b53 bump copyright year
* bin/common_setup.cc, debian/copyright: Here.
2020-01-01 16:21:56 +01:00
Alexandre Duret-Lutz
40ce9ce3ef bump copyright year
* bin/common_setup.cc, debian/copyright: Here.
2020-01-01 16:20:28 +01:00
Alexandre Duret-Lutz
265332dedf twagraph: merge_edge() can determinize automata
Reported by František Blahoudek.

* spot/twa/twagraph.cc: Reset prop_universal() if edges are merged in
a non-deterministic automaton.
* tests/core/det.test: Add test case.
* NEWS: Mention the issue.
2020-01-01 16:18:44 +01:00
Alexandre Duret-Lutz
383d1c003c ltl2tgba, ltldo: fix location of --negate in --help output
* bin/common_finput.cc, bin/ltl2tgba.cc, bin/ltldo.cc: Make sure
--negate is listed along with input options.
2020-01-01 16:18:44 +01:00
Alexandre Duret-Lutz
1f90e1cff9 fix ltl2tgba -B not always returning Inf(0)
Reported by František Blahoudek.

* spot/twaalgos/postproc.cc: Turn "t" into "Inf(0)" for BA.
* tests/core/ltl2tgba.test: Add test case.
* NEWS: Mention the bug.
2020-01-01 16:18:44 +01:00
Alexandre Duret-Lutz
67b9bfda08 tmpfile: improve error message
* spot/misc/tmpfile.cc: Display strerror(errno) plus some suggestions
that depend on the error.  Based on a report from Shengping Shaw.
* THANKS: Add reporter.
* tests/core/ltlcross5.test: New file.
* tests/Makefile.am: Add it.
2019-12-31 22:42:45 +01:00
Alexandre Duret-Lutz
b9cac2cedb * spot/twaalgos/emptiness.cc: Fix another gcc-snapshot warning. 2019-12-31 22:42:42 +01:00
Alexandre Duret-Lutz
9b9c2b3c94 * spot/twaalgos/compsusp.cc: Fix a warning from gcc-snapshot. 2019-12-31 22:42:39 +01:00
Alexandre Duret-Lutz
d1ef380d32 twagraph: merge_edge() can determinize automata
Reported by František Blahoudek.

* spot/twa/twagraph.cc: Reset prop_universal() if edges are merged in
a non-deterministic automaton.
* tests/core/det.test: Add test case.
* NEWS: Mention the issue.
2019-12-31 22:34:39 +01:00
Alexandre Duret-Lutz
2764e81588 ltl2tgba, ltldo: fix location of --negate in --help output
* bin/common_finput.cc, bin/ltl2tgba.cc, bin/ltldo.cc: Make sure
--negate is listed along with input options.
2019-12-28 22:10:33 +01:00
Alexandre Duret-Lutz
cfe3ed707a fix ltl2tgba -B not always returning Inf(0)
Reported by František Blahoudek.

* spot/twaalgos/postproc.cc: Turn "t" into "Inf(0)" for BA.
* tests/core/ltl2tgba.test: Add test case.
* NEWS: Mention the bug.
2019-12-26 23:05:58 +01:00
Alexandre Duret-Lutz
d2ba554507 tmpfile: improve error message
* spot/misc/tmpfile.cc: Display strerror(errno) plus some suggestions
that depend on the error.  Based on a report from Shengping Shaw.
* THANKS: Add reporter.
* tests/core/ltlcross5.test: New file.
* tests/Makefile.am: Add it.
2019-12-15 17:44:54 +01:00
Alexandre Duret-Lutz
a06e547473 * spot/twaalgos/emptiness.cc: Fix another gcc-snapshot warning. 2019-12-12 13:23:51 +01:00
Alexandre Duret-Lutz
fd00ce8c06 * spot/twaalgos/compsusp.cc: Fix a warning from gcc-snapshot. 2019-12-11 19:46:17 +01:00
Alexandre Duret-Lutz
bf7ccfe7e6 new partial_degeneralize() algorithm
* spot/twaalgos/degen.hh, spot/twaalgos/degen.cc: Implement it.
* tests/python/pdegen.py: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention the new function.
2019-12-11 17:09:55 +01:00
Alexandre Duret-Lutz
894fda21f9 Merge branch 'master' into next 2019-12-08 13:38:01 +01:00
Alexandre Duret-Lutz
44d9a629b1 * NEWS, configure.ac: Bump version to 2.8.4.dev. 2019-12-08 13:37:00 +01:00
Alexandre Duret-Lutz
625a2e2836 Release Spot 2.8.4
* NEWS, configure.ac, doc/org/setup.org: Set version to 2.8.4.
2019-12-08 13:35:01 +01:00
Alexandre Duret-Lutz
e374b95689 bin: fix documentation of --trust-hoa
* bin/common_hoaread.cc: Here.  Reported by Juraj Major.
2019-12-08 13:32:58 +01:00
Alexandre Duret-Lutz
adc7c93448 remfin: fix tra_to_tba
This fixes a complementation bug reported by Juraj Major and Tereza
Šťastná.

* spot/twaalgos/remfin.cc (is_scc_tba_type): Fix the condition for
handling Fin-alone pairs.
* tests/core/complement.test: Add Juraj & Tereza's test case.
* NEWS: Mention it.
2019-12-08 13:32:58 +01:00
Alexandre Duret-Lutz
71fef458e1 python: define our own SVG DisplayObject
This is to workaround differences in minidom's pretty-printing that
occurred between Python 3.7 and 3.8.

* python/spot/jupyter.py (SVG): New class.
* python/spot/__init__.py: Use it.
* tests/python/_altscc.ipynb, tests/python/alternation.ipynb,
tests/python/automata.ipynb, tests/python/formulas.ipynb,
tests/python/gen.ipynb, tests/python/highlighting.ipynb,
tests/python/ltsmin-dve.ipynb, tests/python/ltsmin-pml.ipynb,
tests/python/product.ipynb, tests/python/randaut.ipynb,
tests/python/testingaut.ipynb, tests/python/twagraph-internals.ipynb,
tests/python/word.ipynb: Adjust.
2019-12-08 13:29:26 +01:00
Alexandre Duret-Lutz
317520efe8 org: improve architecture diagram
* doc/org/arch.tex: Improve diagram, add links and online services.
* doc/org/concepts.org: Update text.
2019-12-08 13:29:14 +01:00
Alexandre Duret-Lutz
935c412df0 remfin: simplify tra_to_tba using generic emptiness check
* spot/twaalgos/remfin.cc (tra_to_tba): Remove the SCC-emptiness
check that was done by creating a temporary automaton.  Use the
scc_info::check_scc_emptiness() function instead.
* spot/twaalgos/sccinfo.cc,
spot/twaalgos/sccinfo.hh (scc_info::check_scc_emptiness): Mark
this function as const.
(scc_and_mark_filter): Make sure we only combine with a lower filter
of the same type.
* spot/twaalgos/genem.cc: Remove one stray debugging statement.
* tests/python/genem.py: Remove a duplicate test.
2019-12-07 12:51:59 +01:00
Alexandre Duret-Lutz
66bd5db0af bin: fix documentation of --trust-hoa
* bin/common_hoaread.cc: Here.  Reported by Juraj Major.
2019-12-06 12:48:30 +01:00
Alexandre Duret-Lutz
c36b1588fc remfin: fix tra_to_tba
This fixes a complementation bug reported by Juraj Major and Tereza
Šťastná.

* spot/twaalgos/remfin.cc (is_scc_tba_type): Fix the condition for
handling Fin-alone pairs.
* tests/core/complement.test: Add Juraj & Tereza's test case.
* NEWS: Mention it.
2019-12-05 22:44:15 +01:00
Alexandre Duret-Lutz
e778965730 python: define our own SVG DisplayObject
This is to workaround differences in minidom's pretty-printing that
occurred between Python 3.7 and 3.8.

* python/spot/jupyter.py (SVG): New class.
* python/spot/__init__.py: Use it.
* tests/python/_altscc.ipynb, tests/python/alternation.ipynb,
tests/python/automata.ipynb, tests/python/formulas.ipynb,
tests/python/gen.ipynb, tests/python/highlighting.ipynb,
tests/python/ltsmin-dve.ipynb, tests/python/ltsmin-pml.ipynb,
tests/python/product.ipynb, tests/python/randaut.ipynb,
tests/python/testingaut.ipynb, tests/python/twagraph-internals.ipynb,
tests/python/word.ipynb: Adjust.
2019-12-05 08:01:07 +01:00
Alexandre Duret-Lutz
44df3c0837 add a --check=stutter-sensitive-example option
* spot/twaalgos/stutter.cc,
spot/twaalgos/stutter.hh (check_stutter_invariance): Add a
find_counterexamples argument.
* spot/twaalgos/hoa.cc: Output accepted-word and rejected-word examples.
* bin/common_aoutput.cc: Handle --check=stutter-sensitive-example.
* NEWS: Mention it.
* tests/core/stutter-tgba.test: Test it.
* doc/org/concepts.org, doc/org/hoa.org: Document accepted-word and
rejected-word named properties.
* bin/man/spot-x.x: Mention that --check=stutter-sensitive-example
ignores SPOT_STUTTER_CHECK.
2019-12-05 08:00:47 +01:00
Alexandre Duret-Lutz
3be394d2eb org: improve architecture diagram
* doc/org/arch.tex: Improve diagram, add links and online services.
* doc/org/concepts.org: Update text.
2019-12-03 17:51:11 +01:00
Alexandre Duret-Lutz
3d4e400cda Merge branch 'master' into next 2019-11-06 09:57:42 +01:00
Alexandre Duret-Lutz
56e08af896 * NEWS, configure.ac: Bump version to 2.8.3.dev. 2019-11-06 09:56:25 +01:00
Alexandre Duret-Lutz
7ece494794 release Spot 2.8.3
* NEWS, configure.ac, doc/org/setup.org: Set version to 2.8.3.
2019-11-06 09:54:52 +01:00
Alexandre Duret-Lutz
ed85f59b89 * spot/tl/simplify.cc: Use robin_hood hashing. 2019-10-31 10:17:56 +01:00
Alexandre Duret-Lutz
803a966ffe contain: some micro-optimizations
* spot/tl/contain.cc, spot/tl/contain.hh: Use a pimp idiom to hide the
hash tables, use robin_hood hash, and strip common Xs to save some
cache lookups.
* spot/tl/simplify.cc: Adjust to change of #include in contain.hh.
2019-10-31 10:17:56 +01:00
Alexandre Duret-Lutz
28efa37218 * spot/twaalgos/ltl2tgba_fm.cc: Various micro-optimizations. 2019-10-29 23:02:37 +01:00
Alexandre Duret-Lutz
44a79b1b89 work around recent GraphViz bug in SVG scaling
See https://gitlab.com/graphviz/graphviz/issues/1605.

* python/spot/aux.py (str_to_svg): Invert the scale parameters
if they are both greater than one.
2019-10-28 14:53:32 +01:00
Alexandre Duret-Lutz
0e681ed060 acc: improve diagnostics for algorithms that use too many colors
* spot/twa/acc.hh (acc_cond::mark_t): Diagnose mark_t with set numbers
that are too larges.
* tests/python/except.py: Adjust.
* tests/core/acc.cc: Remove most of asserts, as those can be disabled,
and adjust expected exception.
2019-10-28 14:53:32 +01:00
Etienne Renault
f31864488b core: random_shuffle is deprecated and not portable
* tests/core/parity.cc: Here.
2019-10-28 14:53:32 +01:00