#ifndef OPS_H
#define OPS_H
-enum LogicOp {AND, OR, NOT, XOR, IMPLIES};
+enum LogicOp {L_AND, L_OR, L_NOT, L_XOR, L_IMPLIES};
typedef enum LogicOp LogicOp;
enum ArithOp {ADD, SUB};
typedef enum ArithOp ArithOp;
-enum CompOp {EQUALS};
+enum CompOp {EQUALS, LT, GT, LTE, GTE};
typedef enum CompOp CompOp;
enum OrderType {PARTIAL, TOTAL};
typedef enum OrderType OrderType;
+enum HappenedBefore {FIRST, SECOND, UNORDERED};
+typedef enum HappenedBefore HappenedBefore;
+
/**
* FLAGFORCESOVERFLOW forces the operation to overflow if the boolean flag is true
* OVERFLOWSETSFLAG -- sets the flag if the operation overflows
enum OverFlowBehavior {IGNORE, WRAPAROUND, FLAGFORCESOVERFLOW, OVERFLOWSETSFLAG, FLAGIFFOVERFLOW, NOOVERFLOW};
typedef enum OverFlowBehavior OverFlowBehavior;
-enum BooleanType {ORDERCONST, BOOLEANVAR, LOGICOP, COMPARE};
-typedef enum BooleanType BooleanType;
+enum UndefinedBehavior {IGNOREBEHAVIOR, FLAGFORCEUNDEFINED, UNDEFINEDSETSFLAG, FLAGIFFUNDEFINED};
+typedef enum UndefinedBehavior UndefinedBehavior;
+
+enum FunctionType {TABLEFUNC, OPERATORFUNC};
+typedef enum FunctionType FunctionType;
+
+enum PredicateType {TABLEPRED, OPERATORPRED};
+typedef enum PredicateType PredicateType;
+
+enum ASTNodeType {ORDERCONST, BOOLEANVAR, LOGICOP, PREDICATEOP, BOOLCONST, ELEMSET, ELEMFUNCRETURN, ELEMCONST};
+typedef enum ASTNodeType ASTNodeType;
+
+enum Polarity {P_UNDEFINED=0, P_TRUE=1, P_FALSE=2, P_BOTHTRUEFALSE=3};
+typedef enum Polarity Polarity;
+
+enum BooleanValue {BV_UNDEFINED=0, BV_MUSTBETRUE=1, BV_MUSTBEFALSE=2, BV_UNSAT=3};
+typedef enum BooleanValue BooleanValue;
+
#endif