Commit 57421ab251f6bbc8d1b820a99123cc27b46d00e4

Authored by Salvador Abreu
1 parent f1a115f5
Exists in master

first stab at type analysis.

one more example.
fzn-parser/examples/CostasArray.ast 0 → 100644
... ... @@ -0,0 +1,1282 @@
  1 +_ > [].
  2 +_T > [[]|_T].
  3 +[X|_T] > [preds(X)|_T].
  4 +_T > [[]|_T].
  5 +_T > [int|_T].
  6 +_T > ['X_INTRODUCED_42'|_T].
  7 +_T > [[]|_T].
  8 +_T > [lit(1,int)|_T].
  9 +_T > [lit(-1,int)|_T].
  10 +[E|_T] > [[E]|_T].
  11 +[T,H|_T] > [[H|T]|_T].
  12 +[Es|_T] > [lit(Es,array(_))|_T].
  13 +[VAL,AN,ID,T|_T] > [var(ID, array(T,1,2), VAL, AN)|_T].
  14 +[H,T|_T] > [[H|T]|_T].
  15 +_T > [int|_T].
  16 +_T > ['X_INTRODUCED_45'|_T].
  17 +_T > [[]|_T].
  18 +_T > [lit(1,int)|_T].
  19 +_T > [lit(-1,int)|_T].
  20 +_T > [lit(1,int)|_T].
  21 +[E|_T] > [[E]|_T].
  22 +[T,H|_T] > [[H|T]|_T].
  23 +[T,H|_T] > [[H|T]|_T].
  24 +[Es|_T] > [lit(Es,array(_))|_T].
  25 +[VAL,AN,ID,T|_T] > [var(ID, array(T,1,3), VAL, AN)|_T].
  26 +[H,T|_T] > [[H|T]|_T].
  27 +_T > [int|_T].
  28 +_T > ['X_INTRODUCED_70'|_T].
  29 +_T > [[]|_T].
  30 +_T > [lit(1,int)|_T].
  31 +_T > [lit(1,int)|_T].
  32 +_T > [lit(-1,int)|_T].
  33 +_T > [lit(-1,int)|_T].
  34 +[E|_T] > [[E]|_T].
  35 +[T,H|_T] > [[H|T]|_T].
  36 +[T,H|_T] > [[H|T]|_T].
  37 +[T,H|_T] > [[H|T]|_T].
  38 +[Es|_T] > [lit(Es,array(_))|_T].
  39 +[VAL,AN,ID,T|_T] > [var(ID, array(T,1,4), VAL, AN)|_T].
  40 +[H,T|_T] > [[H|T]|_T].
  41 +_T > [int(1,6)|_T].
  42 +_T > ['X_INTRODUCED_0'|_T].
  43 +_T > [[]|_T].
  44 +_T > [[]|_T].
  45 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  46 +[H,T|_T] > [[H|T]|_T].
  47 +_T > [int(1,6)|_T].
  48 +_T > ['X_INTRODUCED_1'|_T].
  49 +_T > [[]|_T].
  50 +_T > [[]|_T].
  51 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  52 +[H,T|_T] > [[H|T]|_T].
  53 +_T > [int(1,6)|_T].
  54 +_T > ['X_INTRODUCED_2'|_T].
  55 +_T > [[]|_T].
  56 +_T > [[]|_T].
  57 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  58 +[H,T|_T] > [[H|T]|_T].
  59 +_T > [int(1,6)|_T].
  60 +_T > ['X_INTRODUCED_3'|_T].
  61 +_T > [[]|_T].
  62 +_T > [[]|_T].
  63 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  64 +[H,T|_T] > [[H|T]|_T].
  65 +_T > [int(1,6)|_T].
  66 +_T > ['X_INTRODUCED_4'|_T].
  67 +_T > [[]|_T].
  68 +_T > [[]|_T].
  69 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  70 +[H,T|_T] > [[H|T]|_T].
  71 +_T > [int(1,6)|_T].
  72 +_T > ['X_INTRODUCED_5'|_T].
  73 +_T > [[]|_T].
  74 +_T > [[]|_T].
  75 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  76 +[H,T|_T] > [[H|T]|_T].
  77 +_T > [[5]|_T].
  78 +[Ls|_T] > [[4|Ls]|_T].
  79 +[Ls|_T] > [[3|Ls]|_T].
  80 +[Ls|_T] > [[2|Ls]|_T].
  81 +[Ls|_T] > [[1|Ls]|_T].
  82 +[Ls|_T] > [[-1|Ls]|_T].
  83 +[Ls|_T] > [[-2|Ls]|_T].
  84 +[Ls|_T] > [[-3|Ls]|_T].
  85 +[Ls|_T] > [[-4|Ls]|_T].
  86 +[Ls|_T] > [[-5|Ls]|_T].
  87 +[Ls|_T] > [int(Ls)|_T].
  88 +_T > ['X_INTRODUCED_7'|_T].
  89 +_T > [id('is_defined_var')|_T].
  90 +_T > [[]|_T].
  91 +[As, E|_T] > [[E|As]|_T].
  92 +_T > [[]|_T].
  93 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  94 +[H,T|_T] > [[H|T]|_T].
  95 +_T > [[5]|_T].
  96 +[Ls|_T] > [[4|Ls]|_T].
  97 +[Ls|_T] > [[3|Ls]|_T].
  98 +[Ls|_T] > [[2|Ls]|_T].
  99 +[Ls|_T] > [[1|Ls]|_T].
  100 +[Ls|_T] > [[-1|Ls]|_T].
  101 +[Ls|_T] > [[-2|Ls]|_T].
  102 +[Ls|_T] > [[-3|Ls]|_T].
  103 +[Ls|_T] > [[-4|Ls]|_T].
  104 +[Ls|_T] > [[-5|Ls]|_T].
  105 +[Ls|_T] > [int(Ls)|_T].
  106 +_T > ['X_INTRODUCED_8'|_T].
  107 +_T > [id('is_defined_var')|_T].
  108 +_T > [[]|_T].
  109 +[As, E|_T] > [[E|As]|_T].
  110 +_T > [[]|_T].
  111 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  112 +[H,T|_T] > [[H|T]|_T].
  113 +_T > [[5]|_T].
  114 +[Ls|_T] > [[4|Ls]|_T].
  115 +[Ls|_T] > [[3|Ls]|_T].
  116 +[Ls|_T] > [[2|Ls]|_T].
  117 +[Ls|_T] > [[1|Ls]|_T].
  118 +[Ls|_T] > [[-1|Ls]|_T].
  119 +[Ls|_T] > [[-2|Ls]|_T].
  120 +[Ls|_T] > [[-3|Ls]|_T].
  121 +[Ls|_T] > [[-4|Ls]|_T].
  122 +[Ls|_T] > [[-5|Ls]|_T].
  123 +[Ls|_T] > [int(Ls)|_T].
  124 +_T > ['X_INTRODUCED_9'|_T].
  125 +_T > [id('is_defined_var')|_T].
  126 +_T > [[]|_T].
  127 +[As, E|_T] > [[E|As]|_T].
  128 +_T > [[]|_T].
  129 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  130 +[H,T|_T] > [[H|T]|_T].
  131 +_T > [[5]|_T].
  132 +[Ls|_T] > [[4|Ls]|_T].
  133 +[Ls|_T] > [[3|Ls]|_T].
  134 +[Ls|_T] > [[2|Ls]|_T].
  135 +[Ls|_T] > [[1|Ls]|_T].
  136 +[Ls|_T] > [[-1|Ls]|_T].
  137 +[Ls|_T] > [[-2|Ls]|_T].
  138 +[Ls|_T] > [[-3|Ls]|_T].
  139 +[Ls|_T] > [[-4|Ls]|_T].
  140 +[Ls|_T] > [[-5|Ls]|_T].
  141 +[Ls|_T] > [int(Ls)|_T].
  142 +_T > ['X_INTRODUCED_10'|_T].
  143 +_T > [id('is_defined_var')|_T].
  144 +_T > [[]|_T].
  145 +[As, E|_T] > [[E|As]|_T].
  146 +_T > [[]|_T].
  147 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  148 +[H,T|_T] > [[H|T]|_T].
  149 +_T > [[5]|_T].
  150 +[Ls|_T] > [[4|Ls]|_T].
  151 +[Ls|_T] > [[3|Ls]|_T].
  152 +[Ls|_T] > [[2|Ls]|_T].
  153 +[Ls|_T] > [[1|Ls]|_T].
  154 +[Ls|_T] > [[-1|Ls]|_T].
  155 +[Ls|_T] > [[-2|Ls]|_T].
  156 +[Ls|_T] > [[-3|Ls]|_T].
  157 +[Ls|_T] > [[-4|Ls]|_T].
  158 +[Ls|_T] > [[-5|Ls]|_T].
  159 +[Ls|_T] > [int(Ls)|_T].
  160 +_T > ['X_INTRODUCED_11'|_T].
  161 +_T > [id('is_defined_var')|_T].
  162 +_T > [[]|_T].
  163 +[As, E|_T] > [[E|As]|_T].
  164 +_T > [[]|_T].
  165 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  166 +[H,T|_T] > [[H|T]|_T].
  167 +_T > [[5]|_T].
  168 +[Ls|_T] > [[4|Ls]|_T].
  169 +[Ls|_T] > [[3|Ls]|_T].
  170 +[Ls|_T] > [[2|Ls]|_T].
  171 +[Ls|_T] > [[1|Ls]|_T].
  172 +[Ls|_T] > [[-1|Ls]|_T].
  173 +[Ls|_T] > [[-2|Ls]|_T].
  174 +[Ls|_T] > [[-3|Ls]|_T].
  175 +[Ls|_T] > [[-4|Ls]|_T].
  176 +[Ls|_T] > [[-5|Ls]|_T].
  177 +[Ls|_T] > [int(Ls)|_T].
  178 +_T > ['X_INTRODUCED_14'|_T].
  179 +_T > [id('is_defined_var')|_T].
  180 +_T > [[]|_T].
  181 +[As, E|_T] > [[E|As]|_T].
  182 +_T > [[]|_T].
  183 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  184 +[H,T|_T] > [[H|T]|_T].
  185 +_T > [[5]|_T].
  186 +[Ls|_T] > [[4|Ls]|_T].
  187 +[Ls|_T] > [[3|Ls]|_T].
  188 +[Ls|_T] > [[2|Ls]|_T].
  189 +[Ls|_T] > [[1|Ls]|_T].
  190 +[Ls|_T] > [[-1|Ls]|_T].
  191 +[Ls|_T] > [[-2|Ls]|_T].
  192 +[Ls|_T] > [[-3|Ls]|_T].
  193 +[Ls|_T] > [[-4|Ls]|_T].
  194 +[Ls|_T] > [[-5|Ls]|_T].
  195 +[Ls|_T] > [int(Ls)|_T].
  196 +_T > ['X_INTRODUCED_15'|_T].
  197 +_T > [id('is_defined_var')|_T].
  198 +_T > [[]|_T].
  199 +[As, E|_T] > [[E|As]|_T].
  200 +_T > [[]|_T].
  201 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  202 +[H,T|_T] > [[H|T]|_T].
  203 +_T > [[5]|_T].
  204 +[Ls|_T] > [[4|Ls]|_T].
  205 +[Ls|_T] > [[3|Ls]|_T].
  206 +[Ls|_T] > [[2|Ls]|_T].
  207 +[Ls|_T] > [[1|Ls]|_T].
  208 +[Ls|_T] > [[-1|Ls]|_T].
  209 +[Ls|_T] > [[-2|Ls]|_T].
  210 +[Ls|_T] > [[-3|Ls]|_T].
  211 +[Ls|_T] > [[-4|Ls]|_T].
  212 +[Ls|_T] > [[-5|Ls]|_T].
  213 +[Ls|_T] > [int(Ls)|_T].
  214 +_T > ['X_INTRODUCED_16'|_T].
  215 +_T > [id('is_defined_var')|_T].
  216 +_T > [[]|_T].
  217 +[As, E|_T] > [[E|As]|_T].
  218 +_T > [[]|_T].
  219 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  220 +[H,T|_T] > [[H|T]|_T].
  221 +_T > [[5]|_T].
  222 +[Ls|_T] > [[4|Ls]|_T].
  223 +[Ls|_T] > [[3|Ls]|_T].
  224 +[Ls|_T] > [[2|Ls]|_T].
  225 +[Ls|_T] > [[1|Ls]|_T].
  226 +[Ls|_T] > [[-1|Ls]|_T].
  227 +[Ls|_T] > [[-2|Ls]|_T].
  228 +[Ls|_T] > [[-3|Ls]|_T].
  229 +[Ls|_T] > [[-4|Ls]|_T].
  230 +[Ls|_T] > [[-5|Ls]|_T].
  231 +[Ls|_T] > [int(Ls)|_T].
  232 +_T > ['X_INTRODUCED_17'|_T].
  233 +_T > [id('is_defined_var')|_T].
  234 +_T > [[]|_T].
  235 +[As, E|_T] > [[E|As]|_T].
  236 +_T > [[]|_T].
  237 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  238 +[H,T|_T] > [[H|T]|_T].
  239 +_T > [[5]|_T].
  240 +[Ls|_T] > [[4|Ls]|_T].
  241 +[Ls|_T] > [[3|Ls]|_T].
  242 +[Ls|_T] > [[2|Ls]|_T].
  243 +[Ls|_T] > [[1|Ls]|_T].
  244 +[Ls|_T] > [[-1|Ls]|_T].
  245 +[Ls|_T] > [[-2|Ls]|_T].
  246 +[Ls|_T] > [[-3|Ls]|_T].
  247 +[Ls|_T] > [[-4|Ls]|_T].
  248 +[Ls|_T] > [[-5|Ls]|_T].
  249 +[Ls|_T] > [int(Ls)|_T].
  250 +_T > ['X_INTRODUCED_21'|_T].
  251 +_T > [id('is_defined_var')|_T].
  252 +_T > [[]|_T].
  253 +[As, E|_T] > [[E|As]|_T].
  254 +_T > [[]|_T].
  255 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  256 +[H,T|_T] > [[H|T]|_T].
  257 +_T > [[5]|_T].
  258 +[Ls|_T] > [[4|Ls]|_T].
  259 +[Ls|_T] > [[3|Ls]|_T].
  260 +[Ls|_T] > [[2|Ls]|_T].
  261 +[Ls|_T] > [[1|Ls]|_T].
  262 +[Ls|_T] > [[-1|Ls]|_T].
  263 +[Ls|_T] > [[-2|Ls]|_T].
  264 +[Ls|_T] > [[-3|Ls]|_T].
  265 +[Ls|_T] > [[-4|Ls]|_T].
  266 +[Ls|_T] > [[-5|Ls]|_T].
  267 +[Ls|_T] > [int(Ls)|_T].
  268 +_T > ['X_INTRODUCED_22'|_T].
  269 +_T > [id('is_defined_var')|_T].
  270 +_T > [[]|_T].
  271 +[As, E|_T] > [[E|As]|_T].
  272 +_T > [[]|_T].
  273 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  274 +[H,T|_T] > [[H|T]|_T].
  275 +_T > [[5]|_T].
  276 +[Ls|_T] > [[4|Ls]|_T].
  277 +[Ls|_T] > [[3|Ls]|_T].
  278 +[Ls|_T] > [[2|Ls]|_T].
  279 +[Ls|_T] > [[1|Ls]|_T].
  280 +[Ls|_T] > [[-1|Ls]|_T].
  281 +[Ls|_T] > [[-2|Ls]|_T].
  282 +[Ls|_T] > [[-3|Ls]|_T].
  283 +[Ls|_T] > [[-4|Ls]|_T].
  284 +[Ls|_T] > [[-5|Ls]|_T].
  285 +[Ls|_T] > [int(Ls)|_T].
  286 +_T > ['X_INTRODUCED_23'|_T].
  287 +_T > [id('is_defined_var')|_T].
  288 +_T > [[]|_T].
  289 +[As, E|_T] > [[E|As]|_T].
  290 +_T > [[]|_T].
  291 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  292 +[H,T|_T] > [[H|T]|_T].
  293 +_T > [[5]|_T].
  294 +[Ls|_T] > [[4|Ls]|_T].
  295 +[Ls|_T] > [[3|Ls]|_T].
  296 +[Ls|_T] > [[2|Ls]|_T].
  297 +[Ls|_T] > [[1|Ls]|_T].
  298 +[Ls|_T] > [[-1|Ls]|_T].
  299 +[Ls|_T] > [[-2|Ls]|_T].
  300 +[Ls|_T] > [[-3|Ls]|_T].
  301 +[Ls|_T] > [[-4|Ls]|_T].
  302 +[Ls|_T] > [[-5|Ls]|_T].
  303 +[Ls|_T] > [int(Ls)|_T].
  304 +_T > ['X_INTRODUCED_28'|_T].
  305 +_T > [id('is_defined_var')|_T].
  306 +_T > [[]|_T].
  307 +[As, E|_T] > [[E|As]|_T].
  308 +_T > [[]|_T].
  309 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  310 +[H,T|_T] > [[H|T]|_T].
  311 +_T > [[5]|_T].
  312 +[Ls|_T] > [[4|Ls]|_T].
  313 +[Ls|_T] > [[3|Ls]|_T].
  314 +[Ls|_T] > [[2|Ls]|_T].
  315 +[Ls|_T] > [[1|Ls]|_T].
  316 +[Ls|_T] > [[-1|Ls]|_T].
  317 +[Ls|_T] > [[-2|Ls]|_T].
  318 +[Ls|_T] > [[-3|Ls]|_T].
  319 +[Ls|_T] > [[-4|Ls]|_T].
  320 +[Ls|_T] > [[-5|Ls]|_T].
  321 +[Ls|_T] > [int(Ls)|_T].
  322 +_T > ['X_INTRODUCED_29'|_T].
  323 +_T > [id('is_defined_var')|_T].
  324 +_T > [[]|_T].
  325 +[As, E|_T] > [[E|As]|_T].
  326 +_T > [[]|_T].
  327 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  328 +[H,T|_T] > [[H|T]|_T].
  329 +_T > [[5]|_T].
  330 +[Ls|_T] > [[4|Ls]|_T].
  331 +[Ls|_T] > [[3|Ls]|_T].
  332 +[Ls|_T] > [[2|Ls]|_T].
  333 +[Ls|_T] > [[1|Ls]|_T].
  334 +[Ls|_T] > [[-1|Ls]|_T].
  335 +[Ls|_T] > [[-2|Ls]|_T].
  336 +[Ls|_T] > [[-3|Ls]|_T].
  337 +[Ls|_T] > [[-4|Ls]|_T].
  338 +[Ls|_T] > [[-5|Ls]|_T].
  339 +[Ls|_T] > [int(Ls)|_T].
  340 +_T > ['X_INTRODUCED_35'|_T].
  341 +_T > [id('is_defined_var')|_T].
  342 +_T > [[]|_T].
  343 +[As, E|_T] > [[E|As]|_T].
  344 +_T > [[]|_T].
  345 +[VAL,AN,ID,T|_T] > [var(ID, T, VAL, AN)|_T].
  346 +[H,T|_T] > [[H|T]|_T].
  347 +_T > [int(1,6)|_T].
  348 +_T > ['costas'|_T].
  349 +_T > [lit([1, 2, 3, 4, 5, 6], set(int))|_T].
  350 +[E|_T] > [[E]|_T].
  351 +[Es|_T] > [lit(Es,array(_))|_T].
  352 +[E|_T] > [[E]|_T].
  353 +_T > [[]|_T].
  354 +[As, E|_T] > [[E|As]|_T].
  355 +_T > [id('X_INTRODUCED_0')|_T].
  356 +_T > [id('X_INTRODUCED_1')|_T].
  357 +_T > [id('X_INTRODUCED_2')|_T].
  358 +_T > [id('X_INTRODUCED_3')|_T].
  359 +_T > [id('X_INTRODUCED_4')|_T].
  360 +_T > [id('X_INTRODUCED_5')|_T].
  361 +[E|_T] > [[E]|_T].
  362 +[T,H|_T] > [[H|T]|_T].
  363 +[T,H|_T] > [[H|T]|_T].
  364 +[T,H|_T] > [[H|T]|_T].
  365 +[T,H|_T] > [[H|T]|_T].
  366 +[T,H|_T] > [[H|T]|_T].
  367 +[Es|_T] > [lit(Es,array(_))|_T].
  368 +[VAL,AN,ID,T|_T] > [var(ID, array(T,1,6), VAL, AN)|_T].
  369 +[H,T|_T] > [[H|T]|_T].
  370 +[X|_T] > [vars(X)|_T].
  371 +_T > [[]|_T].
  372 +_T > [id('X_INTRODUCED_42')|_T].
  373 +_T > [id('X_INTRODUCED_0')|_T].
  374 +_T > [id('X_INTRODUCED_1')|_T].
  375 +[E|_T] > [[E]|_T].
  376 +[T,H|_T] > [[H|T]|_T].
  377 +[Es|_T] > [lit(Es,array(_))|_T].
  378 +_T > [lit(0,int)|_T].
  379 +[E|_T] > [[E]|_T].
  380 +[T,H|_T] > [[H|T]|_T].
  381 +[T,H|_T] > [[H|T]|_T].
  382 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  383 +_T > [[]|_T].
  384 +[A,C|_T] > [constraint(C,A)|_T].
  385 +[H,T|_T] > [[H|T]|_T].
  386 +_T > [id('X_INTRODUCED_42')|_T].
  387 +_T > [id('X_INTRODUCED_0')|_T].
  388 +_T > [id('X_INTRODUCED_2')|_T].
  389 +[E|_T] > [[E]|_T].
  390 +[T,H|_T] > [[H|T]|_T].
  391 +[Es|_T] > [lit(Es,array(_))|_T].
  392 +_T > [lit(0,int)|_T].
  393 +[E|_T] > [[E]|_T].
  394 +[T,H|_T] > [[H|T]|_T].
  395 +[T,H|_T] > [[H|T]|_T].
  396 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  397 +_T > [[]|_T].
  398 +[A,C|_T] > [constraint(C,A)|_T].
  399 +[H,T|_T] > [[H|T]|_T].
  400 +_T > [id('X_INTRODUCED_42')|_T].
  401 +_T > [id('X_INTRODUCED_0')|_T].
  402 +_T > [id('X_INTRODUCED_3')|_T].
  403 +[E|_T] > [[E]|_T].
  404 +[T,H|_T] > [[H|T]|_T].
  405 +[Es|_T] > [lit(Es,array(_))|_T].
  406 +_T > [lit(0,int)|_T].
  407 +[E|_T] > [[E]|_T].
  408 +[T,H|_T] > [[H|T]|_T].
  409 +[T,H|_T] > [[H|T]|_T].
  410 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  411 +_T > [[]|_T].
  412 +[A,C|_T] > [constraint(C,A)|_T].
  413 +[H,T|_T] > [[H|T]|_T].
  414 +_T > [id('X_INTRODUCED_42')|_T].
  415 +_T > [id('X_INTRODUCED_0')|_T].
  416 +_T > [id('X_INTRODUCED_4')|_T].
  417 +[E|_T] > [[E]|_T].
  418 +[T,H|_T] > [[H|T]|_T].
  419 +[Es|_T] > [lit(Es,array(_))|_T].
  420 +_T > [lit(0,int)|_T].
  421 +[E|_T] > [[E]|_T].
  422 +[T,H|_T] > [[H|T]|_T].
  423 +[T,H|_T] > [[H|T]|_T].
  424 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  425 +_T > [[]|_T].
  426 +[A,C|_T] > [constraint(C,A)|_T].
  427 +[H,T|_T] > [[H|T]|_T].
  428 +_T > [id('X_INTRODUCED_42')|_T].
  429 +_T > [id('X_INTRODUCED_0')|_T].
  430 +_T > [id('X_INTRODUCED_5')|_T].
  431 +[E|_T] > [[E]|_T].
  432 +[T,H|_T] > [[H|T]|_T].
  433 +[Es|_T] > [lit(Es,array(_))|_T].
  434 +_T > [lit(0,int)|_T].
  435 +[E|_T] > [[E]|_T].
  436 +[T,H|_T] > [[H|T]|_T].
  437 +[T,H|_T] > [[H|T]|_T].
  438 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  439 +_T > [[]|_T].
  440 +[A,C|_T] > [constraint(C,A)|_T].
  441 +[H,T|_T] > [[H|T]|_T].
  442 +_T > [id('X_INTRODUCED_42')|_T].
  443 +_T > [id('X_INTRODUCED_1')|_T].
  444 +_T > [id('X_INTRODUCED_2')|_T].
  445 +[E|_T] > [[E]|_T].
  446 +[T,H|_T] > [[H|T]|_T].
  447 +[Es|_T] > [lit(Es,array(_))|_T].
  448 +_T > [lit(0,int)|_T].
  449 +[E|_T] > [[E]|_T].
  450 +[T,H|_T] > [[H|T]|_T].
  451 +[T,H|_T] > [[H|T]|_T].
  452 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  453 +_T > [[]|_T].
  454 +[A,C|_T] > [constraint(C,A)|_T].
  455 +[H,T|_T] > [[H|T]|_T].
  456 +_T > [id('X_INTRODUCED_42')|_T].
  457 +_T > [id('X_INTRODUCED_1')|_T].
  458 +_T > [id('X_INTRODUCED_3')|_T].
  459 +[E|_T] > [[E]|_T].
  460 +[T,H|_T] > [[H|T]|_T].
  461 +[Es|_T] > [lit(Es,array(_))|_T].
  462 +_T > [lit(0,int)|_T].
  463 +[E|_T] > [[E]|_T].
  464 +[T,H|_T] > [[H|T]|_T].
  465 +[T,H|_T] > [[H|T]|_T].
  466 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  467 +_T > [[]|_T].
  468 +[A,C|_T] > [constraint(C,A)|_T].
  469 +[H,T|_T] > [[H|T]|_T].
  470 +_T > [id('X_INTRODUCED_42')|_T].
  471 +_T > [id('X_INTRODUCED_1')|_T].
  472 +_T > [id('X_INTRODUCED_4')|_T].
  473 +[E|_T] > [[E]|_T].
  474 +[T,H|_T] > [[H|T]|_T].
  475 +[Es|_T] > [lit(Es,array(_))|_T].
  476 +_T > [lit(0,int)|_T].
  477 +[E|_T] > [[E]|_T].
  478 +[T,H|_T] > [[H|T]|_T].
  479 +[T,H|_T] > [[H|T]|_T].
  480 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  481 +_T > [[]|_T].
  482 +[A,C|_T] > [constraint(C,A)|_T].
  483 +[H,T|_T] > [[H|T]|_T].
  484 +_T > [id('X_INTRODUCED_42')|_T].
  485 +_T > [id('X_INTRODUCED_1')|_T].
  486 +_T > [id('X_INTRODUCED_5')|_T].
  487 +[E|_T] > [[E]|_T].
  488 +[T,H|_T] > [[H|T]|_T].
  489 +[Es|_T] > [lit(Es,array(_))|_T].
  490 +_T > [lit(0,int)|_T].
  491 +[E|_T] > [[E]|_T].
  492 +[T,H|_T] > [[H|T]|_T].
  493 +[T,H|_T] > [[H|T]|_T].
  494 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  495 +_T > [[]|_T].
  496 +[A,C|_T] > [constraint(C,A)|_T].
  497 +[H,T|_T] > [[H|T]|_T].
  498 +_T > [id('X_INTRODUCED_42')|_T].
  499 +_T > [id('X_INTRODUCED_2')|_T].
  500 +_T > [id('X_INTRODUCED_3')|_T].
  501 +[E|_T] > [[E]|_T].
  502 +[T,H|_T] > [[H|T]|_T].
  503 +[Es|_T] > [lit(Es,array(_))|_T].
  504 +_T > [lit(0,int)|_T].
  505 +[E|_T] > [[E]|_T].
  506 +[T,H|_T] > [[H|T]|_T].
  507 +[T,H|_T] > [[H|T]|_T].
  508 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  509 +_T > [[]|_T].
  510 +[A,C|_T] > [constraint(C,A)|_T].
  511 +[H,T|_T] > [[H|T]|_T].
  512 +_T > [id('X_INTRODUCED_42')|_T].
  513 +_T > [id('X_INTRODUCED_2')|_T].
  514 +_T > [id('X_INTRODUCED_4')|_T].
  515 +[E|_T] > [[E]|_T].
  516 +[T,H|_T] > [[H|T]|_T].
  517 +[Es|_T] > [lit(Es,array(_))|_T].
  518 +_T > [lit(0,int)|_T].
  519 +[E|_T] > [[E]|_T].
  520 +[T,H|_T] > [[H|T]|_T].
  521 +[T,H|_T] > [[H|T]|_T].
  522 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  523 +_T > [[]|_T].
  524 +[A,C|_T] > [constraint(C,A)|_T].
  525 +[H,T|_T] > [[H|T]|_T].
  526 +_T > [id('X_INTRODUCED_42')|_T].
  527 +_T > [id('X_INTRODUCED_2')|_T].
  528 +_T > [id('X_INTRODUCED_5')|_T].
  529 +[E|_T] > [[E]|_T].
  530 +[T,H|_T] > [[H|T]|_T].
  531 +[Es|_T] > [lit(Es,array(_))|_T].
  532 +_T > [lit(0,int)|_T].
  533 +[E|_T] > [[E]|_T].
  534 +[T,H|_T] > [[H|T]|_T].
  535 +[T,H|_T] > [[H|T]|_T].
  536 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  537 +_T > [[]|_T].
  538 +[A,C|_T] > [constraint(C,A)|_T].
  539 +[H,T|_T] > [[H|T]|_T].
  540 +_T > [id('X_INTRODUCED_42')|_T].
  541 +_T > [id('X_INTRODUCED_3')|_T].
  542 +_T > [id('X_INTRODUCED_4')|_T].
  543 +[E|_T] > [[E]|_T].
  544 +[T,H|_T] > [[H|T]|_T].
  545 +[Es|_T] > [lit(Es,array(_))|_T].
  546 +_T > [lit(0,int)|_T].
  547 +[E|_T] > [[E]|_T].
  548 +[T,H|_T] > [[H|T]|_T].
  549 +[T,H|_T] > [[H|T]|_T].
  550 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  551 +_T > [[]|_T].
  552 +[A,C|_T] > [constraint(C,A)|_T].
  553 +[H,T|_T] > [[H|T]|_T].
  554 +_T > [id('X_INTRODUCED_42')|_T].
  555 +_T > [id('X_INTRODUCED_3')|_T].
  556 +_T > [id('X_INTRODUCED_5')|_T].
  557 +[E|_T] > [[E]|_T].
  558 +[T,H|_T] > [[H|T]|_T].
  559 +[Es|_T] > [lit(Es,array(_))|_T].
  560 +_T > [lit(0,int)|_T].
  561 +[E|_T] > [[E]|_T].
  562 +[T,H|_T] > [[H|T]|_T].
  563 +[T,H|_T] > [[H|T]|_T].
  564 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  565 +_T > [[]|_T].
  566 +[A,C|_T] > [constraint(C,A)|_T].
  567 +[H,T|_T] > [[H|T]|_T].
  568 +_T > [id('X_INTRODUCED_42')|_T].
  569 +_T > [id('X_INTRODUCED_4')|_T].
  570 +_T > [id('X_INTRODUCED_5')|_T].
  571 +[E|_T] > [[E]|_T].
  572 +[T,H|_T] > [[H|T]|_T].
  573 +[Es|_T] > [lit(Es,array(_))|_T].
  574 +_T > [lit(0,int)|_T].
  575 +[E|_T] > [[E]|_T].
  576 +[T,H|_T] > [[H|T]|_T].
  577 +[T,H|_T] > [[H|T]|_T].
  578 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  579 +_T > [[]|_T].
  580 +[A,C|_T] > [constraint(C,A)|_T].
  581 +[H,T|_T] > [[H|T]|_T].
  582 +_T > [id('X_INTRODUCED_45')|_T].
  583 +_T > [id('X_INTRODUCED_7')|_T].
  584 +_T > [id('X_INTRODUCED_1')|_T].
  585 +_T > [id('X_INTRODUCED_0')|_T].
  586 +[E|_T] > [[E]|_T].
  587 +[T,H|_T] > [[H|T]|_T].
  588 +[T,H|_T] > [[H|T]|_T].
  589 +[Es|_T] > [lit(Es,array(_))|_T].
  590 +_T > [lit(0,int)|_T].
  591 +[E|_T] > [[E]|_T].
  592 +[T,H|_T] > [[H|T]|_T].
  593 +[T,H|_T] > [[H|T]|_T].
  594 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  595 +_T > [id('X_INTRODUCED_7')|_T].
  596 +[E|_T] > [[E]|_T].
  597 +_T > [[]|_T].
  598 +[As, E|_T] > [[E|As]|_T].
  599 +[A,C|_T] > [constraint(C,A)|_T].
  600 +[H,T|_T] > [[H|T]|_T].
  601 +_T > [id('X_INTRODUCED_45')|_T].
  602 +_T > [id('X_INTRODUCED_8')|_T].
  603 +_T > [id('X_INTRODUCED_2')|_T].
  604 +_T > [id('X_INTRODUCED_1')|_T].
  605 +[E|_T] > [[E]|_T].
  606 +[T,H|_T] > [[H|T]|_T].
  607 +[T,H|_T] > [[H|T]|_T].
  608 +[Es|_T] > [lit(Es,array(_))|_T].
  609 +_T > [lit(0,int)|_T].
  610 +[E|_T] > [[E]|_T].
  611 +[T,H|_T] > [[H|T]|_T].
  612 +[T,H|_T] > [[H|T]|_T].
  613 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  614 +_T > [id('X_INTRODUCED_8')|_T].
  615 +[E|_T] > [[E]|_T].
  616 +_T > [[]|_T].
  617 +[As, E|_T] > [[E|As]|_T].
  618 +[A,C|_T] > [constraint(C,A)|_T].
  619 +[H,T|_T] > [[H|T]|_T].
  620 +_T > [id('X_INTRODUCED_45')|_T].
  621 +_T > [id('X_INTRODUCED_9')|_T].
  622 +_T > [id('X_INTRODUCED_3')|_T].
  623 +_T > [id('X_INTRODUCED_2')|_T].
  624 +[E|_T] > [[E]|_T].
  625 +[T,H|_T] > [[H|T]|_T].
  626 +[T,H|_T] > [[H|T]|_T].
  627 +[Es|_T] > [lit(Es,array(_))|_T].
  628 +_T > [lit(0,int)|_T].
  629 +[E|_T] > [[E]|_T].
  630 +[T,H|_T] > [[H|T]|_T].
  631 +[T,H|_T] > [[H|T]|_T].
  632 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  633 +_T > [id('X_INTRODUCED_9')|_T].
  634 +[E|_T] > [[E]|_T].
  635 +_T > [[]|_T].
  636 +[As, E|_T] > [[E|As]|_T].
  637 +[A,C|_T] > [constraint(C,A)|_T].
  638 +[H,T|_T] > [[H|T]|_T].
  639 +_T > [id('X_INTRODUCED_45')|_T].
  640 +_T > [id('X_INTRODUCED_10')|_T].
  641 +_T > [id('X_INTRODUCED_4')|_T].
  642 +_T > [id('X_INTRODUCED_3')|_T].
  643 +[E|_T] > [[E]|_T].
  644 +[T,H|_T] > [[H|T]|_T].
  645 +[T,H|_T] > [[H|T]|_T].
  646 +[Es|_T] > [lit(Es,array(_))|_T].
  647 +_T > [lit(0,int)|_T].
  648 +[E|_T] > [[E]|_T].
  649 +[T,H|_T] > [[H|T]|_T].
  650 +[T,H|_T] > [[H|T]|_T].
  651 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  652 +_T > [id('X_INTRODUCED_10')|_T].
  653 +[E|_T] > [[E]|_T].
  654 +_T > [[]|_T].
  655 +[As, E|_T] > [[E|As]|_T].
  656 +[A,C|_T] > [constraint(C,A)|_T].
  657 +[H,T|_T] > [[H|T]|_T].
  658 +_T > [id('X_INTRODUCED_45')|_T].
  659 +_T > [id('X_INTRODUCED_11')|_T].
  660 +_T > [id('X_INTRODUCED_5')|_T].
  661 +_T > [id('X_INTRODUCED_4')|_T].
  662 +[E|_T] > [[E]|_T].
  663 +[T,H|_T] > [[H|T]|_T].
  664 +[T,H|_T] > [[H|T]|_T].
  665 +[Es|_T] > [lit(Es,array(_))|_T].
  666 +_T > [lit(0,int)|_T].
  667 +[E|_T] > [[E]|_T].
  668 +[T,H|_T] > [[H|T]|_T].
  669 +[T,H|_T] > [[H|T]|_T].
  670 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  671 +_T > [id('X_INTRODUCED_11')|_T].
  672 +[E|_T] > [[E]|_T].
  673 +_T > [[]|_T].
  674 +[As, E|_T] > [[E|As]|_T].
  675 +[A,C|_T] > [constraint(C,A)|_T].
  676 +[H,T|_T] > [[H|T]|_T].
  677 +_T > [id('X_INTRODUCED_45')|_T].
  678 +_T > [id('X_INTRODUCED_14')|_T].
  679 +_T > [id('X_INTRODUCED_2')|_T].
  680 +_T > [id('X_INTRODUCED_0')|_T].
  681 +[E|_T] > [[E]|_T].
  682 +[T,H|_T] > [[H|T]|_T].
  683 +[T,H|_T] > [[H|T]|_T].
  684 +[Es|_T] > [lit(Es,array(_))|_T].
  685 +_T > [lit(0,int)|_T].
  686 +[E|_T] > [[E]|_T].
  687 +[T,H|_T] > [[H|T]|_T].
  688 +[T,H|_T] > [[H|T]|_T].
  689 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  690 +_T > [id('X_INTRODUCED_14')|_T].
  691 +[E|_T] > [[E]|_T].
  692 +_T > [[]|_T].
  693 +[As, E|_T] > [[E|As]|_T].
  694 +[A,C|_T] > [constraint(C,A)|_T].
  695 +[H,T|_T] > [[H|T]|_T].
  696 +_T > [id('X_INTRODUCED_45')|_T].
  697 +_T > [id('X_INTRODUCED_15')|_T].
  698 +_T > [id('X_INTRODUCED_3')|_T].
  699 +_T > [id('X_INTRODUCED_1')|_T].
  700 +[E|_T] > [[E]|_T].
  701 +[T,H|_T] > [[H|T]|_T].
  702 +[T,H|_T] > [[H|T]|_T].
  703 +[Es|_T] > [lit(Es,array(_))|_T].
  704 +_T > [lit(0,int)|_T].
  705 +[E|_T] > [[E]|_T].
  706 +[T,H|_T] > [[H|T]|_T].
  707 +[T,H|_T] > [[H|T]|_T].
  708 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  709 +_T > [id('X_INTRODUCED_15')|_T].
  710 +[E|_T] > [[E]|_T].
  711 +_T > [[]|_T].
  712 +[As, E|_T] > [[E|As]|_T].
  713 +[A,C|_T] > [constraint(C,A)|_T].
  714 +[H,T|_T] > [[H|T]|_T].
  715 +_T > [id('X_INTRODUCED_45')|_T].
  716 +_T > [id('X_INTRODUCED_16')|_T].
  717 +_T > [id('X_INTRODUCED_4')|_T].
  718 +_T > [id('X_INTRODUCED_2')|_T].
  719 +[E|_T] > [[E]|_T].
  720 +[T,H|_T] > [[H|T]|_T].
  721 +[T,H|_T] > [[H|T]|_T].
  722 +[Es|_T] > [lit(Es,array(_))|_T].
  723 +_T > [lit(0,int)|_T].
  724 +[E|_T] > [[E]|_T].
  725 +[T,H|_T] > [[H|T]|_T].
  726 +[T,H|_T] > [[H|T]|_T].
  727 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  728 +_T > [id('X_INTRODUCED_16')|_T].
  729 +[E|_T] > [[E]|_T].
  730 +_T > [[]|_T].
  731 +[As, E|_T] > [[E|As]|_T].
  732 +[A,C|_T] > [constraint(C,A)|_T].
  733 +[H,T|_T] > [[H|T]|_T].
  734 +_T > [id('X_INTRODUCED_45')|_T].
  735 +_T > [id('X_INTRODUCED_17')|_T].
  736 +_T > [id('X_INTRODUCED_5')|_T].
  737 +_T > [id('X_INTRODUCED_3')|_T].
  738 +[E|_T] > [[E]|_T].
  739 +[T,H|_T] > [[H|T]|_T].
  740 +[T,H|_T] > [[H|T]|_T].
  741 +[Es|_T] > [lit(Es,array(_))|_T].
  742 +_T > [lit(0,int)|_T].
  743 +[E|_T] > [[E]|_T].
  744 +[T,H|_T] > [[H|T]|_T].
  745 +[T,H|_T] > [[H|T]|_T].
  746 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  747 +_T > [id('X_INTRODUCED_17')|_T].
  748 +[E|_T] > [[E]|_T].
  749 +_T > [[]|_T].
  750 +[As, E|_T] > [[E|As]|_T].
  751 +[A,C|_T] > [constraint(C,A)|_T].
  752 +[H,T|_T] > [[H|T]|_T].
  753 +_T > [id('X_INTRODUCED_45')|_T].
  754 +_T > [id('X_INTRODUCED_21')|_T].
  755 +_T > [id('X_INTRODUCED_3')|_T].
  756 +_T > [id('X_INTRODUCED_0')|_T].
  757 +[E|_T] > [[E]|_T].
  758 +[T,H|_T] > [[H|T]|_T].
  759 +[T,H|_T] > [[H|T]|_T].
  760 +[Es|_T] > [lit(Es,array(_))|_T].
  761 +_T > [lit(0,int)|_T].
  762 +[E|_T] > [[E]|_T].
  763 +[T,H|_T] > [[H|T]|_T].
  764 +[T,H|_T] > [[H|T]|_T].
  765 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  766 +_T > [id('X_INTRODUCED_21')|_T].
  767 +[E|_T] > [[E]|_T].
  768 +_T > [[]|_T].
  769 +[As, E|_T] > [[E|As]|_T].
  770 +[A,C|_T] > [constraint(C,A)|_T].
  771 +[H,T|_T] > [[H|T]|_T].
  772 +_T > [id('X_INTRODUCED_45')|_T].
  773 +_T > [id('X_INTRODUCED_22')|_T].
  774 +_T > [id('X_INTRODUCED_4')|_T].
  775 +_T > [id('X_INTRODUCED_1')|_T].
  776 +[E|_T] > [[E]|_T].
  777 +[T,H|_T] > [[H|T]|_T].
  778 +[T,H|_T] > [[H|T]|_T].
  779 +[Es|_T] > [lit(Es,array(_))|_T].
  780 +_T > [lit(0,int)|_T].
  781 +[E|_T] > [[E]|_T].
  782 +[T,H|_T] > [[H|T]|_T].
  783 +[T,H|_T] > [[H|T]|_T].
  784 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  785 +_T > [id('X_INTRODUCED_22')|_T].
  786 +[E|_T] > [[E]|_T].
  787 +_T > [[]|_T].
  788 +[As, E|_T] > [[E|As]|_T].
  789 +[A,C|_T] > [constraint(C,A)|_T].
  790 +[H,T|_T] > [[H|T]|_T].
  791 +_T > [id('X_INTRODUCED_45')|_T].
  792 +_T > [id('X_INTRODUCED_23')|_T].
  793 +_T > [id('X_INTRODUCED_5')|_T].
  794 +_T > [id('X_INTRODUCED_2')|_T].
  795 +[E|_T] > [[E]|_T].
  796 +[T,H|_T] > [[H|T]|_T].
  797 +[T,H|_T] > [[H|T]|_T].
  798 +[Es|_T] > [lit(Es,array(_))|_T].
  799 +_T > [lit(0,int)|_T].
  800 +[E|_T] > [[E]|_T].
  801 +[T,H|_T] > [[H|T]|_T].
  802 +[T,H|_T] > [[H|T]|_T].
  803 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  804 +_T > [id('X_INTRODUCED_23')|_T].
  805 +[E|_T] > [[E]|_T].
  806 +_T > [[]|_T].
  807 +[As, E|_T] > [[E|As]|_T].
  808 +[A,C|_T] > [constraint(C,A)|_T].
  809 +[H,T|_T] > [[H|T]|_T].
  810 +_T > [id('X_INTRODUCED_45')|_T].
  811 +_T > [id('X_INTRODUCED_28')|_T].
  812 +_T > [id('X_INTRODUCED_4')|_T].
  813 +_T > [id('X_INTRODUCED_0')|_T].
  814 +[E|_T] > [[E]|_T].
  815 +[T,H|_T] > [[H|T]|_T].
  816 +[T,H|_T] > [[H|T]|_T].
  817 +[Es|_T] > [lit(Es,array(_))|_T].
  818 +_T > [lit(0,int)|_T].
  819 +[E|_T] > [[E]|_T].
  820 +[T,H|_T] > [[H|T]|_T].
  821 +[T,H|_T] > [[H|T]|_T].
  822 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  823 +_T > [id('X_INTRODUCED_28')|_T].
  824 +[E|_T] > [[E]|_T].
  825 +_T > [[]|_T].
  826 +[As, E|_T] > [[E|As]|_T].
  827 +[A,C|_T] > [constraint(C,A)|_T].
  828 +[H,T|_T] > [[H|T]|_T].
  829 +_T > [id('X_INTRODUCED_45')|_T].
  830 +_T > [id('X_INTRODUCED_29')|_T].
  831 +_T > [id('X_INTRODUCED_5')|_T].
  832 +_T > [id('X_INTRODUCED_1')|_T].
  833 +[E|_T] > [[E]|_T].
  834 +[T,H|_T] > [[H|T]|_T].
  835 +[T,H|_T] > [[H|T]|_T].
  836 +[Es|_T] > [lit(Es,array(_))|_T].
  837 +_T > [lit(0,int)|_T].
  838 +[E|_T] > [[E]|_T].
  839 +[T,H|_T] > [[H|T]|_T].
  840 +[T,H|_T] > [[H|T]|_T].
  841 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  842 +_T > [id('X_INTRODUCED_29')|_T].
  843 +[E|_T] > [[E]|_T].
  844 +_T > [[]|_T].
  845 +[As, E|_T] > [[E|As]|_T].
  846 +[A,C|_T] > [constraint(C,A)|_T].
  847 +[H,T|_T] > [[H|T]|_T].
  848 +_T > [id('X_INTRODUCED_45')|_T].
  849 +_T > [id('X_INTRODUCED_35')|_T].
  850 +_T > [id('X_INTRODUCED_5')|_T].
  851 +_T > [id('X_INTRODUCED_0')|_T].
  852 +[E|_T] > [[E]|_T].
  853 +[T,H|_T] > [[H|T]|_T].
  854 +[T,H|_T] > [[H|T]|_T].
  855 +[Es|_T] > [lit(Es,array(_))|_T].
  856 +_T > [lit(0,int)|_T].
  857 +[E|_T] > [[E]|_T].
  858 +[T,H|_T] > [[H|T]|_T].
  859 +[T,H|_T] > [[H|T]|_T].
  860 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  861 +_T > [id('X_INTRODUCED_35')|_T].
  862 +[E|_T] > [[E]|_T].
  863 +_T > [[]|_T].
  864 +[As, E|_T] > [[E|As]|_T].
  865 +[A,C|_T] > [constraint(C,A)|_T].
  866 +[H,T|_T] > [[H|T]|_T].
  867 +_T > [id('X_INTRODUCED_42')|_T].
  868 +_T > [id('X_INTRODUCED_7')|_T].
  869 +_T > [id('X_INTRODUCED_8')|_T].
  870 +[E|_T] > [[E]|_T].
  871 +[T,H|_T] > [[H|T]|_T].
  872 +[Es|_T] > [lit(Es,array(_))|_T].
  873 +_T > [lit(0,int)|_T].
  874 +[E|_T] > [[E]|_T].
  875 +[T,H|_T] > [[H|T]|_T].
  876 +[T,H|_T] > [[H|T]|_T].
  877 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  878 +_T > [[]|_T].
  879 +[A,C|_T] > [constraint(C,A)|_T].
  880 +[H,T|_T] > [[H|T]|_T].
  881 +_T > [id('X_INTRODUCED_42')|_T].
  882 +_T > [id('X_INTRODUCED_7')|_T].
  883 +_T > [id('X_INTRODUCED_9')|_T].
  884 +[E|_T] > [[E]|_T].
  885 +[T,H|_T] > [[H|T]|_T].
  886 +[Es|_T] > [lit(Es,array(_))|_T].
  887 +_T > [lit(0,int)|_T].
  888 +[E|_T] > [[E]|_T].
  889 +[T,H|_T] > [[H|T]|_T].
  890 +[T,H|_T] > [[H|T]|_T].
  891 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  892 +_T > [[]|_T].
  893 +[A,C|_T] > [constraint(C,A)|_T].
  894 +[H,T|_T] > [[H|T]|_T].
  895 +_T > [id('X_INTRODUCED_42')|_T].
  896 +_T > [id('X_INTRODUCED_7')|_T].
  897 +_T > [id('X_INTRODUCED_10')|_T].
  898 +[E|_T] > [[E]|_T].
  899 +[T,H|_T] > [[H|T]|_T].
  900 +[Es|_T] > [lit(Es,array(_))|_T].
  901 +_T > [lit(0,int)|_T].
  902 +[E|_T] > [[E]|_T].
  903 +[T,H|_T] > [[H|T]|_T].
  904 +[T,H|_T] > [[H|T]|_T].
  905 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  906 +_T > [[]|_T].
  907 +[A,C|_T] > [constraint(C,A)|_T].
  908 +[H,T|_T] > [[H|T]|_T].
  909 +_T > [id('X_INTRODUCED_42')|_T].
  910 +_T > [id('X_INTRODUCED_7')|_T].
  911 +_T > [id('X_INTRODUCED_11')|_T].
  912 +[E|_T] > [[E]|_T].
  913 +[T,H|_T] > [[H|T]|_T].
  914 +[Es|_T] > [lit(Es,array(_))|_T].
  915 +_T > [lit(0,int)|_T].
  916 +[E|_T] > [[E]|_T].
  917 +[T,H|_T] > [[H|T]|_T].
  918 +[T,H|_T] > [[H|T]|_T].
  919 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  920 +_T > [[]|_T].
  921 +[A,C|_T] > [constraint(C,A)|_T].
  922 +[H,T|_T] > [[H|T]|_T].
  923 +_T > [id('X_INTRODUCED_42')|_T].
  924 +_T > [id('X_INTRODUCED_8')|_T].
  925 +_T > [id('X_INTRODUCED_9')|_T].
  926 +[E|_T] > [[E]|_T].
  927 +[T,H|_T] > [[H|T]|_T].
  928 +[Es|_T] > [lit(Es,array(_))|_T].
  929 +_T > [lit(0,int)|_T].
  930 +[E|_T] > [[E]|_T].
  931 +[T,H|_T] > [[H|T]|_T].
  932 +[T,H|_T] > [[H|T]|_T].
  933 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  934 +_T > [[]|_T].
  935 +[A,C|_T] > [constraint(C,A)|_T].
  936 +[H,T|_T] > [[H|T]|_T].
  937 +_T > [id('X_INTRODUCED_42')|_T].
  938 +_T > [id('X_INTRODUCED_8')|_T].
  939 +_T > [id('X_INTRODUCED_10')|_T].
  940 +[E|_T] > [[E]|_T].
  941 +[T,H|_T] > [[H|T]|_T].
  942 +[Es|_T] > [lit(Es,array(_))|_T].
  943 +_T > [lit(0,int)|_T].
  944 +[E|_T] > [[E]|_T].
  945 +[T,H|_T] > [[H|T]|_T].
  946 +[T,H|_T] > [[H|T]|_T].
  947 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  948 +_T > [[]|_T].
  949 +[A,C|_T] > [constraint(C,A)|_T].
  950 +[H,T|_T] > [[H|T]|_T].
  951 +_T > [id('X_INTRODUCED_42')|_T].
  952 +_T > [id('X_INTRODUCED_8')|_T].
  953 +_T > [id('X_INTRODUCED_11')|_T].
  954 +[E|_T] > [[E]|_T].
  955 +[T,H|_T] > [[H|T]|_T].
  956 +[Es|_T] > [lit(Es,array(_))|_T].
  957 +_T > [lit(0,int)|_T].
  958 +[E|_T] > [[E]|_T].
  959 +[T,H|_T] > [[H|T]|_T].
  960 +[T,H|_T] > [[H|T]|_T].
  961 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  962 +_T > [[]|_T].
  963 +[A,C|_T] > [constraint(C,A)|_T].
  964 +[H,T|_T] > [[H|T]|_T].
  965 +_T > [id('X_INTRODUCED_42')|_T].
  966 +_T > [id('X_INTRODUCED_9')|_T].
  967 +_T > [id('X_INTRODUCED_10')|_T].
  968 +[E|_T] > [[E]|_T].
  969 +[T,H|_T] > [[H|T]|_T].
  970 +[Es|_T] > [lit(Es,array(_))|_T].
  971 +_T > [lit(0,int)|_T].
  972 +[E|_T] > [[E]|_T].
  973 +[T,H|_T] > [[H|T]|_T].
  974 +[T,H|_T] > [[H|T]|_T].
  975 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  976 +_T > [[]|_T].
  977 +[A,C|_T] > [constraint(C,A)|_T].
  978 +[H,T|_T] > [[H|T]|_T].
  979 +_T > [id('X_INTRODUCED_42')|_T].
  980 +_T > [id('X_INTRODUCED_9')|_T].
  981 +_T > [id('X_INTRODUCED_11')|_T].
  982 +[E|_T] > [[E]|_T].
  983 +[T,H|_T] > [[H|T]|_T].
  984 +[Es|_T] > [lit(Es,array(_))|_T].
  985 +_T > [lit(0,int)|_T].
  986 +[E|_T] > [[E]|_T].
  987 +[T,H|_T] > [[H|T]|_T].
  988 +[T,H|_T] > [[H|T]|_T].
  989 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  990 +_T > [[]|_T].
  991 +[A,C|_T] > [constraint(C,A)|_T].
  992 +[H,T|_T] > [[H|T]|_T].
  993 +_T > [id('X_INTRODUCED_42')|_T].
  994 +_T > [id('X_INTRODUCED_10')|_T].
  995 +_T > [id('X_INTRODUCED_11')|_T].
  996 +[E|_T] > [[E]|_T].
  997 +[T,H|_T] > [[H|T]|_T].
  998 +[Es|_T] > [lit(Es,array(_))|_T].
  999 +_T > [lit(0,int)|_T].
  1000 +[E|_T] > [[E]|_T].
  1001 +[T,H|_T] > [[H|T]|_T].
  1002 +[T,H|_T] > [[H|T]|_T].
  1003 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1004 +_T > [[]|_T].
  1005 +[A,C|_T] > [constraint(C,A)|_T].
  1006 +[H,T|_T] > [[H|T]|_T].
  1007 +_T > [id('X_INTRODUCED_42')|_T].
  1008 +_T > [id('X_INTRODUCED_14')|_T].
  1009 +_T > [id('X_INTRODUCED_15')|_T].
  1010 +[E|_T] > [[E]|_T].
  1011 +[T,H|_T] > [[H|T]|_T].
  1012 +[Es|_T] > [lit(Es,array(_))|_T].
  1013 +_T > [lit(0,int)|_T].
  1014 +[E|_T] > [[E]|_T].
  1015 +[T,H|_T] > [[H|T]|_T].
  1016 +[T,H|_T] > [[H|T]|_T].
  1017 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1018 +_T > [[]|_T].
  1019 +[A,C|_T] > [constraint(C,A)|_T].
  1020 +[H,T|_T] > [[H|T]|_T].
  1021 +_T > [id('X_INTRODUCED_42')|_T].
  1022 +_T > [id('X_INTRODUCED_14')|_T].
  1023 +_T > [id('X_INTRODUCED_16')|_T].
  1024 +[E|_T] > [[E]|_T].
  1025 +[T,H|_T] > [[H|T]|_T].
  1026 +[Es|_T] > [lit(Es,array(_))|_T].
  1027 +_T > [lit(0,int)|_T].
  1028 +[E|_T] > [[E]|_T].
  1029 +[T,H|_T] > [[H|T]|_T].
  1030 +[T,H|_T] > [[H|T]|_T].
  1031 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1032 +_T > [[]|_T].
  1033 +[A,C|_T] > [constraint(C,A)|_T].
  1034 +[H,T|_T] > [[H|T]|_T].
  1035 +_T > [id('X_INTRODUCED_42')|_T].
  1036 +_T > [id('X_INTRODUCED_14')|_T].
  1037 +_T > [id('X_INTRODUCED_17')|_T].
  1038 +[E|_T] > [[E]|_T].
  1039 +[T,H|_T] > [[H|T]|_T].
  1040 +[Es|_T] > [lit(Es,array(_))|_T].
  1041 +_T > [lit(0,int)|_T].
  1042 +[E|_T] > [[E]|_T].
  1043 +[T,H|_T] > [[H|T]|_T].
  1044 +[T,H|_T] > [[H|T]|_T].
  1045 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1046 +_T > [[]|_T].
  1047 +[A,C|_T] > [constraint(C,A)|_T].
  1048 +[H,T|_T] > [[H|T]|_T].
  1049 +_T > [id('X_INTRODUCED_42')|_T].
  1050 +_T > [id('X_INTRODUCED_15')|_T].
  1051 +_T > [id('X_INTRODUCED_16')|_T].
  1052 +[E|_T] > [[E]|_T].
  1053 +[T,H|_T] > [[H|T]|_T].
  1054 +[Es|_T] > [lit(Es,array(_))|_T].
  1055 +_T > [lit(0,int)|_T].
  1056 +[E|_T] > [[E]|_T].
  1057 +[T,H|_T] > [[H|T]|_T].
  1058 +[T,H|_T] > [[H|T]|_T].
  1059 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1060 +_T > [[]|_T].
  1061 +[A,C|_T] > [constraint(C,A)|_T].
  1062 +[H,T|_T] > [[H|T]|_T].
  1063 +_T > [id('X_INTRODUCED_42')|_T].
  1064 +_T > [id('X_INTRODUCED_15')|_T].
  1065 +_T > [id('X_INTRODUCED_17')|_T].
  1066 +[E|_T] > [[E]|_T].
  1067 +[T,H|_T] > [[H|T]|_T].
  1068 +[Es|_T] > [lit(Es,array(_))|_T].
  1069 +_T > [lit(0,int)|_T].
  1070 +[E|_T] > [[E]|_T].
  1071 +[T,H|_T] > [[H|T]|_T].
  1072 +[T,H|_T] > [[H|T]|_T].
  1073 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1074 +_T > [[]|_T].
  1075 +[A,C|_T] > [constraint(C,A)|_T].
  1076 +[H,T|_T] > [[H|T]|_T].
  1077 +_T > [id('X_INTRODUCED_42')|_T].
  1078 +_T > [id('X_INTRODUCED_16')|_T].
  1079 +_T > [id('X_INTRODUCED_17')|_T].
  1080 +[E|_T] > [[E]|_T].
  1081 +[T,H|_T] > [[H|T]|_T].
  1082 +[Es|_T] > [lit(Es,array(_))|_T].
  1083 +_T > [lit(0,int)|_T].
  1084 +[E|_T] > [[E]|_T].
  1085 +[T,H|_T] > [[H|T]|_T].
  1086 +[T,H|_T] > [[H|T]|_T].
  1087 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1088 +_T > [[]|_T].
  1089 +[A,C|_T] > [constraint(C,A)|_T].
  1090 +[H,T|_T] > [[H|T]|_T].
  1091 +_T > [id('X_INTRODUCED_42')|_T].
  1092 +_T > [id('X_INTRODUCED_21')|_T].
  1093 +_T > [id('X_INTRODUCED_22')|_T].
  1094 +[E|_T] > [[E]|_T].
  1095 +[T,H|_T] > [[H|T]|_T].
  1096 +[Es|_T] > [lit(Es,array(_))|_T].
  1097 +_T > [lit(0,int)|_T].
  1098 +[E|_T] > [[E]|_T].
  1099 +[T,H|_T] > [[H|T]|_T].
  1100 +[T,H|_T] > [[H|T]|_T].
  1101 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1102 +_T > [[]|_T].
  1103 +[A,C|_T] > [constraint(C,A)|_T].
  1104 +[H,T|_T] > [[H|T]|_T].
  1105 +_T > [id('X_INTRODUCED_42')|_T].
  1106 +_T > [id('X_INTRODUCED_21')|_T].
  1107 +_T > [id('X_INTRODUCED_23')|_T].
  1108 +[E|_T] > [[E]|_T].
  1109 +[T,H|_T] > [[H|T]|_T].
  1110 +[Es|_T] > [lit(Es,array(_))|_T].
  1111 +_T > [lit(0,int)|_T].
  1112 +[E|_T] > [[E]|_T].
  1113 +[T,H|_T] > [[H|T]|_T].
  1114 +[T,H|_T] > [[H|T]|_T].
  1115 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1116 +_T > [[]|_T].
  1117 +[A,C|_T] > [constraint(C,A)|_T].
  1118 +[H,T|_T] > [[H|T]|_T].
  1119 +_T > [id('X_INTRODUCED_42')|_T].
  1120 +_T > [id('X_INTRODUCED_22')|_T].
  1121 +_T > [id('X_INTRODUCED_23')|_T].
  1122 +[E|_T] > [[E]|_T].
  1123 +[T,H|_T] > [[H|T]|_T].
  1124 +[Es|_T] > [lit(Es,array(_))|_T].
  1125 +_T > [lit(0,int)|_T].
  1126 +[E|_T] > [[E]|_T].
  1127 +[T,H|_T] > [[H|T]|_T].
  1128 +[T,H|_T] > [[H|T]|_T].
  1129 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1130 +_T > [[]|_T].
  1131 +[A,C|_T] > [constraint(C,A)|_T].
  1132 +[H,T|_T] > [[H|T]|_T].
  1133 +_T > [id('X_INTRODUCED_42')|_T].
  1134 +_T > [id('X_INTRODUCED_28')|_T].
  1135 +_T > [id('X_INTRODUCED_29')|_T].
  1136 +[E|_T] > [[E]|_T].
  1137 +[T,H|_T] > [[H|T]|_T].
  1138 +[Es|_T] > [lit(Es,array(_))|_T].
  1139 +_T > [lit(0,int)|_T].
  1140 +[E|_T] > [[E]|_T].
  1141 +[T,H|_T] > [[H|T]|_T].
  1142 +[T,H|_T] > [[H|T]|_T].
  1143 +[AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
  1144 +_T > [[]|_T].
  1145 +[A,C|_T] > [constraint(C,A)|_T].
  1146 +[H,T|_T] > [[H|T]|_T].
  1147 +_T > [id('X_INTRODUCED_42')|_T].
  1148 +_T > [id('X_INTRODUCED_0')|_T].
  1149 +_T > [id('X_INTRODUCED_5')|_T].
  1150 +[E|_T] > [[E]|_T].
  1151 +[T,H|_T] > [[H|T]|_T].
  1152 +[Es|_T] > [lit(Es,array(_))|_T].
  1153 +_T > [lit(-1,int)|_T].
  1154 +[E|_T] > [[E]|_T].
  1155 +[T,H|_T] > [[H|T]|_T].
  1156 +[T,H|_T] > [[H|T]|_T].
  1157 +[AL|_T] > [C|_T] :- C =.. ['int_lin_le'|AL].
  1158 +_T > [[]|_T].
  1159 +[A,C|_T] > [constraint(C,A)|_T].
  1160 +[H,T|_T] > [[H|T]|_T].
  1161 +_T > [id('X_INTRODUCED_70')|_T].
  1162 +_T > [id('X_INTRODUCED_8')|_T].
  1163 +_T > [id('X_INTRODUCED_21')|_T].
  1164 +_T > [id('X_INTRODUCED_14')|_T].
  1165 +_T > [id('X_INTRODUCED_15')|_T].
  1166 +[E|_T] > [[E]|_T].
  1167 +[T,H|_T] > [[H|T]|_T].
  1168 +[T,H|_T] > [[H|T]|_T].
  1169 +[T,H|_T] > [[H|T]|_T].
  1170 +[Es|_T] > [lit(Es,array(_))|_T].
  1171 +_T > [lit(0,int)|_T].
  1172 +[E|_T] > [[E]|_T].
  1173 +[T,H|_T] > [[H|T]|_T].
  1174 +[T,H|_T] > [[H|T]|_T].
  1175 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  1176 +_T > [[]|_T].
  1177 +[A,C|_T] > [constraint(C,A)|_T].
  1178 +[H,T|_T] > [[H|T]|_T].
  1179 +_T > [id('X_INTRODUCED_70')|_T].
  1180 +_T > [id('X_INTRODUCED_9')|_T].
  1181 +_T > [id('X_INTRODUCED_22')|_T].
  1182 +_T > [id('X_INTRODUCED_15')|_T].
  1183 +_T > [id('X_INTRODUCED_16')|_T].
  1184 +[E|_T] > [[E]|_T].
  1185 +[T,H|_T] > [[H|T]|_T].
  1186 +[T,H|_T] > [[H|T]|_T].
  1187 +[T,H|_T] > [[H|T]|_T].
  1188 +[Es|_T] > [lit(Es,array(_))|_T].
  1189 +_T > [lit(0,int)|_T].
  1190 +[E|_T] > [[E]|_T].
  1191 +[T,H|_T] > [[H|T]|_T].
  1192 +[T,H|_T] > [[H|T]|_T].
  1193 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  1194 +_T > [[]|_T].
  1195 +[A,C|_T] > [constraint(C,A)|_T].
  1196 +[H,T|_T] > [[H|T]|_T].
  1197 +_T > [id('X_INTRODUCED_70')|_T].
  1198 +_T > [id('X_INTRODUCED_10')|_T].
  1199 +_T > [id('X_INTRODUCED_23')|_T].
  1200 +_T > [id('X_INTRODUCED_16')|_T].
  1201 +_T > [id('X_INTRODUCED_17')|_T].
  1202 +[E|_T] > [[E]|_T].
  1203 +[T,H|_T] > [[H|T]|_T].
  1204 +[T,H|_T] > [[H|T]|_T].
  1205 +[T,H|_T] > [[H|T]|_T].
  1206 +[Es|_T] > [lit(Es,array(_))|_T].
  1207 +_T > [lit(0,int)|_T].
  1208 +[E|_T] > [[E]|_T].
  1209 +[T,H|_T] > [[H|T]|_T].
  1210 +[T,H|_T] > [[H|T]|_T].
  1211 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  1212 +_T > [[]|_T].
  1213 +[A,C|_T] > [constraint(C,A)|_T].
  1214 +[H,T|_T] > [[H|T]|_T].
  1215 +_T > [id('X_INTRODUCED_70')|_T].
  1216 +_T > [id('X_INTRODUCED_15')|_T].
  1217 +_T > [id('X_INTRODUCED_28')|_T].
  1218 +_T > [id('X_INTRODUCED_21')|_T].
  1219 +_T > [id('X_INTRODUCED_22')|_T].
  1220 +[E|_T] > [[E]|_T].
  1221 +[T,H|_T] > [[H|T]|_T].
  1222 +[T,H|_T] > [[H|T]|_T].
  1223 +[T,H|_T] > [[H|T]|_T].
  1224 +[Es|_T] > [lit(Es,array(_))|_T].
  1225 +_T > [lit(0,int)|_T].
  1226 +[E|_T] > [[E]|_T].
  1227 +[T,H|_T] > [[H|T]|_T].
  1228 +[T,H|_T] > [[H|T]|_T].
  1229 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  1230 +_T > [[]|_T].
  1231 +[A,C|_T] > [constraint(C,A)|_T].
  1232 +[H,T|_T] > [[H|T]|_T].
  1233 +_T > [id('X_INTRODUCED_70')|_T].
  1234 +_T > [id('X_INTRODUCED_16')|_T].
  1235 +_T > [id('X_INTRODUCED_29')|_T].
  1236 +_T > [id('X_INTRODUCED_22')|_T].
  1237 +_T > [id('X_INTRODUCED_23')|_T].
  1238 +[E|_T] > [[E]|_T].
  1239 +[T,H|_T] > [[H|T]|_T].
  1240 +[T,H|_T] > [[H|T]|_T].
  1241 +[T,H|_T] > [[H|T]|_T].
  1242 +[Es|_T] > [lit(Es,array(_))|_T].
  1243 +_T > [lit(0,int)|_T].
  1244 +[E|_T] > [[E]|_T].
  1245 +[T,H|_T] > [[H|T]|_T].
  1246 +[T,H|_T] > [[H|T]|_T].
  1247 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  1248 +_T > [[]|_T].
  1249 +[A,C|_T] > [constraint(C,A)|_T].
  1250 +[H,T|_T] > [[H|T]|_T].
  1251 +_T > [id('X_INTRODUCED_70')|_T].
  1252 +_T > [id('X_INTRODUCED_22')|_T].
  1253 +_T > [id('X_INTRODUCED_35')|_T].
  1254 +_T > [id('X_INTRODUCED_28')|_T].
  1255 +_T > [id('X_INTRODUCED_29')|_T].
  1256 +[E|_T] > [[E]|_T].
  1257 +[T,H|_T] > [[H|T]|_T].
  1258 +[T,H|_T] > [[H|T]|_T].
  1259 +[T,H|_T] > [[H|T]|_T].
  1260 +[Es|_T] > [lit(Es,array(_))|_T].
  1261 +_T > [lit(0,int)|_T].
  1262 +[E|_T] > [[E]|_T].
  1263 +[T,H|_T] > [[H|T]|_T].
  1264 +[T,H|_T] > [[H|T]|_T].
  1265 +[AL|_T] > [C|_T] :- C =.. ['int_lin_eq'|AL].
  1266 +_T > [[]|_T].
  1267 +[A,C|_T] > [constraint(C,A)|_T].
  1268 +[H,T|_T] > [[H|T]|_T].
  1269 +[X|_T] > [constrs(X)|_T].
  1270 +_T > [id('costas')|_T].
  1271 +_T > [id('input_order')|_T].
  1272 +_T > [id('indomain_min')|_T].
  1273 +_T > [id('complete')|_T].
  1274 +[E|_T] > [[E]|_T].
  1275 +[T,H|_T] > [[H|T]|_T].
  1276 +[T,H|_T] > [[H|T]|_T].
  1277 +[T,H|_T] > [[H|T]|_T].
  1278 +_T > [[]|_T].
  1279 +[As, E|_T] > [[E|As]|_T].
  1280 +_T > [satisfy|_T].
  1281 +[S,A|_T] > [solve(S, A)|_T].
  1282 +[S,C,V,P|_T] > [fzn(P, V, C, S)|_T].
... ...
fzn-parser/fznslurp.pl
... ... @@ -13,11 +13,16 @@ main([]).
13 13  
14 14 action(load(F)) :- !, see(F), action(load), seen.
15 15 action(load) :- !, load_ast(AST), g_assign(ast, AST).
  16 +action(dump(A)) :- !, dump_ast(A).
16 17 action(dump) :- !, g_read(ast, AST), dump_ast(AST).
17 18 action(name) :- !,
18 19 g_read(ast, AST),
19   - sa_names(AST, NAST),
20   - g_assign(ast, NAST).
  20 + sa_names(AST, NAST, ST),
  21 + g_assign(ast_n, NAST+ST).
  22 +action(type) :- !,
  23 + g_read(ast_n, AST+ST),
  24 + sa_types(AST, ST),
  25 + g_assign(ast_t, AST+ST).
21 26 action(halt) :- !, halt.
22 27 action(debug) :- g_read(ast_debug, true), !, g_assign(ast_debug, false).
23 28 action(debug) :- !, g_assign(ast_debug, true).
... ...
fzn-parser/semantic.pl
1 1 % == No, Emacs this is -*-Prolog-*- code, not what you thought... =============
2 2  
  3 +% == NAMES ====================================================================
  4 +
  5 +% -- sa_names(AST_IN, AST_OUT, ST) --------------------------------------------
  6 +%
  7 +% sa_names/3: do name analysis (replace identifiers by their dict. entry)
  8 +
3 9 sa_names(fzn(preds(IP), vars(IV), constrs(IC), SOLVE),
4   - fzn(preds(OP), vars(OV), constrs(OC), SOLVE, ST)) :-
  10 + fzn(preds(OP), vars(OV), constrs(OC), SOLVE), ST) :-
5 11 sa_n_traverse(IP, OP, ST), % predicates
6 12 sa_n_traverse(IV, OV, ST), % variables
7 13 sa_n_traverse(IC, OC, ST). % constraints
... ... @@ -17,14 +23,22 @@ sa_n_traverse([_|Ns], NNs, ST) :- !, % ignore failing nodes (beware!)
17 23  
18 24 sa_n_traverse(N, NN, ST) :- sa_n(N, NN, ST). % non-list case
19 25  
  26 +
20 27 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
21 28 %
22 29 % sa_n(AST_N_IN, AST_N_OUT, ST)
23 30 %
  31 +% arguments:
  32 +% AST_N_IN - input AST node
  33 +% AST_N_OUT - output AST node (same structure, rewritten)
  34 +% ST - symbol table (gets extended)
  35 +%
24 36 % handle all AST cases:
25   -% var(N,T,I,A) - variable declaration
26   -% lit(V,T) - literal with type
27   -%
  37 +% var(N,T,I,A) - Name, Type, Initializer, Attrib -- variable declaration
  38 +% lit(V,T) - Value, Type -- literal with type
  39 +% id(N) - Name -- identifier
  40 +% constraint(C,A) - Constraint, Attrib -- constraint
  41 +%
28 42  
29 43 sa_n(var(N,T,I,A), V, ST) :-
30 44 sa_attribs(A, AX, ST),
... ... @@ -32,18 +46,58 @@ sa_n(var(N,T,I,A), V, ST) :-
32 46 V=var(N,T,NI,AX), % new AST node becomes ST entry value
33 47 st_insert(ST, N, V).
34 48  
  49 +
35 50 sa_n(lit(E,array(T)), lit(NE, array(T)), ST) :-
36 51 sa_n_traverse(E, NE, ST).
37 52 sa_n(lit(E,int), lit(E,int), _ST).
38 53 sa_n(lit(E,float), lit(E,float), _ST).
39 54 sa_n(lit(E,string), lit(E,string), _ST).
40 55  
  56 +
41 57 sa_n(id(N), V, ST) :- st_lookup(ST, N, V), !.
42   -sa_n(id(N), V, ST) :- V=id(N,_), % type as yet unknown
  58 +sa_n(id(N), V, ST) :- V=var(N,_,_,_), % type as yet unknown
43 59 st_insert(ST, N, V).
44 60  
  61 +
  62 +sa_n(constraint(CE, AT), constraint(NCE, AT), ST) :-
  63 + CE=..[C|AS],
  64 + sa_n_traverse(AS, NAS, ST),
  65 + NCE=..[C|NAS].
  66 +
45 67 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
46 68  
  69 +% == TYPES ====================================================================
  70 +
  71 +% -- sa_types(AST, ST) --------------------------------------------------------
  72 +%
  73 +% sa_types/2: do type analysis (traverse AST enforcing type correctness).
  74 +% as a side-effect, it will do type inference.
  75 +
  76 +sa_types(fzn(_PS, vars(VS), constrs(CS), _S), ST) :-
  77 + sa_t_traverse(VS, ST),
  78 + sa_t_traverse(CS, ST).
  79 +
  80 +% -----------------------------------------------------------------------------
  81 +
  82 +sa_t_traverse([], _ST) :- !.
  83 +sa_t_traverse([N|Ns], ST) :-
  84 + sa_t(N, ST), !,
  85 + sa_t_traverse(Ns, ST).
  86 +sa_t_traverse([_|Ns], ST) :- !, % ignore failing nodes (beware!)
  87 + sa_t_traverse(Ns, ST).
  88 +
  89 +sa_t_traverse(N, ST) :- sa_t(N, ST). % non-list case
  90 +
  91 +% -- sa_t(NODE, ST) -----------------------------------------------------------
  92 +
  93 +sa_t(var(_N,T,I,_A), _ST) :- type(I,T).
  94 +sa_t(lit(E,T), _ST) :- type(lit(E,T), T).
  95 +sa_t(constraint(CE, _AT), ST) :-
  96 + CE=..[_|AS],
  97 + sa_t_traverse(AS, ST).
  98 +
  99 +% =============================================================================
  100 +
47 101 sa_attribs([A|As], [NA|NAs], ST) :-
48 102 sa_attrib(A, NA, ST), !,
49 103 sa_attribs(As, NAs, ST).
... ... @@ -55,3 +109,4 @@ sa_attribs([], [], _).
55 109 sa_attrib(id(output_var), output, _).
56 110  
57 111 % -----------------------------------------------------------------------------
  112 +
... ...
fzn-parser/types.pl
1 1 % == No, Emacs this is -*-Prolog-*- code, not what you thought... =============
2 2  
3   -% sa_type/2 - locate the TYPE field
  3 +% -- type(NODE, TYPE) ---------------------------------------------------------
  4 +%
  5 +% type/2: Extract type from AST node.
4 6  
5   -sa_type(var(_NAME,TYPE,_INIT,_ANNOT), TYPE).
6   -sa_type(constraint(_NAME)).
  7 +type(var(_,T,_,_), T) :- type(T).
  8 +type(lit(_,T), T) :- type(T).
  9 +type(id(_,T), T) :- type(T).
  10 +
  11 +type(lit(E,array(T)), array(T)) :- type(E, T).
  12 +type(lit(_,T), T) :- type(T).
  13 +
  14 +type([], _).
  15 +type([E|Es], T) :- type(E, T), type(Es, T).
  16 +
  17 +% -- type(TYPE) ---------------------------------------------------------------
  18 +%
  19 +% type/1: generate or test valid types.
  20 +
  21 +type(int). % integer
  22 +type(int(_L,_U)). % integer interval
  23 +type(float). % floating point
  24 +type(float(_L,_U)). % floating point interval
  25 +type(string). % string
  26 +type(array(T,1,_U)) :- type(T). % array of type
... ...