1 // Defines the Internal Constraint Language
11 #define LITERAL_NUMBER 1
12 #define LITERAL_TOKEN 2
13 #define LITERAL_BOOL 3
53 Set(Literal **l, int nl);
60 Literal * getliteral(int i);
106 Quantifier(Label *l, Set *s);
108 void fprint(FILE *f);
122 #define SETEXPR_LABEL 1
123 #define SETEXPR_REL 2
124 #define SETEXPR_INVREL 3
128 Setexpr(Setlabel *sl);
129 Setexpr(Label *l, bool invert, Relation *r);
131 void fprint(FILE *f);
132 void print_size(Hashtable *stateenv, model *m);
133 void print_value(Hashtable *stateenv, model *m);
134 Setlabel * getsetlabel();
135 Relation * getrelation();
153 Valueexpr(Label *l,Relation *r, bool inv);
154 Valueexpr(Valueexpr *ve,Relation *r, bool inv);
156 void fprint(FILE *f);
157 void print_value(Hashtable *stateenv, model *m);
158 Element * get_value(Hashtable *stateenv, model *m);
161 Valueexpr * getvalueexpr();
162 Relation * getrelation();
169 Valueexpr *valueexpr;
178 #define ELEMENTEXPR_LABEL 1
179 #define ELEMENTEXPR_SUB 2
180 #define ELEMENTEXPR_ADD 3
181 #define ELEMENTEXPR_MULT 4
182 #define ELEMENTEXPR_LIT 5
183 #define ELEMENTEXPR_SETSIZE 6
184 #define ELEMENTEXPR_RELATION 11
188 Elementexpr(Setexpr *se);
189 Elementexpr(Elementexpr *l, Elementexpr *r, int op);
190 Elementexpr(Literal *lit);
191 Elementexpr(Label *lab);
192 Elementexpr(Elementexpr *l,Relation *r);
194 void fprint(FILE *f);
195 void print_value(Hashtable *stateenv, model *m);
199 Elementexpr *getleft();
200 Elementexpr *getright();
201 Literal * getliteral();
202 Setexpr * getsetexpr();
203 Relation * getrelation();
208 Elementexpr *left, *right;
218 #define PREDICATE_LT 1
219 #define PREDICATE_LTE 2
220 #define PREDICATE_EQUALS 3
221 #define PREDICATE_GTE 4
222 #define PREDICATE_GT 5
223 #define PREDICATE_SET 6
224 #define PREDICATE_EQ1 7
225 #define PREDICATE_GTE1 8
229 Predicate(Valueexpr *ve, int t, Elementexpr *ee);
230 Predicate(Label *l,Setexpr *se);
231 Predicate(bool greaterthan, Setexpr *se);
233 void fprint(FILE *f);
234 void print_sets(Hashtable *stateenv, model *m);
236 Valueexpr * getvalueexpr();
237 Elementexpr * geteleexpr();
239 Setexpr * getsetexpr();
242 Valueexpr *valueexpr;
243 Elementexpr *elementexpr;
253 #define STATEMENT_OR 1
254 #define STATEMENT_AND 2
255 #define STATEMENT_NOT 3
256 #define STATEMENT_PRED 4
260 Statement(Statement *l, Statement *r, int t);
261 Statement(Statement *l);
262 Statement(Predicate *p);
264 void fprint(FILE *f);
265 void print_sets(Hashtable *env, model *m); // prints the sets and the relations involved in the statement
267 Statement *getleft();
268 Statement *getright();
269 Predicate *getpredicate();
272 Statement *left,*right;
284 Constraint(Quantifier **q, int nq);
285 void setstatement(Statement *s);
287 void fprint(FILE *f);
289 Quantifier * getquant(int i);
290 Statement * getstatement();
291 void setcrash(bool c);
296 Quantifier **quantifiers;
297 Statement *statement;