predicate 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_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_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;