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:
parent
690e5a213d
commit
dc5a569582
2 changed files with 13 additions and 3 deletions
|
|
@ -411,9 +411,9 @@ namespace spot
|
|||
continue;
|
||||
SPOT_ASSUME(lit != nullptr);
|
||||
if (lit.is(spot::op::Not))
|
||||
add_to_mapping(lit[0], repr_is_input, not_repr);
|
||||
add_to_mapping(lit[0], false, not_repr);
|
||||
else
|
||||
add_to_mapping(lit, repr_is_input, repr);
|
||||
add_to_mapping(lit, false, repr);
|
||||
rm_has_new_terms = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue