3 enum LogicOp {L_AND, L_OR, L_NOT, L_XOR, L_IMPLIES};
4 typedef enum LogicOp LogicOp;
6 enum ArithOp {ADD, SUB};
7 typedef enum ArithOp ArithOp;
10 typedef enum CompOp CompOp;
12 enum OrderType {PARTIAL, TOTAL};
13 typedef enum OrderType OrderType;
16 * FLAGFORCESOVERFLOW forces the operation to overflow if the boolean flag is true
17 * OVERFLOWSETSFLAG -- sets the flag if the operation overflows
18 * FLAGIFFOVERFLOW -- flag is set iff the operation overflows
19 * IGNORE -- doesn't constrain output if the result cannot be represented
20 * WRAPAROUND -- wraps around like stand integer arithmetic
21 * NOOVERFLOW -- client has ensured that overflow is impossible
23 enum OverFlowBehavior {IGNORE, WRAPAROUND, FLAGFORCESOVERFLOW, OVERFLOWSETSFLAG, FLAGIFFOVERFLOW, NOOVERFLOW};
24 typedef enum OverFlowBehavior OverFlowBehavior;
26 enum UndefinedBehavior {IGNOREBEHAVIOR, FLAGFORCEUNDEFINED, UNDEFINEDSETSFLAG, FLAGIFFUNDEFINED};
27 typedef enum UndefinedBehavior UndefinedBehavior;
29 enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, PREDICATEOP, TABLEPREDICATEOP};
30 typedef enum BooleanType BooleanType;
32 enum FunctionType {TABLEFUNC, OPERATORFUNC};
33 typedef enum FunctionType FunctionType;
35 enum PredicateType {TABLEPRED, OPERATORPRED};
36 typedef enum PredicateType PredicateType;
38 enum ElementType {ELEMSET, ELEMFUNCRETURN};
39 typedef enum ElementType ElementType;
41 enum StructType {_BOOLEAN, _ELEMENT};
42 typedef enum StructType StructType;