Commit edc71b80 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

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.
parent aadef1fd
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>
* NEWS: Update the news about minimization.
......
......@@ -21,6 +21,9 @@ New in spot 0.6a:
formulae has been integrated. Use ltl2tgba -Rm to enable this
optimization; 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.
* New ltl2tgba options:
-XN: read an input automaton as a neverclaim.
-C, -CR: Compute (and display) a counterexample after running the
......
......@@ -22,4 +22,4 @@
## 02111-1307, USA.
SUBDIRS = emptchk gspn-ssp ltl2tgba scc-stats split-product ltlcounter \
ltlclasses
ltlclasses wdba
# 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
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.
# -*- shell-script -*-
# Copyright (C) 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
# dpartement Systmes Rpartis Coopratifs (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
#!/bin/sh
# Copyright (C) 2010 Laboratoire de Recherche et Dveloppement
# 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
......@@ -92,6 +92,8 @@ AC_CONFIG_FILES([
bench/ltl2tgba/defs
bench/scc-stats/Makefile
bench/split-product/Makefile
bench/wdba/Makefile
bench/wdba/defs
doc/Doxyfile
doc/Makefile
iface/gspn/defs
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment