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.
struct Gecode::@519::NNF::@60::@62 a
For atomic nodes.
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.
struct Gecode::@519::NNF::@60::@61 b
For binary nodes (and, or, eqv)
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
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.
Equivalence for reification (default)
Boolean view for Boolean variables.