Add a WDBA benchmark.

* bench/wdba/: New directory.
* bench/Makefile.am (SUBDIRS): Add wdba.
* NEWS: Mention it.
* configure.ac: Output bench/wdba/defs and bench/wdba/Makefile.
This commit is contained in:
Alexandre Duret-Lutz 2010-12-14 11:13:49 +01:00
parent aadef1fd87
commit edc71b807e
8 changed files with 262 additions and 1 deletions

View file

@ -1,3 +1,12 @@
2010-12-14 Alexandre Duret-Lutz <adl@lrde.epita.fr>
Add a WDBA benchmark.
* bench/wdba/: New directory.
* bench/Makefile.am (SUBDIRS): Add wdba.
* NEWS: Mention it.
* configure.ac: Output bench/wdba/defs and bench/wdba/Makefile.
2010-12-13 Alexandre Duret-Lutz <adl@lrde.epita.fr> 2010-12-13 Alexandre Duret-Lutz <adl@lrde.epita.fr>
* NEWS: Update the news about minimization. * NEWS: Update the news about minimization.

3
NEWS
View file

@ -21,6 +21,9 @@ New in spot 0.6a:
formulae has been integrated. Use ltl2tgba -Rm to enable this formulae has been integrated. Use ltl2tgba -Rm to enable this
optimization; it will have no effect if the property is not an optimization; it will have no effect if the property is not an
obligation. 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.
* New ltl2tgba options: * New ltl2tgba options:
-XN: read an input automaton as a neverclaim. -XN: read an input automaton as a neverclaim.
-C, -CR: Compute (and display) a counterexample after running the -C, -CR: Compute (and display) a counterexample after running the

View file

@ -22,4 +22,4 @@
## 02111-1307, USA. ## 02111-1307, USA.
SUBDIRS = emptchk gspn-ssp ltl2tgba scc-stats split-product ltlcounter \ SUBDIRS = emptchk gspn-ssp ltl2tgba scc-stats split-product ltlcounter \
ltlclasses ltlclasses wdba

23
bench/wdba/Makefile.am Normal file
View file

@ -0,0 +1,23 @@
# Copyright (C) 2010 Laboratoire de Recherche et Développement de
# l'EPITA (LRDE)
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Spot; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
EXTRA_DIST = run
CLEANFILES = obligations.txt results.txt out

85
bench/wdba/README Normal file
View file

@ -0,0 +1,85 @@
This benchmark shows the size of 40 obligation formulae translated by
Spot to degeneralized state-based Büchi automata, before and after
reductions using the WDBA technique introduced in the following paper.
@InProceedings{ dax.07.atva,
author = {Christian Dax and Jochen Eisinger and Felix Klaedtke},
title = {Mechanizing the Powerset Construction for Restricted
Classes of {$\omega$}-Automata},
year = 2007,
series = {Lecture Notes in Computer Science},
publisher = {Springer-Verlag},
volume = 4762,
booktitle = {Proceedings of the 5th International Symposium on
Automated Technology for Verification and Analysis
(ATVA'07)},
editor = {Kedar S. Namjoshi and Tomohiro Yoneda and Teruo Higashino
and Yoshio Okamura},
month = oct
}
This is meant to complement the experiment 1 at
http://www.daxc.de/eth/atva07/index.html
The formulae used here are the same as the formulae used on the above
page, and are presented in the same order.
Running the `./run' script should produce an output similar to the
following:
# form. nbr., states, trans., states minimized, trans. minimized, formula
1, 2, 3, 2, 3, !(G(!p))
2, 3, 5, 3, 5, !(Fr->(!p U r))
3, 3, 6, 3, 6, !(G(q->G(!p)))
4, 4, 8, 4, 9, !(G((q&!r&Fr)->(!p U r)))
5, 3, 6, 3, 7, !(G(q&!r->((!p U r)|G!p)))
6, 1, 1, 1, 1, !(Fp)
7, 2, 3, 2, 3, !((!r U (p&!r))|(G!r))
8, 2, 3, 2, 3, !(G(!q)|F(q&Fp))
9, 3, 5, 3, 6, !(G(q&!r->((!r U (p&!r))|G!r)))
10, 6, 11, 6, 11, !((!p U ((p U ((!p U ((p U G!p)|Gp))|G!p))|Gp))|G!p)
11, 7, 13, 7, 13, !(Fr->((!p&!r)U(r|((p&!r)U(r|((!p&!r)U(r|((p&!r)U(r|(!p U r))))))))))
12, 7, 14, 7, 14, !(Fq->(!q U (q&((!p U ((p U ((!p U ((p U G!p)|Gp))|G!p))|Gp))|G!p))))
13, 8, 16, 8, 21, !(G((q&Fr)->((!p&!r)U(r|((p&!r)U(r|((!p&!r)U(r|((p&!r)U(r|(!p U r)))))))))))
14, 7, 14, 7, 19, !(G(q->((!p&!r)U(r|((p&!r)U(r|((!p&!r)U(r|((p&!r)U(r|((!p U r)|G!p)|Gp))))))))))
15, 2, 3, 2, 3, !(G(p))
16, 3, 5, 3, 5, !(Fr->(p U r))
17, 3, 6, 3, 6, !(G(q->G(p)))
18, 4, 7, 4, 8, !(G((p&!r&Fr)->(p U r)))
19, 3, 6, 3, 7, !(G(q&!r->((p U r)|Gp)))
20, 4, 7, 4, 7, !((!p U s)|Gp)
21, 3, 5, 3, 5, !(Fr->(!p U (s|r)))
22, 4, 8, 4, 9, !(G((q&!r&Fr)->(!p U (s|r))))
23, 3, 6, 3, 7, !(G(q&!r->((!p U (s|r))|G!p)))
24, 3, 5, 3, 6, !(Fr->(p->(!r U (s&!r))) U r)
25, 4, 8, 4, 10, !(G((q&!r&Fr)->(p->(!r U (s&!r))) U r))
26, 3, 6, 3, 6, !(Fp->(!p U (s&!p&X(!p U t))))
27, 4, 8, 4, 8, !(Fr->(!p U (r|(s&!p&X(!p U t)))))
28, 4, 9, 4, 9, !((G!q)|(!q U (q&Fp->(!p U (s&!p&X(!p U t))))))
29, 5, 12, 5, 15, !(G((q&Fr)->(!p U (r|(s&!p&X(!p U t))))))
30, 4, 10, 4, 13, !(G(q->(Fp->(!p U (r|(s&!p&X(!p U t)))))))
31, 4, 8, 3, 5, !((F(s&XFt))->((!s) U p))
32, 4, 7, 4, 7, !(Fr->((!(s&(!r)&X(!r U (t&!r))))U(r|p)))
33, 5, 12, 4, 8, !((G!q)|((!q)U(q&((F(s&XFt))->((!s) U p)))))
34, 5, 10, 5, 12, !(G((q&Fr)->((!(s&(!r)&X(!r U (t&!r))))U(r|p))))
35, 10, 28, 4, 10, !(G(q->(!(s&(!r)&X(!r U (t&!r)))U(r|p)|G(!(s&XFt)))))
36, 4, 8, 5, 18, !(Fr->(s&X(!r U t)->X(!r U (t&Fp))) U r)
37, 4, 9, 4, 11, !(Fr->(p->(!r U (s&!r&X(!r U t)))) U r)
38, 5, 13, 5, 17, !(G((q&Fr)->(p->(!r U (s&!r&X(!r U t)))) U r))
39, 4, 10, 4, 11, !(Fr->(p->(!r U (s&!r&!z&X((!r&!z) U t)))) U r)
40, 5, 14, 5, 17, !(G((q&Fr)->(p->(!r U (s&!r&!z&X((!r&!z) U t)))) U r))
The first number is the number of the formula, so you can compare with
the number displayed at http://www.daxc.de/eth/atva07/index.html.
The second and third numbers give the number of states and transition
of the automaton produced by Spot (with formula simplifications and SCC
simplifications turned on), while the fourth and fifth number show the
number of states and transitions with an additional WDBA minimization step.
You can observe that some minimized automata have more transitions:
this is because they have become deterministic. There is even one
case where the minimized automaton got one more state (formula 36).
In two cases (formulae 31 and 35) the minimization actually removed
states in addition to making the automata deterministic.

55
bench/wdba/defs.in Normal file
View file

@ -0,0 +1,55 @@
# -*- shell-script -*-
# Copyright (C) 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
# et Marie Curie.
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Spot; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# Ensure we are running from the right directory.
test -f ./defs || {
echo "defs: not found in current directory" 1>&2
exit 1
}
srcdir='@srcdir@'
# Ensure $srcdir is set correctly.
test -f "$srcdir/defs.in" || {
echo "$srcdir/defs.in not found, check \$srcdir" 1>&2
exit 1
}
LBT='@LBT@'
LBTT='@LBTT@'
LBTT_TRANSLATE="@LBTT_TRANSLATE@"
LTL2BA='@LTL2BA@'
LTL2NBA='@LTL2NBA@'
LTL2TGBA='@top_builddir@/src/tgbatest/ltl2tgba@EXEEXT@'
ELTL2TGBA='@top_builddir@/src/tgbatest/eltl2tgba@EXEEXT@'
MODELLA='@MODELLA@'
SPIN='@SPIN@'
WRING2LBTT='@WRING2LBTT@'
for var in LBT LTL2BA LTL2NBA MODELLA SPIN WRING2LBTT
do
if eval 'test -z "$'$var'"'; then
eval HAVE_$var=no
else
eval HAVE_$var=yes
fi
done

84
bench/wdba/run Executable file
View file

@ -0,0 +1,84 @@
#!/bin/sh
# Copyright (C) 2010 Laboratoire de Recherche et Développement
# de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Spot; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
. ./defs
cat >obligations.txt <<EOF
G(!p)
Fr->(!p U r)
G(q->G(!p))
G((q&!r&Fr)->(!p U r))
G(q&!r->((!p U r)|G!p))
Fp
(!r U (p&!r))|(G!r)
G(!q)|F(q&Fp)
G(q&!r->((!r U (p&!r))|G!r))
(!p U ((p U ((!p U ((p U G!p)|Gp))|G!p))|Gp))|G!p
Fr->((!p&!r)U(r|((p&!r)U(r|((!p&!r)U(r|((p&!r)U(r|(!p U r)))))))))
Fq->(!q U (q&((!p U ((p U ((!p U ((p U G!p)|Gp))|G!p))|Gp))|G!p)))
G((q&Fr)->((!p&!r)U(r|((p&!r)U(r|((!p&!r)U(r|((p&!r)U(r|(!p U r))))))))))
G(q->((!p&!r)U(r|((p&!r)U(r|((!p&!r)U(r|((p&!r)U(r|((!p U r)|G!p)|Gp)))))))))
G(p)
Fr->(p U r)
G(q->G(p))
G((p&!r&Fr)->(p U r))
G(q&!r->((p U r)|Gp))
(!p U s)|Gp
Fr->(!p U (s|r))
G((q&!r&Fr)->(!p U (s|r)))
G(q&!r->((!p U (s|r))|G!p))
Fr->(p->(!r U (s&!r))) U r
G((q&!r&Fr)->(p->(!r U (s&!r))) U r)
Fp->(!p U (s&!p&X(!p U t)))
Fr->(!p U (r|(s&!p&X(!p U t))))
(G!q)|(!q U (q&Fp->(!p U (s&!p&X(!p U t)))))
G((q&Fr)->(!p U (r|(s&!p&X(!p U t)))))
G(q->(Fp->(!p U (r|(s&!p&X(!p U t))))))
(F(s&XFt))->((!s) U p)
Fr->((!(s&(!r)&X(!r U (t&!r))))U(r|p))
(G!q)|((!q)U(q&((F(s&XFt))->((!s) U p))))
G((q&Fr)->((!(s&(!r)&X(!r U (t&!r))))U(r|p)))
G(q->(!(s&(!r)&X(!r U (t&!r)))U(r|p)|G(!(s&XFt))))
Fr->(s&X(!r U t)->X(!r U (t&Fp))) U r
Fr->(p->(!r U (s&!r&X(!r U t)))) U r
G((q&Fr)->(p->(!r U (s&!r&X(!r U t)))) U r)
Fr->(p->(!r U (s&!r&!z&X((!r&!z) U t)))) U r
G((q&Fr)->(p->(!r U (s&!r&!z&X((!r&!z) U t)))) U r)
EOF
(
line=0
echo "# form. nbr., states, trans., states minimized, trans. minimized, formula"
while read f; do
"$LTL2TGBA" -f -r7 -R3 -DS -k "!($f)" >out
states=`sed -n 's/^states: \([0-9]*\)$/\1/p' out`
transitions=`sed -n 's/^transitions: \([0-9]*\)$/\1/p' out`
"$LTL2TGBA" -f -r1 -R3 -Rm -k "!($f)" >out
states2=`sed -n 's/^states: \([0-9]*\)$/\1/p' out`
transitions2=`sed -n 's/^transitions: \([0-9]*\)$/\1/p' out`
line=`expr $line + 1`
echo "$line, $states, $transitions, $states2, $transitions2, !($f)"
done < obligations.txt
) | tee results.txt
rm -f out obligations.txt

View file

@ -92,6 +92,8 @@ AC_CONFIG_FILES([
bench/ltl2tgba/defs bench/ltl2tgba/defs
bench/scc-stats/Makefile bench/scc-stats/Makefile
bench/split-product/Makefile bench/split-product/Makefile
bench/wdba/Makefile
bench/wdba/defs
doc/Doxyfile doc/Doxyfile
doc/Makefile doc/Makefile
iface/gspn/defs iface/gspn/defs