This PR fixes another double negation issue in the circuit propagator.
Fixes cvc5/cvc5-projects#332.
parent[1],
false));
}
- return mkResolution(
- mkProof(negated ? PfRule::NOT_XOR_ELIM2 : PfRule::XOR_ELIM1,
- {assume(negated ? parent.notNode() : Node(parent))}),
- parent[1],
- true);
+ return mkNot(
+ mkResolution(mkProof(negated ? PfRule::NOT_XOR_ELIM2 : PfRule::XOR_ELIM1,
+ {assume(negated ? parent.notNode() : Node(parent))}),
+ parent[1],
+ true));
}
std::shared_ptr<ProofNode> ProofCircuitPropagator::xorYFromX(bool negated,
regress0/preprocess/proj-issue305-circuit-prop-ite-c.smt2
regress0/preprocess/proj-issue305-circuit-prop-ite-d.smt2
regress0/preprocess/proj-issue309-circuit-prop-ite.smt2
+ regress0/preprocess/proj-issue332-circuit-prop-xor.smt2
regress0/print_define_fun_internal.smt2
regress0/print_lambda.cvc.smt2
regress0/print_model.cvc.smt2
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :check-proofs true)
+(declare-const x Real)
+(declare-const x4 Real)
+(declare-const x8 Bool)
+(assert (<= x4 x))
+(assert (not (xor (> x4 x) x8)))
+(check-sat)