4.2.3.3. Set FlatZinc builtins
In this section: array_set_element, array_var_set_element, set_card, set_diff, set_eq, set_eq_reif, set_in, set_in_reif, set_intersect, set_le, set_le_reif, set_lt, set_lt_reif, set_ne, set_ne_reif, set_subset, set_subset_reif, set_superset, set_superset_reif, set_symdiff, set_union.
array_set_element
predicate array_set_element(var int: b,
array [int] of set of int: as,
var set of int: c)
|
Constrains as[b] = c |
array_var_set_element
predicate array_var_set_element(var int: b,
array [int] of var set of int: as,
var set of int: c)
|
Constrains as[b] = c |
set_card
predicate set_card(var set of int: S, var int: x)
|
Constrains x = |S| |
set_diff
predicate set_diff(var set of int: x,
var set of int: y,
var set of int: r)
|
Constrains r = x \(\setminus\) y |
set_eq
predicate set_eq(var set of int: x, var set of int: y)
|
Constrains x = y |
set_eq_reif
predicate set_eq_reif(var set of int: x,
var set of int: y,
var bool: r)
|
Constrains r \(\leftrightarrow\) (x = y) |
set_in
predicate set_in(var int: x, var set of int: S)
|
Constrains x \(\in\) S |
set_in_reif
predicate set_in_reif(var int: x, set of int: S, var bool: r)
predicate set_in_reif(var int: x, var set of int: S, var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf x} \in {\bf S})\) |
set_intersect
predicate set_intersect(var set of int: x,
var set of int: y,
var set of int: r)
|
Constrains r = x \(\cap\) y |
set_le
predicate set_le(var set of int: x, var set of int: y)
|
Constrains x ≤ y (lexicographic order of the sorted lists of elements) |
set_le_reif
predicate set_le_reif(var set of int: x,
var set of int: y,
var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf x} \leq {\bf y})\) (lexicographic order of the sorted lists of elements) |
set_lt
predicate set_lt(var set of int: x, var set of int: y)
|
Constrains x < y (lexicographic order of the sorted lists of elements) |
set_lt_reif
predicate set_lt_reif(var set of int: x,
var set of int: y,
var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf x} < {\bf y})\) (lexicographic order of the sorted lists of elements) |
set_ne
predicate set_ne(var set of int: x, var set of int: y)
|
Constrains x ≠ y |
set_ne_reif
predicate set_ne_reif(var set of int: x,
var set of int: y,
var bool: r)
|
Constrains r \(\leftrightarrow\) (x ≠ y) |
set_subset
predicate set_subset(var set of int: x, var set of int: y)
|
Constrains x \(\subseteq\) y |
set_subset_reif
predicate set_subset_reif(var set of int: x,
var set of int: y,
var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf x} \subseteq {\bf y})\) |
set_superset
predicate set_superset(var set of int: x, var set of int: y)
|
Constrains x \(\supseteq\) y |
set_superset_reif
predicate set_superset_reif(var set of int: x,
var set of int: y,
var bool: r)
|
Constrains \({\bf r} \leftrightarrow ({\bf x} \subseteq {\bf y})\) |
set_symdiff
predicate set_symdiff(var set of int: x,
var set of int: y,
var set of int: r)
|
Constrains r to be the symmetric difference of x and y |
set_union
predicate set_union(var set of int: x,
var set of int: y,
var set of int: r)
|
Constrains r = x \(\cup\) y |