this repo has no description
at develop 11 kB view raw
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ 2/* 3 * Main authors: 4 * Guido Tack <tack@gecode.org> 5 * 6 * Copyright: 7 * Guido Tack, 2014 8 * 9 * This file is part of Gecode, the generic constraint 10 * development environment: 11 * http://www.gecode.org 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining 14 * a copy of this software and associated documentation files (the 15 * "Software"), to deal in the Software without restriction, including 16 * without limitation the rights to use, copy, modify, merge, publish, 17 * distribute, sublicense, and/or sell copies of the Software, and to 18 * permit persons to whom the Software is furnished to do so, subject to 19 * the following conditions: 20 * 21 * The above copyright notice and this permission notice shall be 22 * included in all copies or substantial portions of the Software. 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 28 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 29 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 30 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 31 * 32 */ 33 34#include "test/flatzinc.hh" 35 36namespace Test { namespace FlatZinc { 37 38 namespace { 39 /// Helper class to create and register tests 40 class Create { 41 public: 42 43 /// Perform creation and registration 44 Create(void) { 45 (void) new FlatZincTest("sat_arith1", 46"\n\ 47var bool: v_1;\n\ 48var bool: v_2;\n\ 49var bool: v_3;\n\ 50var bool: v_4;\n\ 51var bool: v_5;\n\ 52var bool: v_6;\n\ 53var bool: v_7;\n\ 54var bool: v_8;\n\ 55var bool: v_9;\n\ 56var bool: v_10;\n\ 57var bool: v_11;\n\ 58var bool: v_12;\n\ 59var bool: v_13;\n\ 60var bool: v_14;\n\ 61var bool: v_15;\n\ 62var bool: v_16;\n\ 63var bool: v_17;\n\ 64var bool: v_18;\n\ 65var bool: v_19;\n\ 66var bool: v_20;\n\ 67var bool: v_21;\n\ 68var bool: v_22;\n\ 69var bool: v_23;\n\ 70var bool: v_24;\n\ 71var bool: v_25;\n\ 72var bool: v_26;\n\ 73var bool: v_27;\n\ 74var bool: v_28;\n\ 75var bool: v_29;\n\ 76var bool: v_30;\n\ 77var bool: v_31;\n\ 78var bool: v_32;\n\ 79var bool: v_33;\n\ 80var bool: v_34;\n\ 81var bool: v_35;\n\ 82var bool: v_36;\n\ 83var bool: v_37;\n\ 84var bool: v_38;\n\ 85var bool: v_39;\n\ 86var bool: v_40;\n\ 87var bool: v_41;\n\ 88var bool: v_42;\n\ 89var bool: v_43;\n\ 90var bool: v_44;\n\ 91var bool: v_45;\n\ 92var bool: v_46;\n\ 93var bool: v_47;\n\ 94var bool: v_48;\n\ 95var bool: v_49;\n\ 96var bool: v_50;\n\ 97var bool: v_51;\n\ 98var bool: v_52;\n\ 99var bool: v_53;\n\ 100var bool: v_54;\n\ 101var bool: v_55;\n\ 102var bool: v_56;\n\ 103var bool: v_57;\n\ 104var bool: v_58;\n\ 105var bool: v_59;\n\ 106var bool: v_60;\n\ 107var bool: v_61;\n\ 108var bool: v_62;\n\ 109var bool: v_63;\n\ 110var bool: v_64;\n\ 111var bool: v_65;\n\ 112var bool: v_66;\n\ 113var bool: v_67;\n\ 114var bool: v_68;\n\ 115var bool: v_69;\n\ 116var bool: v_70;\n\ 117var bool: v_71;\n\ 118var bool: v_72;\n\ 119var bool: v_73;\n\ 120var bool: v_74;\n\ 121var bool: v_75;\n\ 122var bool: v_76;\n\ 123var bool: v_77;\n\ 124var bool: v_78;\n\ 125var bool: v_79;\n\ 126var bool: v_80;\n\ 127var bool: v_81;\n\ 128var bool: v_82;\n\ 129var bool: v_83;\n\ 130var bool: v_84;\n\ 131var bool: v_85;\n\ 132var bool: v_86;\n\ 133var bool: v_87;\n\ 134var bool: v_88;\n\ 135var bool: v_89;\n\ 136var bool: v_90;\n\ 137var bool: v_91;\n\ 138var bool: v_92;\n\ 139var bool: v_93;\n\ 140var bool: v_94;\n\ 141var bool: v_95;\n\ 142var bool: v_96;\n\ 143var bool: v_97;\n\ 144var bool: v_98;\n\ 145var bool: v_99;\n\ 146var bool: v_100;\n\ 147var bool: v_101;\n\ 148var bool: v_102;\n\ 149var bool: v_103;\n\ 150var bool: v_104;\n\ 151var bool: v_105;\n\ 152var bool: v_106;\n\ 153var bool: v_107;\n\ 154var bool: v_108;\n\ 155var bool: v_109;\n\ 156var bool: v_110;\n\ 157var bool: v_111;\n\ 158var bool: v_112;\n\ 159var bool: v_113;\n\ 160var bool: v_114;\n\ 161var bool: v_115;\n\ 162var bool: v_116;\n\ 163var bool: v_117;\n\ 164var bool: v_118;\n\ 165var bool: v_119;\n\ 166var bool: v_120;\n\ 167var bool: v_121;\n\ 168var bool: v_122;\n\ 169var bool: v_123;\n\ 170var bool: v_124;\n\ 171var bool: v_125;\n\ 172var bool: v_126;\n\ 173var bool: v_127;\n\ 174var bool: v_128;\n\ 175var bool: v_129;\n\ 176var bool: v_130;\n\ 177var bool: v_131;\n\ 178var bool: v_132;\n\ 179var bool: v_133;\n\ 180var bool: v_134;\n\ 181var bool: v_135;\n\ 182var bool: v_136;\n\ 183var bool: v_137;\n\ 184var bool: v_138;\n\ 185var bool: v_139;\n\ 186var bool: v_140;\n\ 187var bool: v_141;\n\ 188var bool: v_142;\n\ 189var bool: v_143;\n\ 190var bool: v_144;\n\ 191var bool: v_145;\n\ 192var bool: v_146;\n\ 193var bool: v_147;\n\ 194var bool: v_148;\n\ 195var bool: v_149;\n\ 196var bool: v_150;\n\ 197var bool: v_151;\n\ 198var bool: v_152;\n\ 199var bool: v_153;\n\ 200array [1..8] of var bool: a :: output_array([1..8]) =\n\ 201 [v_8, v_7, v_6, v_5, v_4, v_3, v_2, v_1];\n\ 202array [1..8] of var bool: b :: output_array([1..8]) =\n\ 203 [v_28, v_27, v_26, v_25, v_24, v_23, v_22, v_21];\n\ 204constraint bool_eq(false, v_4);\n\ 205constraint bool_eq(false, v_5);\n\ 206constraint bool_eq(false, v_6);\n\ 207constraint bool_eq(false, v_7);\n\ 208constraint bool_eq(false, v_8);\n\ 209constraint bool_eq(false, v_4);\n\ 210constraint bool_eq(v_4, v_9);\n\ 211constraint bool_not(v_4, v_10);\n\ 212constraint bool_eq(v_11, false);\n\ 213constraint bool_not(v_3, v_12);\n\ 214constraint bool_not(v_2, v_13);\n\ 215constraint bool_eq(v_2, v_14);\n\ 216constraint bool_not(v_1, v_15);\n\ 217constraint bool_or(v_9, v_16, true);\n\ 218constraint bool_and(v_10, v_17, v_16);\n\ 219constraint bool_or(v_11, v_18, v_17);\n\ 220constraint bool_and(v_12, v_19, v_18);\n\ 221constraint bool_or(v_13, v_20, v_19);\n\ 222constraint bool_and(v_14, v_15, v_20);\n\ 223constraint bool_eq(false, v_24);\n\ 224constraint bool_eq(false, v_25);\n\ 225constraint bool_eq(false, v_26);\n\ 226constraint bool_eq(false, v_27);\n\ 227constraint bool_eq(false, v_28);\n\ 228constraint bool_eq(false, v_24);\n\ 229constraint bool_eq(v_24, v_29);\n\ 230constraint bool_not(v_24, v_30);\n\ 231constraint bool_eq(v_31, false);\n\ 232constraint bool_not(v_23, v_32);\n\ 233constraint bool_not(v_22, v_33);\n\ 234constraint bool_eq(v_22, v_34);\n\ 235constraint bool_not(v_21, v_35);\n\ 236constraint bool_or(v_29, v_36, true);\n\ 237constraint bool_and(v_30, v_37, v_36);\n\ 238constraint bool_or(v_31, v_38, v_37);\n\ 239constraint bool_and(v_32, v_39, v_38);\n\ 240constraint bool_or(v_33, v_40, v_39);\n\ 241constraint bool_and(v_34, v_35, v_40);\n\ 242constraint bool_eq(v_28, v_41);\n\ 243constraint bool_not(v_28, v_42);\n\ 244constraint bool_eq(v_43, false);\n\ 245constraint bool_not(v_27, v_44);\n\ 246constraint bool_eq(v_45, false);\n\ 247constraint bool_not(v_26, v_46);\n\ 248constraint bool_eq(v_47, false);\n\ 249constraint bool_not(v_25, v_48);\n\ 250constraint bool_eq(v_49, false);\n\ 251constraint bool_not(v_24, v_50);\n\ 252constraint bool_eq(v_51, false);\n\ 253constraint bool_not(v_23, v_52);\n\ 254constraint bool_eq(v_53, false);\n\ 255constraint bool_not(v_22, v_54);\n\ 256constraint bool_not(v_21, v_55);\n\ 257constraint bool_or(v_41, v_56, false);\n\ 258constraint bool_and(v_42, v_57, v_56);\n\ 259constraint bool_or(v_43, v_58, v_57);\n\ 260constraint bool_and(v_44, v_59, v_58);\n\ 261constraint bool_or(v_45, v_60, v_59);\n\ 262constraint bool_and(v_46, v_61, v_60);\n\ 263constraint bool_or(v_47, v_62, v_61);\n\ 264constraint bool_and(v_48, v_63, v_62);\n\ 265constraint bool_or(v_49, v_64, v_63);\n\ 266constraint bool_and(v_50, v_65, v_64);\n\ 267constraint bool_or(v_51, v_66, v_65);\n\ 268constraint bool_and(v_52, v_67, v_66);\n\ 269constraint bool_or(v_53, v_68, v_67);\n\ 270constraint bool_and(v_54, v_55, v_68);\n\ 271constraint bool_eq(v_8, v_69);\n\ 272constraint bool_not(v_8, v_70);\n\ 273constraint bool_eq(v_71, false);\n\ 274constraint bool_not(v_7, v_72);\n\ 275constraint bool_eq(v_73, false);\n\ 276constraint bool_not(v_6, v_74);\n\ 277constraint bool_eq(v_75, false);\n\ 278constraint bool_not(v_5, v_76);\n\ 279constraint bool_eq(v_77, false);\n\ 280constraint bool_not(v_4, v_78);\n\ 281constraint bool_eq(v_79, false);\n\ 282constraint bool_not(v_3, v_80);\n\ 283constraint bool_eq(v_81, false);\n\ 284constraint bool_not(v_2, v_82);\n\ 285constraint bool_not(v_1, v_83);\n\ 286constraint bool_or(v_69, v_84, false);\n\ 287constraint bool_and(v_70, v_85, v_84);\n\ 288constraint bool_or(v_71, v_86, v_85);\n\ 289constraint bool_and(v_72, v_87, v_86);\n\ 290constraint bool_or(v_73, v_88, v_87);\n\ 291constraint bool_and(v_74, v_89, v_88);\n\ 292constraint bool_or(v_75, v_90, v_89);\n\ 293constraint bool_and(v_76, v_91, v_90);\n\ 294constraint bool_or(v_77, v_92, v_91);\n\ 295constraint bool_and(v_78, v_93, v_92);\n\ 296constraint bool_or(v_79, v_94, v_93);\n\ 297constraint bool_and(v_80, v_95, v_94);\n\ 298constraint bool_or(v_81, v_96, v_95);\n\ 299constraint bool_and(v_82, v_83, v_96);\n\ 300constraint bool_eq(v_113, false);\n\ 301constraint bool_xor(v_1, v_21, v_105);\n\ 302constraint bool_xor(v_105, v_113, v_97);\n\ 303constraint array_bool_or([v_122, v_130, v_138], v_114);\n\ 304constraint bool_and(v_1, v_21, v_122);\n\ 305constraint bool_and(v_1, v_113, v_130);\n\ 306constraint bool_and(v_21, v_113, v_138);\n\ 307constraint bool_xor(v_2, v_22, v_106);\n\ 308constraint bool_xor(v_106, v_114, v_98);\n\ 309constraint array_bool_or([v_123, v_131, v_139], v_115);\n\ 310constraint bool_and(v_2, v_22, v_123);\n\ 311constraint bool_and(v_2, v_114, v_131);\n\ 312constraint bool_and(v_22, v_114, v_139);\n\ 313constraint bool_xor(v_3, v_23, v_107);\n\ 314constraint bool_xor(v_107, v_115, v_99);\n\ 315constraint array_bool_or([v_124, v_132, v_140], v_116);\n\ 316constraint bool_and(v_3, v_23, v_124);\n\ 317constraint bool_and(v_3, v_115, v_132);\n\ 318constraint bool_and(v_23, v_115, v_140);\n\ 319constraint bool_xor(v_4, v_24, v_108);\n\ 320constraint bool_xor(v_108, v_116, v_100);\n\ 321constraint array_bool_or([v_125, v_133, v_141], v_117);\n\ 322constraint bool_and(v_4, v_24, v_125);\n\ 323constraint bool_and(v_4, v_116, v_133);\n\ 324constraint bool_and(v_24, v_116, v_141);\n\ 325constraint bool_xor(v_5, v_25, v_109);\n\ 326constraint bool_xor(v_109, v_117, v_101);\n\ 327constraint array_bool_or([v_126, v_134, v_142], v_118);\n\ 328constraint bool_and(v_5, v_25, v_126);\n\ 329constraint bool_and(v_5, v_117, v_134);\n\ 330constraint bool_and(v_25, v_117, v_142);\n\ 331constraint bool_xor(v_6, v_26, v_110);\n\ 332constraint bool_xor(v_110, v_118, v_102);\n\ 333constraint array_bool_or([v_127, v_135, v_143], v_119);\n\ 334constraint bool_and(v_6, v_26, v_127);\n\ 335constraint bool_and(v_6, v_118, v_135);\n\ 336constraint bool_and(v_26, v_118, v_143);\n\ 337constraint bool_xor(v_7, v_27, v_111);\n\ 338constraint bool_xor(v_111, v_119, v_103);\n\ 339constraint array_bool_or([v_128, v_136, v_144], v_120);\n\ 340constraint bool_and(v_7, v_27, v_128);\n\ 341constraint bool_and(v_7, v_119, v_136);\n\ 342constraint bool_and(v_27, v_119, v_144);\n\ 343constraint bool_xor(v_8, v_28, v_112);\n\ 344constraint bool_xor(v_112, v_120, v_104);\n\ 345constraint array_bool_or([v_129, v_137, v_145], v_121);\n\ 346constraint bool_and(v_8, v_28, v_129);\n\ 347constraint bool_and(v_8, v_120, v_137);\n\ 348constraint bool_and(v_28, v_120, v_145);\n\ 349constraint bool_eq(v_120, v_121);\n\ 350constraint bool_not(v_97, v_146);\n\ 351constraint bool_eq(v_98, v_147);\n\ 352constraint bool_not(v_99, v_148);\n\ 353constraint bool_not(v_100, v_149);\n\ 354constraint bool_not(v_101, v_150);\n\ 355constraint bool_not(v_102, v_151);\n\ 356constraint bool_not(v_103, v_152);\n\ 357constraint bool_not(v_104, v_153);\n\ 358constraint array_bool_and([v_146, v_147, v_148, v_149, v_150, v_151, v_152, v_153], true);\n\ 359solve satisfy;\n\ 360", 361"a = array1d(1..8, [false, false, false, false, false, false, false, true]);\n\ 362b = array1d(1..8, [false, false, false, false, false, false, false, true]);\n\ 363----------\n\ 364"); 365 } 366 }; 367 368 Create c; 369 } 370 371}} 372 373// STATISTICS: test-flatzinc