00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "test/flatzinc.hh"
00039
00040 namespace Test { namespace FlatZinc {
00041
00042 namespace {
00044 class Create {
00045 public:
00046
00048 Create(void) {
00049 (void) new FlatZincTest("fzn_comparison",
00050 "var bool: b1;\n\
00051 var bool: b2;\n\
00052 var bool: b3;\n\
00053 var bool: b4;\n\
00054 var bool: b5;\n\
00055 var bool: b6;\n\
00056 \n\
00057 var bool: rb1;\n\
00058 var bool: rb2;\n\
00059 var bool: rb3;\n\
00060 var bool: rb4;\n\
00061 var bool: rb5;\n\
00062 var bool: rb6;\n\
00063 \n\
00064 var 1.0..10.0: f1;\n\
00065 var 1.0..10.0: f2;\n\
00066 var 1.0..10.0: f3;\n\
00067 var 1.0..10.0: f4;\n\
00068 var 1.0..10.0: f5;\n\
00069 var 1.0..10.0: f6;\n\
00070 \n\
00071 var bool: rf1;\n\
00072 var bool: rf2;\n\
00073 var bool: rf3;\n\
00074 var bool: rf4;\n\
00075 var bool: rf5;\n\
00076 var bool: rf6;\n\
00077 \n\
00078 var 1..10: i1;\n\
00079 var 1..10: i2;\n\
00080 var 1..10: i3;\n\
00081 var 1..10: i4;\n\
00082 var 1..10: i5;\n\
00083 var 1..10: i6;\n\
00084 \n\
00085 var bool: ri1;\n\
00086 var bool: ri2;\n\
00087 var bool: ri3;\n\
00088 var bool: ri4;\n\
00089 var bool: ri5;\n\
00090 var bool: ri6;\n\
00091 \n\
00092 array [1..3] of var 1.0..10.0: fa1;\n\
00093 array [1..3] of var 1.0..10.0: fa2;\n\
00094 array [1..3] of var 1.0..10.0: fa3;\n\
00095 array [1..3] of var 1.0..10.0: fa4;\n\
00096 array [1..3] of var 1.0..10.0: fa5;\n\
00097 \n\
00098 var bool: rfa1;\n\
00099 var bool: rfa2;\n\
00100 var bool: rfa3;\n\
00101 var bool: rfa4;\n\
00102 var bool: rfa5;\n\
00103 \n\
00104 array [1..3] of var 1..10: ia1;\n\
00105 array [1..3] of var 1..10: ia2;\n\
00106 array [1..3] of var 1..10: ia3;\n\
00107 array [1..3] of var 1..10: ia4;\n\
00108 array [1..3] of var 1..10: ia5;\n\
00109 \n\
00110 var bool: ria1;\n\
00111 var bool: ria2;\n\
00112 var bool: ria3;\n\
00113 var bool: ria4;\n\
00114 var bool: ria5;\n\
00115 \n\
00116 var set of 1..3: s1;\n\
00117 var set of 1..3: s2;\n\
00118 var set of 1..3: s3;\n\
00119 var set of 1..3: s4;\n\
00120 var set of 1..3: s5;\n\
00121 var set of 1..3: s6;\n\
00122 \n\
00123 var bool: rs1;\n\
00124 var bool: rs2;\n\
00125 var bool: rs3;\n\
00126 var bool: rs4;\n\
00127 var bool: rs5;\n\
00128 var bool: rs6;\n\
00129 \n\
00130 % int_{lt,le,eq,ne}\n\
00131 \n\
00132 constraint int_lt(2, 3);\n\
00133 constraint int_lt(2, i1);\n\
00134 constraint int_lt(i1, 9);\n\
00135 \n\
00136 constraint int_le(2, 3);\n\
00137 constraint int_le(2, i2);\n\
00138 constraint int_le(i2, 9);\n\
00139 \n\
00140 constraint int_le(2, i3);\n\
00141 constraint int_le(i3, 9);\n\
00142 \n\
00143 constraint int_lt(2, i4);\n\
00144 constraint int_lt(i4, 9);\n\
00145 \n\
00146 constraint int_eq(2, 2);\n\
00147 constraint int_eq(2, i5);\n\
00148 \n\
00149 constraint int_ne(2, 3);\n\
00150 constraint int_ne(1, i6);\n\
00151 \n\
00152 % int_{lt,le,eq,ne}_reif\n\
00153 \n\
00154 constraint int_lt_reif(2, 3, ri1);\n\
00155 constraint int_lt_reif(2, i1, ri1);\n\
00156 constraint int_lt_reif(i1, 9, ri1);\n\
00157 \n\
00158 constraint int_le_reif(2, 3, ri2);\n\
00159 constraint int_le_reif(2, i2, ri2);\n\
00160 constraint int_le_reif(i2, 9, ri2);\n\
00161 \n\
00162 constraint int_le_reif(2, 3, ri3);\n\
00163 constraint int_le_reif(2, i3, ri3);\n\
00164 constraint int_le_reif(i3, 9, ri3);\n\
00165 \n\
00166 constraint int_lt_reif(2, 3, ri4);\n\
00167 constraint int_lt_reif(2, i4, ri4);\n\
00168 constraint int_lt_reif(i4, 9, ri4);\n\
00169 \n\
00170 constraint int_eq_reif(2, 2, ri5);\n\
00171 constraint int_eq_reif(2, i5, ri5);\n\
00172 \n\
00173 constraint int_ne_reif(2, 3, ri6);\n\
00174 constraint int_ne_reif(1, i6, ri6);\n\
00175 \n\
00176 % float_{lt,le,ge,gt,eq,ne}\n\
00177 \n\
00178 % constraint float_lt(2.0, 3.0);\n\
00179 % constraint float_lt(2.0, f1);\n\
00180 % constraint float_lt(f1, 9.0);\n\
00181 \n\
00182 constraint float_le(2.0, 3.0);\n\
00183 constraint float_le(2.0, f2);\n\
00184 constraint float_le(f2, 9.0);\n\
00185 \n\
00186 constraint float_le(2.0, f3);\n\
00187 constraint float_le(f3, 9.0);\n\
00188 \n\
00189 constraint float_eq(2.0, 2.0);\n\
00190 constraint float_eq(2.0, f5);\n\
00191 \n\
00192 % constraint float_ne(2.0, 3.0);\n\
00193 % constraint float_ne(2.0, f6);\n\
00194 \n\
00195 % float_{lt,le,eq,ne}_reif\n\
00196 \n\
00197 % constraint float_lt_reif(2.0, 3.0, rf1);\n\
00198 % constraint float_lt_reif(2.0, f1, rf1);\n\
00199 % constraint float_lt_reif(f1, 9.0, rf1);\n\
00200 \n\
00201 constraint float_le_reif(2.0, 3.0, rf2);\n\
00202 constraint float_le_reif(2.0, f2, rf2);\n\
00203 constraint float_le_reif(f2, 9.0, rf2);\n\
00204 \n\
00205 constraint float_le_reif(2.0, 3.0, rf3);\n\
00206 constraint float_le_reif(2.0, f3, rf3);\n\
00207 constraint float_le_reif(f3, 9.0, rf3);\n\
00208 \n\
00209 constraint float_eq_reif(2.0, 2.0, rf5);\n\
00210 constraint float_eq_reif(2.0, f5, rf5);\n\
00211 \n\
00212 % constraint float_ne_reif(2.0, 3.0, rf6);\n\
00213 % constraint float_ne_reif(2.0, f6, rf6);\n\
00214 \n\
00215 % set_{lt,le,gt,ge,eq,ne}\n\
00216 \n\
00217 constraint set_lt({}, {1, 2, 3});\n\
00218 constraint set_lt({}, s1);\n\
00219 constraint set_lt(s1, {1, 2, 3});\n\
00220 \n\
00221 constraint set_le({}, {1, 2, 3});\n\
00222 constraint set_le({1}, s2);\n\
00223 constraint set_le(s2, {1, 2, 3});\n\
00224 \n\
00225 constraint set_lt({}, {1, 2, 3});\n\
00226 constraint set_lt({}, s3);\n\
00227 constraint set_lt(s3, {1, 2, 3});\n\
00228 \n\
00229 constraint set_le({}, {1, 2, 3});\n\
00230 constraint set_le({1}, s4);\n\
00231 constraint set_le(s4, {1, 2, 3});\n\
00232 \n\
00233 constraint set_eq({1, 2, 3}, {1, 2, 3});\n\
00234 constraint set_eq(s5, {1, 2, 3});\n\
00235 \n\
00236 constraint set_ne({}, {1, 2, 3});\n\
00237 constraint set_ne(s6, {1, 2, 3});\n\
00238 \n\
00239 % int_lin_{lt,le,gt,ge,eq}\n\
00240 \n\
00241 % constraint int_lin_lt([1, 2, 3], [1, 2, 3], 100);\n\
00242 % constraint int_lin_lt([1, 2, 3], ia1, 10);\n\
00243 \n\
00244 constraint int_lin_le([1, 2, 3], [1, 2, 3], 100);\n\
00245 constraint int_lin_le([1, 2, 3], ia2, 10);\n\
00246 \n\
00247 % constraint int_lin_gt([1, 2, 3], [1, 2, 3], 10);\n\
00248 % constraint int_lin_gt([1, 2, 3], ia3, 10);\n\
00249 \n\
00250 constraint int_lin_le([-1, -2, -3], [1, 2, 3], -10);\n\
00251 constraint int_lin_le([-1, -2, -3], ia4, -10);\n\
00252 \n\
00253 constraint int_lin_eq([1, 2, 3], [1, 2, 3], 14);\n\
00254 constraint int_lin_eq([1, 2, 3], ia5, 14);\n\
00255 \n\
00256 % int_lin_{lt,le,gt,ge,eq}_reif\n\
00257 \n\
00258 % constraint int_lin_lt_reif([1, 2, 3], [1, 2, 3], 100, ria1);\n\
00259 % constraint int_lin_lt_reif([1, 2, 3], ia1, 10, ria1);\n\
00260 \n\
00261 constraint int_lin_le_reif([1, 2, 3], [1, 2, 3], 100, ria2);\n\
00262 constraint int_lin_le_reif([1, 2, 3], ia2, 10, ria2);\n\
00263 \n\
00264 % constraint int_lin_gt_reif([1, 2, 3], [1, 2, 3], 10, ria3);\n\
00265 % constraint int_lin_gt_reif([1, 2, 3], ia3, 10, ria3);\n\
00266 \n\
00267 constraint int_lin_le_reif([-1, -2, -3], [1, 2, 3], -10, ria4);\n\
00268 constraint int_lin_le_reif([-1, -2, -3], ia4, -10, ria4);\n\
00269 \n\
00270 constraint int_lin_eq_reif([1, 2, 3], [1, 2, 3], 14, ria5);\n\
00271 constraint int_lin_eq_reif([1, 2, 3], ia5, 14, ria5);\n\
00272 \n\
00273 solve satisfy;\n\
00274 ",
00275 "----------\n");
00276 }
00277 };
00278
00279 Create c;
00280 }
00281
00282 }}
00283
00284