250 lines
19 KiB
MiniZinc
250 lines
19 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);
|
|
var bool: BOOL____00057 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00058 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00059 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00060 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00061 :: 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____00065 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00067 :: 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____00071 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00072 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00073 :: 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____00077 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00078 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00079 :: 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____00083 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00084 :: 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____00088 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00089 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00090 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00091 :: 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____00095 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00097 :: 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____00101 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00102 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00103 :: 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____00107 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00108 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00109 :: 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____00113 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00114 :: 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____00118 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00119 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00120 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00121 :: 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____00125 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00127 :: 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____00131 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00132 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00133 :: 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 0..1: INT____00066 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00076 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00086 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00096 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00106 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00116 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00126 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00136 :: is_defined_var :: var_is_introduced;
|
|
var 1..8: INT____00137 :: is_defined_var :: var_is_introduced;
|
|
var 1..8: num_trees :: output_var = INT____00137;
|
|
array [1..64] of var 1..8: parents :: output_array([1..8, 1..8]);
|
|
array [1..8] of var 1..8: tree :: output_array([1..8]);
|
|
constraint array_bool_or([BOOL____00064, BOOL____00063, BOOL____00062, BOOL____00061, BOOL____00060, BOOL____00059, BOOL____00058, BOOL____00057], BOOL____00065) :: defines_var(BOOL____00065);
|
|
constraint array_bool_or([BOOL____00074, BOOL____00073, BOOL____00072, BOOL____00071, BOOL____00070, BOOL____00069, BOOL____00068, BOOL____00067], BOOL____00075) :: defines_var(BOOL____00075);
|
|
constraint array_bool_or([BOOL____00084, BOOL____00083, BOOL____00082, BOOL____00081, BOOL____00080, BOOL____00079, BOOL____00078, BOOL____00077], BOOL____00085) :: defines_var(BOOL____00085);
|
|
constraint array_bool_or([BOOL____00094, BOOL____00093, BOOL____00092, BOOL____00091, BOOL____00090, BOOL____00089, BOOL____00088, BOOL____00087], BOOL____00095) :: defines_var(BOOL____00095);
|
|
constraint array_bool_or([BOOL____00104, BOOL____00103, BOOL____00102, BOOL____00101, BOOL____00100, BOOL____00099, BOOL____00098, BOOL____00097], BOOL____00105) :: defines_var(BOOL____00105);
|
|
constraint array_bool_or([BOOL____00114, BOOL____00113, BOOL____00112, BOOL____00111, BOOL____00110, BOOL____00109, BOOL____00108, BOOL____00107], BOOL____00115) :: defines_var(BOOL____00115);
|
|
constraint array_bool_or([BOOL____00124, BOOL____00123, BOOL____00122, BOOL____00121, BOOL____00120, BOOL____00119, BOOL____00118, BOOL____00117], BOOL____00125) :: defines_var(BOOL____00125);
|
|
constraint array_bool_or([BOOL____00134, BOOL____00133, BOOL____00132, BOOL____00131, BOOL____00130, BOOL____00129, BOOL____00128, BOOL____00127], BOOL____00135) :: defines_var(BOOL____00135);
|
|
constraint array_var_int_element(parents[1], tree, parents[9]);
|
|
constraint array_var_int_element(parents[2], tree, parents[10]);
|
|
constraint array_var_int_element(parents[3], tree, parents[11]);
|
|
constraint array_var_int_element(parents[4], tree, parents[12]);
|
|
constraint array_var_int_element(parents[5], tree, parents[13]);
|
|
constraint array_var_int_element(parents[6], tree, parents[14]);
|
|
constraint array_var_int_element(parents[7], tree, parents[15]);
|
|
constraint array_var_int_element(parents[8], tree, parents[16]);
|
|
constraint array_var_int_element(parents[9], tree, parents[17]);
|
|
constraint array_var_int_element(parents[10], tree, parents[18]);
|
|
constraint array_var_int_element(parents[11], tree, parents[19]);
|
|
constraint array_var_int_element(parents[12], tree, parents[20]);
|
|
constraint array_var_int_element(parents[13], tree, parents[21]);
|
|
constraint array_var_int_element(parents[14], tree, parents[22]);
|
|
constraint array_var_int_element(parents[15], tree, parents[23]);
|
|
constraint array_var_int_element(parents[16], tree, parents[24]);
|
|
constraint array_var_int_element(parents[17], tree, parents[25]);
|
|
constraint array_var_int_element(parents[18], tree, parents[26]);
|
|
constraint array_var_int_element(parents[19], tree, parents[27]);
|
|
constraint array_var_int_element(parents[20], tree, parents[28]);
|
|
constraint array_var_int_element(parents[21], tree, parents[29]);
|
|
constraint array_var_int_element(parents[22], tree, parents[30]);
|
|
constraint array_var_int_element(parents[23], tree, parents[31]);
|
|
constraint array_var_int_element(parents[24], tree, parents[32]);
|
|
constraint array_var_int_element(parents[25], tree, parents[33]);
|
|
constraint array_var_int_element(parents[26], tree, parents[34]);
|
|
constraint array_var_int_element(parents[27], tree, parents[35]);
|
|
constraint array_var_int_element(parents[28], tree, parents[36]);
|
|
constraint array_var_int_element(parents[29], tree, parents[37]);
|
|
constraint array_var_int_element(parents[30], tree, parents[38]);
|
|
constraint array_var_int_element(parents[31], tree, parents[39]);
|
|
constraint array_var_int_element(parents[32], tree, parents[40]);
|
|
constraint array_var_int_element(parents[33], tree, parents[41]);
|
|
constraint array_var_int_element(parents[34], tree, parents[42]);
|
|
constraint array_var_int_element(parents[35], tree, parents[43]);
|
|
constraint array_var_int_element(parents[36], tree, parents[44]);
|
|
constraint array_var_int_element(parents[37], tree, parents[45]);
|
|
constraint array_var_int_element(parents[38], tree, parents[46]);
|
|
constraint array_var_int_element(parents[39], tree, parents[47]);
|
|
constraint array_var_int_element(parents[40], tree, parents[48]);
|
|
constraint array_var_int_element(parents[41], tree, parents[49]);
|
|
constraint array_var_int_element(parents[42], tree, parents[50]);
|
|
constraint array_var_int_element(parents[43], tree, parents[51]);
|
|
constraint array_var_int_element(parents[44], tree, parents[52]);
|
|
constraint array_var_int_element(parents[45], tree, parents[53]);
|
|
constraint array_var_int_element(parents[46], tree, parents[54]);
|
|
constraint array_var_int_element(parents[47], tree, parents[55]);
|
|
constraint array_var_int_element(parents[48], tree, parents[56]);
|
|
constraint array_var_int_element(parents[49], tree, parents[57]);
|
|
constraint array_var_int_element(parents[50], tree, parents[58]);
|
|
constraint array_var_int_element(parents[51], tree, parents[59]);
|
|
constraint array_var_int_element(parents[52], tree, parents[60]);
|
|
constraint array_var_int_element(parents[53], tree, parents[61]);
|
|
constraint array_var_int_element(parents[54], tree, parents[62]);
|
|
constraint array_var_int_element(parents[55], tree, parents[63]);
|
|
constraint array_var_int_element(parents[56], tree, parents[64]);
|
|
constraint bool2int(BOOL____00065, INT____00066) :: defines_var(INT____00066);
|
|
constraint bool2int(BOOL____00075, INT____00076) :: defines_var(INT____00076);
|
|
constraint bool2int(BOOL____00085, INT____00086) :: defines_var(INT____00086);
|
|
constraint bool2int(BOOL____00095, INT____00096) :: defines_var(INT____00096);
|
|
constraint bool2int(BOOL____00105, INT____00106) :: defines_var(INT____00106);
|
|
constraint bool2int(BOOL____00115, INT____00116) :: defines_var(INT____00116);
|
|
constraint bool2int(BOOL____00125, INT____00126) :: defines_var(INT____00126);
|
|
constraint bool2int(BOOL____00135, INT____00136) :: defines_var(INT____00136);
|
|
constraint int_eq(1, tree[1]);
|
|
constraint int_eq(1, tree[5]);
|
|
constraint int_eq(3, tree[2]);
|
|
constraint int_eq(3, tree[6]);
|
|
constraint int_eq(5, tree[3]);
|
|
constraint int_eq(5, tree[8]);
|
|
constraint int_eq(7, tree[4]);
|
|
constraint int_eq(7, tree[7]);
|
|
constraint int_eq(parents[1], tree[1]);
|
|
constraint int_eq(parents[2], tree[2]);
|
|
constraint int_eq(parents[3], tree[3]);
|
|
constraint int_eq(parents[4], tree[4]);
|
|
constraint int_eq(parents[5], tree[5]);
|
|
constraint int_eq(parents[6], tree[6]);
|
|
constraint int_eq(parents[7], tree[7]);
|
|
constraint int_eq(parents[8], tree[8]);
|
|
constraint int_eq_reif(parents[57], 1, BOOL____00057) :: defines_var(BOOL____00057);
|
|
constraint int_eq_reif(parents[57], 2, BOOL____00067) :: defines_var(BOOL____00067);
|
|
constraint int_eq_reif(parents[57], 3, BOOL____00077) :: defines_var(BOOL____00077);
|
|
constraint int_eq_reif(parents[57], 4, BOOL____00087) :: defines_var(BOOL____00087);
|
|
constraint int_eq_reif(parents[57], 5, BOOL____00097) :: defines_var(BOOL____00097);
|
|
constraint int_eq_reif(parents[57], 6, BOOL____00107) :: defines_var(BOOL____00107);
|
|
constraint int_eq_reif(parents[57], 7, BOOL____00117) :: defines_var(BOOL____00117);
|
|
constraint int_eq_reif(parents[57], 8, BOOL____00127) :: defines_var(BOOL____00127);
|
|
constraint int_eq_reif(parents[58], 1, BOOL____00058) :: defines_var(BOOL____00058);
|
|
constraint int_eq_reif(parents[58], 2, BOOL____00068) :: defines_var(BOOL____00068);
|
|
constraint int_eq_reif(parents[58], 3, BOOL____00078) :: defines_var(BOOL____00078);
|
|
constraint int_eq_reif(parents[58], 4, BOOL____00088) :: defines_var(BOOL____00088);
|
|
constraint int_eq_reif(parents[58], 5, BOOL____00098) :: defines_var(BOOL____00098);
|
|
constraint int_eq_reif(parents[58], 6, BOOL____00108) :: defines_var(BOOL____00108);
|
|
constraint int_eq_reif(parents[58], 7, BOOL____00118) :: defines_var(BOOL____00118);
|
|
constraint int_eq_reif(parents[58], 8, BOOL____00128) :: defines_var(BOOL____00128);
|
|
constraint int_eq_reif(parents[59], 1, BOOL____00059) :: defines_var(BOOL____00059);
|
|
constraint int_eq_reif(parents[59], 2, BOOL____00069) :: defines_var(BOOL____00069);
|
|
constraint int_eq_reif(parents[59], 3, BOOL____00079) :: defines_var(BOOL____00079);
|
|
constraint int_eq_reif(parents[59], 4, BOOL____00089) :: defines_var(BOOL____00089);
|
|
constraint int_eq_reif(parents[59], 5, BOOL____00099) :: defines_var(BOOL____00099);
|
|
constraint int_eq_reif(parents[59], 6, BOOL____00109) :: defines_var(BOOL____00109);
|
|
constraint int_eq_reif(parents[59], 7, BOOL____00119) :: defines_var(BOOL____00119);
|
|
constraint int_eq_reif(parents[59], 8, BOOL____00129) :: defines_var(BOOL____00129);
|
|
constraint int_eq_reif(parents[60], 1, BOOL____00060) :: defines_var(BOOL____00060);
|
|
constraint int_eq_reif(parents[60], 2, BOOL____00070) :: defines_var(BOOL____00070);
|
|
constraint int_eq_reif(parents[60], 3, BOOL____00080) :: defines_var(BOOL____00080);
|
|
constraint int_eq_reif(parents[60], 4, BOOL____00090) :: defines_var(BOOL____00090);
|
|
constraint int_eq_reif(parents[60], 5, BOOL____00100) :: defines_var(BOOL____00100);
|
|
constraint int_eq_reif(parents[60], 6, BOOL____00110) :: defines_var(BOOL____00110);
|
|
constraint int_eq_reif(parents[60], 7, BOOL____00120) :: defines_var(BOOL____00120);
|
|
constraint int_eq_reif(parents[60], 8, BOOL____00130) :: defines_var(BOOL____00130);
|
|
constraint int_eq_reif(parents[61], 1, BOOL____00061) :: defines_var(BOOL____00061);
|
|
constraint int_eq_reif(parents[61], 2, BOOL____00071) :: defines_var(BOOL____00071);
|
|
constraint int_eq_reif(parents[61], 3, BOOL____00081) :: defines_var(BOOL____00081);
|
|
constraint int_eq_reif(parents[61], 4, BOOL____00091) :: defines_var(BOOL____00091);
|
|
constraint int_eq_reif(parents[61], 5, BOOL____00101) :: defines_var(BOOL____00101);
|
|
constraint int_eq_reif(parents[61], 6, BOOL____00111) :: defines_var(BOOL____00111);
|
|
constraint int_eq_reif(parents[61], 7, BOOL____00121) :: defines_var(BOOL____00121);
|
|
constraint int_eq_reif(parents[61], 8, BOOL____00131) :: defines_var(BOOL____00131);
|
|
constraint int_eq_reif(parents[62], 1, BOOL____00062) :: defines_var(BOOL____00062);
|
|
constraint int_eq_reif(parents[62], 2, BOOL____00072) :: defines_var(BOOL____00072);
|
|
constraint int_eq_reif(parents[62], 3, BOOL____00082) :: defines_var(BOOL____00082);
|
|
constraint int_eq_reif(parents[62], 4, BOOL____00092) :: defines_var(BOOL____00092);
|
|
constraint int_eq_reif(parents[62], 5, BOOL____00102) :: defines_var(BOOL____00102);
|
|
constraint int_eq_reif(parents[62], 6, BOOL____00112) :: defines_var(BOOL____00112);
|
|
constraint int_eq_reif(parents[62], 7, BOOL____00122) :: defines_var(BOOL____00122);
|
|
constraint int_eq_reif(parents[62], 8, BOOL____00132) :: defines_var(BOOL____00132);
|
|
constraint int_eq_reif(parents[63], 1, BOOL____00063) :: defines_var(BOOL____00063);
|
|
constraint int_eq_reif(parents[63], 2, BOOL____00073) :: defines_var(BOOL____00073);
|
|
constraint int_eq_reif(parents[63], 3, BOOL____00083) :: defines_var(BOOL____00083);
|
|
constraint int_eq_reif(parents[63], 4, BOOL____00093) :: defines_var(BOOL____00093);
|
|
constraint int_eq_reif(parents[63], 5, BOOL____00103) :: defines_var(BOOL____00103);
|
|
constraint int_eq_reif(parents[63], 6, BOOL____00113) :: defines_var(BOOL____00113);
|
|
constraint int_eq_reif(parents[63], 7, BOOL____00123) :: defines_var(BOOL____00123);
|
|
constraint int_eq_reif(parents[63], 8, BOOL____00133) :: defines_var(BOOL____00133);
|
|
constraint int_eq_reif(parents[64], 1, BOOL____00064) :: defines_var(BOOL____00064);
|
|
constraint int_eq_reif(parents[64], 2, BOOL____00074) :: defines_var(BOOL____00074);
|
|
constraint int_eq_reif(parents[64], 3, BOOL____00084) :: defines_var(BOOL____00084);
|
|
constraint int_eq_reif(parents[64], 4, BOOL____00094) :: defines_var(BOOL____00094);
|
|
constraint int_eq_reif(parents[64], 5, BOOL____00104) :: defines_var(BOOL____00104);
|
|
constraint int_eq_reif(parents[64], 6, BOOL____00114) :: defines_var(BOOL____00114);
|
|
constraint int_eq_reif(parents[64], 7, BOOL____00124) :: defines_var(BOOL____00124);
|
|
constraint int_eq_reif(parents[64], 8, BOOL____00134) :: defines_var(BOOL____00134);
|
|
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00137, INT____00066, INT____00076, INT____00086, INT____00096, INT____00106, INT____00116, INT____00126, INT____00136], 0) :: defines_var(INT____00137);
|
|
solve :: int_search([parents[1], parents[2], parents[3], parents[4], parents[5], parents[6], parents[7], parents[8], parents[9], parents[10], parents[11], parents[12], parents[13], parents[14], parents[15], parents[16], parents[17], parents[18], parents[19], parents[20], parents[21], parents[22], parents[23], parents[24], parents[25], parents[26], parents[27], parents[28], parents[29], parents[30], parents[31], parents[32], parents[33], parents[34], parents[35], parents[36], parents[37], parents[38], parents[39], parents[40], parents[41], parents[42], parents[43], parents[44], parents[45], parents[46], parents[47], parents[48], parents[49], parents[50], parents[51], parents[52], parents[53], parents[54], parents[55], parents[56], parents[57], parents[58], parents[59], parents[60], parents[61], parents[62], parents[63], parents[64], tree[1], tree[2], tree[3], tree[4], tree[5], tree[6], tree[7], tree[8], INT____00137], first_fail, indomain_min, complete) satisfy;
|