Generated on Thu Apr 11 13:59:21 2019 for Gecode by doxygen 1.6.3

test_fzn_comparison.cpp

Go to the documentation of this file.
00001 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
00002 /*
00003  *  Main authors:
00004  *     Guido Tack <tack@gecode.org>
00005  *
00006  *  Copyright:
00007  *     Guido Tack, 2014
00008  *
00009  *  This file is part of Gecode, the generic constraint
00010  *  development environment:
00011  *     http://www.gecode.org
00012  *
00013  *  Permission is hereby granted, free of charge, to any person obtaining
00014  *  a copy of this software and associated documentation files (the
00015  *  "Software"), to deal in the Software without restriction, including
00016  *  without limitation the rights to use, copy, modify, merge, publish,
00017  *  distribute, sublicense, and/or sell copies of the Software, and to
00018  *  permit persons to whom the Software is furnished to do so, subject to
00019  *  the following conditions:
00020  *
00021  *  The above copyright notice and this permission notice shall be
00022  *  included in all copies or substantial portions of the Software.
00023  *
00024  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00025  *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00026  *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00027  *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
00028  *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
00029  *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
00030  *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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 // STATISTICS: test-flatzinc