More simplifications rules for M.

* src/ltlvisit/reduce.cc (reduce_visitor): Add the following
implication rewriting rules:
a M (b M c) = a M c if a implies b.
a M (b R c) = a M c if a implies b.
a R (b R c) = a R c if a implies b.
a R (b M c) = b M c if b implies a.
a M (b M c) = b M c if b implies a.
The latter rule was fixed from an incorrectly copied&pasted
rule for a M (b R c) = b R c if b implies a (this is wrong).
* src/ltltest/reduccmp.test: Add more tests.
This commit is contained in:
Alexandre Duret-Lutz 2010-04-15 13:01:21 +02:00
parent 946f305f7c
commit 1a91208933
3 changed files with 56 additions and 5 deletions

View file

@ -143,6 +143,16 @@ for x in ../reduccmp ../reductaustr; do
;;
esac
# Syntactic implication
run 0 $x '(a & b) R (a R c)' '(a & b)R c'
run 0 $x 'a R ((a & b) R c)' '(a & b)R c'
run 0 $x 'a R ((a & b) M c)' '(a & b)M c'
run 0 $x 'a M ((a & b) M c)' '(a & b)M c'
run 0 $x '(a & b) M (a R c)' '(a & b)M c'
run 0 $x '(a & b) M (a M c)' '(a & b)M c'
run 0 $x 'a M ((a&b) R c)' 'a M ((a&b) R c)' #not reduced.
run 0 $x '(a&b) W (a U c)' '(a&b) W (a U c)' #not reduced.
# Eventuality and universality class reduction
run 0 $x 'FFa' 'Fa'
run 0 $x 'FGFa' 'GFa'