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 (ab) \(\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 ab

int_ne_reif

predicate int_ne_reif(var int: a, var int: b, var bool: r)
r \(\leftrightarrow\) (ab)

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}}\)

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