### 2.2.1. Basic data types

We provide the following basic data types:

• $\mathrm{𝚊𝚝𝚘𝚖}$ corresponds to an atom. Predefined atoms are $\mathrm{𝙼𝙸𝙽𝙸𝙽𝚃}$ and $\mathrm{𝙼𝙰𝚇𝙸𝙽𝚃}$, which respectively correspond to the smallest and to the largest integer.

• $\mathrm{𝚒𝚗𝚝}$ corresponds to an integer value.

• $\mathrm{𝚍𝚟𝚊𝚛}$ corresponds to a domain variable. A domain variable $V$ is a variable that will be assigned an integer value taken from an initial finite set of integer values denoted by $\mathrm{𝑑𝑜𝑚}\left(V\right)$. $\underline{V}$ and $\overline{V}$ respectively denote the minimum and the maximum values of $\mathrm{𝑑𝑜𝑚}\left(V\right)$.

• $\mathrm{𝚏𝚍𝚟𝚊𝚛}$ corresponds to a possibly unbounded domain variable. A possibly unbounded domain variable is a variable that will be assigned an integer value from an initial finite set of integer values denoted by $\mathrm{𝑑𝑜𝑚}\left(V\right)$ or from interval minus infinity, plus infinity. This type is required for declaring the domain of a variable. It is also required by some systems in the context of specific constraints like arithmetic or $\mathrm{𝚎𝚕𝚎𝚖𝚎𝚗𝚝}$ constraints.

• $\mathrm{𝚜𝚒𝚗𝚝}$ corresponds to a finite set of integer values.

• $\mathrm{𝚜𝚟𝚊𝚛}$ corresponds to a set variable. A set variable $V$ is a variable that will be assigned to a finite set of integer values. Its lower bound $\underline{V}$ denotes the set of integer values that for sure belong to $V$, while its upper bound $\overline{V}$ denotes the set of integer values that may belong to $V$. $\mathrm{𝑑𝑜𝑚}\left(V\right)=\left\{{𝐯}_{\mathbf{1}},\cdots ,{𝐯}_{𝐧},{v}_{n+1},\cdots ,{v}_{m}\right\}$ is a shortcut for combining the lower and upper bounds of $V$ in a single notation:

• Bold values designate those values that only belong to $\underline{V}$.

• Plain values indicate those values that belong to $\overline{V}$ and not to $\underline{V}$.

• $\mathrm{𝚖𝚒𝚗𝚝}$ corresponds to a multiset of integer values.

• $\mathrm{𝚖𝚟𝚊𝚛}$ corresponds to a multiset variable. A multiset variable is a variable that will be assigned to a multiset of integer values.

• $\mathrm{𝚛𝚎𝚊𝚕}$ corresponds to a real number.

• $\mathrm{𝚛𝚟𝚊𝚛}$ corresponds to a real variable. A real variable is a variable that will be assigned a real number taken from an initial finite set of intervals. A real number is usually represented by an interval of two floating point numbers.

Beside domain, set, multiset and float variables we have not yet introduced graph variables [Dooms06]. A graph variable is currently simulated by using one set variable for each vertex of the graph (see the third example of type declaration of 2.2.2).