119 lines
7.7 KiB
MiniZinc
119 lines
7.7 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____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____00067 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00069 :: 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;
|
|
array [1..16] of var 0..33: divisor :: output_array([2..17]);
|
|
var 0..1: is_prime :: output_var;
|
|
var 0..16: num_divisors;
|
|
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 int_eq_reif(is_prime, 0, BOOL____00069);
|
|
constraint int_eq_reif(is_prime, 1, BOOL____00067);
|
|
constraint int_eq_reif(num_divisors, 0, BOOL____00067) :: defines_var(BOOL____00067);
|
|
constraint int_eq_reif(divisor[1], 0, true);
|
|
constraint int_eq_reif(divisor[1], 1, false);
|
|
constraint int_eq_reif(divisor[2], 0, false);
|
|
constraint int_eq_reif(divisor[2], 1, true);
|
|
constraint int_eq_reif(divisor[3], 0, true);
|
|
constraint int_eq_reif(divisor[3], 1, false);
|
|
constraint int_eq_reif(divisor[4], 0, true);
|
|
constraint int_eq_reif(divisor[4], 1, false);
|
|
constraint int_eq_reif(divisor[5], 0, true);
|
|
constraint int_eq_reif(divisor[5], 1, false);
|
|
constraint int_eq_reif(divisor[6], 0, true);
|
|
constraint int_eq_reif(divisor[6], 1, false);
|
|
constraint int_eq_reif(divisor[7], 0, true);
|
|
constraint int_eq_reif(divisor[7], 1, false);
|
|
constraint int_eq_reif(divisor[8], 0, true);
|
|
constraint int_eq_reif(divisor[8], 1, false);
|
|
constraint int_eq_reif(divisor[9], 0, true);
|
|
constraint int_eq_reif(divisor[9], 1, false);
|
|
constraint int_eq_reif(divisor[10], 0, false);
|
|
constraint int_eq_reif(divisor[10], 1, true);
|
|
constraint int_eq_reif(divisor[11], 0, true);
|
|
constraint int_eq_reif(divisor[11], 1, false);
|
|
constraint int_eq_reif(divisor[12], 0, true);
|
|
constraint int_eq_reif(divisor[12], 1, false);
|
|
constraint int_eq_reif(divisor[13], 0, true);
|
|
constraint int_eq_reif(divisor[13], 1, false);
|
|
constraint int_eq_reif(divisor[14], 0, true);
|
|
constraint int_eq_reif(divisor[14], 1, false);
|
|
constraint int_eq_reif(divisor[15], 0, true);
|
|
constraint int_eq_reif(divisor[15], 1, false);
|
|
constraint int_eq_reif(divisor[16], 0, true);
|
|
constraint int_eq_reif(divisor[16], 1, false);
|
|
constraint int_le_reif(1, num_divisors, BOOL____00069) :: defines_var(BOOL____00069);
|
|
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [num_divisors, 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], 0);
|
|
constraint int_lt_reif(0, divisor[1], BOOL____00033) :: defines_var(BOOL____00033);
|
|
constraint int_lt_reif(0, divisor[2], BOOL____00035) :: defines_var(BOOL____00035);
|
|
constraint int_lt_reif(0, divisor[3], BOOL____00037) :: defines_var(BOOL____00037);
|
|
constraint int_lt_reif(0, divisor[4], BOOL____00039) :: defines_var(BOOL____00039);
|
|
constraint int_lt_reif(0, divisor[5], BOOL____00041) :: defines_var(BOOL____00041);
|
|
constraint int_lt_reif(0, divisor[6], BOOL____00043) :: defines_var(BOOL____00043);
|
|
constraint int_lt_reif(0, divisor[7], BOOL____00045) :: defines_var(BOOL____00045);
|
|
constraint int_lt_reif(0, divisor[8], BOOL____00047) :: defines_var(BOOL____00047);
|
|
constraint int_lt_reif(0, divisor[9], BOOL____00049) :: defines_var(BOOL____00049);
|
|
constraint int_lt_reif(0, divisor[10], BOOL____00051) :: defines_var(BOOL____00051);
|
|
constraint int_lt_reif(0, divisor[11], BOOL____00053) :: defines_var(BOOL____00053);
|
|
constraint int_lt_reif(0, divisor[12], BOOL____00055) :: defines_var(BOOL____00055);
|
|
constraint int_lt_reif(0, divisor[13], BOOL____00057) :: defines_var(BOOL____00057);
|
|
constraint int_lt_reif(0, divisor[14], BOOL____00059) :: defines_var(BOOL____00059);
|
|
constraint int_lt_reif(0, divisor[15], BOOL____00061) :: defines_var(BOOL____00061);
|
|
constraint int_lt_reif(0, divisor[16], BOOL____00063) :: defines_var(BOOL____00063);
|
|
solve :: int_search(divisor, first_fail, indomain, complete) satisfy;
|