simplifier: add two new rules

Fixes #354.

* spot/tl/simplify.cc: Implement the rules.
* doc/tl/tl.tex, NEWS: Document them.
* tests/core/reduccmp.test: Add tests.
* tests/core/det.test, tests/core/satmin.test: Adjust.
This commit is contained in:
Alexandre Duret-Lutz 2018-06-04 13:49:40 +02:00
parent 8e3b982985
commit ca1c67a73d
6 changed files with 51 additions and 29 deletions

View file

@ -36,7 +36,7 @@ cat >formulas <<'EOF'
1,5,a M G(F!b | X!a)
1,4,G!a R XFb
1,4,XF(!a | GFb)
1,6,GF!a U Xa
1,5,X(GF!a U a)
1,5,(a | G(a M !b)) W Fc
1,6,Fa W Xb
1,9,X(a R ((!b & F!c) M X!a))

View file

@ -192,7 +192,11 @@ GFa <=> GFb, F(G(Fa&Fb)|G(!a&!b))
FGa | (GFa & GFb), F(Ga | (G(Fa & Fb)))
Gb W a, Gb|a
a W Fb, a W Fb
Fb M Fa, Fa & Fb
a M Gb, a M Gb
GFa R Xf, X(GFa R f)
GFa U Xf, X(GFa U f)
a U (b | G(a) | c), a W (b | c)
a U (G(a)), Ga

View file

@ -1140,8 +1140,8 @@ cat >expected <<'EOF'
"!(X(F((!(p0)) | (G(F(p1))))))","15",3
"!(X(F((!(p0)) | (G(F(p1))))))","16",3
"!(X(F((!(p0)) | (G(F(p1))))))","17",3
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","1",6
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","2",6
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","1",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","2",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","3",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","4",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","6",5
@ -1156,22 +1156,22 @@ cat >expected <<'EOF'
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","15",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","16",5
"(G((F(!(p0))) U (!(p0)))) U (X(p0))","17",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","1",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","2",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","3",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","4",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","6",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","7",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","8",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","9",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","10",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","11",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","12",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","13",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","14",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","15",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","16",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","17",5
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","1",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","2",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","3",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","4",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","6",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","7",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","8",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","9",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","10",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","11",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","12",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","13",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","14",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","15",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","16",4
"!((G((F(!(p0))) U (!(p0)))) U (X(p0)))","17",4
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","1",4
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","2",5
"((p0) | (G((p0) M (!(p1))))) W (F(p2))","3",4