Adjust the WDBA test to count for sub-transitions.
* bench/wdba/run: Use -kt to count sub-transitions. * bench/wdba/README: Adjust comments.
This commit is contained in:
parent
baf1288dc6
commit
964c2bed43
3 changed files with 64 additions and 48 deletions
|
|
@ -1,3 +1,10 @@
|
||||||
|
2011-02-08 Alexandre Duret-Lutz <adl@lrde.epita.fr>
|
||||||
|
|
||||||
|
Adjust the WDBA test to count for sub-transitions.
|
||||||
|
|
||||||
|
* bench/wdba/run: Use -kt to count sub-transitions.
|
||||||
|
* bench/wdba/README: Adjust comments.
|
||||||
|
|
||||||
2011-02-08 Alexandre Duret-Lutz <adl@lrde.epita.fr>
|
2011-02-08 Alexandre Duret-Lutz <adl@lrde.epita.fr>
|
||||||
|
|
||||||
Fix a spurious g++ warning observed on Darwin builds.
|
Fix a spurious g++ warning observed on Darwin builds.
|
||||||
|
|
|
||||||
|
|
@ -28,58 +28,67 @@ Running the `./run' script should produce an output similar to the
|
||||||
following:
|
following:
|
||||||
|
|
||||||
# form. nbr., states, trans., states minimized, trans. minimized, formula
|
# form. nbr., states, trans., states minimized, trans. minimized, formula
|
||||||
1, 2, 3, 2, 3, !(G(!p))
|
1, 2, 4, 2, 4, !(G(!p))
|
||||||
2, 3, 5, 3, 5, !(Fr->(!p U r))
|
2, 3, 10, 3, 10, !(Fr->(!p U r))
|
||||||
3, 3, 6, 3, 6, !(G(q->G(!p)))
|
3, 3, 13, 3, 12, !(G(q->G(!p)))
|
||||||
4, 4, 8, 4, 9, !(G((q&!r&Fr)->(!p U r)))
|
4, 4, 30, 4, 32, !(G((q&!r&Fr)->(!p U r)))
|
||||||
5, 3, 6, 3, 7, !(G(q&!r->((!p U r)|G!p)))
|
5, 3, 21, 3, 24, !(G(q&!r->((!p U r)|G!p)))
|
||||||
6, 1, 1, 1, 1, !(Fp)
|
6, 1, 1, 1, 1, !(Fp)
|
||||||
7, 2, 3, 2, 3, !((!r U (p&!r))|(G!r))
|
7, 2, 7, 2, 7, !((!r U (p&!r))|(G!r))
|
||||||
8, 2, 3, 2, 3, !(G(!q)|F(q&Fp))
|
8, 2, 5, 2, 5, !(G(!q)|F(q&Fp))
|
||||||
9, 3, 5, 3, 6, !(G(q&!r->((!r U (p&!r))|G!r)))
|
9, 3, 23, 3, 24, !(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)
|
10, 6, 12, 6, 12, !((!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))))))))))
|
11, 7, 18, 7, 18, !(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))))
|
12, 7, 28, 7, 28, !(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)))))))))))
|
13, 8, 46, 8, 64, !(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))))))))))
|
14, 7, 38, 7, 56, !(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))
|
15, 2, 4, 2, 4, !(G(p))
|
||||||
16, 3, 5, 3, 5, !(Fr->(p U r))
|
16, 3, 10, 3, 10, !(Fr->(p U r))
|
||||||
17, 3, 6, 3, 6, !(G(q->G(p)))
|
17, 3, 13, 3, 12, !(G(q->G(p)))
|
||||||
18, 4, 7, 4, 8, !(G((p&!r&Fr)->(p U r)))
|
18, 4, 15, 4, 16, !(G((p&!r&Fr)->(p U r)))
|
||||||
19, 3, 6, 3, 7, !(G(q&!r->((p U r)|Gp)))
|
19, 3, 21, 3, 24, !(G(q&!r->((p U r)|Gp)))
|
||||||
20, 4, 7, 4, 7, !((!p U s)|Gp)
|
20, 4, 12, 4, 12, !((!p U s)|Gp)
|
||||||
21, 3, 5, 3, 5, !(Fr->(!p U (s|r)))
|
21, 3, 18, 3, 18, !(Fr->(!p U (s|r)))
|
||||||
22, 4, 8, 4, 9, !(G((q&!r&Fr)->(!p U (s|r))))
|
22, 4, 54, 4, 64, !(G((q&!r&Fr)->(!p U (s|r))))
|
||||||
23, 3, 6, 3, 7, !(G(q&!r->((!p U (s|r))|G!p)))
|
23, 3, 37, 3, 48, !(G(q&!r->((!p U (s|r))|G!p)))
|
||||||
24, 3, 5, 3, 6, !(Fr->(p->(!r U (s&!r))) U r)
|
24, 3, 19, 3, 20, !(Fr->(p->(!r U (s&!r))) U r)
|
||||||
25, 4, 8, 4, 10, !(G((q&!r&Fr)->(p->(!r U (s&!r))) U r))
|
25, 4, 59, 4, 64, !(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))))
|
26, 3, 20, 3, 20, !(Fp->(!p U (s&!p&X(!p U t))))
|
||||||
27, 4, 8, 4, 8, !(Fr->(!p U (r|(s&!p&X(!p U t)))))
|
27, 4, 44, 4, 44, !(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))))))
|
28, 4, 48, 4, 48, !((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))))))
|
29, 5, 128, 5, 160, !(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)))))))
|
30, 4, 92, 4, 128, !(G(q->(Fp->(!p U (r|(s&!p&X(!p U t)))))))
|
||||||
31, 4, 8, 3, 5, !((F(s&XFt))->((!s) U p))
|
31, 4, 34, 3, 20, !((F(s&XFt))->((!s) U p))
|
||||||
32, 4, 7, 4, 7, !(Fr->((!(s&(!r)&X(!r U (t&!r))))U(r|p)))
|
32, 4, 46, 4, 44, !(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)))))
|
33, 5, 82, 4, 52, !((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))))
|
34, 5, 130, 5, 160, !(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)))))
|
35, 10, 254, 4, 128, !(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)
|
36, 4, 36, 5, 50, !(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)
|
37, 4, 52, 4, 52, !(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))
|
38, 5, 148, 5, 160, !(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)
|
39, 4, 104, 4, 104, !(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))
|
40, 5, 296, 5, 320, !(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 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 number displayed at http://www.daxc.de/eth/atva07/index.html.
|
||||||
The second and third numbers give the number of states and transition
|
The second and third numbers give the number of states and transitions
|
||||||
of the automaton produced by Spot (with formula simplifications and SCC
|
of the automaton produced by Spot (with formula simplifications and SCC
|
||||||
simplifications turned on), while the fourth and fifth number show the
|
simplifications turned on), while the fourth and fifth number show the
|
||||||
number of states and transitions with an additional WDBA minimization step.
|
number of states and transitions with an additional WDBA minimization step.
|
||||||
|
|
||||||
|
When counting transitions, we are actually counting the number of
|
||||||
|
"sub-transitions". That is, on an automaton defined over two atomic
|
||||||
|
properties "p" and "q", a transition labelled by "p" actually stands
|
||||||
|
for two sub-transitions labelled by "p&q" and "p&!q". So we are
|
||||||
|
counting it as two transitions.
|
||||||
|
|
||||||
You can observe that some minimized automata have more transitions:
|
You can observe that some minimized automata have more transitions:
|
||||||
this is because they have become deterministic. There is even one
|
this is because their structure changed when they where determinized.
|
||||||
case where the minimized automaton got one more state (formula 36).
|
Even though they have the same number of states as the non-minimized
|
||||||
|
automaton, the states do not accept the same language. There is even
|
||||||
|
one case (formula 36) where the minimized automaton got one more
|
||||||
|
state.
|
||||||
|
|
||||||
In two cases (formulae 31 and 35) the minimization actually removed
|
In two cases (formulae 31 and 35) the minimization actually removed
|
||||||
states in addition to making the automata deterministic.
|
states in addition to making the automata deterministic.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Copyright (C) 2010 Laboratoire de Recherche et Développement
|
# Copyright (C) 2010, 2011 Laboratoire de Recherche et Développement
|
||||||
# de 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.
|
||||||
|
|
@ -68,13 +68,13 @@ EOF
|
||||||
line=0
|
line=0
|
||||||
echo "# form. nbr., states, trans., states minimized, trans. minimized, formula"
|
echo "# form. nbr., states, trans., states minimized, trans. minimized, formula"
|
||||||
while read f; do
|
while read f; do
|
||||||
"$LTL2TGBA" -f -r7 -R3 -DS -k "!($f)" >out
|
"$LTL2TGBA" -f -r7 -x -R3 -DS -kt "!($f)" >out
|
||||||
states=`sed -n 's/^states: \([0-9]*\)$/\1/p' out`
|
states=`sed -n 's/^states: \([0-9]*\)$/\1/p' out`
|
||||||
transitions=`sed -n 's/^transitions: \([0-9]*\)$/\1/p' out`
|
transitions=`sed -n 's/^sub trans.: \([0-9]*\)$/\1/p' out`
|
||||||
|
|
||||||
"$LTL2TGBA" -f -r1 -R3 -Rm -k "!($f)" >out
|
"$LTL2TGBA" -f -r1 -R3 -Rm -kt "!($f)" >out
|
||||||
states2=`sed -n 's/^states: \([0-9]*\)$/\1/p' out`
|
states2=`sed -n 's/^states: \([0-9]*\)$/\1/p' out`
|
||||||
transitions2=`sed -n 's/^transitions: \([0-9]*\)$/\1/p' out`
|
transitions2=`sed -n 's/^sub trans.: \([0-9]*\)$/\1/p' out`
|
||||||
|
|
||||||
line=`expr $line + 1`
|
line=`expr $line + 1`
|
||||||
echo "$line, $states, $transitions, $states2, $transitions2, !($f)"
|
echo "$line, $states, $transitions, $states2, $transitions2, !($f)"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue