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