void *applyFunction(void *solver,void *function, void **array, unsigned int numArrays, void *overflowstatus);
void *applyPredicateTable(void *solver,void *predicate, void **inputs, unsigned int numInputs, void *undefinedStatus);
void *applyPredicate(void *solver,void *predicate, void **inputs, unsigned int numInputs);
-void *applyLogicalOperation(void *solver,unsigned int op, void *array, unsigned int asize);
+void *applyLogicalOperation(void *solver,unsigned int op, void **array, unsigned int asize);
+void *applyExactlyOneConstraint(void *solver,void **array, unsigned int asize);
+void *applyAtMostOneConstraint(void *solver,void **array, unsigned int asize);
void *applyLogicalOperationTwo(void *solver,unsigned int op, void *arg1, void *arg2);
void *applyLogicalOperationOne(void *solver,unsigned int op, void *arg);
void addConstraint(void *solver,void *constraint);
void *createOrder(void *solver,unsigned int type, void *set);
void *orderConstraint(void *solver,void *order, long first, long second);
int solve(void *solver);
+int solveIncremental(void *solver);
long getElementValue(void *solver,void *element);
+void freezeElement(void *solver,void *element);
int getBooleanValue(void *solver,void *boolean);
int getOrderConstraintValue(void *solver,void *order, long first, long second);
void printConstraints(void *solver);
+void turnoffOptimizations(void *solver);
void serialize(void *solver);
void mustHaveValue(void *solver, void *element);
void setInterpreter(void *solver, unsigned int type);