X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FASTTransform%2Fintegerencoding.cc;h=6be73ea9bfbf648d7e2eac98e8610a98c6c8aff6;hb=829b44197d915859a76704b501ebe14105b7585e;hp=50cb29b27ec0adc86f7d7e54c8ccbae348914f6d;hpb=c03a7980279026fd542e55df0aca8cd5eaa2c4a5;p=satune.git diff --git a/src/ASTTransform/integerencoding.cc b/src/ASTTransform/integerencoding.cc index 50cb29b..6be73ea 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) @@ -17,11 +18,10 @@ IntegerEncodingTransform::~IntegerEncodingTransform() { void IntegerEncodingTransform::doTransform() { HashsetOrder *orders = solver->getActiveOrders()->copy(); - SetIteratorOrder * orderit=orders->iterator(); - while(orderit->hasNext()) { + SetIteratorOrder *orderit = orders->iterator(); + while (orderit->hasNext()) { Order *order = orderit->next(); - if (GETVARTUNABLE(solver->getTuner(), order->type, ORDERINTEGERENCODING, &onoff) && - order->encoding.resolver == NULL) + if (GETVARTUNABLE(solver->getTuner(), order->type, ORDERINTEGERENCODING, &offon)) integerEncode(order); } delete orders; @@ -45,11 +45,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); - solver->addConstraint(boolean); + updateEdgePolarity(boolean, boolOrder); solver->replaceBooleanWithBoolean(boolOrder, boolean); }