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 100000..110889: INT____00004 :: is_defined_var :: var_is_introduced; var 100000..110889: INT____00002 :: var_is_introduced = INT____00004; var 0..9: INT____00006 :: is_defined_var :: var_is_introduced; var 10..99: INT____00008 :: is_defined_var :: var_is_introduced; var 0..9: INT____00009 :: is_defined_var :: var_is_introduced; var 1..9: INT____00011 :: is_defined_var :: var_is_introduced; var 100..999: ODD; var 100..999: INT____00012 :: var_is_introduced = ODD; var 100000..999999: PUZZLE :: output_var = INT____00002; var 100..999: num1; var 100..999: num2; var 100..999: num3; var 100..999: num4; array [1..7] of var 0..9: x :: output_array([1..7]); var 0..9: Z = x[5]; var 0..9: U = x[4]; var 0..9: P = x[3]; var 0..9: O = x[1]; var 0..9: L = x[6]; var 0..9: E = x[7]; var 0..9: D = x[2]; constraint all_different_int(x); constraint int_div(num2, 10, INT____00008) :: defines_var(INT____00008); constraint int_div(num2, 100, INT____00011) :: defines_var(INT____00011); constraint int_lin_eq([-1, 100, 11], [ODD, x[1], x[2]], 0); constraint int_lin_eq([-1, 100, 1, 10], [INT____00004, ODD, num3, num4], 0) :: defines_var(INT____00004); constraint int_lin_eq([-1, 100000, 10000, 1100, 10, 1], [INT____00002, x[3], x[4], x[5], x[6], x[7]], 0); constraint int_mod(INT____00002, 2, 1); constraint int_mod(INT____00008, 10, INT____00009) :: defines_var(INT____00009); constraint int_mod(num2, 10, INT____00006) :: defines_var(INT____00006); constraint int_times(num1, INT____00006, num3); constraint int_times(num1, INT____00009, num4); constraint int_times(num1, INT____00011, INT____00012); constraint int_times(num1, num2, INT____00004); solve :: int_search([x[1], x[2], x[3], x[4], x[5], x[6], x[7], num1, num2, num3, num4, ODD, INT____00002], first_fail, indomain_min, complete) satisfy;