120 if (home.
failed())
return;
145 ::
post(home,x0,x1,nr)));
149 ::
post(home,x0,x1,nr)));
153 ::
post(home,x0,x1,nr)));
191 ::
post(home,n0,x1,nr)));
196 ::
post(home,x0,x1,nr)));
200 ::
post(home,x0,x1,nr)));
215 if (home.
failed())
return;
234 ::
post(home,nx,ny)));
309 ::
post(home,nx,ny)));
377 if (home.
failed())
return;
380 for (
int i=x.
size();
i--; ) {
382 ::
post(home,x[
i],y)));
388 for (
int i=x.
size();
i--; ) {
390 ::
post(home,x[
i],n)));
395 for (
int i=x.
size();
i--; ) {
400 for (
int i=x.
size();
i--; ) {
405 for (
int i=x.
size();
i--; ) {
410 for (
int i=x.
size();
i--; ) {
423 if (home.
failed())
return;
428 for (
int i=x.
size();
i--; ) {
434 for (
int i=x.
size();
i--; ) {
449 for (
int i=x.
size();
i--; ) {
455 for (
int i=x.
size();
i--; ) {
513 for (
int i=x.
size();
i--; )
517 for (
int i=x.
size()-1;
i--; )
531 if (home.
failed())
return;
559 for (
int i=x.
size();
i--; ) {
561 ::
post(home,x[
i],y[i])));
579 if (home.
failed())
return;
585 ::
post(home,n0,n1,n2)));
590 ::
post(home,x0,x1,x2)));
596 ::
post(home,n0,x1,x2)));
601 ::
post(home,x0,x1,x2)));
607 ::
post(home,x0,x1,n2)));
619 if (home.
failed())
return;
626 ::
post(home,n0,n1)));
671 ::
post(home,n0,x1)));
695 if (home.
failed())
return;
702 for (
int i=m;
i--; ) {
723 for (
int i=x.
size()-1;
i--; )
728 ::
post(home,b,
a,y)));
734 for (
int i=x.
size();
i--; )
743 for (
int i=x.
size();
i--; )
758 if ((n < 0) || (n > 1))
760 if (home.
failed())
return;
767 for (
int i=m;
i--; ) {
773 for (
int i=m;
i--; ) {
780 for (
int i=m;
i--; ) {
793 for (
int i=m-1;
i--; )
798 for (
int i=x.
size()-1;
i--; )
827 if ((n < 0) || (n > 1))
829 if (home.
failed())
return;
834 for (
int i=x.
size();
i--; ) {
838 xv.unique(home); yv.
unique(home);
840 ::
post(home,xv,yv)));
842 for (
int i=x.
size();
i--; ) {
845 for (
int i=y.
size();
i--; ) {
852 for (
int i=x.
size();
i--; ) {
855 for (
int i=y.
size();
i--; ) {
861 for (
int i=y.
size();
i--; ) {
864 xv.
unique(home); yv.unique(home);
866 ::
post(home,xv,yv)));
878 if (home.
failed())
return;
883 for (
int i=x.
size();
i--; ) {
887 xv.unique(home); yv.
unique(home);
890 ::
post(home,xv,yv,nz)));
897 for (
int i=y.
size();
i--; ) {
900 xv.
unique(home); yv.unique(home);
902 ::
post(home,xv,yv,z)));
914 if (home.
failed())
return;
bool failed(void) const
Check whether corresponding space is failed.
If-then-else bounds-consistent propagator.
IntConLevel
Consistency levels for integer propagators.
Inverse implication for reification.
ReifyMode mode(void) const
Return reification mode.
Boolean clause propagator (disjunctive, true)
void post(Home home, Term *t, int n, FloatRelType frt, FloatVal c)
Post propagator for linear constraint over floats.
BoolVar var(void) const
Return Boolean control variable.
bool one(const Gecode::FloatValArgs &a)
Check whether has only one coefficients.
int size(void) const
Return size of array (number of elements)
BoolOpType
Operation types for Booleans.
Exception: Too few arguments available in argument array
Exception: Unknown operation passed as argument
Lexical disequality propagator.
Boolean clause propagator (disjunctive)
static ExecStatus post(Home home, ViewArray< BoolView > &x, int pm2)
Post propagator .
void unique(const Space &home)
Remove all duplicate views from array (changes element order)
Reified less or equal propagator.
Nary disequality propagator.
Exception: Unknown relation passed as argument
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
n-ary Boolean equality propagator
Boolean equivalence propagator.
IntRelType
Relation types for integers.
Exception: Illegal operation passed as argument
void clause(Home home, BoolOpType o, const BoolVarArgs &x, const BoolVarArgs &y, int n, IntConLevel)
Post domain consistent propagator for Boolean clause with positive variables x and negative variables...
Boolean disjunction propagator.
Reification specification.
Reified binary bounds consistent equality propagator.
Boolean equality propagator.
void ite(Home home, BoolVar b, IntVar x, IntVar y, IntVar z, IntConLevel icl)
Post propagator for if-then-else constraint.
Passing Boolean variables.
Boolean less or equal propagator.
Boolean integer variables.
If-then-else domain-consistent propagator.
Boolean n-ary disjunction propagator (true)
bool one(void) const
Test whether view is assigned to be one.
Nary Boolean less or equal propagator.
Node * x
Pointer to corresponding Boolean expression node.
Lexical ordering propagator.
Boolean n-ary disjunction propagator.
Binary Boolean disjunction propagator (true)
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Exception: Not 0/1 integer
#define GECODE_ME_FAIL(me)
Check whether modification event me is failed, and fail space home.
void fail(void)
Mark space as failed.
Bounds propagation or consistency.
Exception: Unknown reification mode passed as argument
struct Gecode::@518::NNF::@57::@58 b
For binary nodes (and, or, eqv)
Gecode toplevel namespace
Implication for reification.
bool zero(void) const
Test whether view is assigned to be zero.
Home class for posting propagators
Exception: Arguments are of different size
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
struct Gecode::@518::NNF::@57::@59 a
For atomic nodes.
Equivalence for reification (default)
Boolean view for Boolean variables.