// it means we have an overflow and hence a conflict
std::vector<TermId> conflict;
conflict.push_back(it->reason);
+ Assert (hasModelValue(start));
+ ReasonId start_reason = getModelValue(start).reason;
+ if (start_reason != UndefinedReasonId) {
+ conflict.push_back(start_reason);
+ }
computeExplanation(start, current, conflict);
Debug("bv-inequality") << "InequalityGraph::addInequality conflict: cycle \n";
setConflict(conflict);
ReasonId id = d_reasonNodes.size();
d_reasonNodes.push_back(reason);
d_reasonToIdMap[reason] = id;
+ Debug("bv-inequality-internal") << "InequalityGraph::registerReason " << reason << " => id"<< id << "\n";
return id;
}
if (!ok) {
std::vector<TNode> conflict;
d_inequalityGraph.getConflict(conflict);
- d_bv->setConflict(utils::flattenAnd(conflict));
+ Node confl = utils::flattenAnd(conflict);
+ d_bv->setConflict(confl);
+ Debug("bv-subtheory-inequality") << "InequalitySolver::conflict: "<< confl <<"\n";
return false;
}
d_bv->lemma(lemmas[i]);
}
}
+ Debug("bv-subtheory-inequality") << "InequalitySolver done. ";
return true;
}