Node CoreSolver::getModelValue(TNode var) {
Assert (isComplete());
- Assert (d_modelValues.find(var) != d_modelValues.end());
- return d_modelValues[d_equalityEngine.getRepresentative(var)];
+ TNode repr = d_equalityEngine.getRepresentative(var);
+ if (repr.getKind() == kind::CONST_BITVECTOR) {
+ return repr;
+ }
+ Assert (d_modelValues.find(repr) != d_modelValues.end());
+ return d_modelValues[repr];
}
CoreSolver::Statistics::Statistics()
// make sure all the disequalities we didn't split on are still satisifed
// and split on the ones that are not
d_inequalityGraph.checkDisequalities();
-
- // send out any lemmas
- std::vector<Node> lemmas;
- d_inequalityGraph.getNewLemmas(lemmas);
- for(unsigned i = 0; i < lemmas.size(); ++i) {
- d_bv->lemma(lemmas[i]);
+ if (isComplete()) {
+ // if we are complete we want to send out any inequality lemmas
+ std::vector<Node> lemmas;
+ d_inequalityGraph.getNewLemmas(lemmas);
+ for(unsigned i = 0; i < lemmas.size(); ++i) {
+ d_bv->lemma(lemmas[i]);
+ }
}
return true;
}