diff --git a/examples/flatzinc/enigma_1535.fzn b/examples/flatzinc/enigma_1535.fzn new file mode 100644 index 0000000000..45d08aa430 --- /dev/null +++ b/examples/flatzinc/enigma_1535.fzn @@ -0,0 +1,17 @@ +var 100001..999999: INT____00001 :: is_defined_var :: var_is_introduced; +var 100000..999998: INT____00002 :: is_defined_var :: var_is_introduced; +var 100000..999999: x1 :: output_var = INT____00001; +array [1..6] of var 0..9: x1_a; +var 100000..999999: x2 :: output_var = INT____00002; +array [1..6] of var 0..9: x2_a; +constraint int_eq(x2_a[1], x1_a[6]); +constraint int_eq(x2_a[2], x1_a[5]); +constraint int_eq(x2_a[3], x1_a[4]); +constraint int_eq(x2_a[4], x1_a[3]); +constraint int_eq(x2_a[5], x1_a[2]); +constraint int_eq(x2_a[6], x1_a[1]); +constraint int_lin_eq([-1, 100000, 10000, 1000, 100, 10, 1], [INT____00001, x1_a[1], x1_a[2], x1_a[3], x1_a[4], x1_a[5], x1_a[6]], 0) :: defines_var(INT____00001); +constraint int_lin_eq([-1, 100000, 10000, 1000, 100, 10, 1], [INT____00002, x2_a[1], x2_a[2], x2_a[3], x2_a[4], x2_a[5], x2_a[6]], 0) :: defines_var(INT____00002); +constraint int_lt(INT____00002, INT____00001); +constraint int_mod(INT____00001, INT____00002, 0); +solve :: int_search([x1_a[1], x1_a[2], x1_a[3], x1_a[4], x1_a[5], x1_a[6], x2_a[1], x2_a[2], x2_a[3], x2_a[4], x2_a[5], x2_a[6], INT____00001, INT____00002], first_fail, indomain_min, complete) satisfy; diff --git a/examples/flatzinc/rostering.fzn b/examples/flatzinc/rostering.fzn new file mode 100644 index 0000000000..baaa77c1f6 --- /dev/null +++ b/examples/flatzinc/rostering.fzn @@ -0,0 +1,386 @@ +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 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); +array [1..3] of int: workload = [4, 2, 1]; +var bool: BOOL____00002 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00004 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00006 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00008 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00010 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00012 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00014 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00016 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00018 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00020 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00022 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00024 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00026 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00028 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00030 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00032 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00034 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00036 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00038 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00040 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00042 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00044 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00046 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00048 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00050 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00052 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00054 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00056 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00058 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00060 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00062 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00064 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00066 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00068 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00070 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00072 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00074 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00076 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00078 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00080 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00082 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00084 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00086 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00088 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00090 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00092 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00094 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00096 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00098 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00100 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00102 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00104 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00106 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00108 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00110 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00112 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00114 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00116 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00118 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00120 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00122 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00124 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00126 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00128 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00130 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00132 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00134 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00136 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00138 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00140 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00142 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00144 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00146 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00148 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00150 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00152 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00154 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00156 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00158 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00160 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00162 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00164 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00166 :: is_defined_var :: var_is_introduced; +var bool: BOOL____00168 :: is_defined_var :: var_is_introduced; +var 21..84: INT____00001 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00003 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00005 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00007 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00009 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00011 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00013 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00015 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00017 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00019 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00021 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00023 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00025 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00027 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00029 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00031 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00033 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00035 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00037 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00039 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00041 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00043 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00045 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00047 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00049 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00051 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00053 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00055 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00057 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00059 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00061 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00063 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00065 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00067 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00069 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00071 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00073 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00075 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00077 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00079 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00081 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00083 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00085 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00087 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00089 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00091 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00093 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00095 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00097 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00099 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00101 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00103 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00105 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00107 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00109 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00111 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00113 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00115 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00117 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00119 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00121 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00123 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00125 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00127 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00129 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00131 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00133 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00135 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00137 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00139 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00141 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00143 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00145 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00147 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00149 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00151 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00153 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00155 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00157 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00159 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00161 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00163 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00165 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00167 :: is_defined_var :: var_is_introduced; +var 0..1: INT____00169 :: is_defined_var :: var_is_introduced; +array [1..4] of var 0..7: num_workdays :: output_array([1..4]); +array [1..21] of var 1..4: on_duty :: output_array([1..7, 1..3]); +var 21..84: z :: output_var = INT____00001; +constraint bool2int(BOOL____00002, INT____00003) :: defines_var(INT____00003); +constraint bool2int(BOOL____00004, INT____00005) :: defines_var(INT____00005); +constraint bool2int(BOOL____00006, INT____00007) :: defines_var(INT____00007); +constraint bool2int(BOOL____00008, INT____00009) :: defines_var(INT____00009); +constraint bool2int(BOOL____00010, INT____00011) :: defines_var(INT____00011); +constraint bool2int(BOOL____00012, INT____00013) :: defines_var(INT____00013); +constraint bool2int(BOOL____00014, INT____00015) :: defines_var(INT____00015); +constraint bool2int(BOOL____00016, INT____00017) :: defines_var(INT____00017); +constraint bool2int(BOOL____00018, INT____00019) :: defines_var(INT____00019); +constraint bool2int(BOOL____00020, INT____00021) :: defines_var(INT____00021); +constraint bool2int(BOOL____00022, INT____00023) :: defines_var(INT____00023); +constraint bool2int(BOOL____00024, INT____00025) :: defines_var(INT____00025); +constraint bool2int(BOOL____00026, INT____00027) :: defines_var(INT____00027); +constraint bool2int(BOOL____00028, INT____00029) :: defines_var(INT____00029); +constraint bool2int(BOOL____00030, INT____00031) :: defines_var(INT____00031); +constraint bool2int(BOOL____00032, INT____00033) :: defines_var(INT____00033); +constraint bool2int(BOOL____00034, INT____00035) :: defines_var(INT____00035); +constraint bool2int(BOOL____00036, INT____00037) :: defines_var(INT____00037); +constraint bool2int(BOOL____00038, INT____00039) :: defines_var(INT____00039); +constraint bool2int(BOOL____00040, INT____00041) :: defines_var(INT____00041); +constraint bool2int(BOOL____00042, INT____00043) :: defines_var(INT____00043); +constraint bool2int(BOOL____00044, INT____00045) :: defines_var(INT____00045); +constraint bool2int(BOOL____00046, INT____00047) :: defines_var(INT____00047); +constraint bool2int(BOOL____00048, INT____00049) :: defines_var(INT____00049); +constraint bool2int(BOOL____00050, INT____00051) :: defines_var(INT____00051); +constraint bool2int(BOOL____00052, INT____00053) :: defines_var(INT____00053); +constraint bool2int(BOOL____00054, INT____00055) :: defines_var(INT____00055); +constraint bool2int(BOOL____00056, INT____00057) :: defines_var(INT____00057); +constraint bool2int(BOOL____00058, INT____00059) :: defines_var(INT____00059); +constraint bool2int(BOOL____00060, INT____00061) :: defines_var(INT____00061); +constraint bool2int(BOOL____00062, INT____00063) :: defines_var(INT____00063); +constraint bool2int(BOOL____00064, INT____00065) :: defines_var(INT____00065); +constraint bool2int(BOOL____00066, INT____00067) :: defines_var(INT____00067); +constraint bool2int(BOOL____00068, INT____00069) :: defines_var(INT____00069); +constraint bool2int(BOOL____00070, INT____00071) :: defines_var(INT____00071); +constraint bool2int(BOOL____00072, INT____00073) :: defines_var(INT____00073); +constraint bool2int(BOOL____00074, INT____00075) :: defines_var(INT____00075); +constraint bool2int(BOOL____00076, INT____00077) :: defines_var(INT____00077); +constraint bool2int(BOOL____00078, INT____00079) :: defines_var(INT____00079); +constraint bool2int(BOOL____00080, INT____00081) :: defines_var(INT____00081); +constraint bool2int(BOOL____00082, INT____00083) :: defines_var(INT____00083); +constraint bool2int(BOOL____00084, INT____00085) :: defines_var(INT____00085); +constraint bool2int(BOOL____00086, INT____00087) :: defines_var(INT____00087); +constraint bool2int(BOOL____00088, INT____00089) :: defines_var(INT____00089); +constraint bool2int(BOOL____00090, INT____00091) :: defines_var(INT____00091); +constraint bool2int(BOOL____00092, INT____00093) :: defines_var(INT____00093); +constraint bool2int(BOOL____00094, INT____00095) :: defines_var(INT____00095); +constraint bool2int(BOOL____00096, INT____00097) :: defines_var(INT____00097); +constraint bool2int(BOOL____00098, INT____00099) :: defines_var(INT____00099); +constraint bool2int(BOOL____00100, INT____00101) :: defines_var(INT____00101); +constraint bool2int(BOOL____00102, INT____00103) :: defines_var(INT____00103); +constraint bool2int(BOOL____00104, INT____00105) :: defines_var(INT____00105); +constraint bool2int(BOOL____00106, INT____00107) :: defines_var(INT____00107); +constraint bool2int(BOOL____00108, INT____00109) :: defines_var(INT____00109); +constraint bool2int(BOOL____00110, INT____00111) :: defines_var(INT____00111); +constraint bool2int(BOOL____00112, INT____00113) :: defines_var(INT____00113); +constraint bool2int(BOOL____00114, INT____00115) :: defines_var(INT____00115); +constraint bool2int(BOOL____00116, INT____00117) :: defines_var(INT____00117); +constraint bool2int(BOOL____00118, INT____00119) :: defines_var(INT____00119); +constraint bool2int(BOOL____00120, INT____00121) :: defines_var(INT____00121); +constraint bool2int(BOOL____00122, INT____00123) :: defines_var(INT____00123); +constraint bool2int(BOOL____00124, INT____00125) :: defines_var(INT____00125); +constraint bool2int(BOOL____00126, INT____00127) :: defines_var(INT____00127); +constraint bool2int(BOOL____00128, INT____00129) :: defines_var(INT____00129); +constraint bool2int(BOOL____00130, INT____00131) :: defines_var(INT____00131); +constraint bool2int(BOOL____00132, INT____00133) :: defines_var(INT____00133); +constraint bool2int(BOOL____00134, INT____00135) :: defines_var(INT____00135); +constraint bool2int(BOOL____00136, INT____00137) :: defines_var(INT____00137); +constraint bool2int(BOOL____00138, INT____00139) :: defines_var(INT____00139); +constraint bool2int(BOOL____00140, INT____00141) :: defines_var(INT____00141); +constraint bool2int(BOOL____00142, INT____00143) :: defines_var(INT____00143); +constraint bool2int(BOOL____00144, INT____00145) :: defines_var(INT____00145); +constraint bool2int(BOOL____00146, INT____00147) :: defines_var(INT____00147); +constraint bool2int(BOOL____00148, INT____00149) :: defines_var(INT____00149); +constraint bool2int(BOOL____00150, INT____00151) :: defines_var(INT____00151); +constraint bool2int(BOOL____00152, INT____00153) :: defines_var(INT____00153); +constraint bool2int(BOOL____00154, INT____00155) :: defines_var(INT____00155); +constraint bool2int(BOOL____00156, INT____00157) :: defines_var(INT____00157); +constraint bool2int(BOOL____00158, INT____00159) :: defines_var(INT____00159); +constraint bool2int(BOOL____00160, INT____00161) :: defines_var(INT____00161); +constraint bool2int(BOOL____00162, INT____00163) :: defines_var(INT____00163); +constraint bool2int(BOOL____00164, INT____00165) :: defines_var(INT____00165); +constraint bool2int(BOOL____00166, INT____00167) :: defines_var(INT____00167); +constraint bool2int(BOOL____00168, INT____00169) :: defines_var(INT____00169); +constraint int_eq_reif(1, on_duty[1], BOOL____00002) :: defines_var(BOOL____00002); +constraint int_eq_reif(1, on_duty[2], BOOL____00004) :: defines_var(BOOL____00004); +constraint int_eq_reif(1, on_duty[3], BOOL____00006) :: defines_var(BOOL____00006); +constraint int_eq_reif(1, on_duty[4], BOOL____00008) :: defines_var(BOOL____00008); +constraint int_eq_reif(1, on_duty[5], BOOL____00010) :: defines_var(BOOL____00010); +constraint int_eq_reif(1, on_duty[6], BOOL____00012) :: defines_var(BOOL____00012); +constraint int_eq_reif(1, on_duty[7], BOOL____00014) :: defines_var(BOOL____00014); +constraint int_eq_reif(1, on_duty[8], BOOL____00016) :: defines_var(BOOL____00016); +constraint int_eq_reif(1, on_duty[9], BOOL____00018) :: defines_var(BOOL____00018); +constraint int_eq_reif(1, on_duty[10], BOOL____00020) :: defines_var(BOOL____00020); +constraint int_eq_reif(1, on_duty[11], BOOL____00022) :: defines_var(BOOL____00022); +constraint int_eq_reif(1, on_duty[12], BOOL____00024) :: defines_var(BOOL____00024); +constraint int_eq_reif(1, on_duty[13], BOOL____00026) :: defines_var(BOOL____00026); +constraint int_eq_reif(1, on_duty[14], BOOL____00028) :: defines_var(BOOL____00028); +constraint int_eq_reif(1, on_duty[15], BOOL____00030) :: defines_var(BOOL____00030); +constraint int_eq_reif(1, on_duty[16], BOOL____00032) :: defines_var(BOOL____00032); +constraint int_eq_reif(1, on_duty[17], BOOL____00034) :: defines_var(BOOL____00034); +constraint int_eq_reif(1, on_duty[18], BOOL____00036) :: defines_var(BOOL____00036); +constraint int_eq_reif(1, on_duty[19], BOOL____00038) :: defines_var(BOOL____00038); +constraint int_eq_reif(1, on_duty[20], BOOL____00040) :: defines_var(BOOL____00040); +constraint int_eq_reif(1, on_duty[21], BOOL____00042) :: defines_var(BOOL____00042); +constraint int_eq_reif(2, on_duty[1], BOOL____00044) :: defines_var(BOOL____00044); +constraint int_eq_reif(2, on_duty[2], BOOL____00046) :: defines_var(BOOL____00046); +constraint int_eq_reif(2, on_duty[3], BOOL____00048) :: defines_var(BOOL____00048); +constraint int_eq_reif(2, on_duty[4], BOOL____00050) :: defines_var(BOOL____00050); +constraint int_eq_reif(2, on_duty[5], BOOL____00052) :: defines_var(BOOL____00052); +constraint int_eq_reif(2, on_duty[6], BOOL____00054) :: defines_var(BOOL____00054); +constraint int_eq_reif(2, on_duty[7], BOOL____00056) :: defines_var(BOOL____00056); +constraint int_eq_reif(2, on_duty[8], BOOL____00058) :: defines_var(BOOL____00058); +constraint int_eq_reif(2, on_duty[9], BOOL____00060) :: defines_var(BOOL____00060); +constraint int_eq_reif(2, on_duty[10], BOOL____00062) :: defines_var(BOOL____00062); +constraint int_eq_reif(2, on_duty[11], BOOL____00064) :: defines_var(BOOL____00064); +constraint int_eq_reif(2, on_duty[12], BOOL____00066) :: defines_var(BOOL____00066); +constraint int_eq_reif(2, on_duty[13], BOOL____00068) :: defines_var(BOOL____00068); +constraint int_eq_reif(2, on_duty[14], BOOL____00070) :: defines_var(BOOL____00070); +constraint int_eq_reif(2, on_duty[15], BOOL____00072) :: defines_var(BOOL____00072); +constraint int_eq_reif(2, on_duty[16], BOOL____00074) :: defines_var(BOOL____00074); +constraint int_eq_reif(2, on_duty[17], BOOL____00076) :: defines_var(BOOL____00076); +constraint int_eq_reif(2, on_duty[18], BOOL____00078) :: defines_var(BOOL____00078); +constraint int_eq_reif(2, on_duty[19], BOOL____00080) :: defines_var(BOOL____00080); +constraint int_eq_reif(2, on_duty[20], BOOL____00082) :: defines_var(BOOL____00082); +constraint int_eq_reif(2, on_duty[21], BOOL____00084) :: defines_var(BOOL____00084); +constraint int_eq_reif(3, on_duty[1], BOOL____00086) :: defines_var(BOOL____00086); +constraint int_eq_reif(3, on_duty[2], BOOL____00088) :: defines_var(BOOL____00088); +constraint int_eq_reif(3, on_duty[3], BOOL____00090) :: defines_var(BOOL____00090); +constraint int_eq_reif(3, on_duty[4], BOOL____00092) :: defines_var(BOOL____00092); +constraint int_eq_reif(3, on_duty[5], BOOL____00094) :: defines_var(BOOL____00094); +constraint int_eq_reif(3, on_duty[6], BOOL____00096) :: defines_var(BOOL____00096); +constraint int_eq_reif(3, on_duty[7], BOOL____00098) :: defines_var(BOOL____00098); +constraint int_eq_reif(3, on_duty[8], BOOL____00100) :: defines_var(BOOL____00100); +constraint int_eq_reif(3, on_duty[9], BOOL____00102) :: defines_var(BOOL____00102); +constraint int_eq_reif(3, on_duty[10], BOOL____00104) :: defines_var(BOOL____00104); +constraint int_eq_reif(3, on_duty[11], BOOL____00106) :: defines_var(BOOL____00106); +constraint int_eq_reif(3, on_duty[12], BOOL____00108) :: defines_var(BOOL____00108); +constraint int_eq_reif(3, on_duty[13], BOOL____00110) :: defines_var(BOOL____00110); +constraint int_eq_reif(3, on_duty[14], BOOL____00112) :: defines_var(BOOL____00112); +constraint int_eq_reif(3, on_duty[15], BOOL____00114) :: defines_var(BOOL____00114); +constraint int_eq_reif(3, on_duty[16], BOOL____00116) :: defines_var(BOOL____00116); +constraint int_eq_reif(3, on_duty[17], BOOL____00118) :: defines_var(BOOL____00118); +constraint int_eq_reif(3, on_duty[18], BOOL____00120) :: defines_var(BOOL____00120); +constraint int_eq_reif(3, on_duty[19], BOOL____00122) :: defines_var(BOOL____00122); +constraint int_eq_reif(3, on_duty[20], BOOL____00124) :: defines_var(BOOL____00124); +constraint int_eq_reif(3, on_duty[21], BOOL____00126) :: defines_var(BOOL____00126); +constraint int_eq_reif(4, on_duty[1], BOOL____00128) :: defines_var(BOOL____00128); +constraint int_eq_reif(4, on_duty[2], BOOL____00130) :: defines_var(BOOL____00130); +constraint int_eq_reif(4, on_duty[3], BOOL____00132) :: defines_var(BOOL____00132); +constraint int_eq_reif(4, on_duty[4], BOOL____00134) :: defines_var(BOOL____00134); +constraint int_eq_reif(4, on_duty[5], BOOL____00136) :: defines_var(BOOL____00136); +constraint int_eq_reif(4, on_duty[6], BOOL____00138) :: defines_var(BOOL____00138); +constraint int_eq_reif(4, on_duty[7], BOOL____00140) :: defines_var(BOOL____00140); +constraint int_eq_reif(4, on_duty[8], BOOL____00142) :: defines_var(BOOL____00142); +constraint int_eq_reif(4, on_duty[9], BOOL____00144) :: defines_var(BOOL____00144); +constraint int_eq_reif(4, on_duty[10], BOOL____00146) :: defines_var(BOOL____00146); +constraint int_eq_reif(4, on_duty[11], BOOL____00148) :: defines_var(BOOL____00148); +constraint int_eq_reif(4, on_duty[12], BOOL____00150) :: defines_var(BOOL____00150); +constraint int_eq_reif(4, on_duty[13], BOOL____00152) :: defines_var(BOOL____00152); +constraint int_eq_reif(4, on_duty[14], BOOL____00154) :: defines_var(BOOL____00154); +constraint int_eq_reif(4, on_duty[15], BOOL____00156) :: defines_var(BOOL____00156); +constraint int_eq_reif(4, on_duty[16], BOOL____00158) :: defines_var(BOOL____00158); +constraint int_eq_reif(4, on_duty[17], BOOL____00160) :: defines_var(BOOL____00160); +constraint int_eq_reif(4, on_duty[18], BOOL____00162) :: defines_var(BOOL____00162); +constraint int_eq_reif(4, on_duty[19], BOOL____00164) :: defines_var(BOOL____00164); +constraint int_eq_reif(4, on_duty[20], BOOL____00166) :: defines_var(BOOL____00166); +constraint int_eq_reif(4, on_duty[21], BOOL____00168) :: defines_var(BOOL____00168); +constraint int_le(5, num_workdays[1]); +constraint int_le(5, num_workdays[2]); +constraint int_le(5, num_workdays[3]); +constraint int_le(5, num_workdays[4]); +constraint int_lin_eq([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], [INT____00003, INT____00005, INT____00007, INT____00009, INT____00011, INT____00013, INT____00015, INT____00017, INT____00019, INT____00021, INT____00023, INT____00025, INT____00027, INT____00029, INT____00031, INT____00033, INT____00035, INT____00037, INT____00039, INT____00041, INT____00043, num_workdays[1]], 0); +constraint int_lin_eq([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], [INT____00045, INT____00047, INT____00049, INT____00051, INT____00053, INT____00055, INT____00057, INT____00059, INT____00061, INT____00063, INT____00065, INT____00067, INT____00069, INT____00071, INT____00073, INT____00075, INT____00077, INT____00079, INT____00081, INT____00083, INT____00085, num_workdays[2]], 0); +constraint int_lin_eq([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], [INT____00087, INT____00089, INT____00091, INT____00093, INT____00095, INT____00097, INT____00099, INT____00101, INT____00103, INT____00105, INT____00107, INT____00109, INT____00111, INT____00113, INT____00115, INT____00117, INT____00119, INT____00121, INT____00123, INT____00125, INT____00127, num_workdays[3]], 0); +constraint int_lin_eq([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], [INT____00129, INT____00131, INT____00133, INT____00135, INT____00137, INT____00139, INT____00141, INT____00143, INT____00145, INT____00147, INT____00149, INT____00151, INT____00153, INT____00155, INT____00157, INT____00159, INT____00161, INT____00163, INT____00165, INT____00167, INT____00169, num_workdays[4]], 0); +constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00001, on_duty[1], on_duty[2], on_duty[3], on_duty[4], on_duty[5], on_duty[6], on_duty[7], on_duty[8], on_duty[9], on_duty[10], on_duty[11], on_duty[12], on_duty[13], on_duty[14], on_duty[15], on_duty[16], on_duty[17], on_duty[18], on_duty[19], on_duty[20], on_duty[21]], 0) :: defines_var(INT____00001); +constraint int_lin_le([4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1], [INT____00003, INT____00005, INT____00007, INT____00009, INT____00011, INT____00013, INT____00015, INT____00017, INT____00019, INT____00021, INT____00023, INT____00025, INT____00027, INT____00029, INT____00031, INT____00033, INT____00035, INT____00037, INT____00039, INT____00041, INT____00043], 13); +constraint int_lin_le([4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1], [INT____00045, INT____00047, INT____00049, INT____00051, INT____00053, INT____00055, INT____00057, INT____00059, INT____00061, INT____00063, INT____00065, INT____00067, INT____00069, INT____00071, INT____00073, INT____00075, INT____00077, INT____00079, INT____00081, INT____00083, INT____00085], 13); +constraint int_lin_le([4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1], [INT____00087, INT____00089, INT____00091, INT____00093, INT____00095, INT____00097, INT____00099, INT____00101, INT____00103, INT____00105, INT____00107, INT____00109, INT____00111, INT____00113, INT____00115, INT____00117, INT____00119, INT____00121, INT____00123, INT____00125, INT____00127], 13); +constraint int_lin_le([4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1, 4, 2, 1], [INT____00129, INT____00131, INT____00133, INT____00135, INT____00137, INT____00139, INT____00141, INT____00143, INT____00145, INT____00147, INT____00149, INT____00151, INT____00153, INT____00155, INT____00157, INT____00159, INT____00161, INT____00163, INT____00165, INT____00167, INT____00169], 13); +constraint int_ne(on_duty[1], on_duty[2]); +constraint int_ne(on_duty[1], on_duty[3]); +constraint int_ne(on_duty[2], on_duty[3]); +constraint int_ne(on_duty[4], on_duty[5]); +constraint int_ne(on_duty[4], on_duty[6]); +constraint int_ne(on_duty[5], on_duty[6]); +constraint int_ne(on_duty[7], on_duty[8]); +constraint int_ne(on_duty[7], on_duty[9]); +constraint int_ne(on_duty[8], on_duty[9]); +constraint int_ne(on_duty[10], on_duty[11]); +constraint int_ne(on_duty[10], on_duty[12]); +constraint int_ne(on_duty[11], on_duty[12]); +constraint int_ne(on_duty[13], on_duty[14]); +constraint int_ne(on_duty[13], on_duty[15]); +constraint int_ne(on_duty[14], on_duty[15]); +constraint int_ne(on_duty[16], on_duty[17]); +constraint int_ne(on_duty[16], on_duty[18]); +constraint int_ne(on_duty[17], on_duty[18]); +constraint int_ne(on_duty[19], on_duty[20]); +constraint int_ne(on_duty[19], on_duty[21]); +constraint int_ne(on_duty[20], on_duty[21]); +solve :: int_search([on_duty[1], on_duty[2], on_duty[3], on_duty[4], on_duty[5], on_duty[6], on_duty[7], on_duty[8], on_duty[9], on_duty[10], on_duty[11], on_duty[12], on_duty[13], on_duty[14], on_duty[15], on_duty[16], on_duty[17], on_duty[18], on_duty[19], on_duty[20], on_duty[21]], first_fail, indomain_min, complete) satisfy;