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

@ -33,9 +33,9 @@ run 0 ../../bin/ltlfilt --boolean-to-isop input > output
cat> expected<<EOF
(!a & !b) | (b & d)
(b | !a) & (d | !b) & Xc
(!a | b) & (!b | d) & Xc
GF(b | (a & d))
{{{{!a && !b} | {b && d}}}[*];a[*]}<>-> ((a & !b) | (b & !a))
{{{{!a && !b} | {b && d}}}[*];a[*]}<>-> ((!a & b) | (a & !b))
EOF
cat output
@ -46,9 +46,9 @@ run 0 ../../bin/ltlfilt input > output
cat> expected<<EOF
(a -> b) & (b -> d)
(a -> b) & Xc & (b -> d)
(a -> b) & (b -> d) & Xc
GF((a | b) & (b | d))
{{{{a -> b} && {b -> d}}}[*];a[*]}<>-> ((a | b) & (!b | !a))
{{{{a -> b} && {b -> d}}}[*];a[*]}<>-> ((a | b) & (!a | !b))
EOF
cat output

View file

@ -90,7 +90,7 @@ b W GFa
Fb
G(a & Xb)
Xa
F(a & X(b & !a))
F(a & X(!a & b))
a & (b | c)
EOF
@ -98,7 +98,7 @@ checkopt --simplify --eventual --unique <<EOF
F(GFa | Gb)
F(b W GFa)
Fb
F(a & X(b & !a))
F(a & X(!a & b))
EOF
checkopt --safety <<EOF