This PR fixes a proof for an xor term that failed to eliminate a double negation.
Fixes cvc5/cvc5-projects#304
}
if (x)
{
- return mkResolution(
+ return mkNot(mkResolution(
mkProof(negated ? PfRule::NOT_XOR_ELIM2 : PfRule::XOR_ELIM2,
{assume(negated ? parent.notNode() : Node(parent))}),
parent[0],
- false);
+ false));
}
return mkNot(
mkResolution(mkProof(negated ? PfRule::NOT_XOR_ELIM1 : PfRule::XOR_ELIM1,
regress0/preprocess/preprocess_13.cvc.smt2
regress0/preprocess/preprocess_14.cvc.smt2
regress0/preprocess/preprocess_15.cvc.smt2
+ regress0/preprocess/proj-issue304-circuit-prop-xor.smt2
regress0/preprocess/proj-issue305-circuit-prop-ite.smt2
regress0/print_define_fun_internal.smt2
regress0/print_lambda.cvc.smt2
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :check-proofs true)
+(declare-const a Bool)
+(declare-const b Bool)
+(assert b)
+(assert (xor b (not a)))
+(check-sat)