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

Adjust the WDBA test to count for sub-transitions.

* bench/wdba/run: Use -kt to count sub-transitions.
* bench/wdba/README: Adjust comments.
parent baf1288d
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 ...@@ -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.
#!/bin/sh #!/bin/sh
# Copyright (C) 2010 Laboratoire de Recherche et Dveloppement # Copyright (C) 2010, 2011 Laboratoire de Recherche et Dveloppement
# 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,15 +68,15 @@ EOF ...@@ -68,15 +68,15 @@ 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)"
done < obligations.txt done < obligations.txt
) | tee results.txt ) | tee results.txt
......
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