Fix handling of 1 in trivial identities for rational operators.
Especially, 1&f and 1:f were mistakenly always reduced to f, which is incorrect when f accept the empty word. * src/ltlast/multop.cc: Here. * src/ltlast/multop.hh, doc/tl/tl.tex: Adjust documentation. * src/ltltest/equals.test: Add more tests.
This commit is contained in:
parent
691119c188
commit
5bea6e4950
4 changed files with 91 additions and 37 deletions
|
|
@ -149,6 +149,17 @@ run 0 ../equals '{{a;b}:b:c:d*:e:f}!' '{{a;b}:{b && c }:d[*]:{e && f}}!'
|
|||
run 0 ../equals '{a:b:c}|->!Xb' '!(a&&b&&c) | !Xb'
|
||||
run 0 ../equals '{a:b:c*}|->!Xb' '{(a&&b):c*}|-> !Xb'
|
||||
run 0 ../equals '{a&b&c*}|->!Xb' '{(a&&b)&c*}|-> !Xb'
|
||||
run 0 ../equals '{0&{f;g*}}!' '0'
|
||||
run 0 ../equals '{1&{f;g*}}!' '{f;g*}!'
|
||||
# 1 should not be removed in the following two formulae
|
||||
run 1 ../equals '{1&{g*}}!' '{g*}!'
|
||||
run 1 ../equals '{1|{b;c}}<>->a' '{b;c}<>->a'
|
||||
run 0 ../equals '{1:{a;b}:1:c*}!' '{{a;b}:c*}!'
|
||||
run 0 ../equals '{c*:1:{a;b}:1}!' '{c*:{a;b}}!'
|
||||
# make sure twin arguments are not reduced in Fusion.
|
||||
run 1 ../equals '{(a;!a)*:(a;!a)*:b}!' '{(a;!a)*:b}!'
|
||||
# make sure 1:a* is not reduced to a*.
|
||||
run 1 ../equals '{(1:a*);b}!' '{a*;b}!'
|
||||
|
||||
run 0 ../equals '{a[*0]}' '{[*0]}'
|
||||
run 0 ../equals '{a[*..]}' '{a[*]}'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue