Generated on Tue May 22 09:40:18 2018 for Gecode by doxygen 1.6.3

sat_arith1.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("sat_arith1",
00046 "\n\
00047 var bool: v_1;\n\
00048 var bool: v_2;\n\
00049 var bool: v_3;\n\
00050 var bool: v_4;\n\
00051 var bool: v_5;\n\
00052 var bool: v_6;\n\
00053 var bool: v_7;\n\
00054 var bool: v_8;\n\
00055 var bool: v_9;\n\
00056 var bool: v_10;\n\
00057 var bool: v_11;\n\
00058 var bool: v_12;\n\
00059 var bool: v_13;\n\
00060 var bool: v_14;\n\
00061 var bool: v_15;\n\
00062 var bool: v_16;\n\
00063 var bool: v_17;\n\
00064 var bool: v_18;\n\
00065 var bool: v_19;\n\
00066 var bool: v_20;\n\
00067 var bool: v_21;\n\
00068 var bool: v_22;\n\
00069 var bool: v_23;\n\
00070 var bool: v_24;\n\
00071 var bool: v_25;\n\
00072 var bool: v_26;\n\
00073 var bool: v_27;\n\
00074 var bool: v_28;\n\
00075 var bool: v_29;\n\
00076 var bool: v_30;\n\
00077 var bool: v_31;\n\
00078 var bool: v_32;\n\
00079 var bool: v_33;\n\
00080 var bool: v_34;\n\
00081 var bool: v_35;\n\
00082 var bool: v_36;\n\
00083 var bool: v_37;\n\
00084 var bool: v_38;\n\
00085 var bool: v_39;\n\
00086 var bool: v_40;\n\
00087 var bool: v_41;\n\
00088 var bool: v_42;\n\
00089 var bool: v_43;\n\
00090 var bool: v_44;\n\
00091 var bool: v_45;\n\
00092 var bool: v_46;\n\
00093 var bool: v_47;\n\
00094 var bool: v_48;\n\
00095 var bool: v_49;\n\
00096 var bool: v_50;\n\
00097 var bool: v_51;\n\
00098 var bool: v_52;\n\
00099 var bool: v_53;\n\
00100 var bool: v_54;\n\
00101 var bool: v_55;\n\
00102 var bool: v_56;\n\
00103 var bool: v_57;\n\
00104 var bool: v_58;\n\
00105 var bool: v_59;\n\
00106 var bool: v_60;\n\
00107 var bool: v_61;\n\
00108 var bool: v_62;\n\
00109 var bool: v_63;\n\
00110 var bool: v_64;\n\
00111 var bool: v_65;\n\
00112 var bool: v_66;\n\
00113 var bool: v_67;\n\
00114 var bool: v_68;\n\
00115 var bool: v_69;\n\
00116 var bool: v_70;\n\
00117 var bool: v_71;\n\
00118 var bool: v_72;\n\
00119 var bool: v_73;\n\
00120 var bool: v_74;\n\
00121 var bool: v_75;\n\
00122 var bool: v_76;\n\
00123 var bool: v_77;\n\
00124 var bool: v_78;\n\
00125 var bool: v_79;\n\
00126 var bool: v_80;\n\
00127 var bool: v_81;\n\
00128 var bool: v_82;\n\
00129 var bool: v_83;\n\
00130 var bool: v_84;\n\
00131 var bool: v_85;\n\
00132 var bool: v_86;\n\
00133 var bool: v_87;\n\
00134 var bool: v_88;\n\
00135 var bool: v_89;\n\
00136 var bool: v_90;\n\
00137 var bool: v_91;\n\
00138 var bool: v_92;\n\
00139 var bool: v_93;\n\
00140 var bool: v_94;\n\
00141 var bool: v_95;\n\
00142 var bool: v_96;\n\
00143 var bool: v_97;\n\
00144 var bool: v_98;\n\
00145 var bool: v_99;\n\
00146 var bool: v_100;\n\
00147 var bool: v_101;\n\
00148 var bool: v_102;\n\
00149 var bool: v_103;\n\
00150 var bool: v_104;\n\
00151 var bool: v_105;\n\
00152 var bool: v_106;\n\
00153 var bool: v_107;\n\
00154 var bool: v_108;\n\
00155 var bool: v_109;\n\
00156 var bool: v_110;\n\
00157 var bool: v_111;\n\
00158 var bool: v_112;\n\
00159 var bool: v_113;\n\
00160 var bool: v_114;\n\
00161 var bool: v_115;\n\
00162 var bool: v_116;\n\
00163 var bool: v_117;\n\
00164 var bool: v_118;\n\
00165 var bool: v_119;\n\
00166 var bool: v_120;\n\
00167 var bool: v_121;\n\
00168 var bool: v_122;\n\
00169 var bool: v_123;\n\
00170 var bool: v_124;\n\
00171 var bool: v_125;\n\
00172 var bool: v_126;\n\
00173 var bool: v_127;\n\
00174 var bool: v_128;\n\
00175 var bool: v_129;\n\
00176 var bool: v_130;\n\
00177 var bool: v_131;\n\
00178 var bool: v_132;\n\
00179 var bool: v_133;\n\
00180 var bool: v_134;\n\
00181 var bool: v_135;\n\
00182 var bool: v_136;\n\
00183 var bool: v_137;\n\
00184 var bool: v_138;\n\
00185 var bool: v_139;\n\
00186 var bool: v_140;\n\
00187 var bool: v_141;\n\
00188 var bool: v_142;\n\
00189 var bool: v_143;\n\
00190 var bool: v_144;\n\
00191 var bool: v_145;\n\
00192 var bool: v_146;\n\
00193 var bool: v_147;\n\
00194 var bool: v_148;\n\
00195 var bool: v_149;\n\
00196 var bool: v_150;\n\
00197 var bool: v_151;\n\
00198 var bool: v_152;\n\
00199 var bool: v_153;\n\
00200 array [1..8] of var bool: a :: output_array([1..8]) =\n\
00201         [v_8, v_7, v_6, v_5, v_4, v_3, v_2, v_1];\n\
00202 array [1..8] of var bool: b :: output_array([1..8]) =\n\
00203         [v_28, v_27, v_26, v_25, v_24, v_23, v_22, v_21];\n\
00204 constraint bool_eq(false, v_4);\n\
00205 constraint bool_eq(false, v_5);\n\
00206 constraint bool_eq(false, v_6);\n\
00207 constraint bool_eq(false, v_7);\n\
00208 constraint bool_eq(false, v_8);\n\
00209 constraint bool_eq(false, v_4);\n\
00210 constraint bool_eq(v_4, v_9);\n\
00211 constraint bool_not(v_4, v_10);\n\
00212 constraint bool_eq(v_11, false);\n\
00213 constraint bool_not(v_3, v_12);\n\
00214 constraint bool_not(v_2, v_13);\n\
00215 constraint bool_eq(v_2, v_14);\n\
00216 constraint bool_not(v_1, v_15);\n\
00217 constraint bool_or(v_9, v_16, true);\n\
00218 constraint bool_and(v_10, v_17, v_16);\n\
00219 constraint bool_or(v_11, v_18, v_17);\n\
00220 constraint bool_and(v_12, v_19, v_18);\n\
00221 constraint bool_or(v_13, v_20, v_19);\n\
00222 constraint bool_and(v_14, v_15, v_20);\n\
00223 constraint bool_eq(false, v_24);\n\
00224 constraint bool_eq(false, v_25);\n\
00225 constraint bool_eq(false, v_26);\n\
00226 constraint bool_eq(false, v_27);\n\
00227 constraint bool_eq(false, v_28);\n\
00228 constraint bool_eq(false, v_24);\n\
00229 constraint bool_eq(v_24, v_29);\n\
00230 constraint bool_not(v_24, v_30);\n\
00231 constraint bool_eq(v_31, false);\n\
00232 constraint bool_not(v_23, v_32);\n\
00233 constraint bool_not(v_22, v_33);\n\
00234 constraint bool_eq(v_22, v_34);\n\
00235 constraint bool_not(v_21, v_35);\n\
00236 constraint bool_or(v_29, v_36, true);\n\
00237 constraint bool_and(v_30, v_37, v_36);\n\
00238 constraint bool_or(v_31, v_38, v_37);\n\
00239 constraint bool_and(v_32, v_39, v_38);\n\
00240 constraint bool_or(v_33, v_40, v_39);\n\
00241 constraint bool_and(v_34, v_35, v_40);\n\
00242 constraint bool_eq(v_28, v_41);\n\
00243 constraint bool_not(v_28, v_42);\n\
00244 constraint bool_eq(v_43, false);\n\
00245 constraint bool_not(v_27, v_44);\n\
00246 constraint bool_eq(v_45, false);\n\
00247 constraint bool_not(v_26, v_46);\n\
00248 constraint bool_eq(v_47, false);\n\
00249 constraint bool_not(v_25, v_48);\n\
00250 constraint bool_eq(v_49, false);\n\
00251 constraint bool_not(v_24, v_50);\n\
00252 constraint bool_eq(v_51, false);\n\
00253 constraint bool_not(v_23, v_52);\n\
00254 constraint bool_eq(v_53, false);\n\
00255 constraint bool_not(v_22, v_54);\n\
00256 constraint bool_not(v_21, v_55);\n\
00257 constraint bool_or(v_41, v_56, false);\n\
00258 constraint bool_and(v_42, v_57, v_56);\n\
00259 constraint bool_or(v_43, v_58, v_57);\n\
00260 constraint bool_and(v_44, v_59, v_58);\n\
00261 constraint bool_or(v_45, v_60, v_59);\n\
00262 constraint bool_and(v_46, v_61, v_60);\n\
00263 constraint bool_or(v_47, v_62, v_61);\n\
00264 constraint bool_and(v_48, v_63, v_62);\n\
00265 constraint bool_or(v_49, v_64, v_63);\n\
00266 constraint bool_and(v_50, v_65, v_64);\n\
00267 constraint bool_or(v_51, v_66, v_65);\n\
00268 constraint bool_and(v_52, v_67, v_66);\n\
00269 constraint bool_or(v_53, v_68, v_67);\n\
00270 constraint bool_and(v_54, v_55, v_68);\n\
00271 constraint bool_eq(v_8, v_69);\n\
00272 constraint bool_not(v_8, v_70);\n\
00273 constraint bool_eq(v_71, false);\n\
00274 constraint bool_not(v_7, v_72);\n\
00275 constraint bool_eq(v_73, false);\n\
00276 constraint bool_not(v_6, v_74);\n\
00277 constraint bool_eq(v_75, false);\n\
00278 constraint bool_not(v_5, v_76);\n\
00279 constraint bool_eq(v_77, false);\n\
00280 constraint bool_not(v_4, v_78);\n\
00281 constraint bool_eq(v_79, false);\n\
00282 constraint bool_not(v_3, v_80);\n\
00283 constraint bool_eq(v_81, false);\n\
00284 constraint bool_not(v_2, v_82);\n\
00285 constraint bool_not(v_1, v_83);\n\
00286 constraint bool_or(v_69, v_84, false);\n\
00287 constraint bool_and(v_70, v_85, v_84);\n\
00288 constraint bool_or(v_71, v_86, v_85);\n\
00289 constraint bool_and(v_72, v_87, v_86);\n\
00290 constraint bool_or(v_73, v_88, v_87);\n\
00291 constraint bool_and(v_74, v_89, v_88);\n\
00292 constraint bool_or(v_75, v_90, v_89);\n\
00293 constraint bool_and(v_76, v_91, v_90);\n\
00294 constraint bool_or(v_77, v_92, v_91);\n\
00295 constraint bool_and(v_78, v_93, v_92);\n\
00296 constraint bool_or(v_79, v_94, v_93);\n\
00297 constraint bool_and(v_80, v_95, v_94);\n\
00298 constraint bool_or(v_81, v_96, v_95);\n\
00299 constraint bool_and(v_82, v_83, v_96);\n\
00300 constraint bool_eq(v_113, false);\n\
00301 constraint bool_xor(v_1, v_21, v_105);\n\
00302 constraint bool_xor(v_105, v_113, v_97);\n\
00303 constraint array_bool_or([v_122, v_130, v_138], v_114);\n\
00304 constraint bool_and(v_1, v_21, v_122);\n\
00305 constraint bool_and(v_1, v_113, v_130);\n\
00306 constraint bool_and(v_21, v_113, v_138);\n\
00307 constraint bool_xor(v_2, v_22, v_106);\n\
00308 constraint bool_xor(v_106, v_114, v_98);\n\
00309 constraint array_bool_or([v_123, v_131, v_139], v_115);\n\
00310 constraint bool_and(v_2, v_22, v_123);\n\
00311 constraint bool_and(v_2, v_114, v_131);\n\
00312 constraint bool_and(v_22, v_114, v_139);\n\
00313 constraint bool_xor(v_3, v_23, v_107);\n\
00314 constraint bool_xor(v_107, v_115, v_99);\n\
00315 constraint array_bool_or([v_124, v_132, v_140], v_116);\n\
00316 constraint bool_and(v_3, v_23, v_124);\n\
00317 constraint bool_and(v_3, v_115, v_132);\n\
00318 constraint bool_and(v_23, v_115, v_140);\n\
00319 constraint bool_xor(v_4, v_24, v_108);\n\
00320 constraint bool_xor(v_108, v_116, v_100);\n\
00321 constraint array_bool_or([v_125, v_133, v_141], v_117);\n\
00322 constraint bool_and(v_4, v_24, v_125);\n\
00323 constraint bool_and(v_4, v_116, v_133);\n\
00324 constraint bool_and(v_24, v_116, v_141);\n\
00325 constraint bool_xor(v_5, v_25, v_109);\n\
00326 constraint bool_xor(v_109, v_117, v_101);\n\
00327 constraint array_bool_or([v_126, v_134, v_142], v_118);\n\
00328 constraint bool_and(v_5, v_25, v_126);\n\
00329 constraint bool_and(v_5, v_117, v_134);\n\
00330 constraint bool_and(v_25, v_117, v_142);\n\
00331 constraint bool_xor(v_6, v_26, v_110);\n\
00332 constraint bool_xor(v_110, v_118, v_102);\n\
00333 constraint array_bool_or([v_127, v_135, v_143], v_119);\n\
00334 constraint bool_and(v_6, v_26, v_127);\n\
00335 constraint bool_and(v_6, v_118, v_135);\n\
00336 constraint bool_and(v_26, v_118, v_143);\n\
00337 constraint bool_xor(v_7, v_27, v_111);\n\
00338 constraint bool_xor(v_111, v_119, v_103);\n\
00339 constraint array_bool_or([v_128, v_136, v_144], v_120);\n\
00340 constraint bool_and(v_7, v_27, v_128);\n\
00341 constraint bool_and(v_7, v_119, v_136);\n\
00342 constraint bool_and(v_27, v_119, v_144);\n\
00343 constraint bool_xor(v_8, v_28, v_112);\n\
00344 constraint bool_xor(v_112, v_120, v_104);\n\
00345 constraint array_bool_or([v_129, v_137, v_145], v_121);\n\
00346 constraint bool_and(v_8, v_28, v_129);\n\
00347 constraint bool_and(v_8, v_120, v_137);\n\
00348 constraint bool_and(v_28, v_120, v_145);\n\
00349 constraint bool_eq(v_120, v_121);\n\
00350 constraint bool_not(v_97, v_146);\n\
00351 constraint bool_eq(v_98, v_147);\n\
00352 constraint bool_not(v_99, v_148);\n\
00353 constraint bool_not(v_100, v_149);\n\
00354 constraint bool_not(v_101, v_150);\n\
00355 constraint bool_not(v_102, v_151);\n\
00356 constraint bool_not(v_103, v_152);\n\
00357 constraint bool_not(v_104, v_153);\n\
00358 constraint array_bool_and([v_146, v_147, v_148, v_149, v_150, v_151, v_152, v_153], true);\n\
00359 solve satisfy;\n\
00360 ",
00361 "a = array1d(1..8, [false, false, false, false, false, false, false, true]);\n\
00362 b = array1d(1..8, [false, false, false, false, false, false, false, true]);\n\
00363 ----------\n\
00364 ");
00365       }
00366     };
00367 
00368     Create c;
00369   }
00370 
00371 }}
00372 
00373 // STATISTICS: test-flatzinc