ltlsynt: fix --global-equiv

Fixes #557.

* spot/tl/apcollect.cc (realizability_simplifier): When detecting
global equivalence such as o1 := i2, the left is always an output, so
it should never be marked as input.
* tests/core/ltlsynt.test: Add test case.
This commit is contained in:
Alexandre Duret-Lutz 2024-01-26 22:31:17 +01:00
parent 690e5a213d
commit dc5a569582
2 changed files with 13 additions and 3 deletions

View file

@ -1109,4 +1109,14 @@ diff out expected
f1="((G ((p0) <-> (! (p1)))) && (((((F ((b) && (G (F (a))))) ||\
(F ((c) && (G (F (! (a))))))) && (F (b))) && (F (c))) <-> (G (F (p0)))))"
ltlsynt -f "$f1" --outs="p1, p0" --aiger > /dev/null
ltlsynt -f "$f1" --outs="p1, p0" --aiger > /dev/null
# issue #557
ltlsynt -f 'G(in1 <-> out0) & G(in0 <-> out1)' --ins=in1,in0 --verb 2>err >out
grep := err > err2
cat >err2.ex <<EOF
out0 := in1
out1 := in0
EOF
diff err2 err2.ex
grep -F '[!0&!1&!2&!3 | !0&!1&2&3 | 0&1&!2&!3 | 0&1&2&3] 0' out