* NEWS: Some cleanup, in preparation for the release.

This commit is contained in:
Alexandre Duret-Lutz 2021-11-04 17:37:20 +01:00
parent 5a9c8aad0d
commit 7ade97943b

125
NEWS
View file

@ -10,36 +10,41 @@ New in spot 2.9.8.dev (not yet released)
Command-line tools: Command-line tools:
- ltlsynt now accepts only one of the --ins or --outs options - ltlsynt has been seriously overhauled, while trying to
to be given and will deduce the value of this other one. preserve backward compatibility. Below is just a summary
of the main user-visible changes. Most of the new options
are discussed on https://spot-dev.lrde.epita.fr/ltlsynt.html
- ltlsynt learned --print-game-hoa to output its internal parity + ltlsynt now accepts only one of the --ins or --outs options to
game in the HOA format (with an extension described below). be given and will deduce the value of this other one.
- ltlsynt --aiger option now takes an optional argument indicating + ltlsynt learned --print-game-hoa to output its internal parity
how the bdd and states are to be encoded in the aiger output. game in the HOA format (with an extension described below).
The option has to be given in the form
ite|isop|both[+ud][+dc][+sub0|sub1|sub2] where the first
only obligatory argument decides whether "if-then-else" ("ite")
or irreducible-sum-of-products ("isop") is to be used.
"both" executes both strategies and retains the smaller circuits.
The additional options are for fine-tuning. "ud" also encodes the
dual of the conditions and retains the smaller circuits.
"dc" computes if for some inputs we do not care whether the
output is high or low and try to use this information to compute
a smaller circuit. "subX" indicates different strategies to find
common subexpressions, with "sub0" indicating no extra computations.
- ltlsynt --verify checks the computed strategy or aiger circuit + ltlsynt --aiger option now takes an optional argument indicating
against the specification. how the bdd and states are to be encoded in the aiger output.
The option has to be given in the form
ite|isop|both[+ud][+dc][+sub0|sub1|sub2] where the first only
obligatory argument decides whether "if-then-else" ("ite") or
irreducible-sum-of-products ("isop") is to be used. "both"
executes both strategies and retains the smaller circuits. The
additional options are for fine-tuning. "ud" also encodes the
dual of the conditions and retains the smaller circuits. "dc"
computes if for some inputs we do not care whether the output is
high or low and try to use this information to compute a smaller
circuit. "subX" indicates different strategies to find common
subexpressions, with "sub0" indicating no extra computations.
- ltlsynt --decompose=yes|no determines whether or not the algorithm + ltlsynt learned --verify to check the computed strategy or aiger
should try to decompose the formula into subformulas and generate circuit against the specification.
a strategy for each subformula before recombining them into a
circuit.
- ltlsynt --simplify=no|bisim|bwoa|sat|bisim-sat|bwoa-sat + ltlsynt now has a --decompose=yes|no option to specify if
specifies how to simplify the synthesized controler. the specification should be decomposed into independent
sub-specifications, the controller of which can then be glued
together to satisfy the input specification.
+ ltlsynt learned --simplify=no|bisim|bwoa|sat|bisim-sat|bwoa-sat
to specifies how to simplify the synthesized controler.
- ltl2tgba, autfilt, dstar2tgba, and randaut learned a --buchi - ltl2tgba, autfilt, dstar2tgba, and randaut learned a --buchi
option, or -b for short. This outputs Büchi automata without option, or -b for short. This outputs Büchi automata without
@ -63,48 +68,42 @@ New in spot 2.9.8.dev (not yet released)
ltlcross '{owl-21 ltl2nba}owl-21 ltl2nba -f %f>%O' ... ltlcross '{owl-21 ltl2nba}owl-21 ltl2nba -f %f>%O' ...
Library: Library:
- Spot now provides convenient function to create and solve games. - Spot now provides convenient function to create and solve games.
The functions are located in twaalgos/game.hh. Additional The functions are located in twaalgos/game.hh. Additional
functions related to the application to reactive synthesis are functions related to the application to reactive synthesis are in
in twaalgos/synthesis.hh. twaalgos/synthesis.hh.
- A new class called aig is introduced to represent - A new class called aig represent an and-inverter-graphs, and is
and-inverter-graphs, which is useful for synthesis. currently used during synthesis. (twaalgos/aiger.hh)
- Historically, Spot labels automata by Boolean formulas over - Some new *experimental* classes, called "twacube" and "kripkecube"
atomic propositions. These Boolean formulas are represented implement a way to store automata or Kripke structures without
as BDDs using the BuDDy library. Since this implementation is using BDDs as labels. Instead they use a structure called cube,
not thread safe, Spot wasn't able, until now, to integrate that can only encode a conjunction of litterals. Avoiding BDDs
parallel algorithms. To bypass this limitation, we introduce the (or rather, avoiding the BuDDy library) in the API for automata
cube data structure. This structure aims to replace BDDs makes it possible to build multithreaded algorithms.
everywhere parallelism is required. Contrary to BDDs, this
structure is not able to represent complex boolean formulae, but
can represent very simple disjunctive form of boolean formulae
and can be used in a multithreaded context.
Since both the BDD-based and the cube-based implementations have /!\ Currently these classes should be considered as experimental,
benefits and drawbacks, we opted to keep side-by-side the and their API is very likely to change in a future version.
historical implementation and the new one. As a consequence:
twacube and kripkecube are the new versions of twa and kripke. Functions like twacube_to_twa(), twa_to_twacube(), can be used
We provide conversion back and forth throught the following to bridge between automata with BDD labels, and automata with
functions: twacube_to_twa, twa_to_twa, product_to_twa, and cube labels.
kripkecube_to_twa. The equivalence between a twa and a twacube
can be checked using are_equivalent.
In addition to the previous conversion, we implemented various In addition to the previous conversion, we implemented various
state-of-the-art algorithms: bloemen.16.ppopp, bloemen.16.hvc, state-of-the-art multi-threaded emptiness-check algorithms:
evangeslita.12.atva, renault.13.lpar, holzmann.11.ieee. In order [bloemen.16.ppopp], [bloemen.16.hvc], [evangeslita.12.atva],
to ease the manipulation of these algorithms we introduce a [renault.13.lpar], [holzmann.11.ieee] (see doc/spot.bib).
factory mc_instanciator, that provide a nice abstraction for launching,
pinning, and stopping threads inside of parallel model-checking
algorithms. One should note that for performances and genericity
issues, all these algorithms are templated.
Finally, since all these algorithms are templated, a refactoring The mc_instanciator class provides an abstraction for launching,
of the ltsmin structure has been done in order to introduce the pinning, and stopping threads inside of parallel model-checking
spins_interface which describes the functions exported by a PINS algorithms.
file. With this refactoring, we can retrieve both a kripke or a
kripkecube from a PINS file. The class ltsmin_model class, providing support for loading
various models that follow ltsmin's PINS interinterface, has
been adjusted and can now produce either a kripke instance, or
a kripkecube instance.
- The postprocessor::set_type() method can now accept - The postprocessor::set_type() method can now accept
options postprocessor::Buchi and postprocessor::GeneralizedBuchi. options postprocessor::Buchi and postprocessor::GeneralizedBuchi.
@ -124,7 +123,7 @@ New in spot 2.9.8.dev (not yet released)
postprocessor::set_type(postprocessor::BA) postprocessor::set_type(postprocessor::BA)
by by
postprocessor::set_type(postprocessor::Buchi) postprocessor::set_type(postprocessor::Buchi)
postprocessor::set_pref(postprocessor::Small postprocessor::set_pref(postprocessor::Small
@ -154,7 +153,7 @@ New in spot 2.9.8.dev (not yet released)
be simplied to {0}, but the oppose rewriting can be useful as be simplied to {0}, but the oppose rewriting can be useful as
well. (Issue #418.) well. (Issue #418.)
- the parity_game class has been removed, now any twa_graph_ptr that - The parity_game class has been removed, now any twa_graph_ptr that
has a parity max odd acceptance and a "state-player" property is has a parity max odd acceptance and a "state-player" property is
considered to be a parity game. considered to be a parity game.
@ -297,10 +296,10 @@ New in spot 2.9.8.dev (not yet released)
See https://spot.lrde.epita.fr/ipynb/games.html and See https://spot.lrde.epita.fr/ipynb/games.html and
https://spot.lrde.epita.fr/tut40.html for examples. https://spot.lrde.epita.fr/tut40.html for examples.
- Bindings for functions related to syntethis and aig-circuits. - Bindings for functions related to synthesis and aig-circuits.
See https://spot.lrde.epita.fr/ipynb/synthesis.html See https://spot.lrde.epita.fr/ipynb/synthesis.html
- spot::twa::prop_set was previously abstent from the Python - spot::twa::prop_set was previously absent from the Python
bindings, making it impossible to call make_twa_graph() for copying bindings, making it impossible to call make_twa_graph() for copying
a twa. It is now available as spot.twa_prop_set (issue #453). a twa. It is now available as spot.twa_prop_set (issue #453).
Also for convenience, the twa_graph.__copy__() method, called by Also for convenience, the twa_graph.__copy__() method, called by