This PR follows #7452 and fixes the proofs generated for backward propagation of negated ite terms.
true);
}
return mkResolution(
- mkProof(PfRule::NOT_ITE_ELIM2, {assume(d_parent.notNode())}),
+ mkProof(c == 0 ? PfRule::NOT_ITE_ELIM1 : PfRule::NOT_ITE_ELIM2,
+ {assume(d_parent.notNode())}),
d_parent[c + 1],
false);
}
regress0/preprocess/proj-issue304-circuit-prop-xor.smt2
regress0/preprocess/proj-issue305-circuit-prop-ite-a.smt2
regress0/preprocess/proj-issue305-circuit-prop-ite-b.smt2
+ regress0/preprocess/proj-issue305-circuit-prop-ite-c.smt2
+ regress0/preprocess/proj-issue305-circuit-prop-ite-d.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-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(assert (not (ite a b c)))
+(assert b)
+(assert (not c))
+(check-sat)
\ No newline at end of file
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :check-proofs true)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(assert (not (ite a b c)))
+(assert c)
+(assert (not b))
+(check-sat)
\ No newline at end of file