namespace arith {
namespace nl {
-SplitZeroCheck::SplitZeroCheck(ExtState* data, context::Context* ctx)
- : d_data(data), d_zero_split(ctx)
+SplitZeroCheck::SplitZeroCheck(ExtState* data)
+ : d_data(data), d_zero_split(d_data->d_ctx)
{
}
Node v = d_data->d_ms_vars[i];
if (d_zero_split.insert(v))
{
- Node eq = v.eqNode(d_data->d_zero);
- eq = Rewriter::rewrite(eq);
+ Node eq = Rewriter::rewrite(v.eqNode(d_data->d_zero));
+ Node lem = eq.orNode(eq.negate());
+ CDProof* proof = nullptr;
+ if (d_data->isProofEnabled())
+ {
+ proof = d_data->getProof();
+ proof->addStep(lem, PfRule::SPLIT, {}, {eq});
+ }
d_data->d_im.addPendingPhaseRequirement(eq, true);
- ArithLemma lem(eq.orNode(eq.negate()),
- LemmaProperty::NONE,
- nullptr,
- InferenceId::NL_SPLIT_ZERO);
- d_data->d_im.addPendingArithLemma(lem);
+ d_data->d_im.addPendingArithLemma(lem, InferenceId::NL_SPLIT_ZERO, proof);
}
}
}
} // namespace nl
} // namespace arith
} // namespace theory
-} // namespace CVC4
\ No newline at end of file
+} // namespace CVC4
d_factoringSlv(d_im, d_model),
d_monomialBoundsSlv(&d_extState),
d_monomialSlv(&d_extState),
- d_splitZeroSlv(&d_extState, state.getUserContext()),
+ d_splitZeroSlv(&d_extState),
d_tangentPlaneSlv(&d_extState),
d_cadSlv(d_im, d_model),
d_icpSlv(d_im),