- There was a missing break statement in ArithPriorityQueue. This addresses the bug discovered in the debug regression (http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=1566&reference_id=1548&category=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29&p=10).
case VariableOrder:
d_varOrderQueue.push_back(basic);
push_heap(d_varOrderQueue.begin(), d_varOrderQueue.end(), std::greater<ArithVar>());
+ break;
case Difference:
d_diffQueue.push_back(computeDiff(basic));
push_heap(d_diffQueue.begin(), d_diffQueue.end());
Assert(d_varOrderQueue.empty());
Assert(d_diffQueue.empty());
+ Debug("arith::priorityqueue") << "transitionToDifferenceMode()" << endl;
+
ArithVarArray::const_iterator i = d_candidates.begin(), end = d_candidates.end();
for(; i != end; ++i){
ArithVar var = *i;
Assert(d_varOrderQueue.empty());
Assert(d_candidates.empty());
+ Debug("arith::priorityqueue") << "transitionToVariableOrderMode()" << endl;
+
DifferenceArray::const_iterator i = d_diffQueue.begin(), end = d_diffQueue.end();
for(; i != end; ++i){
ArithVar var = (*i).variable();
Assert(d_candidates.empty());
Assert(d_varOrderQueue.empty());
+ Debug("arith::priorityqueue") << "transitionToCollectionMode()" << endl;
+
d_modeInUse = Collection;
}
if(d_queue.empty()){
return Node::null();
}
+ static unsigned int instance = 0;
+
+ ++instance;
+ Debug("arith::updateInconsistentVars") << "begin updateInconsistentVars() "
+ << instance << endl;
d_queue.transitionToDifferenceMode();
Assert(d_queue.inCollectionMode());
+ Debug("arith::updateInconsistentVars") << "end updateInconsistentVars() "
+ << instance << endl;
+
return possibleConflict;
}