Bug fix for long array
[satune.git] / src / Backend / satencoder.cc
old mode 100644 (file)
new mode 100755 (executable)
index 52cc8dc..00219ef
@@ -16,7 +16,7 @@
 SATEncoder::SATEncoder(CSolver *_solver) :
        cnf(createCNF()),
        solver(_solver),
-  vector(allocDefVectorEdge()) {
+       vector(allocDefVectorEdge()) {
 }
 
 SATEncoder::~SATEncoder() {
@@ -29,11 +29,15 @@ void SATEncoder::resetSATEncoder() {
        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();
@@ -80,8 +84,6 @@ Edge SATEncoder::encodeConstraintSATEncoder(BooleanEdge c) {
                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;