diff --git a/examples/flatzinc/euler_2.fzn b/examples/flatzinc/euler_2.fzn new file mode 100644 index 0000000000..19d4542f3c --- /dev/null +++ b/examples/flatzinc/euler_2.fzn @@ -0,0 +1,650 @@ +var bool: BOOL____00048 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00050 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00051 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00052 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00054 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00056 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00057 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00058 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00060 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00062 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00063 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00064 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00066 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00068 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00069 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00070 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00072 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00074 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00075 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00076 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00078 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00080 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00081 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00082 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00084 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00086 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00087 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00088 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00090 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00092 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00093 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00094 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00096 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00098 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00099 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00100 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00102 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00104 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00105 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00106 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00108 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00110 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00111 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00112 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00114 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00116 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00117 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00118 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00120 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00122 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00123 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00124 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00126 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00128 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00129 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00130 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00132 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00134 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00135 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00136 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00138 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00140 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00141 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00142 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00144 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00146 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00147 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00148 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00150 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00152 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00153 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00154 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00156 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00158 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00159 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00160 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00162 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00164 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00165 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00166 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00168 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00170 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00171 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00172 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00174 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00176 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00177 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00178 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00180 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00182 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00183 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00184 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00186 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00188 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00189 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00190 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00192 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00194 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00195 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00196 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00198 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00200 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00201 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00202 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00204 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00206 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00207 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00208 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00210 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00212 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00213 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00214 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00216 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00218 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00219 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00220 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00222 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00224 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00225 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00226 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00228 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00230 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00231 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00232 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00234 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00236 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00237 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00238 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00240 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00242 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00243 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00244 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00246 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00248 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00249 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00250 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00252 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00254 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00255 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00256 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00258 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00260 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00261 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00262 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00264 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00266 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00267 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00268 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00270 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00272 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00273 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00274 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00276 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00278 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00279 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00280 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00282 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00284 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00285 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00286 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00288 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00290 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00291 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00292 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00294 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00296 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00297 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00298 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00300 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00302 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00303 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00304 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00306 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00308 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00309 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00310 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00312 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00314 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00315 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00316 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00318 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00320 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00321 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00322 :: is_defined_var :: var_is_introduced; +var int: INT____00001 :: is_defined_var :: var_is_introduced; +var int: INT____00002 :: is_defined_var :: var_is_introduced; +var int: INT____00003 :: is_defined_var :: var_is_introduced; +var int: INT____00004 :: is_defined_var :: var_is_introduced; +var int: INT____00005 :: is_defined_var :: var_is_introduced; +var int: INT____00006 :: is_defined_var :: var_is_introduced; +var int: INT____00007 :: is_defined_var :: var_is_introduced; +var int: INT____00008 :: is_defined_var :: var_is_introduced; +var int: INT____00009 :: is_defined_var :: var_is_introduced; +var int: INT____00010 :: is_defined_var :: var_is_introduced; +var int: INT____00011 :: is_defined_var :: var_is_introduced; +var int: INT____00012 :: is_defined_var :: var_is_introduced; +var int: INT____00013 :: is_defined_var :: var_is_introduced; +var int: INT____00014 :: is_defined_var :: var_is_introduced; +var int: INT____00015 :: is_defined_var :: var_is_introduced; +var int: INT____00016 :: is_defined_var :: var_is_introduced; +var int: INT____00017 :: is_defined_var :: var_is_introduced; +var int: INT____00018 :: is_defined_var :: var_is_introduced; +var int: INT____00019 :: is_defined_var :: var_is_introduced; +var int: INT____00020 :: is_defined_var :: var_is_introduced; +var int: INT____00021 :: is_defined_var :: var_is_introduced; +var int: INT____00022 :: is_defined_var :: var_is_introduced; +var int: INT____00023 :: is_defined_var :: var_is_introduced; +var int: INT____00024 :: is_defined_var :: var_is_introduced; +var int: INT____00025 :: is_defined_var :: var_is_introduced; +var int: INT____00026 :: is_defined_var :: var_is_introduced; +var int: INT____00027 :: is_defined_var :: var_is_introduced; +var int: INT____00028 :: is_defined_var :: var_is_introduced; +var int: INT____00029 :: is_defined_var :: var_is_introduced; +var int: INT____00030 :: is_defined_var :: var_is_introduced; +var int: INT____00031 :: is_defined_var :: var_is_introduced; +var int: INT____00032 :: is_defined_var :: var_is_introduced; +var int: INT____00033 :: is_defined_var :: var_is_introduced; +var int: INT____00034 :: is_defined_var :: var_is_introduced; +var int: INT____00035 :: is_defined_var :: var_is_introduced; +var int: INT____00036 :: is_defined_var :: var_is_introduced; +var int: INT____00037 :: is_defined_var :: var_is_introduced; +var int: INT____00038 :: is_defined_var :: var_is_introduced; +var int: INT____00039 :: is_defined_var :: var_is_introduced; +var int: INT____00040 :: is_defined_var :: var_is_introduced; +var int: INT____00041 :: is_defined_var :: var_is_introduced; +var int: INT____00042 :: is_defined_var :: var_is_introduced; +var int: INT____00043 :: is_defined_var :: var_is_introduced; +var int: INT____00044 :: is_defined_var :: var_is_introduced; +var int: INT____00045 :: is_defined_var :: var_is_introduced; +var int: INT____00046 :: is_defined_var :: var_is_introduced; +var 0..10000000: INT____00047 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00049 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00055 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00061 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00067 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00073 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00079 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00085 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00091 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00097 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00103 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00109 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00115 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00121 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00127 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00133 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00139 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00145 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00151 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00157 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00163 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00169 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00175 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00181 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00187 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00193 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00199 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00205 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00211 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00217 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00223 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00229 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00235 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00241 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00247 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00253 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00259 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00265 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00271 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00277 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00283 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00289 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00295 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00301 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00307 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00313 :: is_defined_var :: var_is_introduced; +var -1..1: INT____00319 :: is_defined_var :: var_is_introduced; +array [1..46] of var int: f :: output_array([1..46]); +var 0..10000000: res :: output_var = INT____00047; +array [1..46] of var 0..1: x :: output_array([1..46]); +constraint array_bool_and([BOOL____00048, BOOL____00050, BOOL____00051], BOOL____00052); +constraint array_bool_and([BOOL____00054, BOOL____00056, BOOL____00057], BOOL____00058); +constraint array_bool_and([BOOL____00060, BOOL____00062, BOOL____00063], BOOL____00064); +constraint array_bool_and([BOOL____00066, BOOL____00068, BOOL____00069], BOOL____00070); +constraint array_bool_and([BOOL____00072, BOOL____00074, BOOL____00075], BOOL____00076); +constraint array_bool_and([BOOL____00078, BOOL____00080, BOOL____00081], BOOL____00082); +constraint array_bool_and([BOOL____00084, BOOL____00086, BOOL____00087], BOOL____00088); +constraint array_bool_and([BOOL____00090, BOOL____00092, BOOL____00093], BOOL____00094); +constraint array_bool_and([BOOL____00096, BOOL____00098, BOOL____00099], BOOL____00100); +constraint array_bool_and([BOOL____00102, BOOL____00104, BOOL____00105], BOOL____00106); +constraint array_bool_and([BOOL____00108, BOOL____00110, BOOL____00111], BOOL____00112); +constraint array_bool_and([BOOL____00114, BOOL____00116, BOOL____00117], BOOL____00118); +constraint array_bool_and([BOOL____00120, BOOL____00122, BOOL____00123], BOOL____00124); +constraint array_bool_and([BOOL____00126, BOOL____00128, BOOL____00129], BOOL____00130); +constraint array_bool_and([BOOL____00132, BOOL____00134, BOOL____00135], BOOL____00136); +constraint array_bool_and([BOOL____00138, BOOL____00140, BOOL____00141], BOOL____00142); +constraint array_bool_and([BOOL____00144, BOOL____00146, BOOL____00147], BOOL____00148); +constraint array_bool_and([BOOL____00150, BOOL____00152, BOOL____00153], BOOL____00154); +constraint array_bool_and([BOOL____00156, BOOL____00158, BOOL____00159], BOOL____00160); +constraint array_bool_and([BOOL____00162, BOOL____00164, BOOL____00165], BOOL____00166); +constraint array_bool_and([BOOL____00168, BOOL____00170, BOOL____00171], BOOL____00172); +constraint array_bool_and([BOOL____00174, BOOL____00176, BOOL____00177], BOOL____00178); +constraint array_bool_and([BOOL____00180, BOOL____00182, BOOL____00183], BOOL____00184); +constraint array_bool_and([BOOL____00186, BOOL____00188, BOOL____00189], BOOL____00190); +constraint array_bool_and([BOOL____00192, BOOL____00194, BOOL____00195], BOOL____00196); +constraint array_bool_and([BOOL____00198, BOOL____00200, BOOL____00201], BOOL____00202); +constraint array_bool_and([BOOL____00204, BOOL____00206, BOOL____00207], BOOL____00208); +constraint array_bool_and([BOOL____00210, BOOL____00212, BOOL____00213], BOOL____00214); +constraint array_bool_and([BOOL____00216, BOOL____00218, BOOL____00219], BOOL____00220); +constraint array_bool_and([BOOL____00222, BOOL____00224, BOOL____00225], BOOL____00226); +constraint array_bool_and([BOOL____00228, BOOL____00230, BOOL____00231], BOOL____00232); +constraint array_bool_and([BOOL____00234, BOOL____00236, BOOL____00237], BOOL____00238); +constraint array_bool_and([BOOL____00240, BOOL____00242, BOOL____00243], BOOL____00244); +constraint array_bool_and([BOOL____00246, BOOL____00248, BOOL____00249], BOOL____00250); +constraint array_bool_and([BOOL____00252, BOOL____00254, BOOL____00255], BOOL____00256); +constraint array_bool_and([BOOL____00258, BOOL____00260, BOOL____00261], BOOL____00262); +constraint array_bool_and([BOOL____00264, BOOL____00266, BOOL____00267], BOOL____00268); +constraint array_bool_and([BOOL____00270, BOOL____00272, BOOL____00273], BOOL____00274); +constraint array_bool_and([BOOL____00276, BOOL____00278, BOOL____00279], BOOL____00280); +constraint array_bool_and([BOOL____00282, BOOL____00284, BOOL____00285], BOOL____00286); +constraint array_bool_and([BOOL____00288, BOOL____00290, BOOL____00291], BOOL____00292); +constraint array_bool_and([BOOL____00294, BOOL____00296, BOOL____00297], BOOL____00298); +constraint array_bool_and([BOOL____00300, BOOL____00302, BOOL____00303], BOOL____00304); +constraint array_bool_and([BOOL____00306, BOOL____00308, BOOL____00309], BOOL____00310); +constraint array_bool_and([BOOL____00312, BOOL____00314, BOOL____00315], BOOL____00316); +constraint array_bool_and([BOOL____00318, BOOL____00320, BOOL____00321], BOOL____00322); +constraint int_eq(f[1], 1); +constraint int_eq(f[2], 1); +constraint int_eq_reif(INT____00049, 1, BOOL____00050) :: defines_var(BOOL____00050); +constraint int_eq_reif(INT____00055, 1, BOOL____00056) :: defines_var(BOOL____00056); +constraint int_eq_reif(INT____00061, 1, BOOL____00062) :: defines_var(BOOL____00062); +constraint int_eq_reif(INT____00067, 1, BOOL____00068) :: defines_var(BOOL____00068); +constraint int_eq_reif(INT____00073, 1, BOOL____00074) :: defines_var(BOOL____00074); +constraint int_eq_reif(INT____00079, 1, BOOL____00080) :: defines_var(BOOL____00080); +constraint int_eq_reif(INT____00085, 1, BOOL____00086) :: defines_var(BOOL____00086); +constraint int_eq_reif(INT____00091, 1, BOOL____00092) :: defines_var(BOOL____00092); +constraint int_eq_reif(INT____00097, 1, BOOL____00098) :: defines_var(BOOL____00098); +constraint int_eq_reif(INT____00103, 1, BOOL____00104) :: defines_var(BOOL____00104); +constraint int_eq_reif(INT____00109, 1, BOOL____00110) :: defines_var(BOOL____00110); +constraint int_eq_reif(INT____00115, 1, BOOL____00116) :: defines_var(BOOL____00116); +constraint int_eq_reif(INT____00121, 1, BOOL____00122) :: defines_var(BOOL____00122); +constraint int_eq_reif(INT____00127, 1, BOOL____00128) :: defines_var(BOOL____00128); +constraint int_eq_reif(INT____00133, 1, BOOL____00134) :: defines_var(BOOL____00134); +constraint int_eq_reif(INT____00139, 1, BOOL____00140) :: defines_var(BOOL____00140); +constraint int_eq_reif(INT____00145, 1, BOOL____00146) :: defines_var(BOOL____00146); +constraint int_eq_reif(INT____00151, 1, BOOL____00152) :: defines_var(BOOL____00152); +constraint int_eq_reif(INT____00157, 1, BOOL____00158) :: defines_var(BOOL____00158); +constraint int_eq_reif(INT____00163, 1, BOOL____00164) :: defines_var(BOOL____00164); +constraint int_eq_reif(INT____00169, 1, BOOL____00170) :: defines_var(BOOL____00170); +constraint int_eq_reif(INT____00175, 1, BOOL____00176) :: defines_var(BOOL____00176); +constraint int_eq_reif(INT____00181, 1, BOOL____00182) :: defines_var(BOOL____00182); +constraint int_eq_reif(INT____00187, 1, BOOL____00188) :: defines_var(BOOL____00188); +constraint int_eq_reif(INT____00193, 1, BOOL____00194) :: defines_var(BOOL____00194); +constraint int_eq_reif(INT____00199, 1, BOOL____00200) :: defines_var(BOOL____00200); +constraint int_eq_reif(INT____00205, 1, BOOL____00206) :: defines_var(BOOL____00206); +constraint int_eq_reif(INT____00211, 1, BOOL____00212) :: defines_var(BOOL____00212); +constraint int_eq_reif(INT____00217, 1, BOOL____00218) :: defines_var(BOOL____00218); +constraint int_eq_reif(INT____00223, 1, BOOL____00224) :: defines_var(BOOL____00224); +constraint int_eq_reif(INT____00229, 1, BOOL____00230) :: defines_var(BOOL____00230); +constraint int_eq_reif(INT____00235, 1, BOOL____00236) :: defines_var(BOOL____00236); +constraint int_eq_reif(INT____00241, 1, BOOL____00242) :: defines_var(BOOL____00242); +constraint int_eq_reif(INT____00247, 1, BOOL____00248) :: defines_var(BOOL____00248); +constraint int_eq_reif(INT____00253, 1, BOOL____00254) :: defines_var(BOOL____00254); +constraint int_eq_reif(INT____00259, 1, BOOL____00260) :: defines_var(BOOL____00260); +constraint int_eq_reif(INT____00265, 1, BOOL____00266) :: defines_var(BOOL____00266); +constraint int_eq_reif(INT____00271, 1, BOOL____00272) :: defines_var(BOOL____00272); +constraint int_eq_reif(INT____00277, 1, BOOL____00278) :: defines_var(BOOL____00278); +constraint int_eq_reif(INT____00283, 1, BOOL____00284) :: defines_var(BOOL____00284); +constraint int_eq_reif(INT____00289, 1, BOOL____00290) :: defines_var(BOOL____00290); +constraint int_eq_reif(INT____00295, 1, BOOL____00296) :: defines_var(BOOL____00296); +constraint int_eq_reif(INT____00301, 1, BOOL____00302) :: defines_var(BOOL____00302); +constraint int_eq_reif(INT____00307, 1, BOOL____00308) :: defines_var(BOOL____00308); +constraint int_eq_reif(INT____00313, 1, BOOL____00314) :: defines_var(BOOL____00314); +constraint int_eq_reif(INT____00319, 1, BOOL____00320) :: defines_var(BOOL____00320); +constraint int_eq_reif(x[1], 1, BOOL____00052) :: defines_var(BOOL____00052); +constraint int_eq_reif(x[2], 1, BOOL____00058) :: defines_var(BOOL____00058); +constraint int_eq_reif(x[3], 1, BOOL____00064) :: defines_var(BOOL____00064); +constraint int_eq_reif(x[4], 1, BOOL____00070) :: defines_var(BOOL____00070); +constraint int_eq_reif(x[5], 1, BOOL____00076) :: defines_var(BOOL____00076); +constraint int_eq_reif(x[6], 1, BOOL____00082) :: defines_var(BOOL____00082); +constraint int_eq_reif(x[7], 1, BOOL____00088) :: defines_var(BOOL____00088); +constraint int_eq_reif(x[8], 1, BOOL____00094) :: defines_var(BOOL____00094); +constraint int_eq_reif(x[9], 1, BOOL____00100) :: defines_var(BOOL____00100); +constraint int_eq_reif(x[10], 1, BOOL____00106) :: defines_var(BOOL____00106); +constraint int_eq_reif(x[11], 1, BOOL____00112) :: defines_var(BOOL____00112); +constraint int_eq_reif(x[12], 1, BOOL____00118) :: defines_var(BOOL____00118); +constraint int_eq_reif(x[13], 1, BOOL____00124) :: defines_var(BOOL____00124); +constraint int_eq_reif(x[14], 1, BOOL____00130) :: defines_var(BOOL____00130); +constraint int_eq_reif(x[15], 1, BOOL____00136) :: defines_var(BOOL____00136); +constraint int_eq_reif(x[16], 1, BOOL____00142) :: defines_var(BOOL____00142); +constraint int_eq_reif(x[17], 1, BOOL____00148) :: defines_var(BOOL____00148); +constraint int_eq_reif(x[18], 1, BOOL____00154) :: defines_var(BOOL____00154); +constraint int_eq_reif(x[19], 1, BOOL____00160) :: defines_var(BOOL____00160); +constraint int_eq_reif(x[20], 1, BOOL____00166) :: defines_var(BOOL____00166); +constraint int_eq_reif(x[21], 1, BOOL____00172) :: defines_var(BOOL____00172); +constraint int_eq_reif(x[22], 1, BOOL____00178) :: defines_var(BOOL____00178); +constraint int_eq_reif(x[23], 1, BOOL____00184) :: defines_var(BOOL____00184); +constraint int_eq_reif(x[24], 1, BOOL____00190) :: defines_var(BOOL____00190); +constraint int_eq_reif(x[25], 1, BOOL____00196) :: defines_var(BOOL____00196); +constraint int_eq_reif(x[26], 1, BOOL____00202) :: defines_var(BOOL____00202); +constraint int_eq_reif(x[27], 1, BOOL____00208) :: defines_var(BOOL____00208); +constraint int_eq_reif(x[28], 1, BOOL____00214) :: defines_var(BOOL____00214); +constraint int_eq_reif(x[29], 1, BOOL____00220) :: defines_var(BOOL____00220); +constraint int_eq_reif(x[30], 1, BOOL____00226) :: defines_var(BOOL____00226); +constraint int_eq_reif(x[31], 1, BOOL____00232) :: defines_var(BOOL____00232); +constraint int_eq_reif(x[32], 1, BOOL____00238) :: defines_var(BOOL____00238); +constraint int_eq_reif(x[33], 1, BOOL____00244) :: defines_var(BOOL____00244); +constraint int_eq_reif(x[34], 1, BOOL____00250) :: defines_var(BOOL____00250); +constraint int_eq_reif(x[35], 1, BOOL____00256) :: defines_var(BOOL____00256); +constraint int_eq_reif(x[36], 1, BOOL____00262) :: defines_var(BOOL____00262); +constraint int_eq_reif(x[37], 1, BOOL____00268) :: defines_var(BOOL____00268); +constraint int_eq_reif(x[38], 1, BOOL____00274) :: defines_var(BOOL____00274); +constraint int_eq_reif(x[39], 1, BOOL____00280) :: defines_var(BOOL____00280); +constraint int_eq_reif(x[40], 1, BOOL____00286) :: defines_var(BOOL____00286); +constraint int_eq_reif(x[41], 1, BOOL____00292) :: defines_var(BOOL____00292); +constraint int_eq_reif(x[42], 1, BOOL____00298) :: defines_var(BOOL____00298); +constraint int_eq_reif(x[43], 1, BOOL____00304) :: defines_var(BOOL____00304); +constraint int_eq_reif(x[44], 1, BOOL____00310) :: defines_var(BOOL____00310); +constraint int_eq_reif(x[45], 1, BOOL____00316) :: defines_var(BOOL____00316); +constraint int_eq_reif(x[46], 1, BOOL____00322) :: defines_var(BOOL____00322); +constraint int_lin_eq([-1, -1, 1], [f[1], f[2], f[3]], 0); +constraint int_lin_eq([-1, -1, 1], [f[2], f[3], f[4]], 0); +constraint int_lin_eq([-1, -1, 1], [f[3], f[4], f[5]], 0); +constraint int_lin_eq([-1, -1, 1], [f[4], f[5], f[6]], 0); +constraint int_lin_eq([-1, -1, 1], [f[5], f[6], f[7]], 0); +constraint int_lin_eq([-1, -1, 1], [f[6], f[7], f[8]], 0); +constraint int_lin_eq([-1, -1, 1], [f[7], f[8], f[9]], 0); +constraint int_lin_eq([-1, -1, 1], [f[8], f[9], f[10]], 0); +constraint int_lin_eq([-1, -1, 1], [f[9], f[10], f[11]], 0); +constraint int_lin_eq([-1, -1, 1], [f[10], f[11], f[12]], 0); +constraint int_lin_eq([-1, -1, 1], [f[11], f[12], f[13]], 0); +constraint int_lin_eq([-1, -1, 1], [f[12], f[13], f[14]], 0); +constraint int_lin_eq([-1, -1, 1], [f[13], f[14], f[15]], 0); +constraint int_lin_eq([-1, -1, 1], [f[14], f[15], f[16]], 0); +constraint int_lin_eq([-1, -1, 1], [f[15], f[16], f[17]], 0); +constraint int_lin_eq([-1, -1, 1], [f[16], f[17], f[18]], 0); +constraint int_lin_eq([-1, -1, 1], [f[17], f[18], f[19]], 0); +constraint int_lin_eq([-1, -1, 1], [f[18], f[19], f[20]], 0); +constraint int_lin_eq([-1, -1, 1], [f[19], f[20], f[21]], 0); +constraint int_lin_eq([-1, -1, 1], [f[20], f[21], f[22]], 0); +constraint int_lin_eq([-1, -1, 1], [f[21], f[22], f[23]], 0); +constraint int_lin_eq([-1, -1, 1], [f[22], f[23], f[24]], 0); +constraint int_lin_eq([-1, -1, 1], [f[23], f[24], f[25]], 0); +constraint int_lin_eq([-1, -1, 1], [f[24], f[25], f[26]], 0); +constraint int_lin_eq([-1, -1, 1], [f[25], f[26], f[27]], 0); +constraint int_lin_eq([-1, -1, 1], [f[26], f[27], f[28]], 0); +constraint int_lin_eq([-1, -1, 1], [f[27], f[28], f[29]], 0); +constraint int_lin_eq([-1, -1, 1], [f[28], f[29], f[30]], 0); +constraint int_lin_eq([-1, -1, 1], [f[29], f[30], f[31]], 0); +constraint int_lin_eq([-1, -1, 1], [f[30], f[31], f[32]], 0); +constraint int_lin_eq([-1, -1, 1], [f[31], f[32], f[33]], 0); +constraint int_lin_eq([-1, -1, 1], [f[32], f[33], f[34]], 0); +constraint int_lin_eq([-1, -1, 1], [f[33], f[34], f[35]], 0); +constraint int_lin_eq([-1, -1, 1], [f[34], f[35], f[36]], 0); +constraint int_lin_eq([-1, -1, 1], [f[35], f[36], f[37]], 0); +constraint int_lin_eq([-1, -1, 1], [f[36], f[37], f[38]], 0); +constraint int_lin_eq([-1, -1, 1], [f[37], f[38], f[39]], 0); +constraint int_lin_eq([-1, -1, 1], [f[38], f[39], f[40]], 0); +constraint int_lin_eq([-1, -1, 1], [f[39], f[40], f[41]], 0); +constraint int_lin_eq([-1, -1, 1], [f[40], f[41], f[42]], 0); +constraint int_lin_eq([-1, -1, 1], [f[41], f[42], f[43]], 0); +constraint int_lin_eq([-1, -1, 1], [f[42], f[43], f[44]], 0); +constraint int_lin_eq([-1, -1, 1], [f[43], f[44], f[45]], 0); +constraint int_lin_eq([-1, -1, 1], [f[44], f[45], f[46]], 0); +constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00047, INT____00001, INT____00002, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007, INT____00008, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014, INT____00015, INT____00016, INT____00017, INT____00018, INT____00019, INT____00020, INT____00021, INT____00022, INT____00023, INT____00024, INT____00025, INT____00026, INT____00027, INT____00028, INT____00029, INT____00030, INT____00031, INT____00032, INT____00033, INT____00034, INT____00035, INT____00036, INT____00037, INT____00038, INT____00039, INT____00040, INT____00041, INT____00042, INT____00043, INT____00044, INT____00045, INT____00046], 0) :: defines_var(INT____00047); +constraint int_lt_reif(0, f[1], BOOL____00048) :: defines_var(BOOL____00048); +constraint int_lt_reif(0, f[2], BOOL____00054) :: defines_var(BOOL____00054); +constraint int_lt_reif(0, f[3], BOOL____00060) :: defines_var(BOOL____00060); +constraint int_lt_reif(0, f[4], BOOL____00066) :: defines_var(BOOL____00066); +constraint int_lt_reif(0, f[5], BOOL____00072) :: defines_var(BOOL____00072); +constraint int_lt_reif(0, f[6], BOOL____00078) :: defines_var(BOOL____00078); +constraint int_lt_reif(0, f[7], BOOL____00084) :: defines_var(BOOL____00084); +constraint int_lt_reif(0, f[8], BOOL____00090) :: defines_var(BOOL____00090); +constraint int_lt_reif(0, f[9], BOOL____00096) :: defines_var(BOOL____00096); +constraint int_lt_reif(0, f[10], BOOL____00102) :: defines_var(BOOL____00102); +constraint int_lt_reif(0, f[11], BOOL____00108) :: defines_var(BOOL____00108); +constraint int_lt_reif(0, f[12], BOOL____00114) :: defines_var(BOOL____00114); +constraint int_lt_reif(0, f[13], BOOL____00120) :: defines_var(BOOL____00120); +constraint int_lt_reif(0, f[14], BOOL____00126) :: defines_var(BOOL____00126); +constraint int_lt_reif(0, f[15], BOOL____00132) :: defines_var(BOOL____00132); +constraint int_lt_reif(0, f[16], BOOL____00138) :: defines_var(BOOL____00138); +constraint int_lt_reif(0, f[17], BOOL____00144) :: defines_var(BOOL____00144); +constraint int_lt_reif(0, f[18], BOOL____00150) :: defines_var(BOOL____00150); +constraint int_lt_reif(0, f[19], BOOL____00156) :: defines_var(BOOL____00156); +constraint int_lt_reif(0, f[20], BOOL____00162) :: defines_var(BOOL____00162); +constraint int_lt_reif(0, f[21], BOOL____00168) :: defines_var(BOOL____00168); +constraint int_lt_reif(0, f[22], BOOL____00174) :: defines_var(BOOL____00174); +constraint int_lt_reif(0, f[23], BOOL____00180) :: defines_var(BOOL____00180); +constraint int_lt_reif(0, f[24], BOOL____00186) :: defines_var(BOOL____00186); +constraint int_lt_reif(0, f[25], BOOL____00192) :: defines_var(BOOL____00192); +constraint int_lt_reif(0, f[26], BOOL____00198) :: defines_var(BOOL____00198); +constraint int_lt_reif(0, f[27], BOOL____00204) :: defines_var(BOOL____00204); +constraint int_lt_reif(0, f[28], BOOL____00210) :: defines_var(BOOL____00210); +constraint int_lt_reif(0, f[29], BOOL____00216) :: defines_var(BOOL____00216); +constraint int_lt_reif(0, f[30], BOOL____00222) :: defines_var(BOOL____00222); +constraint int_lt_reif(0, f[31], BOOL____00228) :: defines_var(BOOL____00228); +constraint int_lt_reif(0, f[32], BOOL____00234) :: defines_var(BOOL____00234); +constraint int_lt_reif(0, f[33], BOOL____00240) :: defines_var(BOOL____00240); +constraint int_lt_reif(0, f[34], BOOL____00246) :: defines_var(BOOL____00246); +constraint int_lt_reif(0, f[35], BOOL____00252) :: defines_var(BOOL____00252); +constraint int_lt_reif(0, f[36], BOOL____00258) :: defines_var(BOOL____00258); +constraint int_lt_reif(0, f[37], BOOL____00264) :: defines_var(BOOL____00264); +constraint int_lt_reif(0, f[38], BOOL____00270) :: defines_var(BOOL____00270); +constraint int_lt_reif(0, f[39], BOOL____00276) :: defines_var(BOOL____00276); +constraint int_lt_reif(0, f[40], BOOL____00282) :: defines_var(BOOL____00282); +constraint int_lt_reif(0, f[41], BOOL____00288) :: defines_var(BOOL____00288); +constraint int_lt_reif(0, f[42], BOOL____00294) :: defines_var(BOOL____00294); +constraint int_lt_reif(0, f[43], BOOL____00300) :: defines_var(BOOL____00300); +constraint int_lt_reif(0, f[44], BOOL____00306) :: defines_var(BOOL____00306); +constraint int_lt_reif(0, f[45], BOOL____00312) :: defines_var(BOOL____00312); +constraint int_lt_reif(0, f[46], BOOL____00318) :: defines_var(BOOL____00318); +constraint int_lt_reif(f[1], 4000000, BOOL____00051) :: defines_var(BOOL____00051); +constraint int_lt_reif(f[2], 4000000, BOOL____00057) :: defines_var(BOOL____00057); +constraint int_lt_reif(f[3], 4000000, BOOL____00063) :: defines_var(BOOL____00063); +constraint int_lt_reif(f[4], 4000000, BOOL____00069) :: defines_var(BOOL____00069); +constraint int_lt_reif(f[5], 4000000, BOOL____00075) :: defines_var(BOOL____00075); +constraint int_lt_reif(f[6], 4000000, BOOL____00081) :: defines_var(BOOL____00081); +constraint int_lt_reif(f[7], 4000000, BOOL____00087) :: defines_var(BOOL____00087); +constraint int_lt_reif(f[8], 4000000, BOOL____00093) :: defines_var(BOOL____00093); +constraint int_lt_reif(f[9], 4000000, BOOL____00099) :: defines_var(BOOL____00099); +constraint int_lt_reif(f[10], 4000000, BOOL____00105) :: defines_var(BOOL____00105); +constraint int_lt_reif(f[11], 4000000, BOOL____00111) :: defines_var(BOOL____00111); +constraint int_lt_reif(f[12], 4000000, BOOL____00117) :: defines_var(BOOL____00117); +constraint int_lt_reif(f[13], 4000000, BOOL____00123) :: defines_var(BOOL____00123); +constraint int_lt_reif(f[14], 4000000, BOOL____00129) :: defines_var(BOOL____00129); +constraint int_lt_reif(f[15], 4000000, BOOL____00135) :: defines_var(BOOL____00135); +constraint int_lt_reif(f[16], 4000000, BOOL____00141) :: defines_var(BOOL____00141); +constraint int_lt_reif(f[17], 4000000, BOOL____00147) :: defines_var(BOOL____00147); +constraint int_lt_reif(f[18], 4000000, BOOL____00153) :: defines_var(BOOL____00153); +constraint int_lt_reif(f[19], 4000000, BOOL____00159) :: defines_var(BOOL____00159); +constraint int_lt_reif(f[20], 4000000, BOOL____00165) :: defines_var(BOOL____00165); +constraint int_lt_reif(f[21], 4000000, BOOL____00171) :: defines_var(BOOL____00171); +constraint int_lt_reif(f[22], 4000000, BOOL____00177) :: defines_var(BOOL____00177); +constraint int_lt_reif(f[23], 4000000, BOOL____00183) :: defines_var(BOOL____00183); +constraint int_lt_reif(f[24], 4000000, BOOL____00189) :: defines_var(BOOL____00189); +constraint int_lt_reif(f[25], 4000000, BOOL____00195) :: defines_var(BOOL____00195); +constraint int_lt_reif(f[26], 4000000, BOOL____00201) :: defines_var(BOOL____00201); +constraint int_lt_reif(f[27], 4000000, BOOL____00207) :: defines_var(BOOL____00207); +constraint int_lt_reif(f[28], 4000000, BOOL____00213) :: defines_var(BOOL____00213); +constraint int_lt_reif(f[29], 4000000, BOOL____00219) :: defines_var(BOOL____00219); +constraint int_lt_reif(f[30], 4000000, BOOL____00225) :: defines_var(BOOL____00225); +constraint int_lt_reif(f[31], 4000000, BOOL____00231) :: defines_var(BOOL____00231); +constraint int_lt_reif(f[32], 4000000, BOOL____00237) :: defines_var(BOOL____00237); +constraint int_lt_reif(f[33], 4000000, BOOL____00243) :: defines_var(BOOL____00243); +constraint int_lt_reif(f[34], 4000000, BOOL____00249) :: defines_var(BOOL____00249); +constraint int_lt_reif(f[35], 4000000, BOOL____00255) :: defines_var(BOOL____00255); +constraint int_lt_reif(f[36], 4000000, BOOL____00261) :: defines_var(BOOL____00261); +constraint int_lt_reif(f[37], 4000000, BOOL____00267) :: defines_var(BOOL____00267); +constraint int_lt_reif(f[38], 4000000, BOOL____00273) :: defines_var(BOOL____00273); +constraint int_lt_reif(f[39], 4000000, BOOL____00279) :: defines_var(BOOL____00279); +constraint int_lt_reif(f[40], 4000000, BOOL____00285) :: defines_var(BOOL____00285); +constraint int_lt_reif(f[41], 4000000, BOOL____00291) :: defines_var(BOOL____00291); +constraint int_lt_reif(f[42], 4000000, BOOL____00297) :: defines_var(BOOL____00297); +constraint int_lt_reif(f[43], 4000000, BOOL____00303) :: defines_var(BOOL____00303); +constraint int_lt_reif(f[44], 4000000, BOOL____00309) :: defines_var(BOOL____00309); +constraint int_lt_reif(f[45], 4000000, BOOL____00315) :: defines_var(BOOL____00315); +constraint int_lt_reif(f[46], 4000000, BOOL____00321) :: defines_var(BOOL____00321); +constraint int_mod(f[1], 2, INT____00049) :: defines_var(INT____00049); +constraint int_mod(f[2], 2, INT____00055) :: defines_var(INT____00055); +constraint int_mod(f[3], 2, INT____00061) :: defines_var(INT____00061); +constraint int_mod(f[4], 2, INT____00067) :: defines_var(INT____00067); +constraint int_mod(f[5], 2, INT____00073) :: defines_var(INT____00073); +constraint int_mod(f[6], 2, INT____00079) :: defines_var(INT____00079); +constraint int_mod(f[7], 2, INT____00085) :: defines_var(INT____00085); +constraint int_mod(f[8], 2, INT____00091) :: defines_var(INT____00091); +constraint int_mod(f[9], 2, INT____00097) :: defines_var(INT____00097); +constraint int_mod(f[10], 2, INT____00103) :: defines_var(INT____00103); +constraint int_mod(f[11], 2, INT____00109) :: defines_var(INT____00109); +constraint int_mod(f[12], 2, INT____00115) :: defines_var(INT____00115); +constraint int_mod(f[13], 2, INT____00121) :: defines_var(INT____00121); +constraint int_mod(f[14], 2, INT____00127) :: defines_var(INT____00127); +constraint int_mod(f[15], 2, INT____00133) :: defines_var(INT____00133); +constraint int_mod(f[16], 2, INT____00139) :: defines_var(INT____00139); +constraint int_mod(f[17], 2, INT____00145) :: defines_var(INT____00145); +constraint int_mod(f[18], 2, INT____00151) :: defines_var(INT____00151); +constraint int_mod(f[19], 2, INT____00157) :: defines_var(INT____00157); +constraint int_mod(f[20], 2, INT____00163) :: defines_var(INT____00163); +constraint int_mod(f[21], 2, INT____00169) :: defines_var(INT____00169); +constraint int_mod(f[22], 2, INT____00175) :: defines_var(INT____00175); +constraint int_mod(f[23], 2, INT____00181) :: defines_var(INT____00181); +constraint int_mod(f[24], 2, INT____00187) :: defines_var(INT____00187); +constraint int_mod(f[25], 2, INT____00193) :: defines_var(INT____00193); +constraint int_mod(f[26], 2, INT____00199) :: defines_var(INT____00199); +constraint int_mod(f[27], 2, INT____00205) :: defines_var(INT____00205); +constraint int_mod(f[28], 2, INT____00211) :: defines_var(INT____00211); +constraint int_mod(f[29], 2, INT____00217) :: defines_var(INT____00217); +constraint int_mod(f[30], 2, INT____00223) :: defines_var(INT____00223); +constraint int_mod(f[31], 2, INT____00229) :: defines_var(INT____00229); +constraint int_mod(f[32], 2, INT____00235) :: defines_var(INT____00235); +constraint int_mod(f[33], 2, INT____00241) :: defines_var(INT____00241); +constraint int_mod(f[34], 2, INT____00247) :: defines_var(INT____00247); +constraint int_mod(f[35], 2, INT____00253) :: defines_var(INT____00253); +constraint int_mod(f[36], 2, INT____00259) :: defines_var(INT____00259); +constraint int_mod(f[37], 2, INT____00265) :: defines_var(INT____00265); +constraint int_mod(f[38], 2, INT____00271) :: defines_var(INT____00271); +constraint int_mod(f[39], 2, INT____00277) :: defines_var(INT____00277); +constraint int_mod(f[40], 2, INT____00283) :: defines_var(INT____00283); +constraint int_mod(f[41], 2, INT____00289) :: defines_var(INT____00289); +constraint int_mod(f[42], 2, INT____00295) :: defines_var(INT____00295); +constraint int_mod(f[43], 2, INT____00301) :: defines_var(INT____00301); +constraint int_mod(f[44], 2, INT____00307) :: defines_var(INT____00307); +constraint int_mod(f[45], 2, INT____00313) :: defines_var(INT____00313); +constraint int_mod(f[46], 2, INT____00319) :: defines_var(INT____00319); +constraint int_times(x[1], f[1], INT____00001) :: defines_var(INT____00001); +constraint int_times(x[2], f[2], INT____00002) :: defines_var(INT____00002); +constraint int_times(x[3], f[3], INT____00003) :: defines_var(INT____00003); +constraint int_times(x[4], f[4], INT____00004) :: defines_var(INT____00004); +constraint int_times(x[5], f[5], INT____00005) :: defines_var(INT____00005); +constraint int_times(x[6], f[6], INT____00006) :: defines_var(INT____00006); +constraint int_times(x[7], f[7], INT____00007) :: defines_var(INT____00007); +constraint int_times(x[8], f[8], INT____00008) :: defines_var(INT____00008); +constraint int_times(x[9], f[9], INT____00009) :: defines_var(INT____00009); +constraint int_times(x[10], f[10], INT____00010) :: defines_var(INT____00010); +constraint int_times(x[11], f[11], INT____00011) :: defines_var(INT____00011); +constraint int_times(x[12], f[12], INT____00012) :: defines_var(INT____00012); +constraint int_times(x[13], f[13], INT____00013) :: defines_var(INT____00013); +constraint int_times(x[14], f[14], INT____00014) :: defines_var(INT____00014); +constraint int_times(x[15], f[15], INT____00015) :: defines_var(INT____00015); +constraint int_times(x[16], f[16], INT____00016) :: defines_var(INT____00016); +constraint int_times(x[17], f[17], INT____00017) :: defines_var(INT____00017); +constraint int_times(x[18], f[18], INT____00018) :: defines_var(INT____00018); +constraint int_times(x[19], f[19], INT____00019) :: defines_var(INT____00019); +constraint int_times(x[20], f[20], INT____00020) :: defines_var(INT____00020); +constraint int_times(x[21], f[21], INT____00021) :: defines_var(INT____00021); +constraint int_times(x[22], f[22], INT____00022) :: defines_var(INT____00022); +constraint int_times(x[23], f[23], INT____00023) :: defines_var(INT____00023); +constraint int_times(x[24], f[24], INT____00024) :: defines_var(INT____00024); +constraint int_times(x[25], f[25], INT____00025) :: defines_var(INT____00025); +constraint int_times(x[26], f[26], INT____00026) :: defines_var(INT____00026); +constraint int_times(x[27], f[27], INT____00027) :: defines_var(INT____00027); +constraint int_times(x[28], f[28], INT____00028) :: defines_var(INT____00028); +constraint int_times(x[29], f[29], INT____00029) :: defines_var(INT____00029); +constraint int_times(x[30], f[30], INT____00030) :: defines_var(INT____00030); +constraint int_times(x[31], f[31], INT____00031) :: defines_var(INT____00031); +constraint int_times(x[32], f[32], INT____00032) :: defines_var(INT____00032); +constraint int_times(x[33], f[33], INT____00033) :: defines_var(INT____00033); +constraint int_times(x[34], f[34], INT____00034) :: defines_var(INT____00034); +constraint int_times(x[35], f[35], INT____00035) :: defines_var(INT____00035); +constraint int_times(x[36], f[36], INT____00036) :: defines_var(INT____00036); +constraint int_times(x[37], f[37], INT____00037) :: defines_var(INT____00037); +constraint int_times(x[38], f[38], INT____00038) :: defines_var(INT____00038); +constraint int_times(x[39], f[39], INT____00039) :: defines_var(INT____00039); +constraint int_times(x[40], f[40], INT____00040) :: defines_var(INT____00040); +constraint int_times(x[41], f[41], INT____00041) :: defines_var(INT____00041); +constraint int_times(x[42], f[42], INT____00042) :: defines_var(INT____00042); +constraint int_times(x[43], f[43], INT____00043) :: defines_var(INT____00043); +constraint int_times(x[44], f[44], INT____00044) :: defines_var(INT____00044); +constraint int_times(x[45], f[45], INT____00045) :: defines_var(INT____00045); +constraint int_times(x[46], f[46], INT____00046) :: defines_var(INT____00046); +solve satisfy; diff --git a/examples/flatzinc/mr_smith.fzn b/examples/flatzinc/mr_smith.fzn new file mode 100644 index 0000000000..208936f9b7 --- /dev/null +++ b/examples/flatzinc/mr_smith.fzn @@ -0,0 +1,13 @@ +var bool: BOOL____00002 :: is_defined_var :: var_is_introduced; +var bool: John; +var bool: Matt; +var bool: Mr_Smith; +var bool: Mrs_Smith; +var bool: Tim = John; +array [1..5] of var bool: x = [Mr_Smith, Mrs_Smith, Matt, Tim, Tim]; +constraint array_bool_and([Tim, Mr_Smith], BOOL____00002) :: defines_var(BOOL____00002); +constraint array_bool_or([Matt, Tim], true); +constraint bool_le(Matt, BOOL____00002); +constraint bool_le(Mr_Smith, Mrs_Smith); +constraint bool_not(Mrs_Smith, Tim); +solve satisfy; diff --git a/examples/flatzinc/pythagoras.fzn b/examples/flatzinc/pythagoras.fzn new file mode 100644 index 0000000000..b299af3c2b --- /dev/null +++ b/examples/flatzinc/pythagoras.fzn @@ -0,0 +1,19 @@ +var int: A :: output_var; +var int: B :: output_var; +var int: C :: output_var; +var int: INT____00001 :: is_defined_var :: var_is_introduced; +var int: INT____00002 :: is_defined_var :: var_is_introduced; +var int: INT____00004 :: is_defined_var :: var_is_introduced; +constraint int_le(1, A); +constraint int_le(1, INT____00001); +constraint int_le(1, INT____00002); +constraint int_le(2, B); +constraint int_le(2, INT____00004); +constraint int_le(3, C); +constraint int_lt(A, B); +constraint int_lt(B, C); +constraint int_plus(INT____00001, INT____00002, INT____00004) :: defines_var(INT____00004); +constraint int_times(A, A, INT____00001) :: defines_var(INT____00001); +constraint int_times(B, B, INT____00002) :: defines_var(INT____00002); +constraint int_times(C, C, INT____00004); +solve satisfy; diff --git a/examples/flatzinc/smullyan_lion_and_unicorn.fzn b/examples/flatzinc/smullyan_lion_and_unicorn.fzn new file mode 100644 index 0000000000..e193b7a75a --- /dev/null +++ b/examples/flatzinc/smullyan_lion_and_unicorn.fzn @@ -0,0 +1,43 @@ +array [1..7] of bool: lion = [false, false, false, true, true, true, true]; +array [1..7] of bool: unicorn = [true, true, true, false, false, false, true]; +var bool: BOOL____00002 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00005 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00008 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00009 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00010 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00013 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00014 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00015 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00016 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00017 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00018 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00019 :: is_defined_var :: var_is_introduced; +var 1..7: INT____00001 :: is_defined_var :: var_is_introduced; +var -1..5: INT____00003 :: is_defined_var :: var_is_introduced; +var -6..6: INT____00004 :: is_defined_var :: var_is_introduced; +var -5..7: INT____00006 :: is_defined_var :: var_is_introduced; +var 1..7: INT____00007 :: is_defined_var :: var_is_introduced; +var 0..6: INT____00011 :: is_defined_var :: var_is_introduced; +var 1..7: INT____00012 :: is_defined_var :: var_is_introduced; +var 0..6: today :: output_var; +constraint array_bool_and([BOOL____00010, BOOL____00014], BOOL____00016) :: defines_var(BOOL____00016); +constraint array_bool_and([BOOL____00015, BOOL____00017], BOOL____00019) :: defines_var(BOOL____00019); +constraint array_bool_and([BOOL____00002, BOOL____00010, BOOL____00014], BOOL____00018) :: defines_var(BOOL____00018); +constraint array_bool_and([BOOL____00008, BOOL____00005, BOOL____00005], BOOL____00009) :: defines_var(BOOL____00009); +constraint array_bool_element(INT____00001, lion, BOOL____00002) :: defines_var(BOOL____00002); +constraint array_bool_element(INT____00007, lion, BOOL____00008) :: defines_var(BOOL____00008); +constraint array_bool_element(INT____00012, lion, BOOL____00013) :: defines_var(BOOL____00013); +constraint array_bool_or([BOOL____00018, BOOL____00019], true); +constraint bool_eq_reif(BOOL____00002, false, BOOL____00015) :: defines_var(BOOL____00015); +constraint bool_eq_reif(BOOL____00009, false, BOOL____00010) :: defines_var(BOOL____00010); +constraint bool_eq_reif(BOOL____00013, false, BOOL____00014) :: defines_var(BOOL____00014); +constraint bool_eq_reif(BOOL____00016, false, BOOL____00017) :: defines_var(BOOL____00017); +constraint int_eq_reif(INT____00006, INT____00007, BOOL____00005); +constraint int_lin_eq([-1, 1], [INT____00001, today], -1) :: defines_var(INT____00001) :: domain; +constraint int_lin_eq([-1, 1], [INT____00003, today], 1) :: defines_var(INT____00003); +constraint int_lin_eq([-1, 1], [INT____00006, INT____00004], -1) :: defines_var(INT____00006) :: domain; +constraint int_lin_eq([-1, 1], [INT____00012, INT____00011], -1) :: defines_var(INT____00012) :: domain; +constraint int_lin_le_reif([-1], [INT____00004], 0, BOOL____00005) :: defines_var(BOOL____00005); +constraint int_mod(INT____00001, 7, INT____00011) :: defines_var(INT____00011); +constraint int_mod(INT____00003, 7, INT____00004) :: defines_var(INT____00004); +solve satisfy; diff --git a/examples/flatzinc/transportation.fzn b/examples/flatzinc/transportation.fzn new file mode 100644 index 0000000000..e4082b7868 --- /dev/null +++ b/examples/flatzinc/transportation.fzn @@ -0,0 +1,36 @@ +var int: A1; +var int: A2; +var int: A3; +var int: B1; +var int: B2; +var int: B3; +var int: C1; +var int: C2; +var int: C3; +var int: D1; +var int: D2; +var int: D3; +var int: Obj; +array [1..12] of var int: Vars = [A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, D3]; +constraint int_le(0, A1); +constraint int_le(0, A2); +constraint int_le(0, A3); +constraint int_le(0, B1); +constraint int_le(0, B2); +constraint int_le(0, B3); +constraint int_le(0, C1); +constraint int_le(0, C2); +constraint int_le(0, C3); +constraint int_le(0, D1); +constraint int_le(0, D2); +constraint int_le(0, D3); +constraint int_le(0, Obj); +constraint int_lin_eq([1, 1, 1], [A1, A2, A3], 200); +constraint int_lin_eq([1, 1, 1], [B1, B2, B3], 400); +constraint int_lin_eq([1, 1, 1], [C1, C2, C3], 300); +constraint int_lin_eq([1, 1, 1], [D1, D2, D3], 100); +constraint int_lin_eq([-1, 10, 7, 11, 8, 5, 10, 5, 5, 8, 9, 3, 7], [Obj, A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, D3], 0); +constraint int_lin_le([1, 1, 1, 1], [A1, B1, C1, D1], 500); +constraint int_lin_le([1, 1, 1, 1], [A2, B2, C2, D2], 300); +constraint int_lin_le([1, 1, 1, 1], [A3, B3, C3, D3], 400); +solve :: int_search(Vars, first_fail, indomain_split, complete) minimize Obj; diff --git a/src/flatzinc/flatzinc.cc b/src/flatzinc/flatzinc.cc index 5e84081ef4..a1d33aac9b 100644 --- a/src/flatzinc/flatzinc.cc +++ b/src/flatzinc/flatzinc.cc @@ -367,18 +367,20 @@ void FlatZincModel::Solve(int solve_frequency, } else if (!breaked && (limit == NULL || !limit->crossed())) { std::cout << "==========" << std::endl; } - std::cout << "%% runtime: " << solver_.wall_time() + std::cout << "%% runtime: " << solver_.wall_time() << " ms" << std::endl; - std::cout << "%% solutions: " << solver_.solutions() << std::endl; - std::cout << "%% constraints: " << solver_.constraints() << std::endl; - std::cout << "%% normal demons: " + std::cout << "%% solutions: " << solver_.solutions() << std::endl; + std::cout << "%% constraints: " << solver_.constraints() + << std::endl; + std::cout << "%% normal propagations: " << solver_.demon_runs(Solver::NORMAL_PRIORITY) << std::endl; - std::cout << "%% delayed demons: " + std::cout << "%% delayed propagations: " << solver_.demon_runs(Solver::DELAYED_PRIORITY) << std::endl; - std::cout << "%% branches " << solver_.branches() << std::endl; - std::cout << "%% failures: " << solver_.failures() << std::endl; + std::cout << "%% branches: " << solver_.branches() << std::endl; + std::cout << "%% failures: " << solver_.failures() << std::endl; // std::cout << "%% peak depth: 16" << std::endl; - std::cout << "%% memory: " << FlatZincMemoryUsage() << std::endl; + std::cout << "%% memory: " << FlatZincMemoryUsage() + << std::endl; } void FlatZincModel::InitOutput(AST::Array* const output) { diff --git a/src/flatzinc/parser.cc b/src/flatzinc/parser.cc index 45e2b4e56d..a371a451b6 100644 --- a/src/flatzinc/parser.cc +++ b/src/flatzinc/parser.cc @@ -113,8 +113,7 @@ void ParserState::ComputeViableTarget( id == "int_minus" || id == "int_times" || id == "array_var_int_element" || - id == "array_int_element" || - id == "array_bool_element") { + id == "array_int_element") { // Defines an int var. const int define = FindTarget(spec->annotations()); if (define != CtSpec::kNoDefinition) { @@ -122,7 +121,9 @@ void ParserState::ComputeViableTarget( candidates->insert(define); VLOG(1) << id << " -> insert " << define; } - } else if (id == "array_bool_and" || id == "array_bool_or") { + } else if (id == "array_bool_and" || + id == "array_bool_or" || + id == "array_bool_element") { // Defines a bool var. const int bool_define = FindTarget(spec->annotations()); if (bool_define != CtSpec::kNoDefinition) { @@ -480,6 +481,28 @@ void ParserState::AddConstraint(const std::string& id, } } } + if (id == "int_eq") { + const std::vector& nodes = args->a; + if (nodes[0]->isIntVar() && nodes[1]->isInt()) { + IntVarSpec* const spec = + int_variables_[FindEndIntegerVariable(nodes[0]->getIntVar())]; + VLOG(1) << spec->DebugString() << "Merge with " << nodes[1]->getInt(); + const bool ok = spec->MergeBounds(nodes[1]->getInt(), nodes[1]->getInt()); + VLOG(1) << " -> " << spec->DebugString(); + if (ok) { + return; + } + } else if (args->a[0]->isInt() && args->a[1]->isIntVar()) { + IntVarSpec* const spec = + int_variables_[FindEndIntegerVariable(nodes[1]->getIntVar())]; + VLOG(1) << spec->DebugString() << "Merge with " << nodes[0]->getInt(); + const bool ok = spec->MergeBounds(nodes[0]->getInt(), nodes[0]->getInt()); + VLOG(1) << " -> " << spec->DebugString(); + if (ok) { + return; + } + } + } int target = CtSpec::kNoDefinition; constraints_.push_back( new CtSpec(constraints_.size(), id, args, annotations)); diff --git a/src/flatzinc/parser.yxx b/src/flatzinc/parser.yxx index 562b90b07b..53ea3af8bf 100644 --- a/src/flatzinc/parser.yxx +++ b/src/flatzinc/parser.yxx @@ -318,7 +318,7 @@ FZ_VAR int_ti_expr_tail ':' var_par_id annotations non_array_expr_opt } delete arg; } else { - pp->bool_variables_.push_back(new BoolVarSpec($4, $2,introduced, true)); + pp->bool_variables_.push_back(new BoolVarSpec($4, $2, introduced, true)); } delete $5; free($4); } @@ -401,8 +401,10 @@ var_par_id annotations vardecl_int_var_array_init IntVarSpec* ivsv = (*vsv)[i]; if (ivsv->alias) { vars[i] = ivsv->i; - pp->AddIntVarDomainConstraint(ivsv->i, - new AST::SetLit(*$9.value())); + if ($9.defined()) { + pp->AddIntVarDomainConstraint(ivsv->i, + new AST::SetLit(*$9.value())); + } } else { vars[i] = pp->int_variables_.size(); ivsv->SetName($11); diff --git a/src/flatzinc/registry.cc b/src/flatzinc/registry.cc index fccc2a5077..bbe0b3d258 100644 --- a/src/flatzinc/registry.cc +++ b/src/flatzinc/registry.cc @@ -704,8 +704,7 @@ void p_bool_r_imp(FlatZincModel* const model, CtSpec* const spec) { void p_bool_not(FlatZincModel* const model, CtSpec* const spec) { Solver* const solver = model->solver(); IntVar* const left = model->GetIntVar(spec->Arg(0)); - IntVar* const right = model->GetIntVar(spec->Arg(1)); - IntVar* const target = model->GetIntVar(spec->Arg(2)); + IntVar* const target = model->GetIntVar(spec->Arg(1)); Constraint* const ct = solver->MakeEquality(solver->MakeDifference(1, left)->Var(), target); VLOG(1) << "Posted " << ct->DebugString(); @@ -778,13 +777,13 @@ void p_array_bool_element(FlatZincModel* const model, CtSpec* const spec) { for (int i = 0; i < size; ++i) { coefficients[i] = array_coefficents->a[i]->getBool(); } - if (spec->Arg(2)->isIntVar() && - spec->defines() == spec->Arg(2)->getIntVar()) { + if (spec->Arg(2)->isBoolVar() && + spec->defines() == spec->Arg(2)->getBoolVar() + model->IntVarCount()) { VLOG(1) << "Aliasing array_bool_element"; IntVar* const target = solver->MakeElement(coefficients, shifted_index)->Var(); - CHECK(model->IntegerVariable(spec->Arg(2)->getIntVar()) == NULL); - model->SetIntegerVariable(spec->Arg(2)->getIntVar(), target); + CHECK(model->BooleanVariable(spec->Arg(2)->getBoolVar()) == NULL); + model->SetBooleanVariable(spec->Arg(2)->getBoolVar(), target); } else { IntVar* const target = model->GetIntVar(spec->Arg(2)); Constraint* const ct =