SATEncoder::SATEncoder(CSolver *_solver) :
cnf(createCNF()),
solver(_solver),
- vector(allocDefVectorEdge()) {
+ vector(allocDefVectorEdge()) {
}
SATEncoder::~SATEncoder() {
booledgeMap.reset();
}
-int SATEncoder::solve() {
+int SATEncoder::solve(long timeout) {
+ cnf->solver->timeout = timeout;
return solveCNF(cnf);
}
void SATEncoder::encodeAllSATEncoder(CSolver *csolver) {
+ if (csolver->isUnSAT()) {
+ return;
+ }
SetIteratorBooleanEdge *iterator = csolver->getConstraints();
while (iterator->hasNext()) {
BooleanEdge constraint = iterator->next();
generateProxy(cnf, result, e, p);
booledgeMap.put(constraint, e.node_ptr);
result = e;
- } else{
- booledgeMap.put(constraint, result.node_ptr);
}
return c.isNegated() ? constraintNegate(result) : result;