Arrange multops so that Boolean arguments come first.
This helps recursive implication checks. Also order atomic propositions with strverscmp(). * src/ltlast/formula.hh (formula_ptr_less_than_multop, is_literal, atomic_prop_cmp): New. * src/ltlast/formula.cc (is_literal, atomic_prop_cmp): Implement them. * src/ltlast/multop.cc: Use formula_ptr_less_than_multop. * src/ltltest/isop.test, src/ltltest/ltlfilt.test, src/tgbatest/det.test, src/tgbatest/dstar.test, src/tgbatest/explicit.test, src/tgbatest/explpro2.test, src/tgbatest/explpro3.test, src/tgbatest/explprod.test, src/tgbatest/nondet.test, src/tgbatest/tripprod.test: Adjust tests. * NEWS: Mention the new order.
This commit is contained in:
parent
1f384c2c63
commit
536e45b342
14 changed files with 143 additions and 57 deletions
|
|
@ -24,13 +24,13 @@ set -e
|
|||
ltl2tgba=../../bin/ltl2tgba
|
||||
|
||||
cat >formulas <<'EOF'
|
||||
1,14,X((a M F((!c & !b) | (c & b))) W (G!c U b))
|
||||
1,14,X((a M F((!b & !c) | (b & c))) W (G!c U b))
|
||||
1,5,X(((a & b) R (!a U !c)) R b)
|
||||
1,10,XXG(Fa U Xb)
|
||||
1,5,(!a M !b) W F!c
|
||||
1,3,(b & Fa & GFc) R a
|
||||
1,2,(a R (b W a)) W G(!a M (c | b))
|
||||
1,11,(Fa W b) R (Fc | !a)
|
||||
1,2,(a R (b W a)) W G(!a M (b | c))
|
||||
1,11,(Fa W b) R (!a | Fc)
|
||||
1,7,X(G(!a M !b) | G(a | G!a))
|
||||
1,2,Fa W Gb
|
||||
1,3,Ga | GFb
|
||||
|
|
@ -49,7 +49,7 @@ cat >formulas <<'EOF'
|
|||
1,4,X(Gb | GFa)
|
||||
1,9,X(Gc | XG((b & Ga) | (!b & F!a)))
|
||||
1,2,Ga R Fb
|
||||
1,3,G(a U (b | X((!c & !a) | (a & c))))
|
||||
1,3,G(a U (b | X((!a & !c) | (a & c))))
|
||||
1,5,XG((G!a & F!b) | (Fa & (a | Gb)))
|
||||
1,10,(a U X!a) | XG(!b & XFc)
|
||||
1,4,X(G!a | GFa)
|
||||
|
|
|
|||
|
|
@ -216,7 +216,7 @@ digraph G {
|
|||
1 [label="1"]
|
||||
1 -> 2 [label="!a & !b\n"]
|
||||
1 -> 3 [label="a & !b\n"]
|
||||
1 -> 4 [label="b & !a\n"]
|
||||
1 -> 4 [label="!a & b\n"]
|
||||
1 -> 5 [label="a & b\n"]
|
||||
2 [label="2"]
|
||||
2 -> 2 [label="!b\n"]
|
||||
|
|
@ -224,7 +224,7 @@ digraph G {
|
|||
3 [label="4", peripheries=2]
|
||||
3 -> 2 [label="!a & !b\n{Acc[1]}"]
|
||||
3 -> 3 [label="a & !b\n{Acc[1]}"]
|
||||
3 -> 4 [label="b & !a\n{Acc[1]}"]
|
||||
3 -> 4 [label="!a & b\n{Acc[1]}"]
|
||||
3 -> 5 [label="a & b\n{Acc[1]}"]
|
||||
4 [label="3", peripheries=2]
|
||||
4 -> 4 [label="1\n{Acc[1]}"]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2008, 2009 Laboratoire de Recherche et Développement
|
||||
# Copyright (C) 2008, 2009, 2013 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
# Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de
|
||||
# Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
set -e
|
||||
|
||||
run 0 ../explicit | sed 's/c & b/b \& c/' > stdout
|
||||
run 0 ../explicit > stdout
|
||||
|
||||
cat >expected <<EOF
|
||||
digraph G {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2013 Laboratoire de Recherche et Développement de
|
||||
# l'Epita (LRDE).
|
||||
# Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009 Laboratoire
|
||||
# d'Informatique de Paris 6 (LIP6), département Systèmes Répartis
|
||||
# Coopératifs (SRC), Université Pierre et Marie Curie.
|
||||
|
|
@ -37,13 +39,10 @@ EOF
|
|||
|
||||
cat >expected <<'EOF'
|
||||
acc = "p2$1" "p3" "p2" "p1";
|
||||
"s1 * s1", "s2 * s2", "b & !a", "p2$1" "p1";
|
||||
"s1 * s1", "s2 * s2", "!a & b", "p2$1" "p1";
|
||||
"s1 * s1", "s3 * s3", "a & !b", "p3" "p2";
|
||||
EOF
|
||||
|
||||
run 0 ../explprod input1 input2 |
|
||||
sed 's/!a & b/b \& !a/;s/!b & a/a \& !b/'> stdout
|
||||
|
||||
cat stdout
|
||||
run 0 ../explprod input1 input2 | tee stdout
|
||||
diff stdout expected
|
||||
rm input1 input2 stdout expected
|
||||
|
|
|
|||
|
|
@ -43,13 +43,7 @@ acc = "p2" "p3";
|
|||
"s1 * s1", "s3 * s3", "a & !b", "p3";
|
||||
EOF
|
||||
|
||||
run 0 ../explprod input1 input2 > stdout
|
||||
|
||||
# Sort out some possible inversions in the output.
|
||||
# (The order is not guaranteed by SPOT.)
|
||||
sed 's/"p3" "p2"/"p2" "p3"/g;s/!b & a/a \& !b/g;
|
||||
s/b & !a/!a \& b/g' stdout > tmp_ && mv tmp_ stdout
|
||||
|
||||
cat stdout
|
||||
run 0 ../explprod input1 input2 |
|
||||
sed 's/"p3" "p2"/"p2" "p3"/g' | tee stdout
|
||||
diff stdout expected
|
||||
rm input1 input2 stdout expected
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2008, 2009 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
# Copyright (C) 2008, 2009, 2013 Laboratoire de Recherche et
|
||||
# Développement de l'Epita (LRDE).
|
||||
# Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de
|
||||
# Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
# Université Pierre et Marie Curie.
|
||||
|
|
@ -46,9 +46,6 @@ acc = "p3" "p2" "p1";
|
|||
"s2 * s2", "s3 * s1", "a & c", "p3" "p1";
|
||||
EOF
|
||||
|
||||
run 0 ../explprod input1 input2 |
|
||||
sed 's/b & a/a \& b/;s/c & a/a \& c/' > stdout
|
||||
|
||||
cat stdout
|
||||
run 0 ../explprod input1 input2 | tee stdout
|
||||
diff stdout expected
|
||||
rm input1 input2 stdout expected
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ cat >expected.1<<EOF
|
|||
FGa, 0 0
|
||||
GFa, 1 1
|
||||
a U b, 1 0
|
||||
G(Fa | !r) | Fx, 0 1
|
||||
G(!r | Fa) | Fx, 0 1
|
||||
EOF
|
||||
|
||||
cut -d, -f1 expected.1 |
|
||||
|
|
@ -36,7 +36,7 @@ cat >expected.2<<EOF
|
|||
FGa, 0 1
|
||||
GFa, 1 1
|
||||
a U b, 1 1
|
||||
G(Fa | !r) | Fx, 0 1
|
||||
G(!r | Fa) | Fx, 0 1
|
||||
EOF
|
||||
|
||||
cut -d, -f1 expected.2 |
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2008, 2009 Laboratoire de Recherche et Développement
|
||||
# Copyright (C) 2008, 2009, 2013 Laboratoire de Recherche et Développement
|
||||
# de l'Epita (LRDE).
|
||||
# Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de
|
||||
# Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
|
|
@ -57,9 +57,6 @@ acc = "p4" "p3" "p2" "p1";
|
|||
"s2 * s2 * s3", "s3 * s1 * s2", "a & c", "p4" "p3";
|
||||
EOF
|
||||
|
||||
run 0 ../tripprod input1 input2 input3 |
|
||||
sed 's/b & a/a \& b/;s/c & a/a \& c/'> stdout
|
||||
|
||||
cat stdout
|
||||
run 0 ../tripprod input1 input2 input3 | tee stdout
|
||||
diff stdout expected
|
||||
rm input1 input2 input3 stdout expected
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue