BooleanEdge applyPredicate(Predicate *predicate, Element **inputs, uint numInputs);
+ /** This exactly one element of array can be true! (i.e. a1 + a2 + a3 + ... + an = 1)*/
+ BooleanEdge applyExactlyOneConstraint (BooleanEdge *array, uint asize);
+
/** This function applies a logical operation to the Booleans in its input. */
-
+
BooleanEdge applyLogicalOperation(LogicOp op, BooleanEdge *array, uint asize);
/** This function applies a logical operation to the Booleans in its input. */
void setUnSAT() { model_print("Setting UNSAT %%%%%%\n"); unsat = true; }
void setSatSolverTimeout(long seconds) { satsolverTimeout = seconds;}
bool isUnSAT() { return unsat; }
- bool isBooleanVarUsed(){return booleanVarUsed;}
+ bool isBooleanVarUsed() {return booleanVarUsed;}
void printConstraint(BooleanEdge boolean);
void printConstraints();
SATEncoder *satEncoder;
bool unsat;
- bool booleanVarUsed;
- Tuner *tuner;
+ bool booleanVarUsed;
+ Tuner *tuner;
long long elapsedTime;
long satsolverTimeout;
Interpreter *interpreter;