In very rare cases, quantifiers engine can be the first to detect a quantifier-free conflict while constructing term indices. When this occurs, instantiation modules can quit immediately. This was not happening in a case of enumerative instantiation.
Fixes #4293.
{
return;
}
+ Assert(!d_quantEngine->inConflict());
double clSet = 0;
if (Trace.isOn("fs-engine"))
{
}
// added lemma
addedLemmas++;
- if (d_quantEngine->inConflict())
- {
- break;
- }
+ }
+ if (d_quantEngine->inConflict())
+ {
+ break;
}
}
}
{
index--;
}
+ if (d_quantEngine->inConflict())
+ {
+ // could be conflicting for an internal reason (such as term
+ // indices computed in above calls)
+ return false;
+ }
}
} while (success);
max_i++;
<< " Theory engine finished : " << !theoryEngineNeedsCheck()
<< std::endl;
Trace("quant-engine-debug") << " Needs model effort : " << needsModelE << std::endl;
+ Trace("quant-engine-debug")
+ << " In conflict : " << d_conflict << std::endl;
}
if( Trace.isOn("quant-engine-ee-pre") ){
Trace("quant-engine-ee-pre") << "Equality engine (pre-inference): " << std::endl;