This is necessary for the planned refactoring of TheoryInference::process. This forces datatypes to decide lemma vs. fact prior to buffering inferences.
{
// Check to see if we have to communicate it to the rest of the system.
// The flag asLemma is true when the inference was marked that it must be
- // sent as a lemma in addPendingInference below.
- if (asLemma || mustCommunicateFact(d_conc, d_exp))
+ // sent as a lemma.
+ if (asLemma)
{
return d_im->processDtLemma(d_conc, d_exp, getId());
}
bool forceLemma,
InferenceId i)
{
- if (forceLemma)
+ // if we are forcing the inference to be processed as a lemma, or if the
+ // inference must be sent as a lemma based on the policy in
+ // mustCommunicateFact.
+ if (forceLemma || DatatypesInference::mustCommunicateFact(conc, exp))
{
d_pendingLem.emplace_back(new DatatypesInference(this, conc, exp, i));
}