Table * createTable(CSolver *solver, Set **domains, uint numDomain, Set * range);
-Table * createTablePredicate(CSolver *solver, Set **domains, uint numDomain);
-
+Table * createTableForPredicate(CSolver *solver, Set **domains, uint numDomain);
/** This function adds an input output relation to a table. */
void addTableEntry(CSolver *solver, Table* table, uint64_t* inputs, uint inputSize, uint64_t result);
/** This function applies a predicate to the Elements in its input. */
+Boolean * applyPredicateTable(CSolver *, Predicate * predicate, Element ** inputs, uint numInputs, Boolean* undefinedStatus);
+
Boolean * applyPredicate(CSolver *, Predicate * predicate, Element ** inputs, uint numInputs);
/** This function applies a logical operation to the Booleans in its input. */