Generated on Sat Apr 10 2021 00:00:00 for Gecode by doxygen 1.9.1
rel.hh
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  * Guido Tack <tack@gecode.org>
6  *
7  * Contributing authors:
8  * Gabor Szokoli <szokoli@gecode.org>
9  *
10  * Copyright:
11  * Christian Schulte, 2002
12  * Guido Tack, 2004
13  * Gabor Szokoli, 2003
14  *
15  * This file is part of Gecode, the generic constraint
16  * development environment:
17  * http://www.gecode.org
18  *
19  * Permission is hereby granted, free of charge, to any person obtaining
20  * a copy of this software and associated documentation files (the
21  * "Software"), to deal in the Software without restriction, including
22  * without limitation the rights to use, copy, modify, merge, publish,
23  * distribute, sublicense, and/or sell copies of the Software, and to
24  * permit persons to whom the Software is furnished to do so, subject to
25  * the following conditions:
26  *
27  * The above copyright notice and this permission notice shall be
28  * included in all copies or substantial portions of the Software.
29  *
30  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37  *
38  */
39 
40 #ifndef __GECODE_INT_REL_HH__
41 #define __GECODE_INT_REL_HH__
42 
43 #include <gecode/int.hh>
44 
50 namespace Gecode { namespace Int { namespace Rel {
51 
52  /*
53  * Equality propagators
54  *
55  */
56 
66  template<class View0,class View1>
67  class EqDom :
68  public MixBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM> {
69  protected:
72 
75  public:
77  EqDom(Home home, View0 x0, View1 x1);
79  EqDom(Space& home, Propagator& p, View0 x0, View1 x1);
81  virtual Actor* copy(Space& home);
89  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
91  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
93  static ExecStatus post(Home home, View0 x0, View1 x1);
94  };
95 
102  template<class View0, class View1>
103  class EqVal :
104  public MixBinaryPropagator<View0,PC_INT_VAL,View1,PC_INT_VAL> {
105  protected:
108 
110  EqVal(Space& home, EqVal<View0,View1>& p);
111  public:
113  EqVal(Home home, View0 x0, View1 x1);
115  EqVal(Space& home, Propagator& p, View0 x0, View1 x1);
117  virtual Actor* copy(Space& home);
119  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
121  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
123  static ExecStatus post(Home home, View0 x0, View1 x1);
124  };
125 
132  template<class View0, class View1>
133  class EqBnd :
134  public MixBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND> {
135  protected:
138 
140  EqBnd(Space& home, EqBnd<View0,View1>& p);
141  public:
143  EqBnd(Home home, View0 x0, View1 x1);
145  EqBnd(Space& home, Propagator& p, View0 x0, View1 x1);
147  virtual Actor* copy(Space& home);
149  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
151  static ExecStatus post(Home home, View0 x0, View1 x1);
152  };
153 
163  template<class View>
164  class NaryEqDom : public NaryPropagator<View,PC_INT_DOM> {
165  protected:
167 
169  NaryEqDom(Space& home, NaryEqDom<View>& p);
172  public:
174  virtual Actor* copy(Space& home);
182  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
184  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
186  static ExecStatus post(Home home, ViewArray<View>& x);
187  };
188 
195  template<class View>
196  class NaryEqBnd : public NaryPropagator<View,PC_INT_BND> {
197  protected:
199 
201  NaryEqBnd(Space& home, NaryEqBnd<View>& p);
204  public:
206  virtual Actor* copy(Space& home);
213  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
215  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
217  static ExecStatus post(Home home, ViewArray<View>& x);
218  };
219 
229  template<class View, int o>
230  class NaryLqLe : public NaryPropagator<View,PC_INT_NONE> {
231  protected:
234  class Index : public Advisor {
235  public:
237  int i;
239  Index(Space& home, Propagator& p, Council<Index>& c, int i);
241  Index(Space& home, Index& a);
242  };
246  class Pos : public FreeList {
247  public:
249  int p;
250 
252 
253  Pos(int p, Pos* n);
256 
258 
259  Pos* next(void) const;
262 
264 
265  void dispose(Space& home);
267 
269  static void* operator new(size_t s, Space& home);
271  static void operator delete(void* p);
273  static void operator delete(void* p, Space& home);
275  };
279  bool empty(void) const;
281  int pop(Space& home);
283  void push(Space& home, int p);
285  bool run;
289  static const int n_threshold = 7;
291  NaryLqLe(Space& home, NaryLqLe<View,o>& p);
293  NaryLqLe(Home home, ViewArray<View>&);
294  public:
296  virtual Actor* copy(Space& home);
298  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
300  virtual void reschedule(Space& home);
302  virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
304  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
306  virtual size_t dispose(Space& home);
308  static ExecStatus post(Home home, ViewArray<View>& x);
309  };
310 
317  template<class View>
318  class NaryNq : public NaryPropagator<View,PC_INT_VAL> {
319  protected:
322  NaryNq(Home home, ViewArray<View>& x);
324  NaryNq(Space& home, NaryNq<View>& p);
325  public:
327  virtual Actor* copy(Space& home);
329  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
331  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
333  static ExecStatus post(Home home, ViewArray<View>& x);
335  virtual size_t dispose(Space& home);
336  };
337 
338 
345  template<class View, class CtrlView, ReifyMode rm>
346  class ReEqDom : public ReBinaryPropagator<View,PC_INT_DOM,CtrlView> {
347  protected:
351 
353  ReEqDom(Space& home, ReEqDom& p);
355  ReEqDom(Home home, View x0, View x1, CtrlView b);
356  public:
358  virtual Actor* copy(Space& home);
360  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
362  static ExecStatus post(Home home, View x0, View x1, CtrlView b);
363  };
364 
371  template<class View, class CtrlView, ReifyMode rm>
372  class ReEqBnd : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
373  protected:
377 
379  ReEqBnd(Space& home, ReEqBnd& p);
381  ReEqBnd(Home home, View x0, View x1, CtrlView b);
382  public:
384  virtual Actor* copy(Space& home);
386  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
388  static ExecStatus post(Home home, View x0, View x1, CtrlView b);
389  };
390 
397  template<class View, class CtrlView, ReifyMode rm>
398  class ReEqDomInt : public ReUnaryPropagator<View,PC_INT_DOM,CtrlView> {
399  protected:
402 
404  int c;
406  ReEqDomInt(Space& home, ReEqDomInt& p);
408  ReEqDomInt(Home home, View x, int c, CtrlView b);
409  public:
411  virtual Actor* copy(Space& home);
413  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
415  static ExecStatus post(Home home, View x, int c, CtrlView b);
416  };
417 
424  template<class View, class CtrlView, ReifyMode rm>
425  class ReEqBndInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
426  protected:
429 
431  int c;
433  ReEqBndInt(Space& home, ReEqBndInt& p);
435  ReEqBndInt(Home home, View x, int c, CtrlView b);
436  public:
438  virtual Actor* copy(Space& home);
440  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
442  static ExecStatus post(Home home, View x, int c, CtrlView b);
443  };
444 
445 
446 
447 
448  /*
449  * Disequality propagators
450  *
451  */
452 
459  template<class V0, class V1>
460  class Nq : public MixBinaryPropagator<V0,PC_INT_VAL,V1,PC_INT_VAL> {
461  protected:
464 
466  Nq(Space& home, Nq<V0,V1>& p);
468  Nq(Home home, V0 x0, V1 x1);
469  public:
471  virtual Actor* copy(Space& home);
473  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
475  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
477  static ExecStatus post(Home home, V0 x0, V1 x1);
478  };
479 
480  /*
481  * Order propagators
482  *
483  */
484 
492  template<class V0, class V1>
493  class Lq : public MixBinaryPropagator<V0,PC_INT_BND,V1,PC_INT_BND> {
494  protected:
498  Lq(Space& home, Lq& p);
500  Lq(Home home, V0 x0, V1 x1);
501  public:
503  virtual Actor* copy(Space& home);
505  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
507  static ExecStatus post(Home home, V0 x0, V1 x1);
508  };
509 
516  template<class V0, class V1>
517  class Le : public MixBinaryPropagator<V0,PC_INT_BND,V1,PC_INT_BND> {
518  protected:
522  Le(Space& home, Le& p);
524  Le(Home home, V0 x0, V1 x1);
525  public:
527  virtual Actor* copy(Space& home);
529  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
531  static ExecStatus post(Home home, V0 x0, V1 x1);
532  };
533 
534 
535  /*
536  * Reified order propagators
537  *
538  */
539 
547  template<class View, class CtrlView, ReifyMode rm>
548  class ReLq : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
549  protected:
553 
555  ReLq(Space& home, ReLq& p);
557  ReLq(Home home, View x0, View x1, CtrlView b);
558  public:
560  virtual Actor* copy(Space& home);
562  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
564  static ExecStatus post(Home home, View x0, View x1, CtrlView b);
565  };
566 
574  template<class View, class CtrlView, ReifyMode rm>
575  class ReLqInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
576  protected:
579 
581  int c;
583  ReLqInt(Space& home, ReLqInt& p);
585  ReLqInt(Home home, View x, int c, CtrlView b);
586  public:
588  virtual Actor* copy(Space& home);
590  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
592  static ExecStatus post(Home home, View x, int c, CtrlView b);
593  };
594 
595 
596 
597 
598 
622  template<class VX, class VY>
623  class LexLqLe : public Propagator {
624  protected:
629  bool strict;
631  LexLqLe(Space& home, LexLqLe<VX,VY>& p);
633  LexLqLe(Home home, ViewArray<VX>& x, ViewArray<VY>& y, bool strict);
634  public:
636  virtual Actor* copy(Space& home);
638  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
640  virtual void reschedule(Space& home);
642  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
645  bool strict);
647  virtual size_t dispose(Space& home);
648  };
649 
656  template<class VX, class VY>
657  class LexNq : public Propagator {
658  protected:
660  VX x0;
662  VY y0;
664  VX x1;
666  VY y1;
673  RelTest rt, VX& x0, VY& y0, VX x1, VY y1);
677  LexNq(Space& home, LexNq<VX,VY>& p);
678  public:
680  virtual Actor* copy(Space& home);
682  virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
684  virtual void reschedule(Space& home);
686  virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
688  static ExecStatus post(Home home, ViewArray<VX>& x, ViewArray<VY>& y);
690  virtual size_t dispose(Space& home);
691  };
692 
693 }}}
694 
695 #include <gecode/int/rel/eq.hpp>
696 #include <gecode/int/rel/nq.hpp>
697 #include <gecode/int/rel/lq-le.hpp>
698 #include <gecode/int/rel/lex.hpp>
699 
700 #endif
701 
702 
703 // STATISTICS: int-prop
704 
int p
Number of positive literals for node type.
Definition: bool-expr.cpp:232
int n
Number of negative literals for node type.
Definition: bool-expr.cpp:234
Node * x
Pointer to corresponding Boolean expression node.
Definition: bool-expr.cpp:249
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
Base-class for both propagators and branchers.
Definition: core.hpp:628
Base-class for advisors.
Definition: core.hpp:1292
Council of advisors
Definition: core.hpp:1241
Generic domain change information to be supplied to advisors.
Definition: core.hpp:204
Base-class for freelist-managed objects.
Definition: manager.hpp:98
Home class for posting propagators
Definition: core.hpp:856
Reified binary propagator.
Definition: propagator.hpp:87
Reified unary propagator.
Definition: propagator.hpp:54
Binary bounds consistent equality propagator.
Definition: rel.hh:134
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:137
EqBnd(Space &home, EqBnd< View0, View1 > &p)
Constructor for cloning p.
Definition: eq.hpp:125
static ExecStatus post(Home home, View0 x0, View1 x1)
Post bounds consistent propagator .
Definition: eq.hpp:108
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:143
Binary domain consistent equality propagator.
Definition: rel.hh:68
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:206
static ExecStatus post(Home home, View0 x0, View1 x1)
Post domain consistent propagator .
Definition: eq.hpp:176
EqDom(Space &home, EqDom< View0, View1 > &p)
Constructor for cloning p.
Definition: eq.hpp:194
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition: eq.hpp:212
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:223
Binary value propagation equality propagator.
Definition: rel.hh:104
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function: low unary.
Definition: eq.hpp:79
static ExecStatus post(Home home, View0 x0, View1 x1)
Post value propagation propagator .
Definition: eq.hpp:48
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:73
EqVal(Space &home, EqVal< View0, View1 > &p)
Constructor for cloning p.
Definition: eq.hpp:61
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:85
Less propagator.
Definition: rel.hh:517
Le(Space &home, Le &p)
Constructor for cloning p.
Definition: lq-le.hpp:103
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lq-le.hpp:108
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lq-le.hpp:114
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
Definition: lq-le.hpp:91
Lexical ordering propagator.
Definition: rel.hh:623
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition: lex.hpp:77
ViewArray< VY > y
Definition: rel.hh:627
ViewArray< VX > x
View arrays.
Definition: rel.hh:626
static ExecStatus post(Home home, ViewArray< VX > &x, ViewArray< VY > &y, bool strict)
Post propagator for lexical order between x and y.
Definition: lex.hpp:241
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
Definition: lex.hpp:64
LexLqLe(Space &home, LexLqLe< VX, VY > &p)
Constructor for cloning p.
Definition: lex.hpp:50
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lex.hpp:87
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lex.hpp:58
virtual void reschedule(Space &home)
Schedule function.
Definition: lex.hpp:70
bool strict
Determines whether propagator is strict or not.
Definition: rel.hh:629
Lexical disequality propagator.
Definition: rel.hh:657
VY y0
View currently subscribed to.
Definition: rel.hh:662
ExecStatus resubscribe(Space &home, RelTest rt, VX &x0, VY &y0, VX x1, VY y1)
Update subscription.
Definition: lex.hpp:376
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition: lex.hpp:367
VX x0
View currently subscribed to.
Definition: rel.hh:660
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lex.hpp:305
virtual void reschedule(Space &home)
Schedule function.
Definition: lex.hpp:287
VX x1
View currently subscribed to.
Definition: rel.hh:664
ViewArray< VX > x
Views not yet subscribed to.
Definition: rel.hh:668
LexNq(Home home, ViewArray< VX > &x, ViewArray< VY > &y)
Constructor for posting.
Definition: lex.hpp:266
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lex.hpp:409
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition: lex.hpp:281
VY y1
View currently subscribed to.
Definition: rel.hh:666
static ExecStatus post(Home home, ViewArray< VX > &x, ViewArray< VY > &y)
Post propagator .
Definition: lex.hpp:332
ViewArray< VY > y
Views not yet subscribed to.
Definition: rel.hh:670
Less or equal propagator.
Definition: rel.hh:493
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lq-le.hpp:71
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
Definition: lq-le.hpp:50
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lq-le.hpp:65
Lq(Space &home, Lq &p)
Constructor for cloning p.
Definition: lq-le.hpp:60
n-ary bounds consistent equality propagator
Definition: rel.hh:196
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:429
static ExecStatus post(Home home, ViewArray< View > &x)
Post bounds consistent propagator .
Definition: eq.hpp:402
NaryEqBnd(Space &home, NaryEqBnd< View > &p)
Constructor for cloning p.
Definition: eq.hpp:424
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:444
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition: eq.hpp:435
n-ary domain consistent equality propagator
Definition: rel.hh:164
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:313
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition: eq.hpp:303
NaryEqDom(Space &home, NaryEqDom< View > &p)
Constructor for cloning p.
Definition: eq.hpp:292
static ExecStatus post(Home home, ViewArray< View > &x)
Post domain consistent propagator .
Definition: eq.hpp:270
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:297
Advisors for views (by position in array)
Definition: rel.hh:234
Index(Space &home, Propagator &p, Council< Index > &c, int i)
Create index advisor.
Definition: lq-le.hpp:129
int i
The position of the view in the view array.
Definition: rel.hh:237
Positions in view array that have to be propagated.
Definition: rel.hh:246
int p
Position of view in view array.
Definition: rel.hh:249
Pos(int p, Pos *n)
Initialize with position p and next position n.
Definition: lq-le.hpp:142
void dispose(Space &home)
Free memory for this position.
Definition: lq-le.hpp:169
Pos * next(void) const
Return next position.
Definition: lq-le.hpp:147
n-ary less and less or equal propagator
Definition: rel.hh:230
bool empty(void) const
Whether no more positions must be propagated.
Definition: lq-le.hpp:176
void push(Space &home, int p)
Push a new position p to be propagated.
Definition: lq-le.hpp:181
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lq-le.hpp:291
Council< Index > c
The advisor council.
Definition: rel.hh:244
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition: lq-le.hpp:323
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition: lq-le.hpp:317
static const int n_threshold
Compact during cloning when more advisors than that are subsumed.
Definition: rel.hh:289
bool run
Whether the propagator is currently running.
Definition: rel.hh:285
int n_subsumed
Number of already subsumed advisors (or views)
Definition: rel.hh:287
virtual void reschedule(Space &home)
Schedule function.
Definition: lq-le.hpp:368
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for .
Definition: lq-le.hpp:208
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Give advice to propagator.
Definition: lq-le.hpp:336
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lq-le.hpp:374
NaryLqLe(Space &home, NaryLqLe< View, o > &p)
Constructor for cloning p.
Definition: lq-le.hpp:282
Pos * pos
Stack of positions.
Definition: rel.hh:277
int pop(Space &home)
Pop a position to be propagated and return it.
Definition: lq-le.hpp:189
Nary disequality propagator.
Definition: rel.hh:318
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition: nq.hpp:151
NaryNq(Home home, ViewArray< View > &x)
Constructor for posting.
Definition: nq.hpp:96
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator .
Definition: nq.hpp:118
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: nq.hpp:112
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: nq.hpp:158
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition: nq.hpp:101
Binary disequality propagator.
Definition: rel.hh:460
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low unary)
Definition: nq.hpp:75
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: nq.hpp:81
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
Definition: nq.hpp:49
Nq(Space &home, Nq< V0, V1 > &p)
Constructor for cloning p.
Definition: nq.hpp:64
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: nq.hpp:69
Reified bounds consistent equality with integer propagator.
Definition: rel.hh:425
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:751
int c
Integer constant to check.
Definition: rel.hh:431
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post bounds consistent propagator .
Definition: eq.hpp:721
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:757
ReEqBndInt(Space &home, ReEqBndInt &p)
Constructor for cloning p.
Definition: eq.hpp:746
Reified binary bounds consistent equality propagator.
Definition: rel.hh:372
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:601
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post bounds consistent propagator .
Definition: eq.hpp:568
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:595
ReEqBnd(Space &home, ReEqBnd &p)
Constructor for cloning p.
Definition: eq.hpp:590
Reified domain consistent equality with integer propagator.
Definition: rel.hh:398
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:680
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:674
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post domain consistent propagator .
Definition: eq.hpp:644
ReEqDomInt(Space &home, ReEqDomInt &p)
Constructor for cloning p.
Definition: eq.hpp:669
int c
Integer constant to check.
Definition: rel.hh:404
Reified binary domain consistent equality propagator.
Definition: rel.hh:346
ReEqDom(Space &home, ReEqDom &p)
Constructor for cloning p.
Definition: eq.hpp:516
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post domain consistent propagator .
Definition: eq.hpp:494
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: eq.hpp:527
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: eq.hpp:521
Reified less or equal with integer propagator.
Definition: rel.hh:575
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lq-le.hpp:542
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lq-le.hpp:536
ReLqInt(Space &home, ReLqInt &p)
Constructor for cloning p.
Definition: lq-le.hpp:531
int c
Integer constant to check.
Definition: rel.hh:581
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post propagator for .
Definition: lq-le.hpp:502
Reified less or equal propagator.
Definition: rel.hh:548
ReLq(Space &home, ReLq &p)
Constructor for cloning p.
Definition: lq-le.hpp:454
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post propagator for .
Definition: lq-le.hpp:420
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition: lq-le.hpp:459
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition: lq-le.hpp:465
Mixed binary propagator.
Definition: pattern.hpp:204
n-ary propagator
Definition: pattern.hpp:142
ViewArray< View > x
Array of views.
Definition: pattern.hpp:145
Propagation cost.
Definition: core.hpp:486
Base-class for propagators.
Definition: core.hpp:1064
ModEventDelta med
A set of modification events (used during propagation)
Definition: core.hpp:1075
Computation spaces.
Definition: core.hpp:1742
View arrays.
Definition: array.hpp:253
ExecStatus
Definition: core.hpp:472
int ModEventDelta
Modification event deltas.
Definition: core.hpp:89
RelTest
Result of testing relation.
Definition: view.hpp:1734
Gecode::IntSet d(v, 7)