3 enum LogicOp {AND, OR, NOT, XOR, IMPLIES};
4 enum ArithOp {ADD, SUB};
6 enum OrderType {PARTIAL, TOTAL};
9 * FLAGFORCESOVERFLOW forces the operation to overflow if the boolean flag is true
10 * OVERFLOWSETSFLAG -- sets the flag if the operation overflows
11 * FLAGIFFOVERFLOW -- flag is set iff the operation overflows
12 * IGNORE -- doesn't constrain output if the result cannot be represented
13 * WRAPAROUND -- wraps around like stand integer arithmetic
14 * NOOVERFLOW -- client has ensured that overflow is impossible
16 enum OverFlowBehavior {IGNORE, WRAPAROUND, FLAGFORCESOVERFLOW, OVERFLOWSETSFLAG, FLAGIFFOVERFLOW, NOOVERFLOW};
18 enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, COMPARE};