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