44 namespace Gecode {
namespace Set {
namespace RelOp {
46 template<
class View0,
class View1,
class View2>
49 return new (home)
SubOfUnion(home,share,*
this);
52 template<
class View0,
class View1,
class View2>
56 bool allassigned = x0.assigned() && x1.assigned() && x2.assigned();
108 if (m < x0.cardMax()+x1.cardMax()) {
111 x0.cardMax()+x1.cardMax() - m ) );
113 if (m + x2.cardMin() > x1.cardMax()) {
116 m+x2.cardMin()-x1.cardMax() ) );
118 if (m + x2.cardMin() > x0.cardMax()) {
121 m+x2.cardMin()-x0.cardMax() ) );
134 if (x0.assigned() + x1.assigned() + x2.assigned() >= 2) {
143 template<
class View0,
class View1,
class View2>
150 template<
class View0,
class View1,
class View2>
155 View2,PC_SET_ANY>(home,share,
p) {}
157 template<
class View0,
class View1,
class View2>
159 (
Home home, View0 x0, View1 x1, View2 x2) {
bool testSetEventAnyB(ModEvent me0, ModEvent me1, ModEvent me2)
static ExecStatus post(Home home, View0 x, View1 y, View2 z)
Post propagator .
ExecStatus ES_SUBSUMED(Propagator &p)
int ModEvent
Type for modification events.
Range iterator for the greatest lower bound.
Propagation has computed fixpoint.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
#define GECODE_ME_CHECK_MODIFIED(modified, me)
Check whether me is failed or modified, and forward failure.
Range iterator for the least upper bound.
Propagator for the subset of union
int p
Number of positive literals for node type.
Range iterator for computing intersection (binary)
Mixed ternary propagator.
unsigned int size(I &i)
Size of all ranges of range iterator i.
SubOfUnion(Space &home, bool share, SubOfUnion &p)
Constructor for cloning p.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
const Gecode::PropCond PC_SET_ANY
Propagate when any bound or the cardinality of a view changes.
bool shared(View0 v0, View1 v1, View2 v2)
Range iterator for computing union (binary)
SetExpr inter(const SetVarArgs &x)
Intersection of set variables.
union Gecode::@518::NNF::@57 u
Union depending on nodetype t.
bool testSetEventLB(ModEvent me0, ModEvent me1, ModEvent me2)
Propagation has not computed fixpoint.
bool testSetEventCard(ModEvent me0, ModEvent me1, ModEvent me2)
Gecode toplevel namespace
virtual Actor * copy(Space &home, bool)
Copy propagator during cloning.
bool testSetEventUB(ModEvent me0, ModEvent me1, ModEvent me2)
Range iterator for computing set difference.
int ModEventDelta
Modification event deltas.
Home class for posting propagators