# 5 Finite Domain Constraints: `FD`

The procedures in this module have the following properties.

Each of their applications creates a new thread except for basic constraints which may block.

Most of the propagators perform interval propagation. Only some do domain propagation (i. e. cut holes into domains).

Equality between variables is exploited, except for some non-linear propagators. For example, `A+A=:B` is equivalent to `2*A=:B` (for notation see sec.infix-ps).

The constraint store is amplified with constraints `X::Spec` and equality between variables, e. g., `X=:Y` is equivalent to `X=Y`.

relation symbols

There are generic procedures who take an atomic argument `A` to denote an arithmetic relation . The possible atoms and the associated relations are summarized below.

`A` | `'=:'` | `'>:'` | `'>=:'` | `'<:'` | `'=<:'` | `'\\=:'`