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:
Alexandre Duret-Lutz 2012-06-20 14:45:25 +02:00
parent 1f384c2c63
commit 536e45b342
14 changed files with 143 additions and 57 deletions

View file

@ -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)

View file

@ -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]}"]

View file

@ -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 {

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 |

View file

@ -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