We are happy to announce the release of Spot 2.2.
You can find the new release here:
http://www.lrde.epita.fr/dload/spot/spot-2.2.tar.gz
See
https://spot.lrde.epita.fr/ for documentation and installation
instructions.
Spot 2.2 fixes some serious bugs and adds an assortments of small
improvements. These changes have been contributed by Alexandre
Gbaguidi Aisse, Étienne Renault, and myself. A detailed list of what
is new is given below.
As always, please direct any feedback to <spot(a)lrde.epita.fr>fr>.
New in spot 2.2 (2016-11-14)
Command-line tools:
* ltlfilt has a new option --from-ltlf to help reducing LTLf (i.e.,
LTL over finite words) model checking to LTL model checking. This
is based on a transformation by De Giacomo & Vardi (IJCAI'13).
* "ltldo --stats=%R", which used to display the serial number of the
formula processed, was renamed to "ltldo --stats=%#" to free %R
for the following feature.
* autfilt, dstar2tgba, ltl2tgba, ltlcross, ltldo learned to measure
cpu-time (as opposed to wall-time) using --stats=%R. User or
system time, for children or parent, can be measured separately by
adding additional %[LETTER]R options. The difference between %r
(wall-clock time) and %R (CPU time) can also be used to detect
unreliable measurements. See
https://spot.lrde.epita.fr/oaut.html#timing
Library:
* from_ltlf() is a new function implementing the --from-ltlf
transformation described above.
* is_unambiguous() was rewritten in a more efficient way.
* scc_info learned to determine the acceptance of simple SCCs made
of a single self-loop without resorting to remove_fin() for complex
acceptance conditions.
* remove_fin() has been improved to better deal with automata with
"unclean" acceptance, i.e., acceptance sets that are declared but
not used. In particular, this helps scc_info to be more efficient
at deciding the acceptance of SCCs in presence of Fin acceptance.
* Simulation-based reductions now implement just bisimulation-based
reductions on deterministic automata, to save time. As an example,
this halves the run time of
genltl --rv-counter=10 | ltl2tgba
* scc_filter() learned to preserve state names and highlighted states.
* The BuDDy library has been slightly optimized: the initial setup
of the unicity table can now be vectorized by GCC, and all calls
to setjmp are now avoided when variable reordering is disabled
(the default).
* The twa class has three new methods:
aut->intersects(other)
aut->intersecting_run(other)
aut->intersecting_word(other)
currently these are just convenient wrappers around
!otf_product(aut, other)->is_empty()
otf_product(aut, other)->accepting_run()->project(aut)
otf_product(aut, other)->accepting_word()
with any Fin-acceptance removal performed before the product.
However the plan is to implement these more efficiently in the
future.
Bugs:
* ltl2tgba was always using the highest settings for the LTL
simplifier, ignoring the --low and --medium options. Now
genltl --go-theta=12 | ltl2tgba --low --any
is instantaneous as it should be.
* The int-vector compression code could encode 6 and 22 in the
same way, causing inevitable issues in our LTSmin interface.
(This affects tests/ltsmin/modelcheck with option -z, not -Z.)
* str_sere() and str_utf8_sere() were not returning the same
string that print_sere() and print_utf8_sere() would print.
* Running the LTL parser in debug mode would crash.
* tgba_determinize() could produce incorrect deterministic automata
when run with use_simulation=true (the default) on non-simplified
automata.
* When the automaton_stream_parser reads an automaton from an
already opened file descriptor, it will not close the file
anymore. Before that the spot.automata() python function used to
close a file descriptor twice when reading from a pipe, and this
led to crashes of the 0MQ library used by Jupyter, killing the
Python kernel.
* remove_fin() could produce incorrect result on incomplete
automata tagged as weak and deterministic.
* calling set_acceptance() several times on an automaton could
result in unexpected behaviors, because set_acceptance(0,...)
used to set the state-based acceptance flag automatically.
* Some buffering issue caused syntax errors to be displayed out
of place by the on-line translator.
--
Alexandre Duret-Lutz