}
partHandler->addSavedState();
- conglomerate->doCalcAtFinish();
varReplacer->extendModelPossible();
#ifndef NDEBUG
//checkSolution();
if (subsumer->getNumElimed() > 0) {
Solver s;
s.doSubsumption = false;
+ s.performReplace = false;
s.findBinaryXors = false;
s.findNormalXors = false;
s.failedVarSearch = false;
+ s.conglomerateXors = false;
s.greedyUnbound = greedyUnbound;
for (Var var = 0; var < nVars(); var++) {
s.newVar(decision_var[var] || subsumer->getVarElimed()[var] || varReplacer->varHasBeenReplaced(var));
+ assert(!(conglomerate->getRemovedVars()[var] && (decision_var[var] || subsumer->getVarElimed()[var] || varReplacer->varHasBeenReplaced(var))));
if (value(var) != l_Undef) {
+ assert(!conglomerate->getRemovedVars()[var]);
vec<Lit> tmp;
tmp.push(Lit(var, value(var) == l_False));
s.addClause(tmp);
status = s.solve();
assert(status == l_True);
for (Var var = 0; var < nVars(); var++) {
- if (assigns[var] == l_Undef) uncheckedEnqueue(Lit(var, s.model[var] == l_False));
+ if (assigns[var] == l_Undef && s.model[var] != l_Undef) uncheckedEnqueue(Lit(var, s.model[var] == l_False));
}
}
+ conglomerate->doCalcAtFinish();
// Extend & copy model:
#ifndef NDEBUG
//checkSolution();