Compare View

switch
from
...
to
 
Commits (5)
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/examples/aust.ast
... ... @@ -5,15 +5,16 @@ _T > [[]|_T].
5 5 _T > [int|_T].
6 6 _T > ['X_INTRODUCED_0'|_T].
7 7 _T > [[]|_T].
8   -_T > [int:lit(1)|_T].
9   -_T > [int:lit(-1)|_T].
10   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
11   -[Es|_T] > [array(_):alit(Es)|_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].
12 13 [VAL,AN,ID,T|_T] > [var(ID, array(T,1,2), VAL, AN)|_T].
13 14 [H,T|_T] > [[H|T]|_T].
14 15 _T > [int(1,3)|_T].
15 16 _T > ['wa'|_T].
16   -_T > [_:id('output_var')|_T].
  17 +_T > [id('output_var')|_T].
17 18 _T > [[]|_T].
18 19 [As, E|_T] > [[E|As]|_T].
19 20 _T > [[]|_T].
... ... @@ -21,7 +22,7 @@ _T > [[]|_T].
21 22 [H,T|_T] > [[H|T]|_T].
22 23 _T > [int(1,3)|_T].
23 24 _T > ['nt'|_T].
24   -_T > [_:id('output_var')|_T].
  25 +_T > [id('output_var')|_T].
25 26 _T > [[]|_T].
26 27 [As, E|_T] > [[E|As]|_T].
27 28 _T > [[]|_T].
... ... @@ -29,7 +30,7 @@ _T > [[]|_T].
29 30 [H,T|_T] > [[H|T]|_T].
30 31 _T > [int(1,3)|_T].
31 32 _T > ['sa'|_T].
32   -_T > [_:id('output_var')|_T].
  33 +_T > [id('output_var')|_T].
33 34 _T > [[]|_T].
34 35 [As, E|_T] > [[E|As]|_T].
35 36 _T > [[]|_T].
... ... @@ -37,7 +38,7 @@ _T > [[]|_T].
37 38 [H,T|_T] > [[H|T]|_T].
38 39 _T > [int(1,3)|_T].
39 40 _T > ['q'|_T].
40   -_T > [_:id('output_var')|_T].
  41 +_T > [id('output_var')|_T].
41 42 _T > [[]|_T].
42 43 [As, E|_T] > [[E|As]|_T].
43 44 _T > [[]|_T].
... ... @@ -45,7 +46,7 @@ _T > [[]|_T].
45 46 [H,T|_T] > [[H|T]|_T].
46 47 _T > [int(1,3)|_T].
47 48 _T > ['nsw'|_T].
48   -_T > [_:id('output_var')|_T].
  49 +_T > [id('output_var')|_T].
49 50 _T > [[]|_T].
50 51 [As, E|_T] > [[E|As]|_T].
51 52 _T > [[]|_T].
... ... @@ -53,7 +54,7 @@ _T > [[]|_T].
53 54 [H,T|_T] > [[H|T]|_T].
54 55 _T > [int(1,3)|_T].
55 56 _T > ['v'|_T].
56   -_T > [_:id('output_var')|_T].
  57 +_T > [id('output_var')|_T].
57 58 _T > [[]|_T].
58 59 [As, E|_T] > [[E|As]|_T].
59 60 _T > [[]|_T].
... ... @@ -61,7 +62,7 @@ _T > [[]|_T].
61 62 [H,T|_T] > [[H|T]|_T].
62 63 _T > [int(1,3)|_T].
63 64 _T > ['t'|_T].
64   -_T > [_:id('output_var')|_T].
  65 +_T > [id('output_var')|_T].
65 66 _T > [[]|_T].
66 67 [As, E|_T] > [[E|As]|_T].
67 68 _T > [[]|_T].
... ... @@ -69,113 +70,131 @@ _T > [[]|_T].
69 70 [H,T|_T] > [[H|T]|_T].
70 71 [X|_T] > [vars(X)|_T].
71 72 _T > [[]|_T].
72   -_T > [_:id('X_INTRODUCED_0')|_T].
73   -_T > [_:id('wa')|_T].
74   -_T > [_:id('nt')|_T].
75   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
76   -[Es|_T] > [array(_):alit(Es)|_T].
77   -_T > [int:lit(0)|_T].
78   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
79   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  73 +_T > [id('X_INTRODUCED_0')|_T].
  74 +_T > [id('wa')|_T].
  75 +_T > [id('nt')|_T].
  76 +[E|_T] > [[E]|_T].
  77 +[T,H|_T] > [[H|T]|_T].
  78 +[Es|_T] > [lit(Es,array(_))|_T].
  79 +_T > [lit(0,int)|_T].
  80 +[E|_T] > [[E]|_T].
  81 +[T,H|_T] > [[H|T]|_T].
  82 +[T,H|_T] > [[H|T]|_T].
80 83 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
81 84 _T > [[]|_T].
82   -[A,C,E|_T] > [constraint(C,E,A)|_T].
83   -[H,T|_T] > [[H|T]|_T].
84   -_T > [_:id('X_INTRODUCED_0')|_T].
85   -_T > [_:id('wa')|_T].
86   -_T > [_:id('sa')|_T].
87   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
88   -[Es|_T] > [array(_):alit(Es)|_T].
89   -_T > [int:lit(0)|_T].
90   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
91   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  85 +[A,C|_T] > [constraint(C,A)|_T].
  86 +[H,T|_T] > [[H|T]|_T].
  87 +_T > [id('X_INTRODUCED_0')|_T].
  88 +_T > [id('wa')|_T].
  89 +_T > [id('sa')|_T].
  90 +[E|_T] > [[E]|_T].
  91 +[T,H|_T] > [[H|T]|_T].
  92 +[Es|_T] > [lit(Es,array(_))|_T].
  93 +_T > [lit(0,int)|_T].
  94 +[E|_T] > [[E]|_T].
  95 +[T,H|_T] > [[H|T]|_T].
  96 +[T,H|_T] > [[H|T]|_T].
92 97 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
93 98 _T > [[]|_T].
94   -[A,C,E|_T] > [constraint(C,E,A)|_T].
95   -[H,T|_T] > [[H|T]|_T].
96   -_T > [_:id('X_INTRODUCED_0')|_T].
97   -_T > [_:id('nt')|_T].
98   -_T > [_:id('sa')|_T].
99   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
100   -[Es|_T] > [array(_):alit(Es)|_T].
101   -_T > [int:lit(0)|_T].
102   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
103   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  99 +[A,C|_T] > [constraint(C,A)|_T].
  100 +[H,T|_T] > [[H|T]|_T].
  101 +_T > [id('X_INTRODUCED_0')|_T].
  102 +_T > [id('nt')|_T].
  103 +_T > [id('sa')|_T].
  104 +[E|_T] > [[E]|_T].
  105 +[T,H|_T] > [[H|T]|_T].
  106 +[Es|_T] > [lit(Es,array(_))|_T].
  107 +_T > [lit(0,int)|_T].
  108 +[E|_T] > [[E]|_T].
  109 +[T,H|_T] > [[H|T]|_T].
  110 +[T,H|_T] > [[H|T]|_T].
104 111 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
105 112 _T > [[]|_T].
106   -[A,C,E|_T] > [constraint(C,E,A)|_T].
107   -[H,T|_T] > [[H|T]|_T].
108   -_T > [_:id('X_INTRODUCED_0')|_T].
109   -_T > [_:id('nt')|_T].
110   -_T > [_:id('q')|_T].
111   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
112   -[Es|_T] > [array(_):alit(Es)|_T].
113   -_T > [int:lit(0)|_T].
114   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
115   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  113 +[A,C|_T] > [constraint(C,A)|_T].
  114 +[H,T|_T] > [[H|T]|_T].
  115 +_T > [id('X_INTRODUCED_0')|_T].
  116 +_T > [id('nt')|_T].
  117 +_T > [id('q')|_T].
  118 +[E|_T] > [[E]|_T].
  119 +[T,H|_T] > [[H|T]|_T].
  120 +[Es|_T] > [lit(Es,array(_))|_T].
  121 +_T > [lit(0,int)|_T].
  122 +[E|_T] > [[E]|_T].
  123 +[T,H|_T] > [[H|T]|_T].
  124 +[T,H|_T] > [[H|T]|_T].
116 125 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
117 126 _T > [[]|_T].
118   -[A,C,E|_T] > [constraint(C,E,A)|_T].
119   -[H,T|_T] > [[H|T]|_T].
120   -_T > [_:id('X_INTRODUCED_0')|_T].
121   -_T > [_:id('sa')|_T].
122   -_T > [_:id('q')|_T].
123   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
124   -[Es|_T] > [array(_):alit(Es)|_T].
125   -_T > [int:lit(0)|_T].
126   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
127   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  127 +[A,C|_T] > [constraint(C,A)|_T].
  128 +[H,T|_T] > [[H|T]|_T].
  129 +_T > [id('X_INTRODUCED_0')|_T].
  130 +_T > [id('sa')|_T].
  131 +_T > [id('q')|_T].
  132 +[E|_T] > [[E]|_T].
  133 +[T,H|_T] > [[H|T]|_T].
  134 +[Es|_T] > [lit(Es,array(_))|_T].
  135 +_T > [lit(0,int)|_T].
  136 +[E|_T] > [[E]|_T].
  137 +[T,H|_T] > [[H|T]|_T].
  138 +[T,H|_T] > [[H|T]|_T].
128 139 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
129 140 _T > [[]|_T].
130   -[A,C,E|_T] > [constraint(C,E,A)|_T].
131   -[H,T|_T] > [[H|T]|_T].
132   -_T > [_:id('X_INTRODUCED_0')|_T].
133   -_T > [_:id('sa')|_T].
134   -_T > [_:id('nsw')|_T].
135   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
136   -[Es|_T] > [array(_):alit(Es)|_T].
137   -_T > [int:lit(0)|_T].
138   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
139   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  141 +[A,C|_T] > [constraint(C,A)|_T].
  142 +[H,T|_T] > [[H|T]|_T].
  143 +_T > [id('X_INTRODUCED_0')|_T].
  144 +_T > [id('sa')|_T].
  145 +_T > [id('nsw')|_T].
  146 +[E|_T] > [[E]|_T].
  147 +[T,H|_T] > [[H|T]|_T].
  148 +[Es|_T] > [lit(Es,array(_))|_T].
  149 +_T > [lit(0,int)|_T].
  150 +[E|_T] > [[E]|_T].
  151 +[T,H|_T] > [[H|T]|_T].
  152 +[T,H|_T] > [[H|T]|_T].
140 153 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
141 154 _T > [[]|_T].
142   -[A,C,E|_T] > [constraint(C,E,A)|_T].
143   -[H,T|_T] > [[H|T]|_T].
144   -_T > [_:id('X_INTRODUCED_0')|_T].
145   -_T > [_:id('sa')|_T].
146   -_T > [_:id('v')|_T].
147   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
148   -[Es|_T] > [array(_):alit(Es)|_T].
149   -_T > [int:lit(0)|_T].
150   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
151   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  155 +[A,C|_T] > [constraint(C,A)|_T].
  156 +[H,T|_T] > [[H|T]|_T].
  157 +_T > [id('X_INTRODUCED_0')|_T].
  158 +_T > [id('sa')|_T].
  159 +_T > [id('v')|_T].
  160 +[E|_T] > [[E]|_T].
  161 +[T,H|_T] > [[H|T]|_T].
  162 +[Es|_T] > [lit(Es,array(_))|_T].
  163 +_T > [lit(0,int)|_T].
  164 +[E|_T] > [[E]|_T].
  165 +[T,H|_T] > [[H|T]|_T].
  166 +[T,H|_T] > [[H|T]|_T].
152 167 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
153 168 _T > [[]|_T].
154   -[A,C,E|_T] > [constraint(C,E,A)|_T].
155   -[H,T|_T] > [[H|T]|_T].
156   -_T > [_:id('X_INTRODUCED_0')|_T].
157   -_T > [_:id('q')|_T].
158   -_T > [_:id('nsw')|_T].
159   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
160   -[Es|_T] > [array(_):alit(Es)|_T].
161   -_T > [int:lit(0)|_T].
162   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
163   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  169 +[A,C|_T] > [constraint(C,A)|_T].
  170 +[H,T|_T] > [[H|T]|_T].
  171 +_T > [id('X_INTRODUCED_0')|_T].
  172 +_T > [id('q')|_T].
  173 +_T > [id('nsw')|_T].
  174 +[E|_T] > [[E]|_T].
  175 +[T,H|_T] > [[H|T]|_T].
  176 +[Es|_T] > [lit(Es,array(_))|_T].
  177 +_T > [lit(0,int)|_T].
  178 +[E|_T] > [[E]|_T].
  179 +[T,H|_T] > [[H|T]|_T].
  180 +[T,H|_T] > [[H|T]|_T].
164 181 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
165 182 _T > [[]|_T].
166   -[A,C,E|_T] > [constraint(C,E,A)|_T].
167   -[H,T|_T] > [[H|T]|_T].
168   -_T > [_:id('X_INTRODUCED_0')|_T].
169   -_T > [_:id('nsw')|_T].
170   -_T > [_:id('v')|_T].
171   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
172   -[Es|_T] > [array(_):alit(Es)|_T].
173   -_T > [int:lit(0)|_T].
174   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
175   -[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  183 +[A,C|_T] > [constraint(C,A)|_T].
  184 +[H,T|_T] > [[H|T]|_T].
  185 +_T > [id('X_INTRODUCED_0')|_T].
  186 +_T > [id('nsw')|_T].
  187 +_T > [id('v')|_T].
  188 +[E|_T] > [[E]|_T].
  189 +[T,H|_T] > [[H|T]|_T].
  190 +[Es|_T] > [lit(Es,array(_))|_T].
  191 +_T > [lit(0,int)|_T].
  192 +[E|_T] > [[E]|_T].
  193 +[T,H|_T] > [[H|T]|_T].
  194 +[T,H|_T] > [[H|T]|_T].
176 195 [AL|_T] > [C|_T] :- C =.. ['int_lin_ne'|AL].
177 196 _T > [[]|_T].
178   -[A,C,E|_T] > [constraint(C,E,A)|_T].
  197 +[A,C|_T] > [constraint(C,A)|_T].
179 198 [H,T|_T] > [[H|T]|_T].
180 199 [X|_T] > [constrs(X)|_T].
181 200 _T > [[]|_T].
... ...
fzn-parser/fznslurp.pl
... ... @@ -6,19 +6,27 @@ main :-
6 6 argument_list(A),
7 7 main(A).
8 8  
9   -main([ACTION|REST]) :- action(ACTION), !, main(REST).
  9 +main([ACTION_S|REST]) :-
  10 + read_term_from_atom(ACTION_S, ACTION, [end_of_term(eof)]),
  11 + action(ACTION), !, main(REST).
10 12 main([]).
11 13  
12   -action(load) :- !, load_ast(AST), g_assign(ast, AST).
13   -action(dump) :- !, g_read(ast, AST), dump_ast(AST).
14   -action(name) :- !,
15   - g_read(ast, AST),
16   - sa_names(AST, NAST),
17   - g_assign(ast, NAST).
18   -action(halt) :- !, halt.
19   -action(debug) :- g_read(ast_debug, true), !, g_assign(ast_debug, false).
20   -action(debug) :- !, g_assign(ast_debug, true).
21   -action(ACTION) :- format("%w: unknown action.\n", [ACTION]).
  14 +action(load(F)) :- !, see(F), action(load), seen.
  15 +action(load) :- !, load_ast(AST), g_assign(ast, AST).
  16 +action(dump(A)) :- !, dump_ast(A).
  17 +action(dump) :- !, g_read(ast, AST), dump_ast(AST).
  18 +action(name) :- !,
  19 + g_read(ast, AST),
  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).
  26 +action(halt) :- !, halt.
  27 +action(debug) :- g_read(ast_debug, true), !, g_assign(ast_debug, false).
  28 +action(debug) :- !, g_assign(ast_debug, true).
  29 +action(ACTION) :- format("%w: unknown action.\n", [ACTION]).
22 30  
23 31  
24 32 % -----------------------------------------------------------------------------
... ...
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
8 14  
9 15 % -----------------------------------------------------------------------------
10 16  
11   -sa_n_traverse([], [], _ST).
  17 +sa_n_traverse([], [], _ST) :- !.
12 18 sa_n_traverse([N|Ns], [NN|NNs], ST) :-
13 19 sa_n(N, NN, ST), !,
14 20 sa_n_traverse(Ns, NNs, ST).
15   -sa_n_traverse([_|Ns], NNs, ST) :- % ignore failing nodes (beware!)
  21 +sa_n_traverse([_|Ns], NNs, ST) :- !, % ignore failing nodes (beware!)
16 22 sa_n_traverse(Ns, NNs, ST).
17 23  
  24 +sa_n_traverse(N, NN, ST) :- sa_n(N, NN, ST). % non-list case
  25 +
18 26  
19 27 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
20 28 %
21 29 % sa_n(AST_N_IN, AST_N_OUT, ST)
  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 +%
  36 +% handle all AST cases:
  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 +%
22 42  
23 43 sa_n(var(N,T,I,A), V, ST) :-
24 44 sa_attribs(A, AX, ST),
25   - sa_n(I, NI, ST), % parse initializer
  45 + sa_n_traverse(I, NI, ST), % parse initializer
26 46 V=var(N,T,NI,AX), % new AST node becomes ST entry value
27 47 st_insert(ST, N, V).
28 48  
29 49  
  50 +sa_n(lit(E,array(T)), lit(NE, array(T)), ST) :-
  51 + sa_n_traverse(E, NE, ST).
  52 +sa_n(lit(E,int), lit(E,int), _ST).
  53 +sa_n(lit(E,float), lit(E,float), _ST).
  54 +sa_n(lit(E,string), lit(E,string), _ST).
  55 +
  56 +
  57 +sa_n(id(N), V, ST) :- st_lookup(ST, N, V), !.
  58 +sa_n(id(N), V, ST) :- V=var(N,_,_,_), % type as yet unknown
  59 + st_insert(ST, N, V).
  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 +
30 67 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
31 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 +
32 101 sa_attribs([A|As], [NA|NAs], ST) :-
33 102 sa_attrib(A, NA, ST), !,
34 103 sa_attribs(As, NAs, ST).
... ... @@ -40,3 +109,4 @@ sa_attribs([], [], _).
40 109 sa_attrib(id(output_var), output, _).
41 110  
42 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
... ...