Compare View

switch
from
...
to
 
Commits (8)
fzn-parser/Makefile
1 -EXEEXT=  
2 -  
3 -EXE_FILE = fzp$(EXEEXT)  
4 SRC = 1 SRC =
5 OBJ = flatzinc.tab.o 2 OBJ = flatzinc.tab.o
6 GENCFILES = flatzinc.tab.c lex.yy.c 3 GENCFILES = flatzinc.tab.c lex.yy.c
@@ -18,10 +15,18 @@ YACCFLAGS = -v @@ -18,10 +15,18 @@ YACCFLAGS = -v
18 15
19 CC = gcc 16 CC = gcc
20 CFLAGS = -g -O 17 CFLAGS = -g -O
  18 +
  19 +GPLC = gplc
  20 +
21 RM = /bin/rm -f 21 RM = /bin/rm -f
22 22
23 -$(EXE_FILE): $(OBJ)  
24 - $(CC) $(CFLAGS) -o $(EXE_FILE) $(OBJ) $(LEXLIB) 23 +all: fzp fznslurp
  24 +
  25 +fzp: $(OBJ)
  26 + $(CC) $(CFLAGS) -o $@ $(OBJ) $(LEXLIB)
  27 +
  28 +fznslurp: fznslurp.pl
  29 + $(GPLC) -o $@ $<
25 30
26 flatzinc.tab.c: flatzinc.y lex.yy.c 31 flatzinc.tab.c: flatzinc.y lex.yy.c
27 $(YACC) $(YACCFLAGS) flatzinc.y 32 $(YACC) $(YACCFLAGS) flatzinc.y
fzn-parser/README
1 -AST nodes for fzn parser 1 +- AST nodes for fzn parser
2 2
3 TYPE : VALUE 3 TYPE : VALUE
4 4
5 -acceptable types: 5 +- acceptable types:
6 6
  7 +- driver process fznslurp:
  8 +
  9 + reads stdin (as produced by bison-generated parser), which results
  10 + in a Prolog term which is the AST. It then does semantic analysis
  11 + (name & type).
  12 +
  13 + AST is translated to an IR or actual C code for PaCCS.
  14 +
7 \ No newline at end of file 15 \ No newline at end of file
fzn-parser/examples/CostasArray.fzn 0 → 100644
@@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
  1 +array [1..2] of int: X_INTRODUCED_42 = [1,-1];
  2 +array [1..3] of int: X_INTRODUCED_45 = [1,-1,1];
  3 +array [1..4] of int: X_INTRODUCED_70 = [1,1,-1,-1];
  4 +var 1..6: X_INTRODUCED_0;
  5 +var 1..6: X_INTRODUCED_1;
  6 +var 1..6: X_INTRODUCED_2;
  7 +var 1..6: X_INTRODUCED_3;
  8 +var 1..6: X_INTRODUCED_4;
  9 +var 1..6: X_INTRODUCED_5;
  10 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_7:: is_defined_var;
  11 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_8:: is_defined_var;
  12 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_9:: is_defined_var;
  13 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_10:: is_defined_var;
  14 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_11:: is_defined_var;
  15 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_14:: is_defined_var;
  16 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_15:: is_defined_var;
  17 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_16:: is_defined_var;
  18 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_17:: is_defined_var;
  19 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_21:: is_defined_var;
  20 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_22:: is_defined_var;
  21 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_23:: is_defined_var;
  22 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_28:: is_defined_var;
  23 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_29:: is_defined_var;
  24 +var {-5,-4,-3,-2,-1,1,2,3,4,5}: X_INTRODUCED_35:: is_defined_var;
  25 +array [1..6] of var 1..6: costas:: output_array([1..6]) = [X_INTRODUCED_0,X_INTRODUCED_1,X_INTRODUCED_2,X_INTRODUCED_3,X_INTRODUCED_4,X_INTRODUCED_5];
  26 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_0,X_INTRODUCED_1],0);
  27 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_0,X_INTRODUCED_2],0);
  28 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_0,X_INTRODUCED_3],0);
  29 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_0,X_INTRODUCED_4],0);
  30 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_0,X_INTRODUCED_5],0);
  31 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_1,X_INTRODUCED_2],0);
  32 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_1,X_INTRODUCED_3],0);
  33 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_1,X_INTRODUCED_4],0);
  34 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_1,X_INTRODUCED_5],0);
  35 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_2,X_INTRODUCED_3],0);
  36 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_2,X_INTRODUCED_4],0);
  37 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_2,X_INTRODUCED_5],0);
  38 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_3,X_INTRODUCED_4],0);
  39 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_3,X_INTRODUCED_5],0);
  40 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_4,X_INTRODUCED_5],0);
  41 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_0],0):: defines_var(X_INTRODUCED_7);
  42 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_8,X_INTRODUCED_2,X_INTRODUCED_1],0):: defines_var(X_INTRODUCED_8);
  43 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_9,X_INTRODUCED_3,X_INTRODUCED_2],0):: defines_var(X_INTRODUCED_9);
  44 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_10,X_INTRODUCED_4,X_INTRODUCED_3],0):: defines_var(X_INTRODUCED_10);
  45 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_11,X_INTRODUCED_5,X_INTRODUCED_4],0):: defines_var(X_INTRODUCED_11);
  46 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_14,X_INTRODUCED_2,X_INTRODUCED_0],0):: defines_var(X_INTRODUCED_14);
  47 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_15,X_INTRODUCED_3,X_INTRODUCED_1],0):: defines_var(X_INTRODUCED_15);
  48 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_16,X_INTRODUCED_4,X_INTRODUCED_2],0):: defines_var(X_INTRODUCED_16);
  49 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_17,X_INTRODUCED_5,X_INTRODUCED_3],0):: defines_var(X_INTRODUCED_17);
  50 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_21,X_INTRODUCED_3,X_INTRODUCED_0],0):: defines_var(X_INTRODUCED_21);
  51 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_22,X_INTRODUCED_4,X_INTRODUCED_1],0):: defines_var(X_INTRODUCED_22);
  52 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_23,X_INTRODUCED_5,X_INTRODUCED_2],0):: defines_var(X_INTRODUCED_23);
  53 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_28,X_INTRODUCED_4,X_INTRODUCED_0],0):: defines_var(X_INTRODUCED_28);
  54 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_29,X_INTRODUCED_5,X_INTRODUCED_1],0):: defines_var(X_INTRODUCED_29);
  55 +constraint int_lin_eq(X_INTRODUCED_45,[X_INTRODUCED_35,X_INTRODUCED_5,X_INTRODUCED_0],0):: defines_var(X_INTRODUCED_35);
  56 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_7,X_INTRODUCED_8],0);
  57 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_7,X_INTRODUCED_9],0);
  58 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_7,X_INTRODUCED_10],0);
  59 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_7,X_INTRODUCED_11],0);
  60 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_8,X_INTRODUCED_9],0);
  61 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_8,X_INTRODUCED_10],0);
  62 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_8,X_INTRODUCED_11],0);
  63 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_9,X_INTRODUCED_10],0);
  64 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_9,X_INTRODUCED_11],0);
  65 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_10,X_INTRODUCED_11],0);
  66 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_14,X_INTRODUCED_15],0);
  67 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_14,X_INTRODUCED_16],0);
  68 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_14,X_INTRODUCED_17],0);
  69 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_15,X_INTRODUCED_16],0);
  70 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_15,X_INTRODUCED_17],0);
  71 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_16,X_INTRODUCED_17],0);
  72 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_21,X_INTRODUCED_22],0);
  73 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_21,X_INTRODUCED_23],0);
  74 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_22,X_INTRODUCED_23],0);
  75 +constraint int_lin_ne(X_INTRODUCED_42,[X_INTRODUCED_28,X_INTRODUCED_29],0);
  76 +constraint int_lin_le(X_INTRODUCED_42,[X_INTRODUCED_0,X_INTRODUCED_5],-1);
  77 +constraint int_lin_eq(X_INTRODUCED_70,[X_INTRODUCED_8,X_INTRODUCED_21,X_INTRODUCED_14,X_INTRODUCED_15],0);
  78 +constraint int_lin_eq(X_INTRODUCED_70,[X_INTRODUCED_9,X_INTRODUCED_22,X_INTRODUCED_15,X_INTRODUCED_16],0);
  79 +constraint int_lin_eq(X_INTRODUCED_70,[X_INTRODUCED_10,X_INTRODUCED_23,X_INTRODUCED_16,X_INTRODUCED_17],0);
  80 +constraint int_lin_eq(X_INTRODUCED_70,[X_INTRODUCED_15,X_INTRODUCED_28,X_INTRODUCED_21,X_INTRODUCED_22],0);
  81 +constraint int_lin_eq(X_INTRODUCED_70,[X_INTRODUCED_16,X_INTRODUCED_29,X_INTRODUCED_22,X_INTRODUCED_23],0);
  82 +constraint int_lin_eq(X_INTRODUCED_70,[X_INTRODUCED_22,X_INTRODUCED_35,X_INTRODUCED_28,X_INTRODUCED_29],0);
  83 +solve :: int_search(costas,input_order,indomain_min,complete) satisfy;
fzn-parser/examples/aust.ast 0 → 100644
@@ -0,0 +1,149 @@ @@ -0,0 +1,149 @@
  1 +_ > [].
  2 +_T > [[]|_T].
  3 +[X|_T] > [preds(X)|_T].
  4 +_T > [[]|_T].
  5 +_T > [int|_T].
  6 +_T > [[]|_T].
  7 +_T > [int:lit(1)|_T].
  8 +_T > [int:lit(-1)|_T].
  9 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  10 +[Es|_T] > [array(_):alit(Es)|_T].
  11 +[H,T|_T] > [[H|T]|_T].
  12 +_T > [int(1,3)|_T].
  13 +_T > [_:id('output_var')|_T].
  14 +_T > [[]|_T].
  15 +[H,T|_T] > [[H|T]|_T].
  16 +[H,T|_T] > [[H|T]|_T].
  17 +_T > [int(1,3)|_T].
  18 +_T > [_:id('output_var')|_T].
  19 +_T > [[]|_T].
  20 +[H,T|_T] > [[H|T]|_T].
  21 +[H,T|_T] > [[H|T]|_T].
  22 +_T > [int(1,3)|_T].
  23 +_T > [_:id('output_var')|_T].
  24 +_T > [[]|_T].
  25 +[H,T|_T] > [[H|T]|_T].
  26 +[H,T|_T] > [[H|T]|_T].
  27 +_T > [int(1,3)|_T].
  28 +_T > [_:id('output_var')|_T].
  29 +_T > [[]|_T].
  30 +[H,T|_T] > [[H|T]|_T].
  31 +[H,T|_T] > [[H|T]|_T].
  32 +_T > [int(1,3)|_T].
  33 +_T > [_:id('output_var')|_T].
  34 +_T > [[]|_T].
  35 +[H,T|_T] > [[H|T]|_T].
  36 +[H,T|_T] > [[H|T]|_T].
  37 +_T > [int(1,3)|_T].
  38 +_T > [_:id('output_var')|_T].
  39 +_T > [[]|_T].
  40 +[H,T|_T] > [[H|T]|_T].
  41 +[H,T|_T] > [[H|T]|_T].
  42 +_T > [int(1,3)|_T].
  43 +_T > [_:id('output_var')|_T].
  44 +_T > [[]|_T].
  45 +[H,T|_T] > [[H|T]|_T].
  46 +[H,T|_T] > [[H|T]|_T].
  47 +[X|_T] > [vars(X)|_T].
  48 +_T > [[]|_T].
  49 +_T > [_:id('X_INTRODUCED_0')|_T].
  50 +_T > [_:id('wa')|_T].
  51 +_T > [_:id('nt')|_T].
  52 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  53 +[Es|_T] > [array(_):alit(Es)|_T].
  54 +_T > [int:lit(0)|_T].
  55 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  56 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  57 +_T > [[]|_T].
  58 +[A, C|_T] > [constraint(C, A)|_T].
  59 +[H,T|_T] > [[H|T]|_T].
  60 +_T > [_:id('X_INTRODUCED_0')|_T].
  61 +_T > [_:id('wa')|_T].
  62 +_T > [_:id('sa')|_T].
  63 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  64 +[Es|_T] > [array(_):alit(Es)|_T].
  65 +_T > [int:lit(0)|_T].
  66 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  67 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  68 +_T > [[]|_T].
  69 +[A, C|_T] > [constraint(C, A)|_T].
  70 +[H,T|_T] > [[H|T]|_T].
  71 +_T > [_:id('X_INTRODUCED_0')|_T].
  72 +_T > [_:id('nt')|_T].
  73 +_T > [_:id('sa')|_T].
  74 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  75 +[Es|_T] > [array(_):alit(Es)|_T].
  76 +_T > [int:lit(0)|_T].
  77 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  78 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  79 +_T > [[]|_T].
  80 +[A, C|_T] > [constraint(C, A)|_T].
  81 +[H,T|_T] > [[H|T]|_T].
  82 +_T > [_:id('X_INTRODUCED_0')|_T].
  83 +_T > [_:id('nt')|_T].
  84 +_T > [_:id('q')|_T].
  85 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  86 +[Es|_T] > [array(_):alit(Es)|_T].
  87 +_T > [int:lit(0)|_T].
  88 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  89 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  90 +_T > [[]|_T].
  91 +[A, C|_T] > [constraint(C, A)|_T].
  92 +[H,T|_T] > [[H|T]|_T].
  93 +_T > [_:id('X_INTRODUCED_0')|_T].
  94 +_T > [_:id('sa')|_T].
  95 +_T > [_:id('q')|_T].
  96 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  97 +[Es|_T] > [array(_):alit(Es)|_T].
  98 +_T > [int:lit(0)|_T].
  99 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  100 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  101 +_T > [[]|_T].
  102 +[A, C|_T] > [constraint(C, A)|_T].
  103 +[H,T|_T] > [[H|T]|_T].
  104 +_T > [_:id('X_INTRODUCED_0')|_T].
  105 +_T > [_:id('sa')|_T].
  106 +_T > [_:id('nsw')|_T].
  107 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  108 +[Es|_T] > [array(_):alit(Es)|_T].
  109 +_T > [int:lit(0)|_T].
  110 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  111 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  112 +_T > [[]|_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('sa')|_T].
  117 +_T > [_:id('v')|_T].
  118 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  119 +[Es|_T] > [array(_):alit(Es)|_T].
  120 +_T > [int:lit(0)|_T].
  121 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  122 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  123 +_T > [[]|_T].
  124 +[A, C|_T] > [constraint(C, A)|_T].
  125 +[H,T|_T] > [[H|T]|_T].
  126 +_T > [_:id('X_INTRODUCED_0')|_T].
  127 +_T > [_:id('q')|_T].
  128 +_T > [_:id('nsw')|_T].
  129 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  130 +[Es|_T] > [array(_):alit(Es)|_T].
  131 +_T > [int:lit(0)|_T].
  132 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  133 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  134 +_T > [[]|_T].
  135 +[A, C|_T] > [constraint(C, A)|_T].
  136 +[H,T|_T] > [[H|T]|_T].
  137 +_T > [_:id('X_INTRODUCED_0')|_T].
  138 +_T > [_:id('nsw')|_T].
  139 +_T > [_:id('v')|_T].
  140 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  141 +[Es|_T] > [array(_):alit(Es)|_T].
  142 +_T > [int:lit(0)|_T].
  143 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  144 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  145 +_T > [[]|_T].
  146 +[A, C|_T] > [constraint(C, A)|_T].
  147 +[H,T|_T] > [[H|T]|_T].
  148 +[X|_T] > [constrs(X)|_T].
  149 +_T > [[]|_T].
fzn-parser/examples/aust.ast.old 0 → 100644
@@ -0,0 +1,149 @@ @@ -0,0 +1,149 @@
  1 +_ > [].
  2 +_T > [[]|_T].
  3 +[X|_T] > [preds(X)|_T].
  4 +_T > [[]|_T].
  5 +_T > [int|_T].
  6 +_T > [[]|_T].
  7 +_T > [int:lit(1)|_T].
  8 +_T > [int:lit(-1)|_T].
  9 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  10 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  11 +[H,T|_T] > [[H|T]|_T].
  12 +_T > [int(1,3)|_T].
  13 +_T > [_:id('output_var')|_T].
  14 +_T > [[]|_T].
  15 +[H,T|_T] > [[H|T]|_T].
  16 +[H,T|_T] > [[H|T]|_T].
  17 +_T > [int(1,3)|_T].
  18 +_T > [_:id('output_var')|_T].
  19 +_T > [[]|_T].
  20 +[H,T|_T] > [[H|T]|_T].
  21 +[H,T|_T] > [[H|T]|_T].
  22 +_T > [int(1,3)|_T].
  23 +_T > [_:id('output_var')|_T].
  24 +_T > [[]|_T].
  25 +[H,T|_T] > [[H|T]|_T].
  26 +[H,T|_T] > [[H|T]|_T].
  27 +_T > [int(1,3)|_T].
  28 +_T > [_:id('output_var')|_T].
  29 +_T > [[]|_T].
  30 +[H,T|_T] > [[H|T]|_T].
  31 +[H,T|_T] > [[H|T]|_T].
  32 +_T > [int(1,3)|_T].
  33 +_T > [_:id('output_var')|_T].
  34 +_T > [[]|_T].
  35 +[H,T|_T] > [[H|T]|_T].
  36 +[H,T|_T] > [[H|T]|_T].
  37 +_T > [int(1,3)|_T].
  38 +_T > [_:id('output_var')|_T].
  39 +_T > [[]|_T].
  40 +[H,T|_T] > [[H|T]|_T].
  41 +[H,T|_T] > [[H|T]|_T].
  42 +_T > [int(1,3)|_T].
  43 +_T > [_:id('output_var')|_T].
  44 +_T > [[]|_T].
  45 +[H,T|_T] > [[H|T]|_T].
  46 +[H,T|_T] > [[H|T]|_T].
  47 +[X|_T] > [vars(X)|_T].
  48 +_T > [[]|_T].
  49 +_T > [_:id('X_INTRODUCED_0')|_T].
  50 +_T > [_:id('wa')|_T].
  51 +_T > [_:id('nt')|_T].
  52 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  53 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  54 +_T > [int:lit(0)|_T].
  55 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  56 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  57 +_T > [[]|_T].
  58 +[A, C|_T] > [constraint(C, A)|_T].
  59 +[H,T|_T] > [[H|T]|_T].
  60 +_T > [_:id('X_INTRODUCED_0')|_T].
  61 +_T > [_:id('wa')|_T].
  62 +_T > [_:id('sa')|_T].
  63 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  64 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  65 +_T > [int:lit(0)|_T].
  66 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  67 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  68 +_T > [[]|_T].
  69 +[A, C|_T] > [constraint(C, A)|_T].
  70 +[H,T|_T] > [[H|T]|_T].
  71 +_T > [_:id('X_INTRODUCED_0')|_T].
  72 +_T > [_:id('nt')|_T].
  73 +_T > [_:id('sa')|_T].
  74 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  75 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  76 +_T > [int:lit(0)|_T].
  77 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  78 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  79 +_T > [[]|_T].
  80 +[A, C|_T] > [constraint(C, A)|_T].
  81 +[H,T|_T] > [[H|T]|_T].
  82 +_T > [_:id('X_INTRODUCED_0')|_T].
  83 +_T > [_:id('nt')|_T].
  84 +_T > [_:id('q')|_T].
  85 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  86 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  87 +_T > [int:lit(0)|_T].
  88 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  89 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  90 +_T > [[]|_T].
  91 +[A, C|_T] > [constraint(C, A)|_T].
  92 +[H,T|_T] > [[H|T]|_T].
  93 +_T > [_:id('X_INTRODUCED_0')|_T].
  94 +_T > [_:id('sa')|_T].
  95 +_T > [_:id('q')|_T].
  96 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  97 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  98 +_T > [int:lit(0)|_T].
  99 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  100 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  101 +_T > [[]|_T].
  102 +[A, C|_T] > [constraint(C, A)|_T].
  103 +[H,T|_T] > [[H|T]|_T].
  104 +_T > [_:id('X_INTRODUCED_0')|_T].
  105 +_T > [_:id('sa')|_T].
  106 +_T > [_:id('nsw')|_T].
  107 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  108 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  109 +_T > [int:lit(0)|_T].
  110 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  111 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  112 +_T > [[]|_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('sa')|_T].
  117 +_T > [_:id('v')|_T].
  118 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  119 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  120 +_T > [int:lit(0)|_T].
  121 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  122 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  123 +_T > [[]|_T].
  124 +[A, C|_T] > [constraint(C, A)|_T].
  125 +[H,T|_T] > [[H|T]|_T].
  126 +_T > [_:id('X_INTRODUCED_0')|_T].
  127 +_T > [_:id('q')|_T].
  128 +_T > [_:id('nsw')|_T].
  129 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  130 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  131 +_T > [int:lit(0)|_T].
  132 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  133 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  134 +_T > [[]|_T].
  135 +[A, C|_T] > [constraint(C, A)|_T].
  136 +[H,T|_T] > [[H|T]|_T].
  137 +_T > [_:id('X_INTRODUCED_0')|_T].
  138 +_T > [_:id('nsw')|_T].
  139 +_T > [_:id('v')|_T].
  140 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  141 +[Es|_T] > [array(_,[_]):alit(Es)|_T].
  142 +_T > [int:lit(0)|_T].
  143 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  144 +[T2:E2,T1:E1|_T] > [(T1,T2):(E1,E2)|_T].
  145 +_T > [[]|_T].
  146 +[A, C|_T] > [constraint(C, A)|_T].
  147 +[H,T|_T] > [[H|T]|_T].
  148 +[X|_T] > [constrs(X)|_T].
  149 +_T > [[]|_T].
fzn-parser/examples/aust.fzn 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +array [1..2] of int: X_INTRODUCED_0 = [1,-1];
  2 +var 1..3: wa:: output_var;
  3 +var 1..3: nt:: output_var;
  4 +var 1..3: sa:: output_var;
  5 +var 1..3: q:: output_var;
  6 +var 1..3: nsw:: output_var;
  7 +var 1..3: v:: output_var;
  8 +var 1..3: t:: output_var;
  9 +constraint int_lin_ne(X_INTRODUCED_0,[wa,nt],0);
  10 +constraint int_lin_ne(X_INTRODUCED_0,[wa,sa],0);
  11 +constraint int_lin_ne(X_INTRODUCED_0,[nt,sa],0);
  12 +constraint int_lin_ne(X_INTRODUCED_0,[nt,q],0);
  13 +constraint int_lin_ne(X_INTRODUCED_0,[sa,q],0);
  14 +constraint int_lin_ne(X_INTRODUCED_0,[sa,nsw],0);
  15 +constraint int_lin_ne(X_INTRODUCED_0,[sa,v],0);
  16 +constraint int_lin_ne(X_INTRODUCED_0,[q,nsw],0);
  17 +constraint int_lin_ne(X_INTRODUCED_0,[nsw,v],0);
  18 +solve satisfy;
fzn-parser/examples/aust.mzn 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +% Colouring Australia using nc colours
  2 +int: nc = 3;
  3 +
  4 +var 1..nc: wa; var 1..nc: nt; var 1..nc: sa; var 1..nc: q;
  5 +var 1..nc: nsw; var 1..nc: v; var 1..nc: t;
  6 +
  7 +constraint wa != nt;
  8 +constraint wa != sa;
  9 +constraint nt != sa;
  10 +constraint nt != q;
  11 +constraint sa != q;
  12 +constraint sa != nsw;
  13 +constraint sa != v;
  14 +constraint q != nsw;
  15 +constraint nsw != v;
  16 +solve satisfy;
  17 +
  18 +output ["wa=", show(wa), "\t nt=", show(nt),
  19 + "\t sa=", show(sa), "\n", "q=", show(q),
  20 + "\t nsw=", show(nsw), "\t v=", show(v), "\n",
  21 + "t=", show(t), "\n"];
fzn-parser/examples/aust.ozn 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +output ["wa=",show(wa),"\t nt=",show(nt),"\t sa=",show(sa),"\n","q=",show(q),"\t nsw=",show(nsw),"\t v=",show(v),"\n","t=",show(t),"\n"];
  2 +int: wa;
  3 +int: nt;
  4 +int: sa;
  5 +int: q;
  6 +int: nsw;
  7 +int: v;
  8 +int: t;
fzn-parser/examples/golomb.fzn 0 → 100644
@@ -0,0 +1,386 @@ @@ -0,0 +1,386 @@
  1 +array [1..2] of int: X_INTRODUCED_8 = [1,-1];
  2 +array [1..3] of int: X_INTRODUCED_37 = [2,-1,-1];
  3 +array [1..4] of int: X_INTRODUCED_38 = [1,-1,-1,1];
  4 +array [1..2] of int: X_INTRODUCED_39 = [-1,1];
  5 +var 0..64: X_INTRODUCED_1;
  6 +var 0..64: X_INTRODUCED_2;
  7 +var 0..64: X_INTRODUCED_3;
  8 +var 0..64: X_INTRODUCED_4;
  9 +var 0..64: X_INTRODUCED_5;
  10 +var 0..64: X_INTRODUCED_6;
  11 +var 0..64: X_INTRODUCED_7;
  12 +var -64..64: X_INTRODUCED_9 ::var_is_introduced :: is_defined_var;
  13 +var -64..64: X_INTRODUCED_10 ::var_is_introduced :: is_defined_var;
  14 +var -64..64: X_INTRODUCED_11 ::var_is_introduced :: is_defined_var;
  15 +var -64..64: X_INTRODUCED_12 ::var_is_introduced :: is_defined_var;
  16 +var -64..64: X_INTRODUCED_13 ::var_is_introduced :: is_defined_var;
  17 +var -64..64: X_INTRODUCED_14 ::var_is_introduced :: is_defined_var;
  18 +var -64..64: X_INTRODUCED_15 ::var_is_introduced :: is_defined_var;
  19 +var -64..64: X_INTRODUCED_16 ::var_is_introduced :: is_defined_var;
  20 +var -64..64: X_INTRODUCED_17 ::var_is_introduced :: is_defined_var;
  21 +var -64..64: X_INTRODUCED_18 ::var_is_introduced :: is_defined_var;
  22 +var -64..64: X_INTRODUCED_19 ::var_is_introduced :: is_defined_var;
  23 +var -64..64: X_INTRODUCED_20 ::var_is_introduced :: is_defined_var;
  24 +var -64..64: X_INTRODUCED_21 ::var_is_introduced :: is_defined_var;
  25 +var -64..64: X_INTRODUCED_22 ::var_is_introduced :: is_defined_var;
  26 +var -64..64: X_INTRODUCED_23 ::var_is_introduced :: is_defined_var;
  27 +var -64..64: X_INTRODUCED_24 ::var_is_introduced :: is_defined_var;
  28 +var -64..64: X_INTRODUCED_25 ::var_is_introduced :: is_defined_var;
  29 +var -64..64: X_INTRODUCED_26 ::var_is_introduced :: is_defined_var;
  30 +var -64..64: X_INTRODUCED_27 ::var_is_introduced :: is_defined_var;
  31 +var -64..64: X_INTRODUCED_28 ::var_is_introduced :: is_defined_var;
  32 +var -64..64: X_INTRODUCED_29 ::var_is_introduced :: is_defined_var;
  33 +var -64..64: X_INTRODUCED_30 ::var_is_introduced :: is_defined_var;
  34 +var -64..64: X_INTRODUCED_31 ::var_is_introduced :: is_defined_var;
  35 +var -64..64: X_INTRODUCED_32 ::var_is_introduced :: is_defined_var;
  36 +var -64..64: X_INTRODUCED_33 ::var_is_introduced :: is_defined_var;
  37 +var -64..64: X_INTRODUCED_34 ::var_is_introduced :: is_defined_var;
  38 +var -64..64: X_INTRODUCED_35 ::var_is_introduced :: is_defined_var;
  39 +var -64..64: X_INTRODUCED_36 ::var_is_introduced :: is_defined_var;
  40 +array [1..8] of var 0..64: mark:: output_array([1..8]) = [0,X_INTRODUCED_1,X_INTRODUCED_2,X_INTRODUCED_3,X_INTRODUCED_4,X_INTRODUCED_5,X_INTRODUCED_6,X_INTRODUCED_7];
  41 +array [1..28] of var 0..64: differences = [X_INTRODUCED_9,X_INTRODUCED_10,X_INTRODUCED_11,X_INTRODUCED_12,X_INTRODUCED_13,X_INTRODUCED_14,X_INTRODUCED_15,X_INTRODUCED_16,X_INTRODUCED_17,X_INTRODUCED_18,X_INTRODUCED_19,X_INTRODUCED_20,X_INTRODUCED_21,X_INTRODUCED_22,X_INTRODUCED_23,X_INTRODUCED_24,X_INTRODUCED_25,X_INTRODUCED_26,X_INTRODUCED_27,X_INTRODUCED_28,X_INTRODUCED_29,X_INTRODUCED_30,X_INTRODUCED_31,X_INTRODUCED_32,X_INTRODUCED_33,X_INTRODUCED_34,X_INTRODUCED_35,X_INTRODUCED_36];
  42 +constraint int_lin_le([-1],[X_INTRODUCED_1],-1);
  43 +constraint int_lin_le(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_2],-1);
  44 +constraint int_lin_le(X_INTRODUCED_8,[X_INTRODUCED_2,X_INTRODUCED_3],-1);
  45 +constraint int_lin_le(X_INTRODUCED_8,[X_INTRODUCED_3,X_INTRODUCED_4],-1);
  46 +constraint int_lin_le(X_INTRODUCED_8,[X_INTRODUCED_4,X_INTRODUCED_5],-1);
  47 +constraint int_lin_le(X_INTRODUCED_8,[X_INTRODUCED_5,X_INTRODUCED_6],-1);
  48 +constraint int_lin_le(X_INTRODUCED_8,[X_INTRODUCED_6,X_INTRODUCED_7],-1);
  49 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_2],0);
  50 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_3],0);
  51 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_4],0);
  52 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_5],0);
  53 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_6],0);
  54 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_1,X_INTRODUCED_7],0);
  55 +constraint int_lin_ne([2,-1],[X_INTRODUCED_1,X_INTRODUCED_2],0);
  56 +constraint int_lin_ne([2,-1],[X_INTRODUCED_1,X_INTRODUCED_3],0);
  57 +constraint int_lin_ne([2,-1],[X_INTRODUCED_1,X_INTRODUCED_4],0);
  58 +constraint int_lin_ne([2,-1],[X_INTRODUCED_1,X_INTRODUCED_5],0);
  59 +constraint int_lin_ne([2,-1],[X_INTRODUCED_1,X_INTRODUCED_6],0);
  60 +constraint int_lin_ne([2,-1],[X_INTRODUCED_1,X_INTRODUCED_7],0);
  61 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_3,X_INTRODUCED_2],0);
  62 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_2],0);
  63 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_2],0);
  64 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_2],0);
  65 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_2],0);
  66 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_3],0);
  67 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_3],0);
  68 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_3],0);
  69 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_3],0);
  70 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_4],0);
  71 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_4],0);
  72 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_4],0);
  73 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_5],0);
  74 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_5],0);
  75 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_6],0);
  76 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_2,X_INTRODUCED_3],0);
  77 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_2,X_INTRODUCED_4],0);
  78 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_2,X_INTRODUCED_5],0);
  79 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_2,X_INTRODUCED_6],0);
  80 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_2,X_INTRODUCED_7],0);
  81 +constraint int_lin_ne([1],[X_INTRODUCED_1],0);
  82 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_3,X_INTRODUCED_1],0);
  83 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_4,X_INTRODUCED_1],0);
  84 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_1],0);
  85 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_1],0);
  86 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_1],0);
  87 +constraint int_lin_ne([2,-1],[X_INTRODUCED_2,X_INTRODUCED_3],0);
  88 +constraint int_lin_ne([2,-1],[X_INTRODUCED_2,X_INTRODUCED_4],0);
  89 +constraint int_lin_ne([2,-1],[X_INTRODUCED_2,X_INTRODUCED_5],0);
  90 +constraint int_lin_ne([2,-1],[X_INTRODUCED_2,X_INTRODUCED_6],0);
  91 +constraint int_lin_ne([2,-1],[X_INTRODUCED_2,X_INTRODUCED_7],0);
  92 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_4,X_INTRODUCED_3],0);
  93 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_3],0);
  94 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_3],0);
  95 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_3],0);
  96 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_4],0);
  97 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_4],0);
  98 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_4],0);
  99 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_5],0);
  100 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_5],0);
  101 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_6],0);
  102 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_3,X_INTRODUCED_4],0);
  103 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_3,X_INTRODUCED_5],0);
  104 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_3,X_INTRODUCED_6],0);
  105 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_3,X_INTRODUCED_7],0);
  106 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_1],0);
  107 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_4,X_INTRODUCED_1],0);
  108 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_5,X_INTRODUCED_1],0);
  109 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_1],0);
  110 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_1],0);
  111 +constraint int_lin_ne([1],[X_INTRODUCED_2],0);
  112 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_4,X_INTRODUCED_2],0);
  113 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_5,X_INTRODUCED_2],0);
  114 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_2],0);
  115 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_2],0);
  116 +constraint int_lin_ne([2,-1],[X_INTRODUCED_3,X_INTRODUCED_4],0);
  117 +constraint int_lin_ne([2,-1],[X_INTRODUCED_3,X_INTRODUCED_5],0);
  118 +constraint int_lin_ne([2,-1],[X_INTRODUCED_3,X_INTRODUCED_6],0);
  119 +constraint int_lin_ne([2,-1],[X_INTRODUCED_3,X_INTRODUCED_7],0);
  120 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_5,X_INTRODUCED_4],0);
  121 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_4],0);
  122 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_4],0);
  123 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_5],0);
  124 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_5],0);
  125 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_6],0);
  126 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_4,X_INTRODUCED_5],0);
  127 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_4,X_INTRODUCED_6],0);
  128 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_4,X_INTRODUCED_7],0);
  129 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_1],0);
  130 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_1],0);
  131 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_5,X_INTRODUCED_1],0);
  132 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_6,X_INTRODUCED_1],0);
  133 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_1],0);
  134 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_2],0);
  135 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_5,X_INTRODUCED_2],0);
  136 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_6,X_INTRODUCED_2],0);
  137 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_2],0);
  138 +constraint int_lin_ne([1],[X_INTRODUCED_3],0);
  139 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_5,X_INTRODUCED_3],0);
  140 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_6,X_INTRODUCED_3],0);
  141 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_3],0);
  142 +constraint int_lin_ne([2,-1],[X_INTRODUCED_4,X_INTRODUCED_5],0);
  143 +constraint int_lin_ne([2,-1],[X_INTRODUCED_4,X_INTRODUCED_6],0);
  144 +constraint int_lin_ne([2,-1],[X_INTRODUCED_4,X_INTRODUCED_7],0);
  145 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_6,X_INTRODUCED_5],0);
  146 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_5],0);
  147 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_6],0);
  148 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_5,X_INTRODUCED_6],0);
  149 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_5,X_INTRODUCED_7],0);
  150 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_1],0);
  151 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_1],0);
  152 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_1],0);
  153 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_6,X_INTRODUCED_1],0);
  154 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_7,X_INTRODUCED_1],0);
  155 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_2],0);
  156 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_2],0);
  157 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_6,X_INTRODUCED_2],0);
  158 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_7,X_INTRODUCED_2],0);
  159 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_3],0);
  160 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_6,X_INTRODUCED_3],0);
  161 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_7,X_INTRODUCED_3],0);
  162 +constraint int_lin_ne([1],[X_INTRODUCED_4],0);
  163 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_6,X_INTRODUCED_4],0);
  164 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_7,X_INTRODUCED_4],0);
  165 +constraint int_lin_ne([2,-1],[X_INTRODUCED_5,X_INTRODUCED_6],0);
  166 +constraint int_lin_ne([2,-1],[X_INTRODUCED_5,X_INTRODUCED_7],0);
  167 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_5,X_INTRODUCED_7,X_INTRODUCED_6],0);
  168 +constraint int_lin_ne(X_INTRODUCED_8,[X_INTRODUCED_6,X_INTRODUCED_7],0);
  169 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_1],0);
  170 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_1],0);
  171 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_4,X_INTRODUCED_1],0);
  172 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_5,X_INTRODUCED_1],0);
  173 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_7,X_INTRODUCED_1],0);
  174 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_2],0);
  175 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_4,X_INTRODUCED_2],0);
  176 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_5,X_INTRODUCED_2],0);
  177 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_7,X_INTRODUCED_2],0);
  178 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_4,X_INTRODUCED_3],0);
  179 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_5,X_INTRODUCED_3],0);
  180 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_7,X_INTRODUCED_3],0);
  181 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_5,X_INTRODUCED_4],0);
  182 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_7,X_INTRODUCED_4],0);
  183 +constraint int_lin_ne([1],[X_INTRODUCED_5],0);
  184 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_6,X_INTRODUCED_7,X_INTRODUCED_5],0);
  185 +constraint int_lin_ne([2,-1],[X_INTRODUCED_6,X_INTRODUCED_7],0);
  186 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_1],0);
  187 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_3,X_INTRODUCED_1],0);
  188 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_4,X_INTRODUCED_1],0);
  189 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_5,X_INTRODUCED_1],0);
  190 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_6,X_INTRODUCED_1],0);
  191 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_3,X_INTRODUCED_2],0);
  192 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_4,X_INTRODUCED_2],0);
  193 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_5,X_INTRODUCED_2],0);
  194 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_6,X_INTRODUCED_2],0);
  195 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_4,X_INTRODUCED_3],0);
  196 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_5,X_INTRODUCED_3],0);
  197 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_6,X_INTRODUCED_3],0);
  198 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_5,X_INTRODUCED_4],0);
  199 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_6,X_INTRODUCED_4],0);
  200 +constraint int_lin_ne([1,-1,1],[X_INTRODUCED_7,X_INTRODUCED_6,X_INTRODUCED_5],0);
  201 +constraint int_lin_ne([1],[X_INTRODUCED_6],0);
  202 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_3],0);
  203 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_4],0);
  204 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_5],0);
  205 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_6],0);
  206 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_7],0);
  207 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_3],0);
  208 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_3],0);
  209 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_3],0);
  210 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_3],0);
  211 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_4],0);
  212 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_4],0);
  213 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_4],0);
  214 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_5],0);
  215 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_5],0);
  216 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_6],0);
  217 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_1,X_INTRODUCED_2],0);
  218 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_2],0);
  219 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_2],0);
  220 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_2],0);
  221 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_2],0);
  222 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_4],0);
  223 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_5],0);
  224 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_6],0);
  225 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_7],0);
  226 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_4],0);
  227 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_4],0);
  228 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_4],0);
  229 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_5],0);
  230 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_5],0);
  231 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_6],0);
  232 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_3,X_INTRODUCED_2],0);
  233 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_2],0);
  234 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_2],0);
  235 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_2],0);
  236 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_1,X_INTRODUCED_3],0);
  237 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_3],0);
  238 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_3],0);
  239 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_3],0);
  240 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_5],0);
  241 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_6],0);
  242 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_7],0);
  243 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_5],0);
  244 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_5],0);
  245 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_6],0);
  246 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_3,X_INTRODUCED_2],0);
  247 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_2],0);
  248 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_2],0);
  249 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_2],0);
  250 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_3],0);
  251 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_3],0);
  252 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_3],0);
  253 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_1,X_INTRODUCED_4],0);
  254 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_4],0);
  255 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_4],0);
  256 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_6],0);
  257 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_7],0);
  258 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_6],0);
  259 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_3,X_INTRODUCED_2],0);
  260 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_2],0);
  261 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_2],0);
  262 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_2],0);
  263 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_3],0);
  264 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_3],0);
  265 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_3],0);
  266 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_4],0);
  267 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_4],0);
  268 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_1,X_INTRODUCED_5],0);
  269 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_5],0);
  270 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_7],0);
  271 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_3,X_INTRODUCED_2],0);
  272 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_2],0);
  273 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_2],0);
  274 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_2],0);
  275 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_4,X_INTRODUCED_3],0);
  276 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_3],0);
  277 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_3],0);
  278 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_5,X_INTRODUCED_4],0);
  279 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_4],0);
  280 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_6,X_INTRODUCED_5],0);
  281 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_1,X_INTRODUCED_6],0);
  282 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_4],0);
  283 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_5],0);
  284 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_6],0);
  285 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_7],0);
  286 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_4],0);
  287 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_4],0);
  288 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_4],0);
  289 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_5],0);
  290 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_5],0);
  291 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_6],0);
  292 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_2,X_INTRODUCED_3],0);
  293 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_3],0);
  294 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_3],0);
  295 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_3],0);
  296 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_5],0);
  297 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_6],0);
  298 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_7],0);
  299 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_5],0);
  300 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_5],0);
  301 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_6],0);
  302 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_4,X_INTRODUCED_3],0);
  303 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_3],0);
  304 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_3],0);
  305 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_2,X_INTRODUCED_4],0);
  306 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_4],0);
  307 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_4],0);
  308 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_6],0);
  309 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_7],0);
  310 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_6],0);
  311 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_4,X_INTRODUCED_3],0);
  312 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_3],0);
  313 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_3],0);
  314 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_4],0);
  315 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_4],0);
  316 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_2,X_INTRODUCED_5],0);
  317 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_7,X_INTRODUCED_5],0);
  318 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_7],0);
  319 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_4,X_INTRODUCED_3],0);
  320 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_3],0);
  321 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_3],0);
  322 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_5,X_INTRODUCED_4],0);
  323 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_4],0);
  324 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_6,X_INTRODUCED_5],0);
  325 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_2,X_INTRODUCED_6],0);
  326 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_5],0);
  327 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_6],0);
  328 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_7],0);
  329 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_5],0);
  330 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_5],0);
  331 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_6],0);
  332 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_3,X_INTRODUCED_4],0);
  333 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_4],0);
  334 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_4],0);
  335 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_6],0);
  336 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_7],0);
  337 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_6],0);
  338 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_5,X_INTRODUCED_4],0);
  339 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_4],0);
  340 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_3,X_INTRODUCED_5],0);
  341 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_7,X_INTRODUCED_5],0);
  342 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_7],0);
  343 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_3,X_INTRODUCED_5,X_INTRODUCED_4],0);
  344 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_4],0);
  345 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_3,X_INTRODUCED_6,X_INTRODUCED_5],0);
  346 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_3,X_INTRODUCED_6],0);
  347 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_6],0);
  348 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_7],0);
  349 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_6],0);
  350 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_4,X_INTRODUCED_5],0);
  351 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_6,X_INTRODUCED_4,X_INTRODUCED_7,X_INTRODUCED_5],0);
  352 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_6,X_INTRODUCED_4,X_INTRODUCED_7],0);
  353 +constraint int_lin_ne(X_INTRODUCED_38,[X_INTRODUCED_7,X_INTRODUCED_4,X_INTRODUCED_6,X_INTRODUCED_5],0);
  354 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_4,X_INTRODUCED_6],0);
  355 +constraint int_lin_ne(X_INTRODUCED_37,[X_INTRODUCED_6,X_INTRODUCED_5,X_INTRODUCED_7],0);
  356 +constraint int_lin_ne(X_INTRODUCED_39,[X_INTRODUCED_5,X_INTRODUCED_6],0);
  357 +constraint int_lin_le([1,-1,1],[X_INTRODUCED_1,X_INTRODUCED_7,X_INTRODUCED_6],-1);
  358 +constraint int_lin_eq([1,-1],[X_INTRODUCED_1,X_INTRODUCED_9],0):: defines_var(X_INTRODUCED_9);
  359 +constraint int_lin_eq([1,-1],[X_INTRODUCED_2,X_INTRODUCED_10],0):: defines_var(X_INTRODUCED_10);
  360 +constraint int_lin_eq([1,-1],[X_INTRODUCED_3,X_INTRODUCED_11],0):: defines_var(X_INTRODUCED_11);
  361 +constraint int_lin_eq([1,-1],[X_INTRODUCED_4,X_INTRODUCED_12],0):: defines_var(X_INTRODUCED_12);
  362 +constraint int_lin_eq([1,-1],[X_INTRODUCED_5,X_INTRODUCED_13],0):: defines_var(X_INTRODUCED_13);
  363 +constraint int_lin_eq([1,-1],[X_INTRODUCED_6,X_INTRODUCED_14],0):: defines_var(X_INTRODUCED_14);
  364 +constraint int_lin_eq([1,-1],[X_INTRODUCED_7,X_INTRODUCED_15],0):: defines_var(X_INTRODUCED_15);
  365 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_2,X_INTRODUCED_1,X_INTRODUCED_16],0):: defines_var(X_INTRODUCED_16);
  366 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_3,X_INTRODUCED_1,X_INTRODUCED_17],0):: defines_var(X_INTRODUCED_17);
  367 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_4,X_INTRODUCED_1,X_INTRODUCED_18],0):: defines_var(X_INTRODUCED_18);
  368 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_5,X_INTRODUCED_1,X_INTRODUCED_19],0):: defines_var(X_INTRODUCED_19);
  369 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_6,X_INTRODUCED_1,X_INTRODUCED_20],0):: defines_var(X_INTRODUCED_20);
  370 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_7,X_INTRODUCED_1,X_INTRODUCED_21],0):: defines_var(X_INTRODUCED_21);
  371 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_3,X_INTRODUCED_2,X_INTRODUCED_22],0):: defines_var(X_INTRODUCED_22);
  372 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_4,X_INTRODUCED_2,X_INTRODUCED_23],0):: defines_var(X_INTRODUCED_23);
  373 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_5,X_INTRODUCED_2,X_INTRODUCED_24],0):: defines_var(X_INTRODUCED_24);
  374 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_6,X_INTRODUCED_2,X_INTRODUCED_25],0):: defines_var(X_INTRODUCED_25);
  375 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_7,X_INTRODUCED_2,X_INTRODUCED_26],0):: defines_var(X_INTRODUCED_26);
  376 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_4,X_INTRODUCED_3,X_INTRODUCED_27],0):: defines_var(X_INTRODUCED_27);
  377 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_5,X_INTRODUCED_3,X_INTRODUCED_28],0):: defines_var(X_INTRODUCED_28);
  378 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_6,X_INTRODUCED_3,X_INTRODUCED_29],0):: defines_var(X_INTRODUCED_29);
  379 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_7,X_INTRODUCED_3,X_INTRODUCED_30],0):: defines_var(X_INTRODUCED_30);
  380 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_5,X_INTRODUCED_4,X_INTRODUCED_31],0):: defines_var(X_INTRODUCED_31);
  381 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_6,X_INTRODUCED_4,X_INTRODUCED_32],0):: defines_var(X_INTRODUCED_32);
  382 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_7,X_INTRODUCED_4,X_INTRODUCED_33],0):: defines_var(X_INTRODUCED_33);
  383 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_6,X_INTRODUCED_5,X_INTRODUCED_34],0):: defines_var(X_INTRODUCED_34);
  384 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_7,X_INTRODUCED_5,X_INTRODUCED_35],0):: defines_var(X_INTRODUCED_35);
  385 +constraint int_lin_eq([1,-1,-1],[X_INTRODUCED_7,X_INTRODUCED_6,X_INTRODUCED_36],0):: defines_var(X_INTRODUCED_36);
  386 +solve :: int_search(mark,input_order,indomain,complete) minimize X_INTRODUCED_7;
fzn-parser/flatzinc.y
@@ -21,19 +21,19 @@ @@ -21,19 +21,19 @@
21 21
22 #define AST(pop, push) \ 22 #define AST(pop, push) \
23 { \ 23 { \
24 - printf ("[%s|_T] -> [", pop); \ 24 + printf ("[%s|_T] > [", pop); \
25 printf push; \ 25 printf push; \
26 printf ("|_T].\n"); \ 26 printf ("|_T].\n"); \
27 } 27 }
28 28
29 #define INIT(x) \ 29 #define INIT(x) \
30 { \ 30 { \
31 - printf ("_ -> %s.\n", x); \ 31 + printf ("_ > %s.\n", x); \
32 } 32 }
33 33
34 #define PRE() \ 34 #define PRE() \
35 { \ 35 { \
36 - printf ("_T -> ["); \ 36 + printf ("_T > ["); \
37 } 37 }
38 38
39 #define POST() \ 39 #define POST() \
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 43
44 #define PUSH(x) \ 44 #define PUSH(x) \
45 { \ 45 { \
46 - printf ("_T -> ["); \ 46 + printf ("_T > ["); \
47 printf x; \ 47 printf x; \
48 printf ("|_T].\n"); \ 48 printf ("|_T].\n"); \
49 } 49 }
@@ -204,7 +204,7 @@ float_ti_expr_tail: @@ -204,7 +204,7 @@ float_ti_expr_tail:
204 | FLOAT_LITERAL DOTDOT FLOAT_LITERAL { PUSH (("float(%g,%g)", $1, $3)); } 204 | FLOAT_LITERAL DOTDOT FLOAT_LITERAL { PUSH (("float(%g,%g)", $1, $3)); }
205 205
206 set_ti_expr_tail: 206 set_ti_expr_tail:
207 - SET OF int_ti_expr_tail 207 + SET OF int_ti_expr_tail { AST ("T", ("set(T)")); }
208 208
209 //--------------------------------------------------------------------------- 209 //---------------------------------------------------------------------------
210 // Expressions 210 // Expressions
@@ -222,8 +222,8 @@ expr: @@ -222,8 +222,8 @@ expr:
222 | set_literal 222 | set_literal
223 | array_literal 223 | array_literal
224 | array_access_expr 224 | array_access_expr
225 - | IDENT { PUSH (("_:id(\"%s\")", $1)); }  
226 - | UNDERSCORE_IDENT { PUSH (("_:uid(\"%s\")", $1)); } 225 + | IDENT { PUSH (("_:id('%s')", $1)); }
  226 + | UNDERSCORE_IDENT { PUSH (("_:uid('%s')", $1)); }
227 | IDENT '(' exprs ')' /* An annotation value with > 0 arguments. */ 227 | IDENT '(' exprs ')' /* An annotation value with > 0 arguments. */
228 228
229 bool_literal: 229 bool_literal:
@@ -242,11 +242,15 @@ set_literal: @@ -242,11 +242,15 @@ set_literal:
242 POST(); } 242 POST(); }
243 243
244 array_literal: 244 array_literal:
245 - '[' exprs ']' { AST ("Es", ("alit(Es)")); }  
246 - | '[' ']' { PUSH (("alit([])")); } 245 + '[' exprs ']' { AST ("Es", ("array(_):alit(Es)")); }
  246 + | '[' ']' { PUSH (("array(_):alit([])")); }
247 247
248 array_access_expr: IDENT '[' INT_LITERAL ']' 248 array_access_expr: IDENT '[' INT_LITERAL ']'
  249 + { AST ("int:EI,array(T):ID",
  250 + ("T:aref(array(T):ID,int:EI)")); }
249 | UNDERSCORE_IDENT '[' INT_LITERAL ']' 251 | UNDERSCORE_IDENT '[' INT_LITERAL ']'
  252 + { AST ("int:EI,array(T):ID",
  253 + ("T:aref(array(T):ID,int:EI)")); }
250 254
251 //--------------------------------------------------------------------------- 255 //---------------------------------------------------------------------------
252 // Annotations 256 // Annotations
fzn-parser/fznslurp.pl 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +% == No, Emacs this is -*-Prolog-*- code, not what you thought... =============
  2 +
  3 +load_ast(AST) :- load_ast(_>[], [], AST).
  4 +
  5 +load_ast(end_of_file, AST, AST).
  6 +load_ast(IN > INT, IN, OUT) :- read(OP), !,
  7 + write(OP), nl,
  8 + load_ast(OP, INT, OUT).
  9 +