Edge getOrderConstraint(HashTableOrderPair *table, OrderPair *pair){
ASSERT(pair->first!= pair->second);
Edge constraint = getOrderPair(table, pair)->constraint;
- if(pair->first > pair->second)
+ if(pair->first > pair->second || edgeIsNull(constraint))
return constraint;
else
return constraintNegate(constraint);
#include "csolver.h"
#include "satencoder.h"
#include "set.h"
+#include "order.h"
+#include "orderpair.h"
uint64_t getElementValueBinaryIndexSATTranslator(CSolver* This, ElementEncoding* elemEnc){
uint index=0;
}
uint64_t getElementValueSATTranslator(CSolver* This, Element* element){
- Set* set = getElementSet(element);
- if(getSetSize( set ) ==1) //case when the set has only one item
- return getSetElement(set, 0);
ElementEncoding* elemEnc = getElementEncoding(element);
+ if(elemEnc->numVars == 0) //case when the set has only one item
+ return getSetElement(getElementSet(element), 0);
switch(elemEnc->type){
case ONEHOT:
getElementValueOneHotSATTranslator(This, elemEnc);