Files
ortools-clone/examples/flatzinc/buckets.fzn

388 lines
29 KiB
MiniZinc

predicate fzn_all_different_int(array [int] of var int: x);
predicate count(array [int] of var int: x, var int: y, var int: c);
predicate fixed_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, int: b);
predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
predicate maximum_int(var int: m, array [int] of var int: x);
predicate minimum_int(var int: m, array [int] of var int: x);
predicate sliding_sum(int: low, int: up, int: seq, array [int] of var int: vs);
predicate sort(array [int] of var int: x, array [int] of var int: y);
predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);
predicate table_int(array [int] of var int: x, array [int, int] of int: t);
predicate var_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b);
array [1..20] of int: masses = [23, 43, 12, 54, 7, 3, 5, 10, 54, 55, 26, 9, 9, 43, 54, 1, 8, 6, 38, 33];
var bool: BOOL____00027 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00029 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00031 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00033 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00035 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00037 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00039 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00041 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00043 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00045 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00047 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00049 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00051 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00053 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00055 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00057 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00059 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00061 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00063 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00065 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00067 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00069 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00071 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00073 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00075 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00077 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00079 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00081 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00083 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00085 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00087 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00089 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00091 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00093 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00095 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00097 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00099 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00101 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00103 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00105 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00107 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00109 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00111 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00113 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00115 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00117 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00119 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00121 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00123 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00125 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00127 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00129 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00131 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00133 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00135 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00137 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00139 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00141 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00143 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00145 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00147 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00149 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00151 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00153 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00155 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00157 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00159 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00161 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00163 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00165 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00167 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00169 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00171 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00173 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00175 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00177 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00179 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00181 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00183 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00185 :: is_defined_var :: var_is_introduced;
var 0..493: INT____00001 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00003 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00005 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00007 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00009 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00011 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00013 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00015 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00017 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00019 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00021 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00023 :: is_defined_var :: var_is_introduced;
var -1972..1972: INT____00025 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00028 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00030 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00032 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00034 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00036 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00038 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00040 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00042 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00044 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00046 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00048 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00050 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00052 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00054 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00056 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00058 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00060 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00062 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00064 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00066 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00068 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00070 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00072 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00074 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00076 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00078 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00080 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00082 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00084 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00086 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00088 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00090 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00092 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00094 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00096 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00098 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00100 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00102 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00104 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00106 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00108 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00110 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00112 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00114 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00116 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00118 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00120 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00122 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00124 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00126 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00128 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00130 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00132 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00134 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00136 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00138 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00140 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00142 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00144 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00146 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00148 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00150 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00152 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00154 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00156 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00158 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00160 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00162 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00164 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00166 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00168 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00170 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00172 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00174 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00176 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00178 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00180 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00182 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00184 :: is_defined_var :: var_is_introduced;
var 0..1: INT____00186 :: is_defined_var :: var_is_introduced;
array [1..4] of var 0..1972: bins :: output_array([1..4]);
array [1..16] of var 0..493: diffs :: output_array([1..4, 1..4]);
var 0..493: total_diffs :: output_var = INT____00001;
array [1..20] of var 1..4: x :: output_array([1..20]);
constraint bool2int(BOOL____00027, INT____00028) :: defines_var(INT____00028);
constraint bool2int(BOOL____00029, INT____00030) :: defines_var(INT____00030);
constraint bool2int(BOOL____00031, INT____00032) :: defines_var(INT____00032);
constraint bool2int(BOOL____00033, INT____00034) :: defines_var(INT____00034);
constraint bool2int(BOOL____00035, INT____00036) :: defines_var(INT____00036);
constraint bool2int(BOOL____00037, INT____00038) :: defines_var(INT____00038);
constraint bool2int(BOOL____00039, INT____00040) :: defines_var(INT____00040);
constraint bool2int(BOOL____00041, INT____00042) :: defines_var(INT____00042);
constraint bool2int(BOOL____00043, INT____00044) :: defines_var(INT____00044);
constraint bool2int(BOOL____00045, INT____00046) :: defines_var(INT____00046);
constraint bool2int(BOOL____00047, INT____00048) :: defines_var(INT____00048);
constraint bool2int(BOOL____00049, INT____00050) :: defines_var(INT____00050);
constraint bool2int(BOOL____00051, INT____00052) :: defines_var(INT____00052);
constraint bool2int(BOOL____00053, INT____00054) :: defines_var(INT____00054);
constraint bool2int(BOOL____00055, INT____00056) :: defines_var(INT____00056);
constraint bool2int(BOOL____00057, INT____00058) :: defines_var(INT____00058);
constraint bool2int(BOOL____00059, INT____00060) :: defines_var(INT____00060);
constraint bool2int(BOOL____00061, INT____00062) :: defines_var(INT____00062);
constraint bool2int(BOOL____00063, INT____00064) :: defines_var(INT____00064);
constraint bool2int(BOOL____00065, INT____00066) :: defines_var(INT____00066);
constraint bool2int(BOOL____00067, INT____00068) :: defines_var(INT____00068);
constraint bool2int(BOOL____00069, INT____00070) :: defines_var(INT____00070);
constraint bool2int(BOOL____00071, INT____00072) :: defines_var(INT____00072);
constraint bool2int(BOOL____00073, INT____00074) :: defines_var(INT____00074);
constraint bool2int(BOOL____00075, INT____00076) :: defines_var(INT____00076);
constraint bool2int(BOOL____00077, INT____00078) :: defines_var(INT____00078);
constraint bool2int(BOOL____00079, INT____00080) :: defines_var(INT____00080);
constraint bool2int(BOOL____00081, INT____00082) :: defines_var(INT____00082);
constraint bool2int(BOOL____00083, INT____00084) :: defines_var(INT____00084);
constraint bool2int(BOOL____00085, INT____00086) :: defines_var(INT____00086);
constraint bool2int(BOOL____00087, INT____00088) :: defines_var(INT____00088);
constraint bool2int(BOOL____00089, INT____00090) :: defines_var(INT____00090);
constraint bool2int(BOOL____00091, INT____00092) :: defines_var(INT____00092);
constraint bool2int(BOOL____00093, INT____00094) :: defines_var(INT____00094);
constraint bool2int(BOOL____00095, INT____00096) :: defines_var(INT____00096);
constraint bool2int(BOOL____00097, INT____00098) :: defines_var(INT____00098);
constraint bool2int(BOOL____00099, INT____00100) :: defines_var(INT____00100);
constraint bool2int(BOOL____00101, INT____00102) :: defines_var(INT____00102);
constraint bool2int(BOOL____00103, INT____00104) :: defines_var(INT____00104);
constraint bool2int(BOOL____00105, INT____00106) :: defines_var(INT____00106);
constraint bool2int(BOOL____00107, INT____00108) :: defines_var(INT____00108);
constraint bool2int(BOOL____00109, INT____00110) :: defines_var(INT____00110);
constraint bool2int(BOOL____00111, INT____00112) :: defines_var(INT____00112);
constraint bool2int(BOOL____00113, INT____00114) :: defines_var(INT____00114);
constraint bool2int(BOOL____00115, INT____00116) :: defines_var(INT____00116);
constraint bool2int(BOOL____00117, INT____00118) :: defines_var(INT____00118);
constraint bool2int(BOOL____00119, INT____00120) :: defines_var(INT____00120);
constraint bool2int(BOOL____00121, INT____00122) :: defines_var(INT____00122);
constraint bool2int(BOOL____00123, INT____00124) :: defines_var(INT____00124);
constraint bool2int(BOOL____00125, INT____00126) :: defines_var(INT____00126);
constraint bool2int(BOOL____00127, INT____00128) :: defines_var(INT____00128);
constraint bool2int(BOOL____00129, INT____00130) :: defines_var(INT____00130);
constraint bool2int(BOOL____00131, INT____00132) :: defines_var(INT____00132);
constraint bool2int(BOOL____00133, INT____00134) :: defines_var(INT____00134);
constraint bool2int(BOOL____00135, INT____00136) :: defines_var(INT____00136);
constraint bool2int(BOOL____00137, INT____00138) :: defines_var(INT____00138);
constraint bool2int(BOOL____00139, INT____00140) :: defines_var(INT____00140);
constraint bool2int(BOOL____00141, INT____00142) :: defines_var(INT____00142);
constraint bool2int(BOOL____00143, INT____00144) :: defines_var(INT____00144);
constraint bool2int(BOOL____00145, INT____00146) :: defines_var(INT____00146);
constraint bool2int(BOOL____00147, INT____00148) :: defines_var(INT____00148);
constraint bool2int(BOOL____00149, INT____00150) :: defines_var(INT____00150);
constraint bool2int(BOOL____00151, INT____00152) :: defines_var(INT____00152);
constraint bool2int(BOOL____00153, INT____00154) :: defines_var(INT____00154);
constraint bool2int(BOOL____00155, INT____00156) :: defines_var(INT____00156);
constraint bool2int(BOOL____00157, INT____00158) :: defines_var(INT____00158);
constraint bool2int(BOOL____00159, INT____00160) :: defines_var(INT____00160);
constraint bool2int(BOOL____00161, INT____00162) :: defines_var(INT____00162);
constraint bool2int(BOOL____00163, INT____00164) :: defines_var(INT____00164);
constraint bool2int(BOOL____00165, INT____00166) :: defines_var(INT____00166);
constraint bool2int(BOOL____00167, INT____00168) :: defines_var(INT____00168);
constraint bool2int(BOOL____00169, INT____00170) :: defines_var(INT____00170);
constraint bool2int(BOOL____00171, INT____00172) :: defines_var(INT____00172);
constraint bool2int(BOOL____00173, INT____00174) :: defines_var(INT____00174);
constraint bool2int(BOOL____00175, INT____00176) :: defines_var(INT____00176);
constraint bool2int(BOOL____00177, INT____00178) :: defines_var(INT____00178);
constraint bool2int(BOOL____00179, INT____00180) :: defines_var(INT____00180);
constraint bool2int(BOOL____00181, INT____00182) :: defines_var(INT____00182);
constraint bool2int(BOOL____00183, INT____00184) :: defines_var(INT____00184);
constraint bool2int(BOOL____00185, INT____00186) :: defines_var(INT____00186);
constraint int_abs(0, diffs[1]);
constraint int_abs(INT____00003, diffs[2]);
constraint int_abs(INT____00005, diffs[3]);
constraint int_abs(INT____00007, diffs[4]);
constraint int_abs(INT____00009, diffs[5]);
constraint int_abs(INT____00011, diffs[7]);
constraint int_abs(INT____00013, diffs[8]);
constraint int_abs(INT____00015, diffs[9]);
constraint int_abs(INT____00017, diffs[10]);
constraint int_abs(INT____00019, diffs[12]);
constraint int_abs(INT____00021, diffs[13]);
constraint int_abs(INT____00023, diffs[14]);
constraint int_abs(INT____00025, diffs[15]);
constraint int_eq(diffs[6], diffs[1]);
constraint int_eq(diffs[11], diffs[1]);
constraint int_eq(diffs[16], diffs[1]);
constraint int_eq_reif(1, x[1], BOOL____00027) :: defines_var(BOOL____00027);
constraint int_eq_reif(1, x[2], BOOL____00029) :: defines_var(BOOL____00029);
constraint int_eq_reif(1, x[3], BOOL____00031) :: defines_var(BOOL____00031);
constraint int_eq_reif(1, x[4], BOOL____00033) :: defines_var(BOOL____00033);
constraint int_eq_reif(1, x[5], BOOL____00035) :: defines_var(BOOL____00035);
constraint int_eq_reif(1, x[6], BOOL____00037) :: defines_var(BOOL____00037);
constraint int_eq_reif(1, x[7], BOOL____00039) :: defines_var(BOOL____00039);
constraint int_eq_reif(1, x[8], BOOL____00041) :: defines_var(BOOL____00041);
constraint int_eq_reif(1, x[9], BOOL____00043) :: defines_var(BOOL____00043);
constraint int_eq_reif(1, x[10], BOOL____00045) :: defines_var(BOOL____00045);
constraint int_eq_reif(1, x[11], BOOL____00047) :: defines_var(BOOL____00047);
constraint int_eq_reif(1, x[12], BOOL____00049) :: defines_var(BOOL____00049);
constraint int_eq_reif(1, x[13], BOOL____00051) :: defines_var(BOOL____00051);
constraint int_eq_reif(1, x[14], BOOL____00053) :: defines_var(BOOL____00053);
constraint int_eq_reif(1, x[15], BOOL____00055) :: defines_var(BOOL____00055);
constraint int_eq_reif(1, x[16], BOOL____00057) :: defines_var(BOOL____00057);
constraint int_eq_reif(1, x[17], BOOL____00059) :: defines_var(BOOL____00059);
constraint int_eq_reif(1, x[18], BOOL____00061) :: defines_var(BOOL____00061);
constraint int_eq_reif(1, x[19], BOOL____00063) :: defines_var(BOOL____00063);
constraint int_eq_reif(1, x[20], BOOL____00065) :: defines_var(BOOL____00065);
constraint int_eq_reif(2, x[1], BOOL____00067) :: defines_var(BOOL____00067);
constraint int_eq_reif(2, x[2], BOOL____00069) :: defines_var(BOOL____00069);
constraint int_eq_reif(2, x[3], BOOL____00071) :: defines_var(BOOL____00071);
constraint int_eq_reif(2, x[4], BOOL____00073) :: defines_var(BOOL____00073);
constraint int_eq_reif(2, x[5], BOOL____00075) :: defines_var(BOOL____00075);
constraint int_eq_reif(2, x[6], BOOL____00077) :: defines_var(BOOL____00077);
constraint int_eq_reif(2, x[7], BOOL____00079) :: defines_var(BOOL____00079);
constraint int_eq_reif(2, x[8], BOOL____00081) :: defines_var(BOOL____00081);
constraint int_eq_reif(2, x[9], BOOL____00083) :: defines_var(BOOL____00083);
constraint int_eq_reif(2, x[10], BOOL____00085) :: defines_var(BOOL____00085);
constraint int_eq_reif(2, x[11], BOOL____00087) :: defines_var(BOOL____00087);
constraint int_eq_reif(2, x[12], BOOL____00089) :: defines_var(BOOL____00089);
constraint int_eq_reif(2, x[13], BOOL____00091) :: defines_var(BOOL____00091);
constraint int_eq_reif(2, x[14], BOOL____00093) :: defines_var(BOOL____00093);
constraint int_eq_reif(2, x[15], BOOL____00095) :: defines_var(BOOL____00095);
constraint int_eq_reif(2, x[16], BOOL____00097) :: defines_var(BOOL____00097);
constraint int_eq_reif(2, x[17], BOOL____00099) :: defines_var(BOOL____00099);
constraint int_eq_reif(2, x[18], BOOL____00101) :: defines_var(BOOL____00101);
constraint int_eq_reif(2, x[19], BOOL____00103) :: defines_var(BOOL____00103);
constraint int_eq_reif(2, x[20], BOOL____00105) :: defines_var(BOOL____00105);
constraint int_eq_reif(3, x[1], BOOL____00107) :: defines_var(BOOL____00107);
constraint int_eq_reif(3, x[2], BOOL____00109) :: defines_var(BOOL____00109);
constraint int_eq_reif(3, x[3], BOOL____00111) :: defines_var(BOOL____00111);
constraint int_eq_reif(3, x[4], BOOL____00113) :: defines_var(BOOL____00113);
constraint int_eq_reif(3, x[5], BOOL____00115) :: defines_var(BOOL____00115);
constraint int_eq_reif(3, x[6], BOOL____00117) :: defines_var(BOOL____00117);
constraint int_eq_reif(3, x[7], BOOL____00119) :: defines_var(BOOL____00119);
constraint int_eq_reif(3, x[8], BOOL____00121) :: defines_var(BOOL____00121);
constraint int_eq_reif(3, x[9], BOOL____00123) :: defines_var(BOOL____00123);
constraint int_eq_reif(3, x[10], BOOL____00125) :: defines_var(BOOL____00125);
constraint int_eq_reif(3, x[11], BOOL____00127) :: defines_var(BOOL____00127);
constraint int_eq_reif(3, x[12], BOOL____00129) :: defines_var(BOOL____00129);
constraint int_eq_reif(3, x[13], BOOL____00131) :: defines_var(BOOL____00131);
constraint int_eq_reif(3, x[14], BOOL____00133) :: defines_var(BOOL____00133);
constraint int_eq_reif(3, x[15], BOOL____00135) :: defines_var(BOOL____00135);
constraint int_eq_reif(3, x[16], BOOL____00137) :: defines_var(BOOL____00137);
constraint int_eq_reif(3, x[17], BOOL____00139) :: defines_var(BOOL____00139);
constraint int_eq_reif(3, x[18], BOOL____00141) :: defines_var(BOOL____00141);
constraint int_eq_reif(3, x[19], BOOL____00143) :: defines_var(BOOL____00143);
constraint int_eq_reif(3, x[20], BOOL____00145) :: defines_var(BOOL____00145);
constraint int_eq_reif(4, x[1], BOOL____00147) :: defines_var(BOOL____00147);
constraint int_eq_reif(4, x[2], BOOL____00149) :: defines_var(BOOL____00149);
constraint int_eq_reif(4, x[3], BOOL____00151) :: defines_var(BOOL____00151);
constraint int_eq_reif(4, x[4], BOOL____00153) :: defines_var(BOOL____00153);
constraint int_eq_reif(4, x[5], BOOL____00155) :: defines_var(BOOL____00155);
constraint int_eq_reif(4, x[6], BOOL____00157) :: defines_var(BOOL____00157);
constraint int_eq_reif(4, x[7], BOOL____00159) :: defines_var(BOOL____00159);
constraint int_eq_reif(4, x[8], BOOL____00161) :: defines_var(BOOL____00161);
constraint int_eq_reif(4, x[9], BOOL____00163) :: defines_var(BOOL____00163);
constraint int_eq_reif(4, x[10], BOOL____00165) :: defines_var(BOOL____00165);
constraint int_eq_reif(4, x[11], BOOL____00167) :: defines_var(BOOL____00167);
constraint int_eq_reif(4, x[12], BOOL____00169) :: defines_var(BOOL____00169);
constraint int_eq_reif(4, x[13], BOOL____00171) :: defines_var(BOOL____00171);
constraint int_eq_reif(4, x[14], BOOL____00173) :: defines_var(BOOL____00173);
constraint int_eq_reif(4, x[15], BOOL____00175) :: defines_var(BOOL____00175);
constraint int_eq_reif(4, x[16], BOOL____00177) :: defines_var(BOOL____00177);
constraint int_eq_reif(4, x[17], BOOL____00179) :: defines_var(BOOL____00179);
constraint int_eq_reif(4, x[18], BOOL____00181) :: defines_var(BOOL____00181);
constraint int_eq_reif(4, x[19], BOOL____00183) :: defines_var(BOOL____00183);
constraint int_eq_reif(4, x[20], BOOL____00185) :: defines_var(BOOL____00185);
constraint int_le(bins[2], bins[1]);
constraint int_le(bins[3], bins[2]);
constraint int_le(bins[4], bins[3]);
constraint int_lin_eq([-1, -1, 1], [INT____00009, bins[1], bins[2]], 0) :: defines_var(INT____00009);
constraint int_lin_eq([-1, -1, 1], [INT____00015, bins[1], bins[3]], 0) :: defines_var(INT____00015);
constraint int_lin_eq([-1, -1, 1], [INT____00017, bins[2], bins[3]], 0) :: defines_var(INT____00017);
constraint int_lin_eq([-1, -1, 1], [INT____00021, bins[1], bins[4]], 0) :: defines_var(INT____00021);
constraint int_lin_eq([-1, -1, 1], [INT____00023, bins[2], bins[4]], 0) :: defines_var(INT____00023);
constraint int_lin_eq([-1, -1, 1], [INT____00025, bins[3], bins[4]], 0) :: defines_var(INT____00025);
constraint int_lin_eq([1, 1, 1, 1], [bins[1], bins[2], bins[3], bins[4]], 493);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00001, diffs[1], diffs[2], diffs[3], diffs[4], diffs[5], diffs[6], diffs[7], diffs[8], diffs[9], diffs[10], diffs[11], diffs[12], diffs[13], diffs[14], diffs[15], diffs[16]], 0) :: defines_var(INT____00001);
constraint int_lin_eq([-23, -43, -12, -54, -7, -3, -5, -10, -54, -55, -26, -9, -9, -43, -54, -1, -8, -6, -38, -33, 1], [INT____00028, INT____00030, INT____00032, INT____00034, INT____00036, INT____00038, INT____00040, INT____00042, INT____00044, INT____00046, INT____00048, INT____00050, INT____00052, INT____00054, INT____00056, INT____00058, INT____00060, INT____00062, INT____00064, INT____00066, bins[1]], 0);
constraint int_lin_eq([-23, -43, -12, -54, -7, -3, -5, -10, -54, -55, -26, -9, -9, -43, -54, -1, -8, -6, -38, -33, 1], [INT____00068, INT____00070, INT____00072, INT____00074, INT____00076, INT____00078, INT____00080, INT____00082, INT____00084, INT____00086, INT____00088, INT____00090, INT____00092, INT____00094, INT____00096, INT____00098, INT____00100, INT____00102, INT____00104, INT____00106, bins[2]], 0);
constraint int_lin_eq([-23, -43, -12, -54, -7, -3, -5, -10, -54, -55, -26, -9, -9, -43, -54, -1, -8, -6, -38, -33, 1], [INT____00108, INT____00110, INT____00112, INT____00114, INT____00116, INT____00118, INT____00120, INT____00122, INT____00124, INT____00126, INT____00128, INT____00130, INT____00132, INT____00134, INT____00136, INT____00138, INT____00140, INT____00142, INT____00144, INT____00146, bins[3]], 0);
constraint int_lin_eq([-23, -43, -12, -54, -7, -3, -5, -10, -54, -55, -26, -9, -9, -43, -54, -1, -8, -6, -38, -33, 1], [INT____00148, INT____00150, INT____00152, INT____00154, INT____00156, INT____00158, INT____00160, INT____00162, INT____00164, INT____00166, INT____00168, INT____00170, INT____00172, INT____00174, INT____00176, INT____00178, INT____00180, INT____00182, INT____00184, INT____00186, bins[4]], 0);
constraint int_plus(INT____00003, bins[2], bins[1]) :: defines_var(INT____00003);
constraint int_plus(INT____00005, bins[3], bins[1]) :: defines_var(INT____00005);
constraint int_plus(INT____00007, bins[4], bins[1]) :: defines_var(INT____00007);
constraint int_plus(INT____00011, bins[3], bins[2]) :: defines_var(INT____00011);
constraint int_plus(INT____00013, bins[4], bins[2]) :: defines_var(INT____00013);
constraint int_plus(INT____00019, bins[4], bins[3]) :: defines_var(INT____00019);
solve :: int_search([bins[1], bins[2], bins[3], bins[4], diffs[1], diffs[2], diffs[3], diffs[4], diffs[5], diffs[6], diffs[7], diffs[8], diffs[9], diffs[10], diffs[11], diffs[12], diffs[13], diffs[14], diffs[15], diffs[16], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20]], largest, indomain_min, complete) minimize INT____00001;