array [1..48] of int: ceiling = [1, 2, 3, 0, 0, 0, 0, 0, 1, 2, 4, 8, 0, 0, 0, 0, 1, 2, 6, 7, 0, 0, 0, 0, 1, 3, 5, 6, 0, 0, 0, 0, 2, 3, 4, 6, 0, 0, 0, 0, 2, 5, 6, 7, 8, 0, 0, 0]; array [1..48] of int: roofing = [1, 2, 3, 8, 0, 0, 0, 0, 1, 2, 5, 7, 0, 0, 0, 0, 1, 3, 4, 7, 0, 0, 0, 0, 1, 5, 6, 7, 8, 0, 0, 0, 2, 3, 4, 5, 0, 0, 0, 0, 3, 4, 6, 7, 8, 0, 0, 0]; var 36..36000: INT____00001 :: is_defined_var :: var_is_introduced; var int: INT____00002 :: is_defined_var :: var_is_introduced; array [1..8] of var 1..1000: a :: output_array([1..8]); var int: b :: output_var; var int: rhs :: output_var = INT____00002; var 36..36000: ss :: output_var = INT____00001; constraint int_le(0, INT____00002); constraint int_le(5, b); constraint int_lin_eq([-1, 1, -1, -1], [INT____00002, b, a[3], a[5]], 0) :: defines_var(INT____00002); constraint int_lin_eq([-1, 1, 2, 3, 4, 5, 6, 7, 8], [INT____00001, a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]], 0) :: defines_var(INT____00001); constraint int_lin_le([-1, 1], [a[1], a[2]], 0); constraint int_lin_le([-1, 1], [a[2], a[3]], 0); constraint int_lin_le([-1, 1], [a[3], a[4]], 0); constraint int_lin_le([-1, 1], [a[4], a[5]], 0); constraint int_lin_le([-1, 1], [a[5], a[6]], 0); constraint int_lin_le([-1, 1], [a[6], a[7]], 0); constraint int_lin_le([-1, 1], [a[7], a[8]], 0); constraint int_lin_le([-1, 1, 1, 1], [b, a[1], a[2], a[3]], 0); constraint int_lin_le([-1, 1, 1, 1, 1], [b, a[1], a[2], a[4], a[8]], 0); constraint int_lin_le([-1, 1, 1, 1, 1], [b, a[1], a[2], a[6], a[7]], 0); constraint int_lin_le([-1, 1, 1, 1, 1], [b, a[1], a[3], a[5], a[6]], 0); constraint int_lin_le([-1, 1, 1, 1, 1], [b, a[2], a[3], a[4], a[6]], 0); constraint int_lin_le([1, -1, -1, -1, -1], [b, a[1], a[2], a[3], a[8]], -1); constraint int_lin_le([1, -1, -1, -1, -1], [b, a[1], a[2], a[5], a[7]], -1); constraint int_lin_le([1, -1, -1, -1, -1], [b, a[1], a[3], a[4], a[7]], -1); constraint int_lin_le([1, -1, -1, -1, -1], [b, a[2], a[3], a[4], a[5]], -1); constraint int_lin_le([-1, 1, 1, 1, 1, 1], [b, a[2], a[5], a[6], a[7], a[8]], 0); constraint int_lin_le([1, -1, -1, -1, -1, -1], [b, a[1], a[5], a[6], a[7], a[8]], -1); constraint int_lin_le([1, -1, -1, -1, -1, -1], [b, a[3], a[4], a[6], a[7], a[8]], -1); solve :: int_search([a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], b, INT____00002], first_fail, indomain_min, complete) minimize INT____00001;