uint64_t getElementValueOneHotSATTranslator(CSolver *This, ElementEncoding *elemEnc) {
uint index = 0;
+ bool overflow = true;
for (uint i = 0; i < elemEnc->numVars; i++) {
- if (getValueSolver(This->getSATEncoder()->getCNF()->solver, getEdgeVar( elemEnc->variables[i] )))
+ if (getValueSolver(This->getSATEncoder()->getCNF()->solver, getEdgeVar( elemEnc->variables[i] ))){
index = i;
+ overflow = false;
+ }
}
+ if(overflow)
+ model_print("WARNING: Element has undefined value!\n");
ASSERT(elemEnc->encArraySize > index && elemEnc->isinUseElement(index));
return elemEnc->encodingArray[index];
}
uint64_t getElementValueUnarySATTranslator(CSolver *This, ElementEncoding *elemEnc) {
uint i;
+ bool overflow = true;
for (i = 0; i < elemEnc->numVars; i++) {
if (!getValueSolver(This->getSATEncoder()->getCNF()->solver, getEdgeVar( elemEnc->variables[i] )) ) {
+ overflow = false;
break;
}
}
-
+ if(overflow)
+ model_print("WARNING: Element has undefined value!\n");
return elemEnc->encodingArray[i];
}
uint64_t getElementValueSATTranslator(CSolver *This, Element *element) {
- ElementEncoding *elemEnc = getElementEncoding(element);
+ ElementEncoding *elemEnc = element->getElementEncoding();
if (elemEnc->numVars == 0)//case when the set has only one item
return element->getRange()->getElement(0);
switch (elemEnc->type) {