Spot-announce
  Threads by month 
                
            - ----- 2025 -----
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2024 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2023 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2022 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2021 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2020 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2019 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2018 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2017 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2016 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2015 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2014 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2013 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2012 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2011 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2010 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 
January 2018
- 1 participants
 - 1 discussions
 
                    
                        We are happy to announce the release of Spot 2.5.
Spot is a library of algorithms for manipulating LTL formulas and
omega-automata (objects as commonly used in model checking).
A detailed list of new features in this new release is given at the end
of this email.  The main features of this release are algorithms for
working with parity acceptance, new functions to convert to co-Büchi
when possible, a new tool for LTL synthesis, and some speedup
of our determinization algorithm.
You can find the new release here:
  http://www.lrde.epita.fr/dload/spot/spot-2.5.tar.gz
See https://spot.lrde.epita.fr/ for documentation and installation
instructions.
(Note that due to some technical issues on our side, it might
be a few days before the packages for Debian *unstable*
are updated.)
This release contains code contributed by Alexandre Gbaguidi Aïsse,
Thibaud Michaud, Laurent Xu, Maximilien Colange, Etienne Renault,
and myself.
As always, please direct any feedback to <spot(a)lrde.epita.fr>.
New in spot 2.5 (2018-01-20)
  Build:
  - We no longer distribute the doxygen-generated documentation in
    the tarball of Spot to save space.  This documentation is still
    available online at https://spot.lrde.epita.fr/doxygen/.  If you
    want to build a local copy you can configure Spot with
    --enable-doxygen, or simply run "cd doc && make doc".
  - All the images that illustrate the documentation have been
    converted to SVG, to save space and improve quality.
  Tools:
  - ltlsynt is a new tool for synthesizing a controller from LTL/PSL
    specifications.
  - ltlcross learned --reference=COMMANDFMT to specify a translator
    that should be trusted.  Doing so makes it possible to reduce the
    number of tests to be performed, as all other translators will be
    compared to the reference's output when available.  Multiple
    reference can be given; in that case other tools are compared
    against the smallest reference automaton.
  - autcross, ltlcross, and ltldo learned --fail-on-timeout.
  - ltl2tgba, autfilt, and dstar2tgba have some new '--parity' and
    '--colored-parity' options to force parity acceptance on the
    output.  Different styles can be requested using for instance
    --parity='min odd' or --parity='max even'.
  - ltl2tgba, autfilt, and dstar2tgba have some new '--cobuchi' option
    to force co-Büchi acceptance on the output.  Beware: if the input
    language is not co-Büchi realizable the output automaton will
    recognize a superset of the input.  Currently, the output is
    always state-based.
  - genltl learned to generate six new families of formulas, taken from
    the SYNTCOMP competition on reactive synthesis, and from from
    Müller & Sickert's GandALF'17 paper:
    --gf-equiv=RANGE       (GFa1 & GFa2 & ... & GFan) <-> GFz
    --gf-implies=RANGE     (GFa1 & GFa2 & ... & GFan) -> GFz
    --ms-example=RANGE     GF(a1&X(a2&X(a3&...)))&F(b1&F(b2&F(b3&...)))
    --ms-phi-h=RANGE       FG(a|b)|FG(!a|Xb)|FG(a|XXb)|FG(!a|XXXb)|...
    --ms-phi-r=RANGE       (FGa{n}&GFb{n})|((FGa{n-1}|GFb{n-1})&(...))
    --ms-phi-s=RANGE       (FGa{n}|GFb{n})&((FGa{n-1}&GFb{n-1})|(...))
  - autfilt learned --streett-like to convert automata with DNF
    acceptance into automata with Streett-like acceptance.
  - autfilt learned --acceptance-is=ACC to filter automata by
    acceptance condition.  ACC can be the name of some acceptance
    class (e.g. Büchi, Fin-less, Streett-like) or a precise acceptance
    formula in the HOA syntax.
  - ltldo learned to limit the number of automata it outputs using -n.
  - ltlfilt learned to measure wall-time using --format=%r, and
    cpu-time with --format=%R.
  - The --format=%g option of tools that output automata used to
    print the acceptance condition as a *formula* in the HOA format.
    This %g may now take optional arguments to print the acceptance
    *name* in different formats.  For instance
       ... | autfilt -o '%[s]g.hoa'
    will separate a stream of automata into different files named
    by their acceptance name (Buchi, co-Buchi, Streett, etc.) or
    "other" if no name is known for the acceptance condition.
  - Tools that produce formulas now support --format=%[OP]n to
    display the nesting depth of operator OP.
  - The new -x tls-impl=N option allows to fine-tune the
    implication-based simplification rules of ltl2tgba.  See the
    spot-x(7) man page for details.
  - All tools learned to check the SPOT_OOM_ABORT environment
    variable.  This is only useful for debuging out-of-memory
    conditions. See the spot-x(7) man page for details.
  New functions in the library:
  - spot::iar() and spot::iar_maybe() use index appearance records (IAR)
    to translate Rabin-like automata into equivalent parity automaton.
    This translation preserves determinism and is especially useful when
    the input automaton is deterministic.
  - spot::print_aiger() encodes an automaton as an AIGER circuit, as
    required by the SYNTCOMP competition.  It relies on a new named
    property "synthesis outputs" that describes which atomic
    propositions are to be encoded as outputs of the circuits.
  - spot::dnf_to_streett() converts any automaton with a DNF
    acceptance condition into a Streett-like automaton.
  - spot::nsa_to_nca(), spot::dfn_to_nca(), spot::dfn_to_dca(), and
    spot::nsa_to_dca(), convert automata with DNF or Streett-like
    acceptance into deterministic or non-deterministic co-Büchi
    automata.  spot::to_dca() and spot::to_nca() dispatch between
    these four functions.  The language of produced automaton includes
    the original language, but may be larger if the original automaton
    is not co-Büchi realizable.  Based on Boker & Kupferman FOSSACS'11
    paper.  Currently only supports state-based output.
  - spot::scc_info::states_on_acc_cycle_of() returns all states
    visited by any accepting cycle of the specified SCC.  It only
    works on automata with Streett-like acceptance.
  - spot::is_recurrence(), spot::is_persistence(), and
    spot::is_obligation() test if a formula is a recurrence,
    persistance or obligation.  The SPOT_PR_CHECK and SPOT_O_CHECK
    environment variables can be used to select between multiple
    implementations of these functions (see the spot-x(7) man page).
  - spot::is_colored() checks if an automaton is colored
    (i.e., every transition belongs to exactly one acceptance set).
  - spot::change_parity() converts between different parity acceptance
    conditions.
  - spot::colorize_parity() transforms an automaton with parity
    acceptance into a colored automaton (which is often what people
    working with parity automata expect).
  - spot::cleanup_parity_acceptance() simplifies a parity acceptance
    condition.
  - spot::parity_product() and spot::parity_product_or() are
    specialized (but expensive) products that preserve parity
    acceptance.
  - spot::remove_univ_otf() removes universal transitions on the fly
    from an alternating Büchi automaton using Miyano and Hayashi's
    breakpoint algorithm.
  - spot::stutter_invariant_states(),
    spot::stutter_invariant_letters(),
    spot::highlight_stutter_invariant_states(), ...  These functions
    help study a stutter-sensitive automaton and detect the subset of
    states that are stutter-invariant.  See
    https://spot.lrde.epita.fr/ipynb/stutter-inv.html for examples.
  - spot::acc_cond::name(fmt) is a new method that names well-known
    acceptance conditions.  The fmt parameter specifies the format to
    use for that name (e.g. to the style used in HOA, or that used by
    print_dot()).
  - spot::formula::is_leaf() method can be used to detect formulas
    without children (atomic propositions, or constants).
  - spot::nesting_depth() computes the nesting depth of any LTL
    operator.
  - spot::check_determinism() sets both prop_semi_deterministic()
    and prop_universal() appropriately.
  Improvements to existing functions in the library:
  - spot::tgba_determinize() has been heavily rewritten and
    optimized. The algorithm has (almost) not changed, but it is
    much faster now. It also features an optimization for
    stutter-invariant automata that may produce slightly smaller
    automata.
  - spot::scc_info now takes an optional argument to disable some
    features that are expensive and not always necessary.  By
    default scc_info tracks the list of all states that belong to an
    SCC (you may now ask it not to), tracks the successor SCCs of
    each SCC (that can but turned off), and explores all SCCs of the
    automaton (you may request to stop on the first SCC that is
    found accepting).
  - In some cases, spot::degeneralize() would output Büchi automata
    with more SCCs than its input.  This was hard to notice, because
    very often simulation-based simplifications remove those extra
    SCCs.  This situation is now detected by spot::degeneralized()
    and fixed before returning the automaton.  A new optional
    argument can be passed to disable this behavior (or use -x
    degen-remscc=0 from the command-line).
  - The functions for detecting stutter-invariant formulas or
    automata have been overhauled.  Their interface changed
    slightly.  They are now fully documented.
  - spot::postprocessor::set_type() can now request different forms
    of parity acceptance as output.  However currently the
    conversions are not very smart: if the input does not already
    have parity acceptance, it will simply be degeneralized or
    determinized.
  - spot::postprocessor::set_type() can now request co-Büchi
    acceptance as output.  This calls the aforementioned to_nca() or
    to_dca() functions.
  - spot::remove_fin() will now call simplify_acceptance(),
    introduced in 2.4, before attempting its different Fin-removal
    strategies.
  - spot::simplify_acceptance() was already merging identical
    acceptance sets, and detecting complementary sets i and j to
    perform the following simplifications
      Fin(i) & Inf(j) = Fin(i)
      Fin(i) | Inf(j) = Inf(i)
    It now additionally applies the following rules (again assuming i
    and j are complementary):
      Fin(i) & Fin(j) = f          Inf(i) | Inf(j) = t
      Fin(i) & Inf(i) = f          Fin(i) | Inf(i) = t
  - spot::formula::map(fun) and spot::formula::traverse(fun) will
    accept additionnal arguments and pass them to fun().  See
    https://spot.lrde.epita.fr/tut03.html for some examples.
  Python-specific changes:
  - The "product-states" property of automata is now accessible via
    spot.twa.get_product_states() and spot.twa.set_product_states().
  - twa_word instances can be displayed as SVG pictures, with one
    signal per atomic proposition.  For some examples, see the use of
    the show() method in https://spot.lrde.epita.fr/ipynb/word.html
  - The test suite is now using v4 of the Jupyter Notebook format.
  - The function rabin_is_buchi_realizable() as its name suggests checks
    if a rabin aut. is Büchi realizable. It is heavily based on
    tra_to_tba() algorithm.
  Deprecation notices:
  (These functions still work but compilers emit warnings.)
  - spot::scc_info::used_acc(), spot::scc_info::used_acc_of() and
    spot::scc_info::acc() are deprecated.  They have been renamed
    spot::scc_info::marks(), spot::scc_info::marks_of() and
    spot::scc_info::acc_sets_of() respectively for clarity.
  Backward incompatible changes:
  - The spot::closure(), spot::sl2(), spot::is_stutter_invariant()
    functions no longer take && arguments.  The former two have
    spot::closure_inplace() and spot::sl2_inplace() variants.  These
    functions also do not take a list of atomic propositions as an
    argument anymore.
  - The spot::bmrand() and spot::prand() functions have been removed.
    They were not used at all in Spot, and it is not Spot's objective
    to provide such random functions.
  - The spot::bdd_dict::register_all_propositions_of() function has
    been removed.  This low-level function was not used anywhere in
    Spot anymore, since it's better to use spot::twa::copy_ap_of().
  Bugs fixed:
  - spot::simplify_acceptance() could produce incorrect output if the
    first edge of the automaton was the only one with no acceptance
    set.  In spot 2.4.x this function was only used by autfilt
    --simplify-acceptance; in 2.5 it is now used in remove_fin().
  - spot::streett_to_generalized_buchi() could generate incorrect
    automata with empty language if some Fin set did not intersect all
    accepting SCCs (in other words, the fix from 2.4.1 was incorrect).
  - ltlcross could crash when calling remove_fin() on an automaton
    with 32 acceptance sets that would need an additional set.
  - the down_cast() helper function used in severaly headers of Spot
    was not in the spot namespace, and caused issues with some
    configurations of GCC.
-- 
Alexandre Duret-Lutz
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0