55 if ((
x0 !=
x1) && (
x0.max() >
x1.min()))
68 return new (home)
Lq<View>(home,*
this);
94 if (
x0.assigned() &&
x1.assigned()) {
95 if (
x0.max() >=
x1.min())
99 if (
x0.max() >=
x1.min())
112 return new (home)
Le<View>(home,*
this);
120 if (
x0.assigned() &&
x1.assigned()) {
134 template<
class View,
class CtrlView, ReifyMode rm>
139 template<
class View,
class CtrlView, ReifyMode rm>
163 if (!
x0.assigned() || !
x1.assigned())
172 }
else if (rm !=
RM_IMP) {
178 template<
class View,
class CtrlView, ReifyMode rm>
183 template<
class View,
class CtrlView, ReifyMode rm>
189 template<
class View,
class CtrlView, ReifyMode rm>
195 }
else if (
b.zero()) {
209 if (!
x0.assigned() || !
x1.assigned())
227 template<
class View,
class CtrlView, ReifyMode rm>
232 template<
class View,
class CtrlView, ReifyMode rm>
241 if (
x.assigned() && (
x.min() <=
c.max()))
265 template<
class View,
class CtrlView, ReifyMode rm>
270 template<
class View,
class CtrlView, ReifyMode rm>
276 template<
class View,
class CtrlView, ReifyMode rm>
282 }
else if (
b.zero()) {
314 template<
class View,
class CtrlView, ReifyMode rm>
319 template<
class View,
class CtrlView, ReifyMode rm>
326 if (
x.assigned() && (
x.max() >=
c.min()))
330 }
else if (
b.zero()) {
353 template<
class View,
class CtrlView, ReifyMode rm>
358 template<
class View,
class CtrlView, ReifyMode rm>
364 template<
class View,
class CtrlView, ReifyMode rm>
375 }
else if (
b.zero()) {
Base-class for both propagators and branchers.
BinaryPropagator(Space &home, BinaryPropagator &p)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View x0, View x1)
Post propagator .
Le(Space &home, Le &p)
Constructor for cloning p.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Less or equal propagator.
Lq(Space &home, Lq &p)
Constructor for cloning p.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
static ExecStatus post(Home home, View x0, View x1)
Post propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View x, FloatVal c, CtrlView b)
Post propagator for .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
ReLeFloat(Space &home, ReLeFloat &p)
Constructor for cloning p.
FloatVal c
Float constant to check.
FloatVal c
Float constant to check.
static ExecStatus post(Home home, View x, FloatVal c, CtrlView b)
Post propagator for .
ReLqFloat(Space &home, ReLqFloat &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
ReLq(Space &home, ReLq &p)
Constructor for cloning p.
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post propagator for .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Home class for posting propagators
ReBinaryPropagator(Space &home, ReBinaryPropagator &p)
ReUnaryPropagator(Space &home, ReUnaryPropagator &p)
ExecStatus ES_SUBSUMED(Propagator &p)
Propagator p is subsumed
int ModEventDelta
Modification event deltas.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
@ RM_IMP
Implication for reification.
@ RM_PMI
Inverse implication for reification.
Simple relation propagators.
@ RT_TRUE
Relation does hold.
@ RT_FALSE
Relation does not hold.
@ RT_MAYBE
Relation may hold or not.
RelTest rtest_le(View x, View y)
Test whether view x is less than view y.
RelTest rtest_lq(View x, View y)
Test whether view x is less or equal than view y.
const Gecode::PropCond PC_FLOAT_BND
Propagate when minimum or maximum of a view changes.
Gecode toplevel namespace
@ ES_OK
Execution is okay.
@ ES_FIX
Propagation has computed fixpoint.
@ ES_FAILED
Execution has resulted in failure.
Post propagator for SetVar x
#define GECODE_NEVER
Assert that this command is never executed.