* NEWS: Mention this. * COPYING: Replace by GPL v3. * src/sanity/style.test: Check files with the wrong license, in case we forgot to update it during a merge. * Makefile.am, bench/Makefile.am, bench/emptchk/Makefile.am, bench/emptchk/defs.in, bench/emptchk/ltl-human.sh, bench/emptchk/ltl-random.sh, bench/emptchk/pml-clserv.sh, bench/emptchk/pml-eeaean.sh, bench/emptchk/pml2tgba.pl, bench/ltl2tgba/big, bench/ltl2tgba/defs.in, bench/ltl2tgba/known, bench/ltl2tgba/lbtt2csv.pl, bench/ltl2tgba/ltl2baw.in, bench/ltl2tgba/parseout.pl, bench/ltl2tgba/small, bench/ltlclasses/Makefile.am, bench/ltlclasses/defs.in, bench/ltlclasses/run, bench/ltlcounter/Makefile.am, bench/ltlcounter/defs.in, bench/ltlcounter/run, bench/scc-stats/Makefile.am, bench/scc-stats/stats.cc, bench/split-product/Makefile.am, bench/split-product/cutscc.cc, bench/split-product/pml2tgba.pl, bench/wdba/Makefile.am, bench/wdba/defs.in, bench/wdba/run, configure.ac, doc/Makefile.am, doc/dot.in, doc/tl/Makefile.am, iface/Makefile.am, iface/dve2/Makefile.am, iface/dve2/defs.in, iface/dve2/dve2.cc, iface/dve2/dve2.hh, iface/dve2/dve2check.cc, iface/dve2/dve2check.test, iface/dve2/finite.test, iface/dve2/kripke.test, iface/gspn/Makefile.am, iface/gspn/common.cc, iface/gspn/common.hh, iface/gspn/dcswave.test, iface/gspn/dcswaveeltl.test, iface/gspn/dcswavefm.test, iface/gspn/dcswaveltl.test, iface/gspn/dottygspn.cc, iface/gspn/dottyssp.cc, iface/gspn/gspn.cc, iface/gspn/gspn.hh, iface/gspn/ltlgspn.cc, iface/gspn/simple.test, iface/gspn/ssp.cc, iface/gspn/ssp.hh, iface/gspn/udcsefm.test, iface/gspn/udcseltl.test, iface/gspn/udcsfm.test, iface/gspn/udcsltl.test, src/Makefile.am, src/bin/Makefile.am, src/bin/common_cout.cc, src/bin/common_cout.hh, src/bin/common_finput.cc, src/bin/common_finput.hh, src/bin/common_output.cc, src/bin/common_output.hh, src/bin/common_post.cc, src/bin/common_post.hh, src/bin/common_r.cc, src/bin/common_r.hh, src/bin/common_range.cc, src/bin/common_range.hh, src/bin/common_setup.cc, src/bin/common_setup.hh, src/bin/common_sys.hh, src/bin/genltl.cc, src/bin/ltl2tgba.cc, src/bin/ltl2tgta.cc, src/bin/ltlfilt.cc, src/bin/man/Makefile.am, src/bin/randltl.cc, src/eltlparse/Makefile.am, src/eltlparse/eltlparse.yy, src/eltlparse/eltlscan.ll, src/eltlparse/fmterror.cc, src/eltlparse/parsedecl.hh, src/eltlparse/public.hh, src/eltltest/Makefile.am, src/eltltest/acc.cc, src/eltltest/acc.test, src/eltltest/defs.in, src/eltltest/nfa.cc, src/eltltest/nfa.test, src/evtgba/Makefile.am, src/evtgba/evtgba.cc, src/evtgba/evtgba.hh, src/evtgba/evtgbaiter.hh, src/evtgba/explicit.cc, src/evtgba/explicit.hh, src/evtgba/product.cc, src/evtgba/product.hh, src/evtgba/symbol.cc, src/evtgba/symbol.hh, src/evtgbaalgos/Makefile.am, src/evtgbaalgos/dotty.cc, src/evtgbaalgos/dotty.hh, src/evtgbaalgos/reachiter.cc, src/evtgbaalgos/reachiter.hh, src/evtgbaalgos/save.cc, src/evtgbaalgos/save.hh, src/evtgbaalgos/tgba2evtgba.cc, src/evtgbaalgos/tgba2evtgba.hh, src/evtgbaparse/Makefile.am, src/evtgbaparse/evtgbaparse.yy, src/evtgbaparse/evtgbascan.ll, src/evtgbaparse/fmterror.cc, src/evtgbaparse/parsedecl.hh, src/evtgbaparse/public.hh, src/evtgbatest/Makefile.am, src/evtgbatest/defs.in, src/evtgbatest/explicit.cc, src/evtgbatest/explicit.test, src/evtgbatest/ltl2evtgba.cc, src/evtgbatest/ltl2evtgba.test, src/evtgbatest/product.cc, src/evtgbatest/product.test, src/evtgbatest/readsave.cc, src/evtgbatest/readsave.test, src/kripke/Makefile.am, src/kripke/fairkripke.cc, src/kripke/fairkripke.hh, src/kripke/kripke.cc, src/kripke/kripke.hh, src/kripke/kripkeexplicit.cc, src/kripke/kripkeexplicit.hh, src/kripke/kripkeprint.cc, src/kripke/kripkeprint.hh, src/kripkeparse/Makefile.am, src/kripkeparse/fmterror.cc, src/kripkeparse/kripkeparse.yy, src/kripkeparse/kripkescan.ll, src/kripkeparse/parsedecl.hh, src/kripkeparse/public.hh, src/kripkeparse/scankripke.ll, src/kripketest/Makefile.am, src/kripketest/bad_parsing.test, src/kripketest/defs.in, src/kripketest/kripke.test, src/kripketest/parse_print_test.cc, src/ltlast/Makefile.am, src/ltlast/allnodes.hh, src/ltlast/atomic_prop.cc, src/ltlast/atomic_prop.hh, src/ltlast/automatop.cc, src/ltlast/automatop.hh, src/ltlast/binop.cc, src/ltlast/binop.hh, src/ltlast/bunop.cc, src/ltlast/bunop.hh, src/ltlast/constant.cc, src/ltlast/constant.hh, src/ltlast/formula.cc, src/ltlast/formula.hh, src/ltlast/formula_tree.cc, src/ltlast/formula_tree.hh, src/ltlast/multop.cc, src/ltlast/multop.hh, src/ltlast/nfa.cc, src/ltlast/nfa.hh, src/ltlast/predecl.hh, src/ltlast/refformula.cc, src/ltlast/refformula.hh, src/ltlast/unop.cc, src/ltlast/unop.hh, src/ltlast/visitor.hh, src/ltlenv/Makefile.am, src/ltlenv/declenv.cc, src/ltlenv/declenv.hh, src/ltlenv/defaultenv.cc, src/ltlenv/defaultenv.hh, src/ltlenv/environment.hh, src/ltlparse/Makefile.am, src/ltlparse/fmterror.cc, src/ltlparse/ltlfile.cc, src/ltlparse/ltlfile.hh, src/ltlparse/ltlparse.yy, src/ltlparse/ltlscan.ll, src/ltlparse/parsedecl.hh, src/ltlparse/public.hh, src/ltltest/Makefile.am, src/ltltest/consterm.cc, src/ltltest/consterm.test, src/ltltest/defs.in, src/ltltest/equals.cc, src/ltltest/equals.test, src/ltltest/kind.cc, src/ltltest/kind.test, src/ltltest/length.cc, src/ltltest/length.test, src/ltltest/lunabbrev.test, src/ltltest/nenoform.test, src/ltltest/parse.test, src/ltltest/parseerr.test, src/ltltest/readltl.cc, src/ltltest/reduc.cc, src/ltltest/reduc.test, src/ltltest/reduccmp.test, src/ltltest/reducpsl.test, src/ltltest/syntimpl.cc, src/ltltest/syntimpl.test, src/ltltest/tostring.cc, src/ltltest/tostring.test, src/ltltest/tunabbrev.test, src/ltltest/tunenoform.test, src/ltltest/utf8.test, src/ltltest/uwrm.test, src/ltlvisit/Makefile.am, src/ltlvisit/apcollect.cc, src/ltlvisit/apcollect.hh, src/ltlvisit/clone.cc, src/ltlvisit/clone.hh, src/ltlvisit/contain.cc, src/ltlvisit/contain.hh, src/ltlvisit/destroy.cc, src/ltlvisit/destroy.hh, src/ltlvisit/dotty.cc, src/ltlvisit/dotty.hh, src/ltlvisit/dump.cc, src/ltlvisit/dump.hh, src/ltlvisit/lbt.cc, src/ltlvisit/lbt.hh, src/ltlvisit/length.cc, src/ltlvisit/length.hh, src/ltlvisit/lunabbrev.cc, src/ltlvisit/lunabbrev.hh, src/ltlvisit/mark.cc, src/ltlvisit/mark.hh, src/ltlvisit/nenoform.cc, src/ltlvisit/nenoform.hh, src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh, src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh, src/ltlvisit/reduce.cc, src/ltlvisit/reduce.hh, src/ltlvisit/relabel.cc, src/ltlvisit/relabel.hh, src/ltlvisit/simpfg.cc, src/ltlvisit/simpfg.hh, src/ltlvisit/simplify.cc, src/ltlvisit/simplify.hh, src/ltlvisit/snf.cc, src/ltlvisit/snf.hh, src/ltlvisit/tostring.cc, src/ltlvisit/tostring.hh, src/ltlvisit/tunabbrev.cc, src/ltlvisit/tunabbrev.hh, src/ltlvisit/wmunabbrev.cc, src/ltlvisit/wmunabbrev.hh, src/misc/Makefile.am, src/misc/acccompl.cc, src/misc/acccompl.hh, src/misc/accconv.cc, src/misc/accconv.hh, src/misc/bareword.cc, src/misc/bareword.hh, src/misc/bddalloc.cc, src/misc/bddalloc.hh, src/misc/bddlt.hh, src/misc/bddop.cc, src/misc/bddop.hh, src/misc/casts.hh, src/misc/escape.cc, src/misc/escape.hh, src/misc/fixpool.hh, src/misc/freelist.cc, src/misc/freelist.hh, src/misc/hash.hh, src/misc/hashfunc.hh, src/misc/intvcmp2.cc, src/misc/intvcmp2.hh, src/misc/intvcomp.cc, src/misc/intvcomp.hh, src/misc/ltstr.hh, src/misc/memusage.cc, src/misc/memusage.hh, src/misc/minato.cc, src/misc/minato.hh, src/misc/modgray.cc, src/misc/modgray.hh, src/misc/mspool.hh, src/misc/optionmap.cc, src/misc/optionmap.hh, src/misc/random.cc, src/misc/random.hh, src/misc/timer.cc, src/misc/timer.hh, src/misc/unique_ptr.hh, src/misc/version.cc, src/misc/version.hh, src/neverparse/Makefile.am, src/neverparse/fmterror.cc, src/neverparse/neverclaimparse.yy, src/neverparse/neverclaimscan.ll, src/neverparse/parsedecl.hh, src/neverparse/public.hh, src/saba/Makefile.am, src/saba/explicitstateconjunction.cc, src/saba/explicitstateconjunction.hh, src/saba/saba.cc, src/saba/saba.hh, src/saba/sabacomplementtgba.cc, src/saba/sabacomplementtgba.hh, src/saba/sabastate.hh, src/saba/sabasucciter.hh, src/sabaalgos/Makefile.am, src/sabaalgos/sabadotty.cc, src/sabaalgos/sabadotty.hh, src/sabaalgos/sabareachiter.cc, src/sabaalgos/sabareachiter.hh, src/sabatest/Makefile.am, src/sabatest/defs.in, src/sabatest/sabacomplementtgba.cc, src/sanity/Makefile.am, src/sanity/readme.test, src/sanity/style.test, src/ta/Makefile.am, src/ta/ta.cc, src/ta/ta.hh, src/ta/taexplicit.cc, src/ta/taexplicit.hh, src/ta/taproduct.cc, src/ta/taproduct.hh, src/ta/tgta.cc, src/ta/tgta.hh, src/ta/tgtaexplicit.cc, src/ta/tgtaexplicit.hh, src/ta/tgtaproduct.cc, src/ta/tgtaproduct.hh, src/taalgos/Makefile.am, src/taalgos/dotty.cc, src/taalgos/dotty.hh, src/taalgos/emptinessta.cc, src/taalgos/emptinessta.hh, src/taalgos/minimize.cc, src/taalgos/minimize.hh, src/taalgos/reachiter.cc, src/taalgos/reachiter.hh, src/taalgos/statessetbuilder.cc, src/taalgos/statessetbuilder.hh, src/taalgos/stats.cc, src/taalgos/stats.hh, src/taalgos/tgba2ta.cc, src/taalgos/tgba2ta.hh, src/tgba/Makefile.am, src/tgba/bdddict.cc, src/tgba/bdddict.hh, src/tgba/bddprint.cc, src/tgba/bddprint.hh, src/tgba/formula2bdd.cc, src/tgba/formula2bdd.hh, src/tgba/futurecondcol.cc, src/tgba/futurecondcol.hh, src/tgba/public.hh, src/tgba/sba.hh, src/tgba/state.hh, src/tgba/statebdd.cc, src/tgba/statebdd.hh, src/tgba/succiter.hh, src/tgba/succiterconcrete.cc, src/tgba/succiterconcrete.hh, src/tgba/taatgba.cc, src/tgba/taatgba.hh, src/tgba/tgba.cc, src/tgba/tgba.hh, src/tgba/tgbabddconcrete.cc, src/tgba/tgbabddconcrete.hh, src/tgba/tgbabddconcretefactory.cc, src/tgba/tgbabddconcretefactory.hh, src/tgba/tgbabddconcreteproduct.cc, src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbabddcoredata.cc, src/tgba/tgbabddcoredata.hh, src/tgba/tgbabddfactory.hh, src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh, src/tgba/tgbakvcomplement.cc, src/tgba/tgbakvcomplement.hh, src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh, src/tgba/tgbasafracomplement.cc, src/tgba/tgbasafracomplement.hh, src/tgba/tgbascc.cc, src/tgba/tgbascc.hh, src/tgba/tgbasgba.cc, src/tgba/tgbasgba.hh, src/tgba/tgbatba.cc, src/tgba/tgbatba.hh, src/tgba/tgbaunion.cc, src/tgba/tgbaunion.hh, src/tgba/wdbacomp.cc, src/tgba/wdbacomp.hh, src/tgbaalgos/Makefile.am, src/tgbaalgos/bfssteps.cc, src/tgbaalgos/bfssteps.hh, src/tgbaalgos/cutscc.cc, src/tgbaalgos/cutscc.hh, src/tgbaalgos/cycles.cc, src/tgbaalgos/cycles.hh, src/tgbaalgos/degen.cc, src/tgbaalgos/degen.hh, src/tgbaalgos/dotty.cc, src/tgbaalgos/dotty.hh, src/tgbaalgos/dottydec.cc, src/tgbaalgos/dottydec.hh, src/tgbaalgos/dupexp.cc, src/tgbaalgos/dupexp.hh, src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/eltl2tgba_lacim.hh, src/tgbaalgos/emptiness.cc, src/tgbaalgos/emptiness.hh, src/tgbaalgos/emptiness_stats.hh, src/tgbaalgos/gtec/Makefile.am, src/tgbaalgos/gtec/ce.cc, src/tgbaalgos/gtec/ce.hh, src/tgbaalgos/gtec/explscc.cc, src/tgbaalgos/gtec/explscc.hh, src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/gtec/gtec.hh, src/tgbaalgos/gtec/nsheap.cc, src/tgbaalgos/gtec/nsheap.hh, src/tgbaalgos/gtec/sccstack.cc, src/tgbaalgos/gtec/sccstack.hh, src/tgbaalgos/gtec/status.cc, src/tgbaalgos/gtec/status.hh, src/tgbaalgos/gv04.cc, src/tgbaalgos/gv04.hh, src/tgbaalgos/isdet.cc, src/tgbaalgos/isdet.hh, src/tgbaalgos/isweakscc.cc, src/tgbaalgos/isweakscc.hh, src/tgbaalgos/lbtt.cc, src/tgbaalgos/lbtt.hh, src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2taa.hh, src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_fm.hh, src/tgbaalgos/ltl2tgba_lacim.cc, src/tgbaalgos/ltl2tgba_lacim.hh, src/tgbaalgos/magic.cc, src/tgbaalgos/magic.hh, src/tgbaalgos/minimize.cc, src/tgbaalgos/minimize.hh, src/tgbaalgos/ndfs_result.hxx, src/tgbaalgos/neverclaim.cc, src/tgbaalgos/neverclaim.hh, src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh, src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh, src/tgbaalgos/projrun.cc, src/tgbaalgos/projrun.hh, src/tgbaalgos/randomgraph.cc, src/tgbaalgos/randomgraph.hh, src/tgbaalgos/reachiter.cc, src/tgbaalgos/reachiter.hh, src/tgbaalgos/reducerun.cc, src/tgbaalgos/reducerun.hh, src/tgbaalgos/reductgba_sim.cc, src/tgbaalgos/reductgba_sim.hh, src/tgbaalgos/replayrun.cc, src/tgbaalgos/replayrun.hh, src/tgbaalgos/rundotdec.cc, src/tgbaalgos/rundotdec.hh, src/tgbaalgos/safety.cc, src/tgbaalgos/safety.hh, src/tgbaalgos/save.cc, src/tgbaalgos/save.hh, src/tgbaalgos/scc.cc, src/tgbaalgos/scc.hh, src/tgbaalgos/sccfilter.cc, src/tgbaalgos/sccfilter.hh, src/tgbaalgos/se05.cc, src/tgbaalgos/se05.hh, src/tgbaalgos/simulation.cc, src/tgbaalgos/simulation.hh, src/tgbaalgos/stats.cc, src/tgbaalgos/stats.hh, src/tgbaalgos/tau03.cc, src/tgbaalgos/tau03.hh, src/tgbaalgos/tau03opt.cc, src/tgbaalgos/tau03opt.hh, src/tgbaalgos/weight.cc, src/tgbaalgos/weight.hh, src/tgbaparse/Makefile.am, src/tgbaparse/fmterror.cc, src/tgbaparse/parsedecl.hh, src/tgbaparse/public.hh, src/tgbaparse/tgbaparse.yy, src/tgbaparse/tgbascan.ll, src/tgbatest/Makefile.am, src/tgbatest/babiak.test, src/tgbatest/bddprod.test, src/tgbatest/complementation.cc, src/tgbatest/complementation.test, src/tgbatest/cycles.test, src/tgbatest/defs.in, src/tgbatest/degendet.test, src/tgbatest/degenid.test, src/tgbatest/dfs.test, src/tgbatest/dupexp.test, src/tgbatest/eltl2tgba.test, src/tgbatest/emptchk.test, src/tgbatest/emptchke.test, src/tgbatest/emptchkr.test, src/tgbatest/explicit.cc, src/tgbatest/explicit.test, src/tgbatest/explicit2.cc, src/tgbatest/explicit2.test, src/tgbatest/explpro2.test, src/tgbatest/explpro3.test, src/tgbatest/explpro4.test, src/tgbatest/explprod.cc, src/tgbatest/explprod.test, src/tgbatest/intvcmp2.cc, src/tgbatest/intvcomp.cc, src/tgbatest/intvcomp.test, src/tgbatest/kv.test, src/tgbatest/ltl2neverclaim.test, src/tgbatest/ltl2ta.test, src/tgbatest/ltl2tgba.cc, src/tgbatest/ltl2tgba.test, src/tgbatest/ltlcounter.test, src/tgbatest/ltlprod.cc, src/tgbatest/ltlprod.test, src/tgbatest/mixprod.cc, src/tgbatest/mixprod.test, src/tgbatest/neverclaimread.test, src/tgbatest/nondet.test, src/tgbatest/obligation.test, src/tgbatest/powerset.cc, src/tgbatest/randpsl.test, src/tgbatest/randtgba.cc, src/tgbatest/randtgba.test, src/tgbatest/readsave.test, src/tgbatest/renault.test, src/tgbatest/scc.test, src/tgbatest/sccsimpl.test, src/tgbatest/spotlbtt.test, src/tgbatest/spotlbtt2.test, src/tgbatest/taatgba.cc, src/tgbatest/taatgba.test, src/tgbatest/tgbaread.cc, src/tgbatest/tgbaread.test, src/tgbatest/tripprod.cc, src/tgbatest/tripprod.test, src/tgbatest/wdba.test, src/tgbatest/wdba2.test, wrap/Makefile.am, wrap/python/Makefile.am, wrap/python/ajax/Makefile.am, wrap/python/ajax/spot.in, wrap/python/buddy.i, wrap/python/spot.i, wrap/python/tests/Makefile.am, wrap/python/tests/alarm.py, wrap/python/tests/bddnqueen.py, wrap/python/tests/implies.py, wrap/python/tests/interdep.py, wrap/python/tests/ltl2tgba.py, wrap/python/tests/ltl2tgba.test, wrap/python/tests/ltlparse.py, wrap/python/tests/ltlsimple.py, wrap/python/tests/minato.py, wrap/python/tests/modgray.py, wrap/python/tests/optionmap.py, wrap/python/tests/parsetgba.py, wrap/python/tests/run.in, wrap/python/tests/setxor.py: Update licence version, and replace the FSF address by a URL.
736 lines
35 KiB
Text
736 lines
35 KiB
Text
New in spot 0.9.2a:
|
|
|
|
* License change: Spot is now distributed using GPL v3+ instead
|
|
of GPL v2+. This is because we started using some third-party
|
|
files distributed under GPL v3+.
|
|
|
|
* Command-line tools
|
|
|
|
Useful command-line tools are now installed in addition to the
|
|
library. Some of these tools were originally written for our test
|
|
suite and had evolved organically into useful programs with crapy
|
|
interfaces: they have now been rewritten with better argument
|
|
parsing, saner defaults, and they come with man pages.
|
|
|
|
- genltl: generate LTL formulas from scallable patterns
|
|
This offers 20 patterns so far.
|
|
- randltl: generate random LTL/PSL formulas
|
|
- ltlfilt: filter lists of formulas according to several criteria
|
|
(e.g., match only safety formulas that are larger than
|
|
some given size). Besides being used as a "grep" tool
|
|
for formulas, this can also be used to convert
|
|
files of formulas between different syntaxes, apply
|
|
some simplifications, check whether to formulas are
|
|
equivalent, ...
|
|
- ltl2tgba translate LTL/PSL formulas into Büchi automata. A
|
|
fondamental change to the interface is that you may
|
|
now specify the goal of the translation: do you
|
|
you favor deterministic or smaller automata?
|
|
- ltl2tgta translate LTL/PSL formulas into Testing Automata.
|
|
|
|
These binaries are built in the src/bin/ directory. The former
|
|
test versions of genltl and randltl have been removed from the
|
|
source tree. The old version of ltl2tgba with its gazillion
|
|
options is still is src/tgbatest/ and used for testing.
|
|
|
|
* New features in the Spot library:
|
|
|
|
- Support for various flavors of Testing Automata.
|
|
|
|
The flavors are:
|
|
+ "classical" Testing Automata, as used for instance by
|
|
Geldenhuys and Hansen (Spin'06), using Büchi and
|
|
livelock acceptance conditions.
|
|
+ Generalized Testing Automata, extending the previous
|
|
with multiple Büchi acceptance sets.
|
|
+ Transition-based Generalized Testing Automata moving Büchi
|
|
acceptance to transitions, and getting rid of livelock
|
|
acceptance conditions by expliciting stuttering self-loops.
|
|
|
|
Supporting algorithms include anything required to run
|
|
the automata-theoretic approach using testing automata:
|
|
|
|
+ dedicated synchronized product
|
|
+ dedicated emptiness-check for TA and GTA, as these
|
|
may require two passes because of the two kinds of
|
|
acceptance, while a TGTA can be checked for emptiness
|
|
with the same one-pass algorithm as a TGBA.
|
|
+ conversion from a TGBA to any of the above kind, with
|
|
options to reduce these automata with bisimulation,
|
|
and to produce a BA/GBA that require a single pass
|
|
(at the expense of determinism).
|
|
+ output in dot format for display
|
|
|
|
A discussion of these automata, part of Ala Eddine BEN SALEM's
|
|
PhD work, should appear in a future edition of ToPNoC.
|
|
The web-based interface can build and display these testing
|
|
automata.
|
|
|
|
- TGBA can now be reduced by Reverse Simulation (in addition to
|
|
the Direct Simulation introduced in 0.9). A function called
|
|
iterated_simulations() will alternate direct and reverse
|
|
simulations in a loop as long as it diminishes the size of the
|
|
automaton.
|
|
|
|
- The enumerate_cycles class implements the Loizou-Thanisch algorithm
|
|
to enumerate the cycles of a SCC. As an example of use, the
|
|
is_weak_scc() function will tell whether an SCC is weak (all
|
|
its cycles are accepting, or none of them are).
|
|
|
|
- parse_lbt() will parse an LTL formula expressed in the prefix
|
|
syntax used (at least) by LBT, LBTT and Scheck.
|
|
to_lbt_string() can be used to print an LTL formula using this
|
|
syntax.
|
|
|
|
- minimize_obligation() has a new option to disable WDBA
|
|
minimization it cases it would produce a deterministic automaton
|
|
that is bigger than the original TGBA. This can help
|
|
chosing between less states or more determinism.
|
|
|
|
- new functions is_deterministic() and count_nondet_states()
|
|
(The count of nondeterministic states is now displayed on
|
|
automata generated with the web interface.)
|
|
|
|
- A new class, "postprocessor", makes it easier to apply
|
|
all availlable simplification algorithms on a TGBA.
|
|
|
|
* Minor changes:
|
|
|
|
- The '*' operator can (again) be used as an AND in LTL formulas.
|
|
This is for compatibility with formula written in Wring's
|
|
syntax. However inside SERE it is interpreted as the Kleen
|
|
star.
|
|
|
|
- The gspn-ssp benchmark has been removed.
|
|
|
|
|
|
New in spot 0.9.2 (2012-07-02):
|
|
|
|
* New features to the web interface.
|
|
- It can run ltl3ba (Babiak et al., TACAS'12) where available.
|
|
- "a loading logo" is displayed when result is not instantaneous.
|
|
* Speed improvements:
|
|
- The unicity hash table of BuDDy has been separated separated
|
|
node table for better cache-friendliness. The resulting speedup
|
|
is around 5% on BDD-intensive algorithms.
|
|
- A new BDD operation, called bdd_implies() has been added to
|
|
BuDDy to check whether one BDD implies another. This benefits
|
|
mostly the simulation and degeneralization algorithms of Spot.
|
|
- A new offline implementation of the degeneralization (which
|
|
had always been performed on-the-fly so far) available. This
|
|
especially helps the Safra complementation.
|
|
* Bug fixes:
|
|
- The CGI script running for ltl2tgba.html will correctly timeout
|
|
after 30s when Spot's translation takes more time.
|
|
- Applying WDBA-minimization on an automaton generated by the
|
|
Couvreur/LaCIM translator could lead to an incorrect automaton
|
|
due to a bug in the definition of product with symbolic
|
|
automata.
|
|
- The Makefile.am of BuDDy, LBTT, and Spot have been adjusted to
|
|
accomodate Automake 1.12 (while still working with 1.11).
|
|
- Better error recovery when parsing broken LTL formulae.
|
|
- Fix errors and warnings reported by clang 3.1 and the
|
|
upcoming g++ 4.8.
|
|
|
|
New in spot 0.9.1 (2012-05-23):
|
|
|
|
* The version of LBTT we distribute includes a patch from Tomáš
|
|
Babiak to count the number of non-deterministic states, and the
|
|
number of deterministic automata produced.
|
|
See lbtt/NEWS for the list of other differences with the original
|
|
version of LBTT 1.2.1.
|
|
* The Couvreur/FM translator has learned two new tricks. These only
|
|
help to speedup the translation by not issuing states or
|
|
acceptance conditions that would be latter suppresed by other
|
|
optimizations.
|
|
- The translation rules used to translate subformulae of the G
|
|
operator have been adjusted not to produce useless loops
|
|
already implied by G. This generalizes the "GF" trick
|
|
presented in Couvreur's original FM'99 paper.
|
|
- Promises generated for formula of the form P(a U (b U c))
|
|
are reduced into P(c), avoiding the introduction of many
|
|
promises that imply each other.
|
|
* The tgba_parse() function is now available via the Python
|
|
bindings.
|
|
* Bug fixes:
|
|
- The random SERE generator was using the wrong operators
|
|
for "and" and "or", mistaking And/Or with AndRat/OrRat.
|
|
- The translation of !{r} was incorrect when this subformula
|
|
was recurring (e.g. in G!{r}) and r had loops.
|
|
- Correctly recognize ltl2tgba's option -rL.
|
|
- Using LTL simplification rules based on syntactic implication,
|
|
or based on language containment checks, caused BDD variables
|
|
to be allocated in an "unnatural" order, resulting in a slower
|
|
translation and a less optimal degeneralization.
|
|
- When ltl2tgba reads a neverclaim, it now considers the resulting
|
|
TGBA as a Büchi automaton, and will display double circles in
|
|
the dotty output.
|
|
|
|
New in spot 0.9 (2012-05-09):
|
|
|
|
* New features:
|
|
- Operators from the linear fragment of PSL are supported. This
|
|
basically extends LTL with Sequential Extended Regulat
|
|
Expressions (SERE), and a couple of operators to bridge SERE and
|
|
LTL. See doc/tl/tl.pdf for the list of operators and their
|
|
semantics.
|
|
- Formula rewritings have been completely revamped, and augmented
|
|
with rules for PSL operators (and some new LTL rules as well).
|
|
See doc/tl/tl.pdf for the list of the rewritings implemented.
|
|
- Some of these rewritings that may produce larger formulas
|
|
(for instance to rewrite "{a;b;c}" into "a & X(b & Xc)")
|
|
may be explicitely disabled with a new option.
|
|
- The src/ltltest/randltl tool can now generate random SEREs
|
|
and random PSL formulae.
|
|
- Only one translator (ltl2tgba_fm) has been augmented to
|
|
translate the new SERE and PSL operators. The internal
|
|
translation from SERE to DFA is likely to be rewriten in a
|
|
future version.
|
|
- A new function, length_boolone(), computes the size of an
|
|
LTL/PSL formula while considering that any Boolean term has
|
|
length 1.
|
|
- The LTL/PSL parser recognizes some UTF-8 characters (like ◇ or
|
|
∧) as operators, and some output routines now have an UTF-8
|
|
output mode. Tools like randltl and ltl2tgba have gained an -8
|
|
option to enable such output. See doc/tl/tl.pdf for the list
|
|
of recognized codepoints.
|
|
- A new direct simulation reduction has been implemented. It
|
|
works directly on TGBAs. It is in src/tgbaalgos/simlation.hh,
|
|
and it can be tested via ltl2tgba's -RDS option.
|
|
- unabbreviate_wm() is a function that rewrites the W and M operators
|
|
of LTL formulae using R and U. This is called whenever we output
|
|
a formula in Spin syntax. By combining this with the aforementioned
|
|
PSL rewriting rules, many PSL formulae that use simple SERE can be
|
|
converted into LTL formulae that can be feed to tools that only
|
|
understand U and R. The web interface will let you do this.
|
|
- changes to the on-line translator:
|
|
+ SVG output is available
|
|
+ can display some properties of a formula
|
|
+ new options for direct simulation, larger rewritings, and
|
|
utf-8 output
|
|
- configure --without-included-lbtt will prevent LBTT from being
|
|
configured and built. This helps on systems (such as MinGW)
|
|
where LBTT cannot be built. The test-suite will skip any
|
|
LBTT-based test if LBTT is missing.
|
|
* Interface changes:
|
|
- Operators ->, <->, U, W, R, and M are now parsed as
|
|
right-associative to better match the PSL standard.
|
|
- The constructors for temporal formulae will perform some trivial
|
|
simplifications based on associativity, commutativity,
|
|
idempotence, and neutral elements. See doc/tl/tl.pdf for the
|
|
list of such simplifications.
|
|
- Formula instances now have many methods to inspect their
|
|
properties (membership to syntactic classes, absence of X
|
|
operator, etc...) in constant time.
|
|
- LTL/PSL formulae are now handled everywhere as 'const formula*'
|
|
and not just 'formula*'. This reflects the true nature of these
|
|
(immutable) formula objects, and cleanups a lot of code.
|
|
Unfortunately, it is a backward incompatible change: you may have
|
|
to add 'const' to a couple of lines in your code, and change
|
|
'ltl::const_vistitor' into 'ltl::visitor' if you have written a
|
|
custom visitor.
|
|
- The new entry point for LTL/PSL simplifications is the function
|
|
ltl_simplifier::simplify() declared in src/ltlvisit/simplify.hh.
|
|
The ltl_simplifier class implements a cache.
|
|
Functions such as reduce() or reduce_tau03() are deprecated.
|
|
- The old game-theory-based implementations for direct and delayed
|
|
simulation reductions have been removed. The old direct
|
|
simulation would only work on degeneralized automata, and yet
|
|
produce results inferior to the new direct simulation introduced
|
|
in this release. The implementation of delayed simulation was
|
|
unreliable. The function reduc_tgba_sim() has been kept
|
|
for compatibility (it calls the new direct simulation whatever
|
|
the type of simulation requested) and marked as deprecated.
|
|
ltl2tgba's options -Rd, -RD are gone. Options -R1t, -R1s,
|
|
-R2s, and -R2t are deprecated and all made equivalent to -RDS.
|
|
- The tgba_explicit hierarchy has been reorganized in order to
|
|
make room for sba_explicit classes that share most of the code.
|
|
The main consequence is that the tgba_explicit type no longuer
|
|
exists. However the tgba_explicit_number,
|
|
tgba_explicit_formula, and tgba_explicit_string still do.
|
|
|
|
New in spot 0.8.3 (2012-03-09):
|
|
|
|
* Support for both Python 2.x and Python 3.x.
|
|
(Previous versions would only work with Python 2.x.)
|
|
* The online ltl2tgba.html now stores its state in the URL so that
|
|
history is preserved, and links to particular setups can be sent.
|
|
* Bug fixes:
|
|
- Fix a segfault in the compression code used by the -Z
|
|
option of dve2check.
|
|
- Fix a race condition in the CGI script.
|
|
- Fix a segfault in the CGI script when computing a Büchi run.
|
|
|
|
New in spot 0.8.2 (2012-01-19):
|
|
|
|
* configure now has a --disable-python option to disable
|
|
the compilation of Python bindings.
|
|
* Minor speedups in the Safra complementation.
|
|
* Better memory management for the on-the-fly degeneralization
|
|
algorithm. This mostly benefits to the Safra complementation.
|
|
* Bug fixes:
|
|
- spot::ltl::length() forgot to count the '&' and '|' operators
|
|
in an LTL formula.
|
|
- minimize_wdba() could fail to mark some transiant SCCs as accepting,
|
|
producing an automaton that was not fully minimized.
|
|
- minimize_dfa() could produce incorrect automata, but it is not
|
|
clear whether this could have had an inpact on WDBA minimization
|
|
(the worse case is that some TGBA would not have been minimized
|
|
when they could).
|
|
- Fix a Python syntax error in the CGI script.
|
|
- Fix compilation with g++ 4.0.
|
|
- Fix a make check failure when valgrind is missing.
|
|
|
|
New in spot 0.8.1 (2011-12-18):
|
|
|
|
* Only bug fixes:
|
|
- When ltl2tgba is set to perform both WDBA minimization and
|
|
degeneralization, do the latter only if the former failed.
|
|
In previous version, automata were (uselessly) degeneralized
|
|
before WDBA minimization, causing important slowdowns.
|
|
- Fix compilation with Clang 3.0.
|
|
- Fix a Makefile setup causing a "make check" failure on MacOS X.
|
|
- Fix an mkdir error in the CGI script.
|
|
|
|
New in spot 0.8 (2011-11-28):
|
|
|
|
* Major new features:
|
|
- Spot can read DiVinE models. See iface/dve2/README for details.
|
|
- The genltl tool can now output 20 different LTL formula families.
|
|
It also replaces the LTLcounter Perl scripts.
|
|
- There is a printer and parser for Kripke structures in text format.
|
|
* Major interface changes:
|
|
- The destructor of all states is now private. Any code that looks like
|
|
"delete some_state;" will cause an compile error and should be
|
|
updated to "some_state->destroy();". This new syntax is supported
|
|
since version 0.7.
|
|
- The experimental Nips interface has been removed.
|
|
* Minor changes:
|
|
- The dotty_reachable() function has a new option "assume_sba" that
|
|
can be used for rendering automata with state-based acceptance.
|
|
In that case, acceptance states are displayed with a double
|
|
circle. ltl2tgba (both command line and on-line) Use it to display
|
|
degeneralized automata.
|
|
- The dotty_reachable() function will also display transition
|
|
annotations (as returned by the tgba::transitition_annotation()).
|
|
This can be useful when displaying (small) state spaces.
|
|
- Identifiers used to name atomic proposition can contain dots.
|
|
E.g.: X.Y is now an atomic proposition, while it was understood
|
|
as X&Y in previous versions.
|
|
- The Doxygen documentation is no longer built as a PDF file.
|
|
* Internal improvements:
|
|
- The on-line ltl2tgba CGI script uses a cache to produce faster
|
|
answers.
|
|
- Better memory management for the states of explicit automata.
|
|
Thanks to the aforementioned ->destroy() change, we can avoid
|
|
cloning explicit states.
|
|
- tgba_product has learned how to be faster when one of the operands
|
|
is a Kripke structure (15% speedup).
|
|
- The reduction rule for "a M b" has been improved: it can be
|
|
reduced to "a & b" if "a" is a pure eventuallity.
|
|
- More useless acceptance conditions are removed by SCC simplifications.
|
|
* Bug fixes:
|
|
- Safra complementation has been fixed in cases where more than
|
|
one acceptance conditions where needed to convert the
|
|
deterministic Streett automaton as a TGBA.
|
|
- The degeneralization is now idempotent. Previously, degeneralizing
|
|
an already degeneralized automaton could add some states.
|
|
- The degeneralization now has a deterministic behavior. Previously
|
|
it was possible to obtain different output depending on the
|
|
memory layout.
|
|
- Spot now outputs neverclaims with fully parenthesized guards.
|
|
I.e., instead of
|
|
(!x && y) -> goto S1
|
|
it now outputs
|
|
((!(x)) && (y)) -> goto S1
|
|
This prevents problems when the model defines `x' as
|
|
#define x flag==0
|
|
because !x then evaluated to (!flag)==0 instead of !(flag==0).
|
|
|
|
New in spot 0.7.1 (2011-02-07):
|
|
|
|
* The LTL parser will accept operator ~ (for not) as well
|
|
as --> and <--> (for implication and equivalence), allowing
|
|
formulae from the Büchi Store to be read directly.
|
|
* The neverclaim parser will accept guards of the form
|
|
:: !(...) -> goto ...
|
|
instead of the more commonly used
|
|
:: (!(...)) -> goto ...
|
|
This makes it possible to read neverclaims provided by the Büchi Store.
|
|
* A new ltl2tgba option, -kt, will count the number of "sub-transitions".
|
|
I.e., a transition labelled by "true" counts for 4 "sub-transitions"
|
|
if the automaton uses 2 atomic propositions.
|
|
* Bugs fixed:
|
|
- Fix segfault during WDBA minimization on automata with useless states.
|
|
- Use the included BuDDy library if the one already installed
|
|
is older than the one distributed with Spot 0.7.
|
|
- Fix two typos in the code of the CGI scripts.
|
|
|
|
New in spot 0.7 (2011-02-01):
|
|
|
|
* Spot is now able to read an automaton expressed as a Spin neverclaim.
|
|
* The "experimental" Kripke structure introduced in Spot 0.5 has
|
|
been rewritten, and is no longer experimental. We have a
|
|
developement version of checkpn using it, and it should be
|
|
released shortly after Spot 0.7.
|
|
* The function to_spin_string(), that outputs an LTL formula using
|
|
Spin's syntax, now takes an optional argument to request
|
|
parentheses at all levels.
|
|
* src/ltltest/genltl is a new tool that generates some interesting
|
|
families of LTL formulae, for testing purpose.
|
|
* bench/ltlclasses/ uses the above tool to conduct the same benchmark
|
|
as in the DepCoS'09 paper by Cichoń et al. The resulting benchmark
|
|
completes in 12min, while it tooks days (or exhausted the memory)
|
|
when the paper was written (they used Spot 0.4).
|
|
* Degeneralization has again been improved in two ways:
|
|
- It will merge degeneralized transitions that can be merged.
|
|
- It uses a cache to speed up the improvement introduced in 0.6.
|
|
* An implementation of Dax et al.'s paper for minimizing obligation
|
|
formulae has been integrated. Use ltl2tgba -Rm to enable this
|
|
optimization from the command-line; it will have no effect if the
|
|
property is not an obligation.
|
|
* bench/wdba/ conducts a benchmark similar to the one on Dax's
|
|
webpage, comparing the size of the automata expressing obligation
|
|
formula before and after minimization. See bench/wdba/README for
|
|
results.
|
|
* Using similar code, Spot can now construct deterministic monitors.
|
|
* New ltl2tgba options:
|
|
-XN: read an input automaton as a neverclaim.
|
|
-C, -CR: Compute (and display) a counterexample after running the
|
|
emptiness check. With -CR, the counterexample will be
|
|
replayed on the automaton to ensure it is correct
|
|
(previous version would always compute a replay a
|
|
counterexample when emptiness-check was enabled)
|
|
-ks: traverse the automaton to compute its number of states and
|
|
transitions (this is faster than -k which will also count
|
|
SCCs and paths).
|
|
-M: Build a deterministic monitor.
|
|
-O: Tell whether a formula represents a safety, guarantee, or
|
|
obligation property.
|
|
-Rm: Minimize automata representing obligation properties.
|
|
* The on-line tool to translate LTL formulae into automata
|
|
has been rewritten and is now at http://spot.lip6.fr/ltl2tgba.html
|
|
It requires a javascript-enabled browser.
|
|
* Bug fixes:
|
|
- Location of the errors messages in the TGBA parser where inaccurate.
|
|
- Various warning fixes for different versions of GCC and Clang.
|
|
- The neverclaim output with ltl2tgba -N or -NN used to ignore any
|
|
automaton simplification performed after degeneralization.
|
|
- The formula simplification based on universality and eventuality
|
|
had a quadratic run-time.
|
|
|
|
New in spot 0.6 (2010-04-16):
|
|
|
|
* Several optimizations to improve some auxiliary steps
|
|
of the LTL translation (not the core of the translation):
|
|
- Better degeneralization
|
|
- SCC simplifications has been tuned for degeneralization
|
|
(ltl2tgba now has two options -R3 and -R3f: the latter will
|
|
remove every acceptance condition that used to be removed
|
|
in Spot 0.5 while the former will leave useless acceptance conditions
|
|
going to accepting SCC. Experience shows that -R3 is more
|
|
favorable to degeneralization).
|
|
- ltl2tgba will perform SCC optimizations before degeneralization
|
|
and not the converse
|
|
- We added a syntactic simplification rule to rewrite F(a)|F(b) as F(a|b).
|
|
We only had a rule for the more specific FG(a)|FG(b) = F(Ga|Gb).
|
|
- The syntactic simplification rule for F(a&GF(b)) = F(a)&GF(b) has
|
|
be disabled because the latter formula is in fact harder to translate
|
|
efficiently.
|
|
* New LTL operators: W (weak until) and its dual M (strong release)
|
|
- Weak until allows many LTL specification to be specified more
|
|
compactly.
|
|
- All LTL translation algorithms have been updated to
|
|
support these operators.
|
|
- Although they do not add any expressive power, translating
|
|
"a W b" is more efficient (read smaller output automaton) than
|
|
translating the equivalent form using the U operator.
|
|
- Basic syntactic rewriting rules will automatically rewrite "a U
|
|
(b | G(a))" and "(a U b)|G(a)" as "a W b", so you will benefit
|
|
from the new operators even if you do not use them. Similar
|
|
rewriting rules exist for R and M, although they are less used.
|
|
* New options have been added to the CGI script for
|
|
- SVG output
|
|
- SCC simplifications
|
|
* Bug fixes:
|
|
- The precedence of the "->" and "<->" Boolean operators has been
|
|
adjusted to better match other tools.
|
|
Spot <= 0.5 used to parse "a & b -> c & d" as "a & (b -> c) & d";
|
|
Spot >= 0.6 will parse it as "(a & b) -> (c & d)".
|
|
- The random graph generator was fixed (again!) not to produce
|
|
dead states as documented.
|
|
- Locations in the error messages of the LTL parser were off by one.
|
|
|
|
New in spot 0.5 (2010-02-01):
|
|
|
|
* We have setup two mailing lists:
|
|
- <spot-announce@lrde.epita.fr> is read-only and will be used to
|
|
announce new releases. You may subscribe at
|
|
https://www.lrde.epita.fr/mailman/listinfo/spot-announce
|
|
- <spot@lrde.epita.fr> can be used to discuss anything related
|
|
to Spot. You may subscribe at
|
|
https://www.lrde.epita.fr/mailman/listinfo/spot-announce
|
|
* Two new LTL translations have been implemented:
|
|
- eltl_to_tgba_lacim() is a symbolic translation for ELTL based on
|
|
Couvreur's LaCIM'00 paper. For this translation (available with
|
|
ltl2tgba's option -le), all operators are described as finite
|
|
automata. A default set of operators is provided for LTL
|
|
(option -lo) and user may add more automaton operators.
|
|
- ltl_to_taa() is a translation based on Tauriainen's PhD thesis.
|
|
LTL is translated to "self-loop" alternating automata
|
|
and then to Transition-based Generalized Automata. (ltl2tgba's
|
|
option -taa).
|
|
The "Couvreur/FM" translation remains the best LTL translation
|
|
available in Spot.
|
|
* The data structures used to represent LTL formulae have been
|
|
overhauled, and it resulted in a big performence improvement
|
|
(in time and memory consumption) for the LTL translation.
|
|
* Two complementation algorithms for state-based Büchi automata
|
|
have been implemented:
|
|
- tgba_kv_complement is an on-the-fly implementation of the
|
|
Kupferman-Vardi construction (TCS'05) for generalized acceptance
|
|
conditions.
|
|
- tgba_safra_complement is an implementation of Safra's
|
|
complementation. This algorithm takes a degeneralized Büchi
|
|
automaton as input, but our implementation for the Streett->Büchi
|
|
step will produce a generalized automaton in the end.
|
|
* ltl2tgba has gained several options and the help text has been
|
|
reorganized. Please run src/tgbatest/ltl2tgba without arguments
|
|
for details. Couvreur/FM is now the default translation.
|
|
* The ltl2tgba.py CGI script can now run standalone. It also offers
|
|
the Tauriainen/TAA translation, and some options for SCC-based
|
|
reductions.
|
|
* Automata using BDD-encoded transitions relation can now be pruned
|
|
for useless states symbolically using the delete_unaccepting_scc()
|
|
function. This is ltl2tgba's -R3b option.
|
|
* The SCC-based simplification (ltl2tgba's -R3 option) has been
|
|
rewritten and improved.
|
|
* The "*" symbol, previously parsed as a synonym for "&" is no
|
|
longer recognized. This makes room for an upcoming support of
|
|
rational operators.
|
|
* More benchmarks in the bench/ directory:
|
|
- gspn-ssp/ some benchmarks published at ACSD'07,
|
|
- ltlcounter/ translation of a class of LTL formulae used by
|
|
Rozier & Vardi at SPIN'07
|
|
- scc-stats/ SCC statistics after translation of LTL formulae
|
|
- split-product/ parallelizing gain after splitting LTL automata
|
|
* An experimental Kripke interface has been developed to simplify
|
|
the integration of third party tools that do not use acceptance
|
|
conditions and that have label on states instead of transitions.
|
|
This interface has not been used yet.
|
|
* Experimental interface with the Nips virtual machine.
|
|
It is not very useful as Spot isn't able to retrieve any property
|
|
information from the model. This will just check assertions.
|
|
* Distribution:
|
|
- The Boost C++ library is now required.
|
|
- Update to Autoconf 2.65, Automake 1.11.1, Libtool 2.2.6b,
|
|
Bison 2.4.1, and Swig 1.3.40.
|
|
- Thanks to the newest Automake, "make check" will now
|
|
run in parallel if you use "make -j2 check" or more.
|
|
* Bug fixes:
|
|
- Disable warnings from the garbage collection of BuDDy, it
|
|
could break the standard output of ltl2tgba.
|
|
- Fix several C++ constructs to ensure Spot will build with
|
|
GCC 4.3, 4.4, and older 3.x releases, as well as with Intel's
|
|
ICC compiler.
|
|
- A very old bug in the hash function for LTL formulae caused Spot
|
|
to sometimes (but very rarely) consider two different LTL formulae
|
|
as equal.
|
|
|
|
New in spot 0.4 (2007-07-17):
|
|
|
|
* Upgrade to Autoconf 2.61, Automake 1.10, Bison 2.3, and Swig 1.3.31.
|
|
* Better LTL simplifications.
|
|
* Don't initialize Buddy if it has already been initialized (in case
|
|
the client software is already using Buddy).
|
|
* Lots of work in the greatspn interface for our ACSD'05 paper.
|
|
* Bug fixes:
|
|
- Fix the random graph generator not to produce dead states as documented.
|
|
- Fix synchronized product in case both side use acceptance conditions.
|
|
- Fix some syntax errors with newer versions of GCC.
|
|
|
|
New in spot 0.3 (2006-01-25):
|
|
|
|
* lbtt 1.2.0
|
|
* The CGI script for LTL translation also offers emptiness check algorithms.
|
|
* tau03_opt_search implements the "ordering heuristic".
|
|
(Submitted by Heikki Tauriainen.)
|
|
* A couple of bugs were fixed into the LTL or automata simplifications.
|
|
|
|
New in spot 0.2 (2005-04-08):
|
|
|
|
* Emptiness checks:
|
|
- the new spot::option_map class is used to pass options to
|
|
emptiness-check algorithms.
|
|
- the new emptiness_check_instantiator class is used to turn a
|
|
string such as `algorithm(option1, option2)' into an actual
|
|
instance of this emptiness-check algorithm with the given
|
|
options. All tools use this.
|
|
- tau03_opt_search implements the "condition heuristic".
|
|
(Suggested by Heikki Tauriainen.)
|
|
* Minor bug fixes.
|
|
|
|
New in spot 0.1 (2005-01-31):
|
|
|
|
* Emptiness checks:
|
|
- They all follow the same interface, and gather statistical data.
|
|
- New algorithms: gv04.hh, se05.hh, tau03.hh, tau03opt.hh
|
|
- New options for couvreur99: poprem and group.
|
|
- reduce_run() try to reduce accepting runs produced by emptiness checks.
|
|
- replay_run() ensure accepting runs are actually accepting runs.
|
|
* New testing tools:
|
|
- ltltest/randltl: Generate random LTL formulae.
|
|
- tgbatest/randtgba: Generate random TGBAs. Optionally multiply them
|
|
against random LTL formulae. Optionally check them for emptiness
|
|
with all available algorithms. Optionally gather statistics.
|
|
* bench/emptchk/: Contains scripts that benchmark emptiness-checks.
|
|
* Split the degeneralization proxy in two:
|
|
- tgba_tba_proxy uses at most max(N,1) copies
|
|
- tgba_sba_proxy uses at most 1+max(N,1) copies and has a
|
|
state_is_accepting() method
|
|
* tgba::transition_annotation annotate a transition with some string.
|
|
This comes handy to associate that transition to its high-level name.
|
|
* Preliminary support for Event-based GBA (the evtgba*/ directories).
|
|
This might as well disappear in a future release.
|
|
* LTL formulae are now sorting using their string representation, instead
|
|
of their memory address (which is still unique). This makes the output
|
|
of the various functions more deterministic.
|
|
* The Doxygen documentation is now organized using modules.
|
|
|
|
New in spot 0.0x (2004-08-13):
|
|
|
|
* New atomic_prop_collect() function: collect atomic propositions
|
|
in an LTL formula.
|
|
* Fix several typos in documentation, and some warnings in the code.
|
|
* Now compiles on Darwin and Cygwin.
|
|
* Upgrade to Automake 1.9.1, and lbtt 1.1.2.
|
|
(And drop support for older lbtt versions.)
|
|
* Support newer versions of Valgrind (>= 2.1.0).
|
|
|
|
New in spot 0.0v (2004-06-29):
|
|
|
|
* LTL formula simplifications using basic rewriting rules,
|
|
a-la Wring syntactic approximations, and Etessami's universal
|
|
and existential classes.
|
|
- Function reduce() in ltlvisit/reduce.hh is the main interface.
|
|
- Can be tested with the CGI script.
|
|
* TGBA simplifications using direct simulation, delayed simulation,
|
|
and SCC-based simplifications. This is still experimental.
|
|
* The LTL parser will now read LTL formulae written using Wring's syntax.
|
|
* ltl2tgba_fm() now has options for on-the-fly fair-loop approximations,
|
|
and Modella-like branching-postponement.
|
|
* GreatSPN interface:
|
|
- The `declarative_environment' is now part of Spot itself rather than
|
|
part of the interface with GreatSPN.
|
|
- the RG and SRG interface can deal with dead markings in three
|
|
ways (omit deadlocks from the state graph, stutter on the deadlock
|
|
and consider as a regular behavior, or stutter and distinguish the
|
|
deadlock with a property).
|
|
- update SSP interface to Soheib Baarir latest work.
|
|
* Preliminary Python bindings for BuDDy's FDD and BVEC.
|
|
* Upgrade to BuDDy 2.3.
|
|
|
|
New in spot 0.0t (2004-04-23):
|
|
|
|
* `emptiness_check':
|
|
- fix two bugs in the computation of the counter example,
|
|
- revamp the interface for better customization.
|
|
* `never_claim_reachable': new function.
|
|
* Introduce annonymous BDD variables in `bdd_dict', and start
|
|
to use it in `ltl_to_tgba_fm'.
|
|
* Offer never claim in the CGI script.
|
|
* Rename EESRG as SSP, and offer specialized variants of the
|
|
emptiness_check.
|
|
|
|
New in spot 0.0r (2004-03-08):
|
|
|
|
* In ltl_to_tgba_fm:
|
|
- New option `exprop' to optimize determinism.
|
|
- Make the `symbolic indentification' from 0.0p optional.
|
|
* `nonacceptant_lbtt_reachable' new function to help getting
|
|
accurate statistics from LBTT.
|
|
* Revamp the cgi script's user interface.
|
|
* Upgrade to lbtt 1.0.3, swig 1.3.21, automake 1.8.3
|
|
|
|
New in spot 0.0p (2004-02-03):
|
|
|
|
* In ltl_to_tgba_fm:
|
|
- identify states with identical symbolic expansions
|
|
(i.e., identical continuations)
|
|
- use Acc[b] as acceptance condition for Fb, not Acc[Fb].
|
|
* Update and speed-up the cgi script.
|
|
* Improve degeneralization.
|
|
|
|
New in spot 0.0n (2004-01-13):
|
|
|
|
* emptiness_check::check2() is a variant of Couvreur's emptiness check that
|
|
explores visited states first.
|
|
* Build the EESRG supporting code condinally, as the associated
|
|
GreatSPN changes have not yet been contributed to GreatSPN.
|
|
* Add a powerset algorithm (determinize TGBA ignoring acceptance
|
|
conditions, i.e., as if they were used to recognize finite languages).
|
|
* tgba_explicit::merge_transitions: merge transitions with same source,
|
|
destination, and acceptance condition.
|
|
* Run test cases within valgrind.
|
|
* Various bug fixes.
|
|
|
|
New in spot 0.0l (2003-12-01):
|
|
|
|
* Computation of prime implicants. This simplify the output of
|
|
ltl_to_tgba_fm, and allows conditions to be output as some of
|
|
product in dot output.
|
|
* Optimize translation of GFy in ltl_to_tgba_fm.
|
|
* tgba_explicit supports arbitrary binary formulae on transitions
|
|
(only conjunctions were allowed).
|
|
|
|
New in spot 0.0j (2003-11-03):
|
|
|
|
* Use hash_map's instead of map's almost everywhere.
|
|
* New emptiness check, based on Couvreur's algorithm.
|
|
* LTL propositions can be put inside doublequotes to disambiguate
|
|
some constructions.
|
|
* Preliminary support for GreatSPN's EESRG.
|
|
* Various bug fixes.
|
|
|
|
New in spot 0.0h (2003-08-18):
|
|
|
|
* More python bindings:
|
|
- "import buddy" works (see wrap/python/tests/bddnqueen.py for an example),
|
|
- almost all the Spot API is now available via "import spot".
|
|
* wrap/python/cgi/ltl2tgba.py is an LTL-to-Büchi translator that
|
|
work as as a cgi script.
|
|
* Couvreur's FM'99 ltl-to-tgba translation.
|
|
|
|
New in spot 0.0f (2003-08-01):
|
|
|
|
* More python bindings, still only for the spot::ltl:: namespace.
|
|
* Functional GSPN interface. (Enable with --with-gspn=directory.)
|
|
* The LTL scanner recognizes /\, \/, and xor.
|
|
* Upgrade to lbtt 1.0.2.
|
|
* tgba_tba_proxy is an on-the-fly degeneralizer.
|
|
* Implements the "magic search" algorithm.
|
|
(Works only on a tgba_tba_proxy.)
|
|
* Tgba's output algorithms (save(), dotty()) now non-recursive.
|
|
* During products, succ_iter will optimize its set of successors
|
|
using information computed from the current product state.
|
|
* BDD dictionnaries are now shared between automata and. This
|
|
gets rid of all the BDD-variable translating machinery.
|
|
|
|
New in spot 0.0d (2003-07-13):
|
|
|
|
* Optimize translation of G operators occurring at the root
|
|
of a formula (or its immediate children when the root is a
|
|
conjunction). This saves two BDD variables per G operator.
|
|
* Distribute lbtt, and run it during `make check'.
|
|
* First sketch of GSPN interface.
|
|
* succ_iter_concreate::next() completely rewritten.
|
|
* Transitions are now labelled by boolean formulae (not only
|
|
conjunctions).
|
|
* Documentation:
|
|
- Output collaboration diagrams.
|
|
- Build and distribute PDF manual.
|
|
* Many bug fixes.
|
|
|
|
New in spot 0.0b (2003-06-26):
|
|
|
|
* Everything.
|