* NEWS: Some cleanup, in preparation for the release.
This commit is contained in:
parent
5a9c8aad0d
commit
7ade97943b
1 changed files with 62 additions and 63 deletions
125
NEWS
125
NEWS
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue