Go to the documentation of this file.
36 namespace Gecode {
namespace MiniModel {
86 y = result(home,ret,
x);
95 y = result(home,ret,
a[0].
post(home, ipls));
97 IntVar x0 =
a[0].post(home, ipls);
98 IntVar x1 =
a[1].post(home, ipls);
100 y = result(home,ret,x0);
101 else if (x1.
max() <= x0.
min())
102 y = result(home,ret,x1);
104 y = result(home,ret);
111 y = result(home,ret);
117 y = result(home,ret,
a[0].
post(home, ipls));
119 IntVar x0 =
a[0].post(home, ipls);
120 IntVar x1 =
a[1].post(home, ipls);
122 y = result(home,ret,x1);
123 else if (x1.
max() <= x0.
min())
124 y = result(home,ret,x0);
126 y = result(home,ret);
133 y = result(home,ret);
140 IntVar x0 =
a[0].post(home, ipls);
141 IntVar x1 =
a[1].post(home, ipls);
143 y = result(home,ret,x0);
145 y = result(home,ret,x1);
147 y = result(home,ret,x1);
149 y = result(home,ret,x0);
151 y = result(home,ret);
159 IntVar x0 =
a[0].post(home, ipls);
160 IntVar x1 =
a[1].post(home, ipls);
163 y = result(home,ret,x0);
165 y = result(home,ret,x0);
167 y = result(home,ret);
168 div(home, x0, x1,
y, ipls.
div());
175 IntVar x0 =
a[0].post(home, ipls);
176 IntVar x1 =
a[1].post(home, ipls);
177 y = result(home,ret);
178 mod(home, x0, x1,
y, ipls.
mod());
185 if (
x.
assigned() && ((
x.val() == 0) || (
x.val() == 1)))
186 y = result(home,ret,
x);
188 y = result(home,ret);
197 if (
x.
assigned() && ((
x.val() == 0) || (
x.val() == 1)))
198 y = result(home,ret,
x);
200 y = result(home,ret);
210 ((
x.val() == 0) || (
x.val() == 1)))
211 y = result(home,ret,
x);
213 y = result(home,ret);
223 ((
x.val() == 0) || (
x.val() == 1)))
224 y = result(home,ret,
x);
226 y = result(home,ret);
235 y = result(home,ret,
a[
z.val()].post(home, ipls));
239 for (
int i=
n-1;
i--;) {
240 x[
i] =
a[
i].post(home, ipls);
244 y = result(home,ret);
247 for (
int i=
n-1;
i--;)
260 IntVar x0 =
a[0].post(home, ipls);
261 IntVar x1 =
a[1].post(home, ipls);
262 y = result(home,ret);
263 ite(home,
c, x0, x1,
y, ipls.
ite());
278 rel(home,
x, irt,
c);
280 rel(home,
post(home,
nullptr,ipls), irt,
c);
285 rel(home,
post(home,
nullptr,ipls), irt,
c,
b);
301 using namespace MiniModel;
304 ArithNonLinIntExpr* ae =
312 using namespace MiniModel;
315 n +=
static_cast<ArithNonLinIntExpr*
>(e0.
nle())->
n;
319 n +=
static_cast<ArithNonLinIntExpr*
>(e1.
nle())->
n;
322 ArithNonLinIntExpr* ae =
326 ArithNonLinIntExpr* e0e =
static_cast<ArithNonLinIntExpr*
>(e0.
nle());
327 for (;
i<e0e->n;
i++)
328 ae->a[
i] = e0e->a[
i];
333 ArithNonLinIntExpr* e1e =
static_cast<ArithNonLinIntExpr*
>(e1.
nle());
335 for (;
i<curN+e1e->n;
i++)
336 ae->a[
i] = e1e->a[
i-curN];
345 using namespace MiniModel;
348 n +=
static_cast<ArithNonLinIntExpr*
>(e0.
nle())->
n;
352 n +=
static_cast<ArithNonLinIntExpr*
>(e1.
nle())->
n;
355 ArithNonLinIntExpr* ae =
359 ArithNonLinIntExpr* e0e =
static_cast<ArithNonLinIntExpr*
>(e0.
nle());
360 for (;
i<e0e->n;
i++)
361 ae->a[
i] = e0e->a[
i];
366 ArithNonLinIntExpr* e1e =
static_cast<ArithNonLinIntExpr*
>(e1.
nle());
368 for (;
i<curN+e1e->n;
i++)
369 ae->a[
i] = e1e->a[
i-curN];
378 using namespace MiniModel;
379 ArithNonLinIntExpr* ae =
381 for (
int i=
x.size();
i--;)
388 using namespace MiniModel;
389 ArithNonLinIntExpr* ae =
391 for (
int i=
x.size();
i--;)
398 using namespace MiniModel;
399 ArithNonLinIntExpr* ae =
408 using namespace MiniModel;
409 ArithNonLinIntExpr* ae =
417 using namespace MiniModel;
418 ArithNonLinIntExpr* ae =
426 using namespace MiniModel;
427 ArithNonLinIntExpr* ae =
435 using namespace MiniModel;
436 ArithNonLinIntExpr* ae =
444 using namespace MiniModel;
445 ArithNonLinIntExpr* ae =
454 using namespace MiniModel;
455 ArithNonLinIntExpr* ae =
464 using namespace MiniModel;
465 ArithNonLinIntExpr* ae =
467 for (
int i=
x.size();
i--;)
475 using namespace MiniModel;
476 ArithNonLinIntExpr* ae =
478 for (
int i=
x.size();
i--;)
486 using namespace MiniModel;
487 ArithNonLinIntExpr* ae =
IntPropLevel nroot(void) const
Return integer propagation level for root constraints.
void pow(Home home, FloatVar x0, int n, FloatVar x1)
Post propagator for for $n\geq 0$.
Post propagator for SetVar x
IntRelType
Relation types for integers.
Post propagator for SetVar SetOpType SetVar y
ArithNonLinIntExpr(ArithNonLinIntExprType t0, int n0, int a0)
Constructor.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
@ ANLE_SQR
Square expression.
int max(void) const
Return maximum of domain.
@ IRT_GQ
Greater or equal ( )
IntPropLevel pow(void) const
Return integer propagation level for power constraints.
virtual void post(Home home, IntRelType irt, int c, const IntPropLevels &ipls) const
Post expression to be in relation irt with c.
ArithNonLinIntExprType
The expression type.
Passing integer variables.
NonLinIntExpr * nle(void) const
Return non-linear expression inside, or null if not non-linear.
void element(Home home, IntSharedArray c, IntVar x0, IntVar x1, IntPropLevel)
Post domain consistent propagator for .
@ ANLE_ITE
If-then-else expression.
bool assigned(View x, int v)
Whether x is assigned to value v.
void sqr(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Linear expressions over integer variables.
IntPropLevel mod(void) const
Return integer propagation level for modulo constraints.
virtual void post(Home home, IntRelType irt, int c, BoolVar b, const IntPropLevels &ipls) const
Post reified expression to be in relation irt with c.
int min(void) const
Return minimum of domain.
bool assigned(void) const
Test whether view is assigned.
ArithNonLinIntExpr(ArithNonLinIntExprType t0, int n0, const BoolExpr &b0)
Constructor.
int aInt
Integer argument (used in nroot for example)
~ArithNonLinIntExpr(void)
Destructor.
@ ANLE_MAX
Maximum expression.
Class for specifying integer propagation levels used by minimodel.
LinIntExpr operator%(const LinIntExpr &e0, const LinIntExpr &e1)
Return expression for .
@ ANLE_MOD
Modulo expression.
void div(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Gecode toplevel namespace
virtual IntVar post(Home home, IntVar *ret, const IntPropLevels &ipls) const
Post expression.
@ ANLE_ABS
Absolute value expression.
IntPropLevel abs(void) const
Return integer propagation level for absolute value constraints.
IntPropLevel sqrt(void) const
Return integer propagation level for square root constraints.
FloatVal operator*(const FloatVal &x, const FloatVal &y)
IntPropLevel max2(void) const
Return integer propagation level for binary maximum constraints.
void nroot(Home home, FloatVar x0, int n, FloatVar x1)
Post propagator for for $n\geq 0$.
Home class for posting propagators
void sqrt(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
Boolean integer variables.
@ ANLE_ELMNT
Element expression.
Base class for non-linear expressions over integer variables.
TFE post(PropagatorGroup g)
Only post functions (but not propagators) from g are considered.
IntPropLevel mult(void) const
Return integer propagation level for multiplication constraints.
Non-linear arithmetic expressions over integer variables.
struct Gecode::@602::NNF::@65::@66 b
For binary nodes (and, or, eqv)
void mult(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
FloatVal operator/(const FloatVal &x, const FloatVal &y)
IntPropLevel max(void) const
Return integer propagation level for non-binary maximum constraints.
IntPropLevel div(void) const
Return integer propagation level for division constraints.
#define GECODE_NEVER
Assert that this command is never executed.
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
void abs(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
Heap heap
The single global heap.
IntPropLevel ite(void) const
Return integer propagation level for if-then-else constraints.
IntPropLevel min(void) const
Return integer propagation level for non-binary minimum constraints.
@ ANLE_SQRT
Square root expression.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
LinIntExpr * a
Expressions.
void mod(Home home, IntVar x0, IntVar x1, IntVar x2, IntPropLevel ipl)
Post propagator for .
IntPropLevel min2(void) const
Return integer propagation level for binary minimum constraints.
void free(T *b, long unsigned int n)
Delete n objects starting at b.
#define GECODE_MINIMODEL_EXPORT
@ ANLE_POW
Pow expression.
BoolExpr b
Boolean expression argument (used in ite for example)
bool hasType(const LinFloatExpr &e, ArithNonLinFloatExpr::ArithNonLinFloatExprType t)
Check if e is of type t.
int val(void) const
Return assigned value.
ArithNonLinIntExpr(ArithNonLinIntExprType t0, int n0)
Constructor.
void ite(Home home, BoolVar b, FloatVar x, FloatVar y, FloatVar z)
Post propagator for if-then-else constraint.
@ ANLE_DIV
Division expression.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
IntPropLevel sqr(void) const
Return integer propagation level for square constraints.
Gecode::FloatVal c(-8, 8)
@ ANLE_MULT
Multiplication expression.
IntPropLevel element(void) const
Return integer propagation level for element constraints.
int n
Number of negative literals for node type.
@ ANLE_MIN
Minimum expression.
Passing integer arguments.
Gecode::IntArgs i({1, 2, 3, 4})
int n
Size of variable array.
@ ANLE_NROOT
Nroot expression.
@ IRT_LQ
Less or equal ( )