4.2.3.1. Integer FlatZinc builtins
In this section: array_int_element, array_int_maximum, array_int_minimum, array_var_int_element, int_abs, int_div, int_eq, int_eq_reif, int_le, int_le_reif, int_lin_eq, int_lin_eq_reif, int_lin_le, int_lin_le_reif, int_lin_ne, int_lin_ne_reif, int_lt, int_lt_reif, int_max, int_min, int_mod, int_ne, int_ne_reif, int_plus, int_pow, int_times, set_in.
array_int_element
predicate array_int_element(var int: b,
array [int] of int: as,
var int: c)
|
Constrains as[b] = c |
array_int_maximum
predicate array_int_maximum(var int: m, array [int] of var int: x)
|
Constrains m to be the maximum value of the (non-empty)
array x |
array_int_minimum
predicate array_int_minimum(var int: m, array [int] of var int: x)
|
Constrains m to be the minimum value of the (non-empty)
array x |
array_var_int_element
predicate array_var_int_element(var int: b,
array [int] of var int: as,
var int: c)
|
Constrains as[b] = c |
int_abs
predicate int_abs(var int: a, var int: b)
|
Constrains b to be the absolute value of a |
int_div
predicate int_div(var int: a, var int: b, var int: c)
|
Constrains a / b = c |
int_eq
predicate int_eq(var int: a, var int: b)
|
Constrains a to be equal to b |
int_eq_reif
predicate int_eq_reif(var int: a, var int: b, var bool: r)
|
Constrains (a=b) \(\leftrightarrow\) r |
int_le
predicate int_le(var int: a, var int: b)
|
Constrains a to be less than or equal to b |
int_le_reif
predicate int_le_reif(var int: a, var int: b, var bool: r)
|
Constrains (a ≤ b) \(\leftrightarrow\) r |
int_lin_eq
predicate int_lin_eq(array [int] of int: as,
array [int] of var int: bs,
int: c)
|
Constrains \({\bf c} = \sum_i {\bf as}[i]*{\bf bs}[i]\) |
int_lin_eq_reif
predicate int_lin_eq_reif(array [int] of int: as,
array [int] of var int: bs,
int: c,
var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf c} = \sum_i {\bf as}[i]*{\bf bs}[i])\) |
int_lin_le
predicate int_lin_le(array [int] of int: as,
array [int] of var int: bs,
int: c)
|
Constrains \(\sum\) as[i]*bs[i] ≤ c |
int_lin_le_reif
predicate int_lin_le_reif(array [int] of int: as,
array [int] of var int: bs,
int: c,
var bool: r)
|
Constrains r \(\leftrightarrow\) (\(\sum\) as[i]*bs[i] ≤ c) |
int_lin_ne
predicate int_lin_ne(array [int] of int: as,
array [int] of var int: bs,
int: c)
|
Constrains \({\bf c} \neq \sum_i {\bf as}[i]*{\bf bs}[i]\) |
int_lin_ne_reif
predicate int_lin_ne_reif(array [int] of int: as,
array [int] of var int: bs,
int: c,
var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf c} \neq \sum_i {\bf as}[i]*{\bf bs}[i])\) |
int_lt
predicate int_lt(var int: a, var int: b)
|
Constrains a < b |
int_lt_reif
predicate int_lt_reif(var int: a, var int: b, var bool: r)
|
Constrains r \(\leftrightarrow\) (a < b) |
int_max
predicate int_max(var int: a, var int: b, var int: c)
|
Constrains max(a, b) = c |
int_min
predicate int_min(var int: a, var int: b, var int: c)
|
Constrains min(a, b) = c |
int_mod
predicate int_mod(var int: a, var int: b, var int: c)
|
Constrains a % b = c |
int_ne
predicate int_ne(var int: a, var int: b)
|
Constrains a ≠ b |
int_ne_reif
predicate int_ne_reif(var int: a, var int: b, var bool: r)
|
r \(\leftrightarrow\) (a ≠ b) |
int_plus
predicate int_plus(var int: a, var int: b, var int: c)
|
Constrains a + b = c |
int_pow
predicate int_pow(var int: x, var int: y, var int: z)
|
Constrains z = \({\bf x} ^ {{\bf y}}\), {bf z} is constrained to 1 div pow(x, abs(y)) when \({\bf y} < 0\) |
int_times
predicate int_times(var int: a, var int: b, var int: c)
|
Constrains a * b = c |
set_in
predicate set_in(var int: x, set of int: S)
|
Constrains x \(\in\) S |