Adding checks to avoid further processing on UNSAT Problems
[satune.git] / src / ASTTransform / integerencoding.cc
index 78f1b733204d3be9b7116c3ae1230b9d5bae4851..2a7b9012f74eae6272ef4a97d23545060028a67a 100644 (file)
@@ -6,6 +6,7 @@
 #include "integerencodingrecord.h"
 #include "integerencorderresolver.h"
 #include "tunable.h"
 #include "integerencodingrecord.h"
 #include "integerencorderresolver.h"
 #include "tunable.h"
+#include "polarityassignment.h"
 
 IntegerEncodingTransform::IntegerEncodingTransform(CSolver *_solver)
        : Transform(_solver)
 
 IntegerEncodingTransform::IntegerEncodingTransform(CSolver *_solver)
        : Transform(_solver)
@@ -16,6 +17,9 @@ IntegerEncodingTransform::~IntegerEncodingTransform() {
 }
 
 void IntegerEncodingTransform::doTransform() {
 }
 
 void IntegerEncodingTransform::doTransform() {
+       if(solver->isUnSAT()){
+               return;
+       }
        HashsetOrder *orders = solver->getActiveOrders()->copy();
        SetIteratorOrder *orderit = orders->iterator();
        while (orderit->hasNext()) {
        HashsetOrder *orders = solver->getActiveOrders()->copy();
        SetIteratorOrder *orderit = orders->iterator();
        while (orderit->hasNext()) {
@@ -44,10 +48,10 @@ void IntegerEncodingTransform::orderIntegerEncodingSATEncoder(BooleanOrder *bool
        //getting two elements and using LT predicate ...
        Element *elem1 = ierec->getOrderIntegerElement(solver, boolOrder->first);
        Element *elem2 = ierec->getOrderIntegerElement(solver, boolOrder->second);
        //getting two elements and using LT predicate ...
        Element *elem1 = ierec->getOrderIntegerElement(solver, boolOrder->first);
        Element *elem2 = ierec->getOrderIntegerElement(solver, boolOrder->second);
-       Set *sarray[] = {ierec->getSecondarySet(), ierec->getSecondarySet()};
-       Predicate *predicate = solver->createPredicateOperator(SATC_LT, sarray, 2);
+       Predicate *predicate = solver->createPredicateOperator(SATC_LT);
        Element *parray[] = {elem1, elem2};
        BooleanEdge boolean = solver->applyPredicate(predicate, parray, 2);
        Element *parray[] = {elem1, elem2};
        BooleanEdge boolean = solver->applyPredicate(predicate, parray, 2);
+       updateEdgePolarity(boolean, boolOrder);
        solver->replaceBooleanWithBoolean(boolOrder, boolean);
 }
 
        solver->replaceBooleanWithBoolean(boolOrder, boolean);
 }