
This is to announce the release of Spot 1.1.1. The main motivation for this release is to fix a bug introduced in version 1.1 in the post-processing of (degeneralized) Büchi automata. Although the NEWS excerpt at the end of this email shows several new features, most of them are related to the discovery and fix of this bug: 1) With this release, ltl2tgba --ba --lbtt has been changed to output automata using the state-based acceptance flavor of the LBTT format. This makes more sense when you work with Büchi automata. 2) This lead to the discovery that previously, when --lbtt always output automata with transition-based acceptance, there were some rare formulas where ltl2tgba --ba --lbtt could output automata that where not Büchi automata (although they had the correct language), and worse: ltl2tgba --spin could output an incorrect neverclaim. 3) fixing this required to reimplement two functions we started using in 1.0 but that messed the structure of Büchi automata: namely reverse simulation and SCC-based simplification of acceptance condition. Two small and easy options have also been added to ltlcross. You can find the new release here: http://spot.lip6.fr/dl/spot-1.1.1.tar.gz A summary of the changes follows. Please report any issue to <spot@lrde.epita.fr>. New in spot 1.1.1 (2013-05-13): * New features: - lbtt_reachable(), the function that outputs a TGBA in LBTT's format, has a new option to indicate that the TGBA being printed is in fact a Büchi automaton. In this case it outputs an LBTT automaton with state-based acceptance. The output of the guards has also been changed in two ways: 1. atomic propositions that do not match p[0-9]+ are always double-quoted. This avoids issues where t or f were used as atomic propositions in the formula, output as-is in the automaton, and read back as true or false. Other names that correspond to LBT operators would cause problem as well. 2. formulas that label transitions are now output as irredundant-sums-of-products. - 'ltl2tgba --ba --lbtt' will now output automata with state-based acceptance. You can use 'ltl2tgba --ba --lbtt=t' to force the output of transition-based acceptance like in the previous versions. Some illustrations of this point and the previous one can be found in the man page for ltl2tgba(1). - There is a new function scc_filter_states() that removes all useless states from a TGBA. It is actually an abbridged version of scc_filter() that does not alter the acceptance conditions of the automaton. scc_filter_state() should be used when post-processing TGBAs that actually represent BAs. - simulation_sba(), cosimulation_sba(), and iterated_simulations_sba() are new functions that apply to TGBAs that actually represent BAs. They preserve the imporant property that if a state of the BA is is accepting, the outgoing transitions of that state are all accepting in the TGBA that represent the BA. This is something that was not preserved by functions cosimultion() and iterated_simulations() as mentionned in the bug fixes below. - ltlcross has a new option --seed, that makes it possible to change the seed used by the random graph generator. - ltlcross has a new option --products=N to check the result of each translation against N different state spaces, and everage the statistics of these N products. N default to 1; larger values increase the chances to detect inconsistencies in the translations, and also make the average size of the product built against the translated automata a more pertinent statistic. - bdd_dict::unregister_all_typed_variables() is a new function, making it easy to unregister all BDD variables of a given type owned by some object. * Bug fixes: - genltl --gh-r generated the wrong formulas due to a typo. - ltlfilt --eventual and --universal were not handled properly. - ltlfilt --stutter-invariant would trigger an assert on PSL formulas. - ltl2tgba, ltl2tgta, ltlcross, and ltlfilt, would all choke on empty lines in a file of formulas. They now ignore empty lines. - The iterated simulation applied on degeneralized TGBA was bogus for two reasons: one was that cosimulation was applied using the generic cosimulation for TGBA, and the second is that SCC-filtering, performed between iterations, was also a TGBA-based algorithm. Both of these algorithms could lose the property that if a TGBA represents a BA, all the outgoing transitions of a state should be accepting. As a consequence, some formulas where translated to incorrect Büchi automata. -- Alexandre Duret-Lutz
participants (1)
-
Alexandre Duret-Lutz