9 Set * createSet(Type type, uint64_t ** elements);
10 Set * createSet(Type type, uint64_t lowrange, uint64_t highrange);
11 MutableSet * createMutableSet(Type type);
13 void addItem(MutableSet * set, uint64_t element);
14 int64_t createUniqueItem(MutableSet * set);
16 Element * getElementVar(Set * set);
17 Constraint * getBooleanVar();
19 Function * createFunctionOperator(enum ArithOp op, Set ** domain, Set * range, enum OverFlowBehavior overflowbehavior, Constraint * overflowstatus);
21 Function * createFunctionOperator(enum ArithOp op);
22 Predicate * createPredicateOperator(enum CompOp op, Set ** domain);
24 Table * createTable(Set **domains, Set * range);
25 void addTableEntry(Element ** inputs, Element *result);
26 Function * completeTable(struct Table *);
28 Element * applyFunction(Function * function, Element ** array);
29 Constraint * applyPredicate(Predicate * predicate, Element ** inputs);
30 Constraint * applyLogicalOperation(enum LogicOp op, Constraint ** array);
32 void addConstraint(Constraint * constraint);
34 Order * createOrder(enum OrderType type, Set * set);
35 Constraint * orderedConstraint(Order * order, uint64_t first, uint64_t second);
37 ModelVector<Constraint *> constraints;