X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FASTTransform%2Fintegerencoding.cc;h=2a7b9012f74eae6272ef4a97d23545060028a67a;hp=78f1b733204d3be9b7116c3ae1230b9d5bae4851;hb=cbd921ee35b6a29934fd7cecccde7f160228af17;hpb=09f8f2a1ac7ab3413cf64ab0606ffa437c571c86 diff --git a/src/ASTTransform/integerencoding.cc b/src/ASTTransform/integerencoding.cc index 78f1b73..2a7b901 100644 --- a/src/ASTTransform/integerencoding.cc +++ b/src/ASTTransform/integerencoding.cc @@ -6,6 +6,7 @@ #include "integerencodingrecord.h" #include "integerencorderresolver.h" #include "tunable.h" +#include "polarityassignment.h" IntegerEncodingTransform::IntegerEncodingTransform(CSolver *_solver) : Transform(_solver) @@ -16,6 +17,9 @@ IntegerEncodingTransform::~IntegerEncodingTransform() { } void IntegerEncodingTransform::doTransform() { + if(solver->isUnSAT()){ + return; + } 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); - 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); + updateEdgePolarity(boolean, boolOrder); solver->replaceBooleanWithBoolean(boolOrder, boolean); }