ltl2tgba.html: Adjust for ltl3ba 1.1.0

ltl3ba 1.1.0 was released today

* wrap/python/ajax/spot.in: Use -T3 instead of -U.
* wrap/python/ajax/README: Adjust version.
* wrap/python/ajax/ltl2tgba.html: Turn on improved determinism
of ltl3ba by default.
* bench/ltl2tgba/tools, bench/spin13/run.sh: Adjust options.
* bench/spin13/README: Mention the update.
This commit is contained in:
Alexandre Duret-Lutz 2015-01-23 11:38:10 +01:00
parent ef6d175ace
commit a4b6faba20
6 changed files with 33 additions and 24 deletions

View file

@ -1,5 +1,5 @@
## -*- coding: utf-8; mode: sh -*- ## -*- coding: utf-8; mode: sh -*-
## Copyright (C) 2013 Laboratoire de Recherche et Développement de ## Copyright (C) 2013, 2015 Laboratoire de Recherche et Développement de
## l'Epita (LRDE). ## l'Epita (LRDE).
## ##
## This file is part of Spot, a model checking library. ## This file is part of Spot, a model checking library.
@ -27,10 +27,10 @@ set dummy
# Add third-party tools if they are available. # Add third-party tools if they are available.
test -n "$SPIN" && set "$@" "{spin} $SPIN -f %s >%N" test -n "$SPIN" && set "$@" "{spin} $SPIN -f %s >%N"
test -n "$LTL2BA" && set "$@" "{ltl2ba} $LTL2BA -f %s >%N" test -n "$LTL2BA" && set "$@" "{ltl2ba} $LTL2BA -f %s >%N"
test -n "$LTL3BA" && set "$@" "{ltl3ba} $LTL3BA -f %s >%N" \ test -n "$LTL3BA" && set "$@" "{ltl3ba-LS0} $LTL3BA -L -S0 -f %s >%N" \
"{ltl3ba-M} $LTL3BA -M -f %s >%N" \ "{ltl3ba-MS0} $LTL3BA -M -S0 -f %s >%N" \
"{ltl3ba-S} $LTL3BA -S -f %s >%N" \ "{ltl3ba-LS2} $LTL3BA -L -S2 -f %s >%N" \
"{ltl3ba-SM} $LTL3BA -S -M -f %s >%N" "{ltl3ba-MS2} $LTL3BA -M -S2 -f %s >%N"
# Use -s to output a neverclaim, like the other tools. # Use -s to output a neverclaim, like the other tools.
set "$@" \ set "$@" \

View file

@ -6,7 +6,7 @@ This contains most of the a benchmark used for the paper
To appear in the proceedings of Spin'13. To appear in the proceedings of Spin'13.
By "most" we means that some lines of the table we actually be missing By "most" we means that some lines of the table will actually be missing
because we cannot compute them with the current version of Spot. The because we cannot compute them with the current version of Spot. The
missing lines are those with a small "a", that use the old SCC-based missing lines are those with a small "a", that use the old SCC-based
simplification, and not the new one which is presented in section 4.1 simplification, and not the new one which is presented in section 4.1
@ -19,6 +19,9 @@ exactly the same versions (yes, that's a plural), please head over to
Keep in mind that as Spot is evolving, the results from this benchmark Keep in mind that as Spot is evolving, the results from this benchmark
may evolve (hopefully for the best!) with time. may evolve (hopefully for the best!) with time.
The benchmark has been updated to use ltl3ba 1.1.0 released on
2014-01-23 (because the set of optimizations that are now activated
by default is different).
Running instructions Running instructions
==================== ====================

View file

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright (C) 2013 Laboratoire de Recherche et Développement de # Copyright (C) 2013, 2015 Laboratoire de Recherche et Développement
# l'Epita (LRDE). # de l'Epita (LRDE).
# #
# This file is part of Spot, a model checking library. # This file is part of Spot, a model checking library.
# #
@ -69,8 +69,8 @@ if test $# = 2; then
# Deter # Deter
$ba && set "$@" \ $ba && set "$@" \
": LTL3BA NoSim NoSusp Deter; ltl3ba -A -M -f %s >%N" \ ": LTL3BA NoSim NoSusp Deter; ltl3ba -S0 -A -M -f %s >%N" \
": LTL3BA Sim NoSusp Deter; ltl3ba -S -A -M -f %s >%N" \ ": LTL3BA Sim NoSusp Deter; ltl3ba -S2 -A -M -f %s >%N" \
": Cou99 '(Ad)' Deter; $ltl2tgba $opt $nosim --deter -x !degen-reset,!degen-lcache %f" ": Cou99 '(Ad)' Deter; $ltl2tgba $opt $nosim --deter -x !degen-reset,!degen-lcache %f"
set "$@" \ set "$@" \
": Cou99 '(A${D})' Deter; $ltl2tgba $opt $nosim --deter %f" ": Cou99 '(A${D})' Deter; $ltl2tgba $opt $nosim --deter %f"
@ -81,8 +81,8 @@ if test $# = 2; then
": Cou99 '(AS${DB})' Deter; $ltl2tgba $opt --deter %f" ": Cou99 '(AS${DB})' Deter; $ltl2tgba $opt --deter %f"
$ba && set "$@" \ $ba && set "$@" \
": Cou99 '(ASdB)' Deter; $ltl2tgba $opt --deter -x !degen-reset,!degen-lcache %f" \ ": Cou99 '(ASdB)' Deter; $ltl2tgba $opt --deter -x !degen-reset,!degen-lcache %f" \
": LTL3BA NoSim Susp Deter; ltl3ba -M -f %s >%N" \ ": LTL3BA NoSim Susp Deter; ltl3ba -S0 -M -f %s >%N" \
": LTL3BA Sim Susp Deter; ltl3ba -S -M -f %s >%N" ": LTL3BA Sim Susp Deter; ltl3ba -S2 -M -f %s >%N"
set "$@" \ set "$@" \
": Comp '(A${D})' Deter; $ltl2tgba -x comp-susp,!skel-simul $opt $nosim --deter %f" \ ": Comp '(A${D})' Deter; $ltl2tgba -x comp-susp,!skel-simul $opt $nosim --deter %f" \
": Comp '(A${D})' Deter Early; $ltl2tgba -x comp-susp,!skel-simul,early-susp $opt $nosim --deter %f" ": Comp '(A${D})' Deter Early; $ltl2tgba -x comp-susp,!skel-simul,early-susp $opt $nosim --deter %f"
@ -96,8 +96,8 @@ if test $# = 2; then
# Small # Small
$ba && set "$@" \ $ba && set "$@" \
": LTL3BA NoSim NoSusp; ltl3ba -A -f %s >%N" \ ": LTL3BA NoSim NoSusp; ltl3ba -S0 -L -A -f %s >%N" \
": LTL3BA Sim NoSusp; ltl3ba -S -A -f %s >%N" \ ": LTL3BA Sim NoSusp; ltl3ba -S2 -L -A -f %s >%N" \
": Cou99 '(Ad)' Small; $ltl2tgba $opt $nosim --small -x !degen-reset,!degen-lcache %f" ": Cou99 '(Ad)' Small; $ltl2tgba $opt $nosim --small -x !degen-reset,!degen-lcache %f"
set "$@" \ set "$@" \
": Cou99 '(A${D})' Small; $ltl2tgba $opt $nosim --small %f" ": Cou99 '(A${D})' Small; $ltl2tgba $opt $nosim --small %f"
@ -108,8 +108,8 @@ if test $# = 2; then
": Cou99 '(AS${DB})' Small; $ltl2tgba $opt --small %f" ": Cou99 '(AS${DB})' Small; $ltl2tgba $opt --small %f"
$ba && set "$@" \ $ba && set "$@" \
": Cou99 '(ASdB)' Small; $ltl2tgba $opt --small -x !degen-reset,!degen-lcache %f" \ ": Cou99 '(ASdB)' Small; $ltl2tgba $opt --small -x !degen-reset,!degen-lcache %f" \
": LTL3BA NoSim Susp; ltl3ba -f %s >%N" \ ": LTL3BA NoSim Susp; ltl3ba -S0 -L -f %s >%N" \
": LTL3BA Sim Susp; ltl3ba -S -f %s >%N" ": LTL3BA Sim Susp; ltl3ba -S2 -L -f %s >%N"
set "$@" \ set "$@" \
": Comp '(A${D})' Small; $ltl2tgba -x comp-susp,!skel-wdba,!skel-simul $opt $nosim --small %f" \ ": Comp '(A${D})' Small; $ltl2tgba -x comp-susp,!skel-wdba,!skel-simul $opt $nosim --small %f" \
": Comp '(A${D})' Small Early; $ltl2tgba -x comp-susp,!skel-wdba,!skel-simul,early-susp $opt $nosim --small %f" ": Comp '(A${D})' Small Early; $ltl2tgba -x comp-susp,!skel-wdba,!skel-simul,early-susp $opt $nosim --small %f"

View file

@ -9,8 +9,8 @@ In both cases you should ensure that the command `dot', from the
GraphViz package, is in the PATH. configure should have picked it up. GraphViz package, is in the PATH. configure should have picked it up.
The "ltl3ba" tab will only be enabled if ltl3ba is available (as The "ltl3ba" tab will only be enabled if ltl3ba is available (as
checked by ./configure) and supports options -v/-U/-T (checked by the checked by ./configure) and supports options -v/-T/-T3 (checked by the
CGI script). These option were introduced into ltl3ba version 1.0.2. CGI script). These option were introduced into ltl3ba version 1.1.0.
Standalone usage Standalone usage

View file

@ -642,7 +642,7 @@ an identifier: <span class="formula">aUb</span> is an atomic proposition, unlike
SCC simplifications SCC simplifications
</label><br> </label><br>
<label class="rtip" title="Try to improve the automaton's determinism when building it. This may produce larger automata."> <label class="rtip" title="Try to improve the automaton's determinism when building it. This may produce larger automata.">
<INPUT type="checkbox" name="l3" value="M"> <INPUT type="checkbox" name="l3" value="M" checked>
more deterministic output more deterministic output
</label><br> </label><br>
<label class="rtip" title="Compute a direct (a.k.a. strong fair) simulation relation to reduce the size of the Büchi automaton."> <label class="rtip" title="Compute a direct (a.k.a. strong fair) simulation relation to reduce the size of the Büchi automaton.">

View file

@ -1,6 +1,6 @@
#!@PYTHON@ #!@PYTHON@
# -*- mode: python; coding: utf-8 -*- # -*- mode: python; coding: utf-8 -*-
# Copyright (C) 2011, 2012, 2013, 2014 Laboratoire de Recherche et # Copyright (C) 2011, 2012, 2013, 2014, 2015 Laboratoire de Recherche et
# Développement de l'Epita (LRDE). # Développement de l'Epita (LRDE).
# #
# This file is part of Spot, a model checking library. # This file is part of Spot, a model checking library.
@ -364,7 +364,9 @@ if output_type == 'v':
if output_type == 'v3': if output_type == 'v3':
import subprocess import subprocess
try: try:
l3proc = subprocess.Popen(['@LTL3BA@', '-v'], stdout=subprocess.PIPE) # -L is new in 1.1.0, and older versions will complain about it.
l3proc = subprocess.Popen(['@LTL3BA@', '-L', '-v'],
stdout=subprocess.PIPE)
(ver, err) = l3proc.communicate() (ver, err) = l3proc.communicate()
err = l3proc.returncode err = l3proc.returncode
except: except:
@ -538,10 +540,12 @@ elif translator == 'ta':
automaton = spot.tgba_dupexp_dfs(spot.ltl_to_taa(f, dict, refined_rules)) automaton = spot.tgba_dupexp_dfs(spot.ltl_to_taa(f, dict, refined_rules))
elif translator == 'l3': elif translator == 'l3':
l3out = '-T' l3out = '-T'
l3opt = { '-l', '-P', '-A', '-c', '-C', '-o', '-p' } # 1.0.1 had determinization and simulation turned off by default,
# we need -L and -S0 with 1.1.0 for the same effect
l3opt = { '-l', '-P', '-A', '-c', '-C', '-o', '-p', '-L', '-S0' }
for lo in form.getfirst('lo', 'T'): for lo in form.getfirst('lo', 'T'):
if lo == 'U': if lo == 'U':
l3out = '-U' l3out = '-T3' # was -U in ltl3ba 1.0.1, now -T3 since 1.1.0
issba = True issba = True
for l3 in form.getlist('l3'): for l3 in form.getlist('l3'):
if l3 == 'l': if l3 == 'l':
@ -554,9 +558,11 @@ elif translator == 'l3':
l3opt.remove('-C') l3opt.remove('-C')
l3opt.remove('-c') l3opt.remove('-c')
elif l3 == 'M': elif l3 == 'M':
l3opt.remove('-L')
l3opt.add('-M') l3opt.add('-M')
elif l3 == 'S': elif l3 == 'S':
l3opt.add('-S') l3opt.remove('-S0')
l3opt.add('-S2') # was -S in 1.0.1
elif l3 == 'o': elif l3 == 'o':
l3opt.remove('-o') l3opt.remove('-o')
elif l3 == 'p': elif l3 == 'p':