Commit graph

5773 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
ef1c49dafd org: greatly reduce the size of satmin.svg
* doc/org/satmin.tex: Use a plain background color instead of some
hashed lines pattern.  This reduces the size of the resulting SVG
file from 1.9MB to 50kB after minification.
* doc/org/satmin.org: Adjust to mention autfilt.
2020-09-10 15:28:55 +02:00
Alexandre Duret-Lutz
5f253d1665 minify SVG images if possible
Fixes #422.

* HACKING: mention svgo
* doc/Makefile.am (dist-hook, stamp): Run svgo on produced SVGs.
2020-09-10 15:28:55 +02:00
Alexandre Duret-Lutz
760bde093b python: add some parity-game bindings
* python/spot/impl.i: Process game.hh.
* spot/misc/game.cc, spot/misc/game.hh: Make the output of
parity_game_solve() a solved_game object for easier manipulation in
Python.
* bin/ltlsynt.cc: Adjust usage.
* tests/python/paritygame.ipynb: New file.
* tests/Makefile.am, doc/org/tut.org: Add it.
* NEWS: Mention these bindings.
2020-09-09 15:32:44 +02:00
Alexandre Duret-Lutz
9e8a842975 game: make a propagate_players() function public
* bin/ltlsynt.cc (complete_env): Replace this function by...
* spot/misc/game.hh, spot/misc/game.cc (propagate_players): ... this
new one, hiding the "state-player" business from ltlsynt.  Also do not
create a sink states unless necessary.
* tests/core/ltlsynt.test: Adjust expected number of states.
2020-09-08 22:30:40 +02:00
Alexandre Duret-Lutz
41d088ea95 dot: add support for two-player games
* spot/twaalgos/dot.cc: Honor the "state-player" property and draw
player 1 states using diamonds.
* doc/org/hoa.org: Show an example.
* tests/core/gamehoa.test: Make sure diamond is output.
* NEWS: Mention this.
2020-09-08 20:20:48 +02:00
Alexandre Duret-Lutz
ea9384dd4b extend HOA I/O to preserve the state-player property
* spot/parseaut/parseaut.yy, spot/parseaut/scanaut.ll,
spot/twaalgos/hoa.cc: Add input and output support.
* doc/org/hoa.org: Document the HOA extension.
* bin/ltlsynt.cc: Add a --print-game-hoa option to
produce such format.
* tests/core/gamehoa.test: New file to test this.
* tests/Makefile.am: Add it.
* NEWS: Mention this new feature.
2020-09-08 20:20:48 +02:00
Alexandre Duret-Lutz
25c75c55b1 game: git rid of the parity_game class
This class was a simple wrapper on top of twa_graph_ptr, but it's
easier to simply use a twa_graph_ptr with a "state-player" property
instead, this way we will be able to modify the automata I/O routines
to support games directly.

* spot/misc/game.cc, spot/misc/game.hh: Rewrite the solver and
pg_printer interface.
* bin/ltlsynt.cc: Adjust.
* NEWS: Mention this change.
* doc/org/concepts.org: Mention the state-player property.
2020-09-08 20:20:48 +02:00
Alexandre Duret-Lutz
6379d9889f * doc/org/spot.css: Remove margin-bottom from pre.example. 2020-09-07 16:06:47 +02:00
Alexandre Duret-Lutz
2879c1d8e2 Merge branch 'master' into next 2020-09-07 10:56:53 +02:00
Alexandre Duret-Lutz
9a3c809f10 * NEWS, configure.ac: Bump version to 2.9.4.dev. 2020-09-07 10:56:01 +02:00
Alexandre Duret-Lutz
b956bfe90f Release Spot 2.9.4
* NEWS, configure.ac, doc/org/setup.org: Bump to version 2.9.4.
2020-09-07 10:52:51 +02:00
Alexandre Duret-Lutz
46b11baf05 * .gitlab-ci.yml: Update docker images, for buildenv#1. 2020-09-03 16:24:10 +02:00
Alexandre Duret-Lutz
b0f8170055 * .gitlab-ci.yml: Update docker images, for buildenv#1. 2020-09-03 14:45:07 +02:00
Florian Renkin
33a79a34d3 Fix typo
* NEWS, spot/graph/graph.hh: here.
2020-09-02 14:13:00 +02:00
Florian Renkin
149fbb73bf configure.ac: Correct warning message
configure.ac used unintialized variable when he printed message
for enable-max-accsets

* configure.ac: here.
2020-09-02 14:12:55 +02:00
Florian Renkin
af81266877 Fix typo
* NEWS, spot/graph/graph.hh: here.
2020-09-01 17:25:31 +02:00
Florian Renkin
d2e7cdb377 configure.ac: Correct warning message
configure.ac used unintialized variable when he printed message
for enable-max-accsets

* configure.ac: here.
2020-09-01 17:19:44 +02:00
Alexandre Duret-Lutz
6f76121b89 [buddy] get rid of many recursive algorithms
This patch addresses the BuDDy part of #396,
reported by Florian Renkin and Reed Oei.

* src/kernel.c, src/kernel.h: Declare a bddrecstack and
associated macros.  Resize it when new variable are declared.
* src/cache.h: Add a BddCache_index macro.
* src/bddop.c (not_rec, apply_rec, quant_rec, appquant_rec,
support_rec, ite_rec, compose_rec, restrict_rec, satone_rec,
satoneset_rec): Rewrite using this stack to get rid of the recursion.
2020-08-05 23:25:28 +02:00
Alexandre Duret-Lutz
d7b3d05e57 minato: use bdd_ite()
* spot/misc/minato.cc: Use bdd_ite() to exercise one of the function
rewritten in the next patch, and also because that is supposedly
faster.
2020-08-03 10:39:02 +02:00
Alexandre Duret-Lutz
af108d0556 * doc/org/ioltl.org: Document prefix operators. 2020-08-03 09:27:16 +02:00
Alexandre Duret-Lutz
fd437d62f8 help2man: allow line breaks in long lists of options
* tools/help2man: Add \: after | when listing optional arguments.
This should fix a lintian warning about unbreakable long line.
2020-08-03 09:27:11 +02:00
Alexandre Duret-Lutz
ceced82c5c * debian/rules (fix-js): Adjust to newer MathJax URL. 2020-08-03 09:27:08 +02:00
Alexandre Duret-Lutz
fde9a303c4 to_parity: minor fixes
* spot/twaalgos/toparity.cc: Do not call prpagate_marks_here twice if
the automaton was not degeneralized.
* spot/twaalgos/toparity.hh: Typo in comment.
2020-08-03 09:27:04 +02:00
Alexandre Duret-Lutz
9e6a99dcac * spot/misc/satsolver.hh: Typo in comment. 2020-08-03 09:26:33 +02:00
Alexandre Duret-Lutz
d308728b41 argp: fix handling of very long options in --help
* lib/argp-help.c (hol_entry_help): Handle cases with option
description is larger than RMARGIN.
2020-08-03 09:26:19 +02:00
Alexandre Duret-Lutz
c49506eea7 * debian/copyright: Replace MIT by Expat. 2020-08-03 09:25:56 +02:00
Alexandre Duret-Lutz
b013077af3 doc: improve css
* doc/org/spot.css: Display input and output closer and separate them
with dash.
2020-08-03 09:25:09 +02:00
Alexandre Duret-Lutz
1a7f471a02 * tests/python/ipnbdoctest.py: Ignore matplotlib font cache messages. 2020-08-03 09:25:03 +02:00
Alexandre Duret-Lutz
94eca2ca7d * spot/twaalgos/toparity.hh: Improve documentation. 2020-08-03 09:24:25 +02:00
Alexandre Duret-Lutz
50a33cbc8c org: fix shadow of hierarchy figure
* doc/org/hierarchy.tex: Draw the shadow manually, so that it is part
of the bounding box when we extract the SVG.
2020-08-03 09:24:16 +02:00
Alexandre Duret-Lutz
2c267cac40 simplify: fix handling of keep_top_xor
Under that option, !(a ^ b) was converted
to (!a <=> !b) instead of simply (a <=> b).

* spot/tl/simplify.cc (equiv_or_xor): Improve
rewriting.
* tests/core/ltl2tgba2.test, tests/python/simstate.py: Adjust test
cases.
2020-08-03 09:23:48 +02:00
Alexandre Duret-Lutz
f179c79409 * doc/org/ioltl.org: Document prefix operators. 2020-07-31 12:05:32 +02:00
Alexandre Duret-Lutz
672e6248b8 help2man: allow line breaks in long lists of options
* tools/help2man: Add \: after | when listing optional arguments.
This should fix a lintian warning about unbreakable long line.
2020-07-29 21:30:24 +02:00
Alexandre Duret-Lutz
a8db30d676 * debian/rules (fix-js): Adjust to newer MathJax URL. 2020-07-29 15:17:47 +02:00
Alexandre Duret-Lutz
3710e8f283 to_parity: minor fixes
* spot/twaalgos/toparity.cc: Do not call prpagate_marks_here twice if
the automaton was not degeneralized.
* spot/twaalgos/toparity.hh: Typo in comment.
2020-07-29 15:03:46 +02:00
Alexandre Duret-Lutz
a375089e52 simplify_acceptance: generalize the complementary mark rewriting
Fixes #403.

* spot/twaalgos/cleanacc.cc (simplify_complementary_marks_here):
Assume that two colors are complementary in a broad sense, i.e., on is
present if (but not only if) the other is missing before applying
those rewritings.  Technically, this is usually not necessary, because
the changes done in #418 will cause such "covering-the-full-automaton"
pair of colors to be disjoint so complementary in a strict sense.  It
might make a difference (this is not tested) in presence of reused
colors which #418 cannot remove.  In any case, it's simply less code
to implement the broad sense.
* tests/python/toparity.py: Add test case from #403, which is
reduced to two states with recent optimizations.
2020-07-29 15:01:55 +02:00
Alexandre Duret-Lutz
0c4b701630 improve acceptance simplifications using useless colors
This fixes issue #418.

* spot/twa/acc.cc,
spot/twa/acc.hh (acc_cond::acc_code::useless_colors_patterns): New
method to detect patterns of colors allowing other colors to be added
or removed at will.
* spot/twaalgos/cleanacc.cc (simplify_acceptance_here): Use the above
patterns to remove some useless colors from transitions and hope that
this can help simplify the acceptance condition.
* spot/twaalgos/degen.cc (propagate_marks_vector): Use the pattern to
add more colors.
* tests/core/ltl2tgba2.test: Add the test case from issue #418.
* tests/core/ltl2dstar4.test, tests/core/satmin3.test,
tests/core/sccdot.test, tests/core/sim3.test,
tests/python/automata.ipynb, tests/python/decompose.ipynb,
tests/python/merge.py, tests/python/pdegen.py, tests/python/remfin.py,
tests/python/toparity.py, tests/python/tra2tba.py: Adjust all test
cases.
* NEWS: Mention this new feature.
2020-07-28 22:26:28 +02:00
Alexandre Duret-Lutz
c341a3cabf * spot/misc/satsolver.hh: Typo in comment. 2020-07-28 22:08:47 +02:00
Alexandre Duret-Lutz
25cb7651fe cleanacc: merge algorithms dealing with included and identical sets
* spot/twaalgos/cleanacc.cc (merge_identical_marks_here, merge_mark,
included_marks): Fuse these into ...
(simplify_included_marks_here): ... this new function.
* NEWS: Mention the fix of issue #406.
2020-07-28 15:38:52 +02:00
Alexandre Duret-Lutz
a804f964d2 argp: fix handling of very long options in --help
* lib/argp-help.c (hol_entry_help): Handle cases with option
description is larger than RMARGIN.
2020-07-28 10:30:45 +02:00
Alexandre Duret-Lutz
31fd31436a * debian/copyright: Fix bricks' license, and replace MIT by Expat. 2020-07-27 21:47:28 +02:00
Alexandre Duret-Lutz
cba762a60f doc: improve css
* doc/org/spot.css: Display input and output closer and separate them
with dash.
2020-07-27 17:05:58 +02:00
Alexandre Duret-Lutz
3220da6605 tra_to_tba: finish 05e6e0885
* spot/twaalgos/remfin.cc: Actually use propmarks.
* tests/core/det.test, tests/core/remfin.test,
tests/python/automata.ipynb, tests/python/remfin.py,
tests/python/tra2tba.py: Adjust test cases.
2020-07-27 14:43:27 +02:00
Alexandre Duret-Lutz
ff3a3f8144 * tests/python/ipnbdoctest.py: Ignore matplotlib font cache messages. 2020-07-27 14:43:27 +02:00
Florian Renkin
5ec9d55fea simplify_acceptance: Use color inclusions to simplify a condition
This fixes #406.

* spot/twaalgos/cleanacc.cc: Add the simplification.
* tests/core/remfin.test, tests/python/automata.ipynb,
tests/python/remfin.py: Update tests.
* tests/python/simplacc.py: Update and add tests.
2020-07-25 19:15:17 +02:00
Alexandre Duret-Lutz
05e6e08859 tra_to_tba: remove more useless edges
* spot/twaalgos/remfin.cc (tra_to_tba): Implement the same
optimization has in the generic remove_fin transformation.
* tests/python/tra2tba.py: Adjust.
2020-07-24 16:32:00 +02:00
Alexandre Duret-Lutz
567a5439c5 * spot/twaalgos/toparity.hh: Improve documentation. 2020-07-24 15:39:24 +02:00
Alexandre Duret-Lutz
7fbf4e0e3c remove_fin: ignore more useless transitions
Do not clone transitions that are necessarily part of on accepting
cycle in the main copy of the automaton.

* spot/twaalgos/remfin.cc: Use propagate_marks_vector to ignore more
edges.
* tests/core/remfin.test, tests/python/remfin.py,
tests/python/automata.ipynb: Adjust.
* tests/sanity/style.test: Do not choke on C++17 if statements with
initializer.
2020-07-24 15:38:42 +02:00
Alexandre Duret-Lutz
91db0e1e29 org: fix shadow of hierarchy figure
* doc/org/hierarchy.tex: Draw the shadow manually, so that it is part
of the bounding box when we extract the SVG.
2020-07-23 15:46:21 +02:00
Alexandre Duret-Lutz
b17376879d translate: add a quick syntactic simplification before relabeling
This fixes #412.

* spot/twaalgos/translate.cc: Add the quick syntactic simplification.
* spot/twaalgos/relabel.cc: Do not register old unused APs.
* tests/core/ltl2tgba2.test: Add test case.
* tests/core/bdd.test, tests/python/automata.ipynb: Adjust.
* NEWS: Mention this.
2020-07-22 17:02:47 +02:00