Generated on Tue Mar 24 2020 14:04:04 for Gecode by doxygen 1.8.17
int-rel.cpp
Go to the documentation of this file.
1 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2 /*
3  * Main authors:
4  * Christian Schulte <schulte@gecode.org>
5  *
6  * Copyright:
7  * Christian Schulte, 2005
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 <gecode/minimodel.hh>
35 
36 namespace Gecode {
37 
38  /*
39  * Construction of linear relations
40  *
41  */
42  LinIntRel
43  operator ==(int l, const IntVar& r) {
44  return LinIntRel(l,IRT_EQ,r);
45  }
46  LinIntRel
47  operator ==(int l, const BoolVar& r) {
48  return LinIntRel(l,IRT_EQ,r);
49  }
50  LinIntRel
51  operator ==(int l, const LinIntExpr& r) {
52  return LinIntRel(l,IRT_EQ,r);
53  }
54  LinIntRel
55  operator ==(const IntVar& l, int r) {
56  return LinIntRel(l,IRT_EQ,r);
57  }
58  LinIntRel
59  operator ==(const BoolVar& l, int r) {
60  return LinIntRel(l,IRT_EQ,r);
61  }
62  LinIntRel
63  operator ==(const LinIntExpr& l, int r) {
64  return LinIntRel(l,IRT_EQ,r);
65  }
66  LinIntRel
67  operator ==(const IntVar& l, const IntVar& r) {
68  return LinIntRel(l,IRT_EQ,r);
69  }
70  LinIntRel
71  operator ==(const IntVar& l, const BoolVar& r) {
72  return LinIntRel(l,IRT_EQ,r);
73  }
74  LinIntRel
75  operator ==(const BoolVar& l, const IntVar& r) {
76  return LinIntRel(l,IRT_EQ,r);
77  }
78  LinIntRel
79  operator ==(const BoolVar& l, const BoolVar& r) {
80  return LinIntRel(l,IRT_EQ,r);
81  }
82  LinIntRel
83  operator ==(const IntVar& l, const LinIntExpr& r) {
84  return LinIntRel(l,IRT_EQ,r);
85  }
86  LinIntRel
87  operator ==(const BoolVar& l, const LinIntExpr& r) {
88  return LinIntRel(l,IRT_EQ,r);
89  }
90  LinIntRel
91  operator ==(const LinIntExpr& l, const IntVar& r) {
92  return LinIntRel(l,IRT_EQ,r);
93  }
94  LinIntRel
95  operator ==(const LinIntExpr& l, const BoolVar& r) {
96  return LinIntRel(l,IRT_EQ,r);
97  }
98  LinIntRel
99  operator ==(const LinIntExpr& l, const LinIntExpr& r) {
100  return LinIntRel(l,IRT_EQ,r);
101  }
102 
103  LinIntRel
104  operator !=(int l, const IntVar& r) {
105  return LinIntRel(l,IRT_NQ,r);
106  }
107  LinIntRel
108  operator !=(int l, const BoolVar& r) {
109  return LinIntRel(l,IRT_NQ,r);
110  }
111  LinIntRel
112  operator !=(int l, const LinIntExpr& r) {
113  return LinIntRel(l,IRT_NQ,r);
114  }
115  LinIntRel
116  operator !=(const IntVar& l, int r) {
117  return LinIntRel(l,IRT_NQ,r);
118  }
119  LinIntRel
120  operator !=(const BoolVar& l, int r) {
121  return LinIntRel(l,IRT_NQ,r);
122  }
123  LinIntRel
124  operator !=(const LinIntExpr& l, int r) {
125  return LinIntRel(l,IRT_NQ,r);
126  }
127  LinIntRel
128  operator !=(const IntVar& l, const IntVar& r) {
129  return LinIntRel(l,IRT_NQ,r);
130  }
131  LinIntRel
132  operator !=(const IntVar& l, const BoolVar& r) {
133  return LinIntRel(l,IRT_NQ,r);
134  }
135  LinIntRel
136  operator !=(const BoolVar& l, const IntVar& r) {
137  return LinIntRel(l,IRT_NQ,r);
138  }
139  LinIntRel
140  operator !=(const BoolVar& l, const BoolVar& r) {
141  return LinIntRel(l,IRT_NQ,r);
142  }
143  LinIntRel
144  operator !=(const IntVar& l, const LinIntExpr& r) {
145  return LinIntRel(l,IRT_NQ,r);
146  }
147  LinIntRel
148  operator !=(const BoolVar& l, const LinIntExpr& r) {
149  return LinIntRel(l,IRT_NQ,r);
150  }
151  LinIntRel
152  operator !=(const LinIntExpr& l, const IntVar& r) {
153  return LinIntRel(l,IRT_NQ,r);
154  }
155  LinIntRel
156  operator !=(const LinIntExpr& l, const BoolVar& r) {
157  return LinIntRel(l,IRT_NQ,r);
158  }
159  LinIntRel
160  operator !=(const LinIntExpr& l, const LinIntExpr& r) {
161  return LinIntRel(l,IRT_NQ,r);
162  }
163 
164  LinIntRel
165  operator <(int l, const IntVar& r) {
166  return LinIntRel(l,IRT_LE,r);
167  }
168  LinIntRel
169  operator <(int l, const BoolVar& r) {
170  return LinIntRel(l,IRT_LE,r);
171  }
172  LinIntRel
173  operator <(int l, const LinIntExpr& r) {
174  return LinIntRel(l,IRT_LE,r);
175  }
176  LinIntRel
177  operator <(const IntVar& l, int r) {
178  return LinIntRel(l,IRT_LE,r);
179  }
180  LinIntRel
181  operator <(const BoolVar& l, int r) {
182  return LinIntRel(l,IRT_LE,r);
183  }
184  LinIntRel
185  operator <(const LinIntExpr& l, int r) {
186  return LinIntRel(l,IRT_LE,r);
187  }
188  LinIntRel
189  operator <(const IntVar& l, const IntVar& r) {
190  return LinIntRel(l,IRT_LE,r);
191  }
192  LinIntRel
193  operator <(const IntVar& l, const BoolVar& r) {
194  return LinIntRel(l,IRT_LE,r);
195  }
196  LinIntRel
197  operator <(const BoolVar& l, const IntVar& r) {
198  return LinIntRel(l,IRT_LE,r);
199  }
200  LinIntRel
201  operator <(const BoolVar& l, const BoolVar& r) {
202  return LinIntRel(l,IRT_LE,r);
203  }
204  LinIntRel
205  operator <(const IntVar& l, const LinIntExpr& r) {
206  return LinIntRel(l,IRT_LE,r);
207  }
208  LinIntRel
209  operator <(const BoolVar& l, const LinIntExpr& r) {
210  return LinIntRel(l,IRT_LE,r);
211  }
212  LinIntRel
213  operator <(const LinIntExpr& l, const IntVar& r) {
214  return LinIntRel(l,IRT_LE,r);
215  }
216  LinIntRel
217  operator <(const LinIntExpr& l, const BoolVar& r) {
218  return LinIntRel(l,IRT_LE,r);
219  }
220  LinIntRel
221  operator <(const LinIntExpr& l, const LinIntExpr& r) {
222  return LinIntRel(l,IRT_LE,r);
223  }
224 
225  LinIntRel
226  operator <=(int l, const IntVar& r) {
227  return LinIntRel(l,IRT_LQ,r);
228  }
229  LinIntRel
230  operator <=(int l, const BoolVar& r) {
231  return LinIntRel(l,IRT_LQ,r);
232  }
233  LinIntRel
234  operator <=(int l, const LinIntExpr& r) {
235  return LinIntRel(l,IRT_LQ,r);
236  }
237  LinIntRel
238  operator <=(const IntVar& l, int r) {
239  return LinIntRel(l,IRT_LQ,r);
240  }
241  LinIntRel
242  operator <=(const BoolVar& l, int r) {
243  return LinIntRel(l,IRT_LQ,r);
244  }
245  LinIntRel
246  operator <=(const LinIntExpr& l, int r) {
247  return LinIntRel(l,IRT_LQ,r);
248  }
249  LinIntRel
250  operator <=(const IntVar& l, const IntVar& r) {
251  return LinIntRel(l,IRT_LQ,r);
252  }
253  LinIntRel
254  operator <=(const IntVar& l, const BoolVar& r) {
255  return LinIntRel(l,IRT_LQ,r);
256  }
257  LinIntRel
258  operator <=(const BoolVar& l, const IntVar& r) {
259  return LinIntRel(l,IRT_LQ,r);
260  }
261  LinIntRel
262  operator <=(const BoolVar& l, const BoolVar& r) {
263  return LinIntRel(l,IRT_LQ,r);
264  }
265  LinIntRel
266  operator <=(const IntVar& l, const LinIntExpr& r) {
267  return LinIntRel(l,IRT_LQ,r);
268  }
269  LinIntRel
270  operator <=(const BoolVar& l, const LinIntExpr& r) {
271  return LinIntRel(l,IRT_LQ,r);
272  }
273  LinIntRel
274  operator <=(const LinIntExpr& l, const IntVar& r) {
275  return LinIntRel(l,IRT_LQ,r);
276  }
277  LinIntRel
278  operator <=(const LinIntExpr& l, const BoolVar& r) {
279  return LinIntRel(l,IRT_LQ,r);
280  }
281  LinIntRel
282  operator <=(const LinIntExpr& l, const LinIntExpr& r) {
283  return LinIntRel(l,IRT_LQ,r);
284  }
285 
286  LinIntRel
287  operator >(int l, const IntVar& r) {
288  return LinIntRel(l,IRT_GR,r);
289  }
290  LinIntRel
291  operator >(int l, const BoolVar& r) {
292  return LinIntRel(l,IRT_GR,r);
293  }
294  LinIntRel
295  operator >(int l, const LinIntExpr& r) {
296  return LinIntRel(l,IRT_GR,r);
297  }
298  LinIntRel
299  operator >(const IntVar& l, int r) {
300  return LinIntRel(l,IRT_GR,r);
301  }
302  LinIntRel
303  operator >(const BoolVar& l, int r) {
304  return LinIntRel(l,IRT_GR,r);
305  }
306  LinIntRel
307  operator >(const LinIntExpr& l, int r) {
308  return LinIntRel(l,IRT_GR,r);
309  }
310  LinIntRel
311  operator >(const IntVar& l, const IntVar& r) {
312  return LinIntRel(l,IRT_GR,r);
313  }
314  LinIntRel
315  operator >(const IntVar& l, const BoolVar& r) {
316  return LinIntRel(l,IRT_GR,r);
317  }
318  LinIntRel
319  operator >(const BoolVar& l, const IntVar& r) {
320  return LinIntRel(l,IRT_GR,r);
321  }
322  LinIntRel
323  operator >(const BoolVar& l, const BoolVar& r) {
324  return LinIntRel(l,IRT_GR,r);
325  }
326  LinIntRel
327  operator >(const IntVar& l, const LinIntExpr& r) {
328  return LinIntRel(l,IRT_GR,r);
329  }
330  LinIntRel
331  operator >(const BoolVar& l, const LinIntExpr& r) {
332  return LinIntRel(l,IRT_GR,r);
333  }
334  LinIntRel
335  operator >(const LinIntExpr& l, const IntVar& r) {
336  return LinIntRel(l,IRT_GR,r);
337  }
338  LinIntRel
339  operator >(const LinIntExpr& l, const BoolVar& r) {
340  return LinIntRel(l,IRT_GR,r);
341  }
342  LinIntRel
343  operator >(const LinIntExpr& l, const LinIntExpr& r) {
344  return LinIntRel(l,IRT_GR,r);
345  }
346 
347  LinIntRel
348  operator >=(int l, const IntVar& r) {
349  return LinIntRel(l,IRT_GQ,r);
350  }
351  LinIntRel
352  operator >=(int l, const BoolVar& r) {
353  return LinIntRel(l,IRT_GQ,r);
354  }
355  LinIntRel
356  operator >=(int l, const LinIntExpr& r) {
357  return LinIntRel(l,IRT_GQ,r);
358  }
359  LinIntRel
360  operator >=(const IntVar& l, int r) {
361  return LinIntRel(l,IRT_GQ,r);
362  }
363  LinIntRel
364  operator >=(const BoolVar& l, int r) {
365  return LinIntRel(l,IRT_GQ,r);
366  }
367  LinIntRel
368  operator >=(const LinIntExpr& l, int r) {
369  return LinIntRel(l,IRT_GQ,r);
370  }
371  LinIntRel
372  operator >=(const IntVar& l, const IntVar& r) {
373  return LinIntRel(l,IRT_GQ,r);
374  }
375  LinIntRel
376  operator >=(const IntVar& l, const BoolVar& r) {
377  return LinIntRel(l,IRT_GQ,r);
378  }
379  LinIntRel
380  operator >=(const BoolVar& l, const IntVar& r) {
381  return LinIntRel(l,IRT_GQ,r);
382  }
383  LinIntRel
384  operator >=(const BoolVar& l, const BoolVar& r) {
385  return LinIntRel(l,IRT_GQ,r);
386  }
387  LinIntRel
388  operator >=(const IntVar& l, const LinIntExpr& r) {
389  return LinIntRel(l,IRT_GQ,r);
390  }
391  LinIntRel
392  operator >=(const BoolVar& l, const LinIntExpr& r) {
393  return LinIntRel(l,IRT_GQ,r);
394  }
395  LinIntRel
396  operator >=(const LinIntExpr& l, const IntVar& r) {
397  return LinIntRel(l,IRT_GQ,r);
398  }
399  LinIntRel
400  operator >=(const LinIntExpr& l, const BoolVar& r) {
401  return LinIntRel(l,IRT_GQ,r);
402  }
403  LinIntRel
404  operator >=(const LinIntExpr& l, const LinIntExpr& r) {
405  return LinIntRel(l,IRT_GQ,r);
406  }
407 
408 }
409 
410 // STATISTICS: minimodel-any
bool operator<(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:226
@ IRT_GQ
Greater or equal ( )
Definition: int.hh:930
@ IRT_LE
Less ( )
Definition: int.hh:929
Linear expressions over integer variables.
Definition: minimodel.hh:245
Gecode toplevel namespace
bool operator>(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:260
bool operator>=(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:277
Linear relations over integer variables.
Definition: minimodel.hh:335
Post propagator for SetVar SetOpType SetVar SetRelType r
Definition: set.hh:767
Boolean integer variables.
Definition: int.hh:512
Integer variables.
Definition: int.hh:371
bool operator!=(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:317
bool operator<=(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:243
NNF * l
Left subtree.
Definition: bool-expr.cpp:240
@ IRT_EQ
Equality ( )
Definition: int.hh:926
@ IRT_NQ
Disequality ( )
Definition: int.hh:927
@ IRT_GR
Greater ( )
Definition: int.hh:931
@ IRT_LQ
Less or equal ( )
Definition: int.hh:928
bool operator==(const FloatVal &x, const FloatVal &y)
Definition: val.hpp:294