void SAT::btToLevel(int level) { if (decisionLevel() <= level) return; for (int l = trail.size(); l-- > level+1; ) { untrailToPos(trail[l], 0); for (int i = rtrail[l].size(); i--; ) { free(rtrail[l][i]); } } trail.resize(level+1); qhead.resize(level+1); rtrail.resize(level+1); engine.btToLevel(level); if (so.mip) mip->btToLevel(level); }
void SAT::btToLevel(int level) { #if DEBUG_VERBOSE std::cerr << "SAT::btToLevel( " << level << ")\n"; #endif if (decisionLevel() <= level) return; for (int l = trail.size(); l-- > level+1; ) { untrailToPos(trail[l], 0); for (int i = rtrail[l].size(); i--; ) { free(rtrail[l][i]); } } trail.resize(level+1); qhead.resize(level+1); rtrail.resize(level+1); engine.btToLevel(level); if (so.mip) mip->btToLevel(level); }
void SAT::btToPos(int sat_pos, int core_pos) { untrailToPos(trail.last(), sat_pos); engine.btToPos(core_pos); }