### 2.3.2.2. Elementary constraints attached to the arcs

This section describes the constraints that are associated with the arcs of the initial graph of a global constraint. These constraints are called arc constraints. To each arc one can associate one or several arc constraints. An arc will belong to the final graph if and only if all its arc constraints hold. An arc constraint from a vertex ${v}_{1}$ to a vertex ${v}_{2}$ mentions variables and/or values associated with ${v}_{1}$ and ${v}_{2}$. Before defining an arc constraint, we first need to introduce simple arithmetic expressions as well as arithmetic expressions. Simple arithmetic expressions and arithmetic expressions are defined recursively.

#### Simple arithmetic expressions

A simple arithmetic expression is defined by one of the five following expressions.

• $I$: $I$ is an integer.

• $\mathrm{𝙰𝚛𝚐}$: $\mathrm{𝙰𝚛𝚐}$ is an argument of the global constraint of type $\mathrm{𝚒𝚗𝚝}$ or $\mathrm{𝚍𝚟𝚊𝚛}$.

• $\mathrm{𝙰𝚛𝚐}$: $\mathrm{𝙰𝚛𝚐}$ is a formal parameter provided by the arc generatorArc generators are described in Section 2.3.2.3 on page 2.3.2.3. of the graph-constraint.

• $\mathrm{𝙲𝚘𝚕}.\mathrm{𝙰𝚝𝚝𝚛}$: $\mathrm{𝙲𝚘𝚕}$ is a formal parameter provided by the arc generator or the collection used in the $\mathrm{𝙵𝚘𝚛}\mathrm{𝚊𝚕𝚕}\mathrm{𝚒𝚝𝚎𝚖𝚜}\mathrm{𝚘𝚏}$ iterator.The $\mathrm{𝙵𝚘𝚛}\mathrm{𝚊𝚕𝚕}\mathrm{𝚒𝚝𝚎𝚖𝚜}\mathrm{𝚘𝚏}$ iterator is described in Section 2.3.3.1 on page 2.3.3.1. $\mathrm{𝙰𝚝𝚝𝚛}$ is an attribute of the collection referenced by $\mathrm{𝙲𝚘𝚕}$.

EXAMPLE: As an example consider the first graph-constraint associated with the $\mathrm{𝚐𝚕𝚘𝚋𝚊𝚕}_\mathrm{𝚌𝚊𝚛𝚍𝚒𝚗𝚊𝚕𝚒𝚝𝚢}_\mathrm{𝚠𝚒𝚝𝚑}_\mathrm{𝚌𝚘𝚜𝚝𝚜}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂},\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇},\mathrm{𝙲𝙾𝚂𝚃}\right)$ constraint and its arc constraint $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚟𝚊𝚛}$ $=\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}.\mathrm{𝚟𝚊𝚕}$. Both, $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚟𝚊𝚛}$ as well as $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}.\mathrm{𝚟𝚊𝚕}$ are simple arithmetic expressions of the form $\mathrm{𝙲𝚘𝚕}.\mathrm{𝙰𝚝𝚝𝚛}$:

• In $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚟𝚊𝚛}$, $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}$ corresponds to the formal parameter provided by the arc generator $\mathrm{𝑆𝐸𝐿𝐹}↦\mathrm{𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}\left(\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\right)$, while $\mathrm{𝚟𝚊𝚛}$ is an attribute of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection.

• In $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}.\mathrm{𝚟𝚊𝚕}$, $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}$ corresponds to the collection denoted by the $\mathrm{𝙵𝚘𝚛}$ $\mathrm{𝚊𝚕𝚕}\mathrm{𝚒𝚝𝚎𝚖𝚜}\mathrm{𝚘𝚏}$ iterator, while $\mathrm{𝚟𝚊𝚕}$ is an attribute of the $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}$ collection.

• $\mathrm{𝙲𝚘𝚕}\left[\mathrm{𝙴𝚡𝚙𝚛}\right].\mathrm{𝙰𝚝𝚝𝚛}$: $\mathrm{𝙲𝚘𝚕}$ is an argument of type $\mathrm{𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}$, $\mathrm{𝙰𝚝𝚝𝚛}$ one attribute of $\mathrm{𝙲𝚘𝚕}$ and $\mathrm{𝙴𝚡𝚙𝚛}$ an arithmetic expression.

$\mathrm{𝙲𝚘𝚕}\left[\mathrm{𝙴𝚡𝚙𝚛}\right].\mathrm{𝙰𝚝𝚝𝚛}$ denotes the value of attribute $\mathrm{𝙰𝚝𝚝𝚛}$ of the ${\mathrm{𝙴𝚡𝚙𝚛}}^{th}$ item of the collection denoted by $\mathrm{𝙲𝚘𝚕}$.

EXAMPLE: As an example consider the $\mathrm{𝚐𝚕𝚘𝚋𝚊𝚕}_\mathrm{𝚌𝚊𝚛𝚍𝚒𝚗𝚊𝚕𝚒𝚝𝚢}_\mathrm{𝚠𝚒𝚝𝚑}_\mathrm{𝚌𝚘𝚜𝚝𝚜}$$\left($ $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂},\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇},\mathrm{𝙲𝙾𝚂𝚃}\right)$ constraint and its second graph-constraint, which defines the $\mathrm{𝙲𝙾𝚂𝚃}$ variable. The expression $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}\left[\left(\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚔𝚎𝚢}-\mathtt{1}\right)*|\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}|+$ $\mathrm{𝚟𝚊𝚕𝚞𝚎𝚜}.\mathrm{𝚔𝚎𝚢}\right].𝚌$ is a simple arithmetic expression of the form $\mathrm{𝙲𝚘𝚕}\left[\mathrm{𝙴𝚡𝚙𝚛}\right].\mathrm{𝙰𝚝𝚝𝚛}$:

• $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}$ is a collection of items $\mathrm{𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}\left(𝚒-\mathrm{𝚒𝚗𝚝},𝚓-\mathrm{𝚒𝚗𝚝},𝚌-\mathrm{𝚒𝚗𝚝}\right)$ where all items are sorted in increasing order on attributes $𝚒,𝚓$ (because of the restriction $\mathrm{𝚒𝚗𝚌𝚛𝚎𝚊𝚜𝚒𝚗𝚐}_\mathrm{𝚜𝚎𝚚}\left(\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇},\left[𝚒,𝚓\right]\right)$).

• $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}\left[\left(\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚔𝚎𝚢}-\mathtt{1}\right)*|\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}|+\mathrm{𝚟𝚊𝚕𝚞𝚎𝚜}.\mathrm{𝚔𝚎𝚢}\right].𝚌$ denotes the value of attribute $𝚌$ of an item of the $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}$ collection. The position of this item within the $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}$ collection depends on the position of a variable of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collectionThis position is denoted by the expression $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚔𝚎𝚢}$. As defined in Section 2.2.2 on page 2.2.2, $\mathrm{𝚔𝚎𝚢}$ is an implicit attribute corresponding to the position of an item within a collection. as well as on the position of a value of the $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}$ collection.This position is denoted by the expression $\mathrm{𝚟𝚊𝚕𝚞𝚎𝚜}.\mathrm{𝚔𝚎𝚢}$.

#### Arithmetic expressions

An arithmetic expression is recursively defined by one of the following expressions:

• A simple arithmetic expression.

• ${\mathrm{𝙴𝚡𝚙}}_{1}\mathrm{𝙾𝚙}{\mathrm{𝙴𝚡𝚙}}_{2}$
• ${\mathrm{𝙴𝚡𝚙}}_{1}$ is an arithmetic expression,

• $\mathrm{𝙾𝚙}$ is one of the following symbols $+$, $-$, $*$, $/$$/$ denotes an integer division, a division in which the fractional part is discarded.,

• ${\mathrm{𝙴𝚡𝚙}}_{2}$ is an arithmetic expression.

• $|\mathrm{𝙲𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}|$
• $\mathrm{𝙲𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}$ is an argument of type $\mathrm{𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}$ and $|\mathrm{𝙲𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}|$ denotes the number of items of that collection.

• $|\mathrm{𝙴𝚡𝚙}|$
• $\mathrm{𝙴𝚡𝚙}$ is an arithmetic expression, and $|\mathrm{𝙴𝚡𝚙}|$ denotes the absolute value of this expression.

• $\mathrm{𝚜𝚒𝚐𝚗}\left(\mathrm{𝙴𝚡𝚙}\right)$

• $\mathrm{𝙴𝚡𝚙}$ is an arithmetic expression, and $\mathrm{𝚜𝚒𝚐𝚗}\left(\mathrm{𝙴𝚡𝚙}\right)$ the sign of $\mathrm{𝙴𝚡𝚙}$ ($-1$ if $\mathrm{𝙴𝚡𝚙}$ is negative, 0 if $\mathrm{𝙴𝚡𝚙}$ is equal to 0, 1 if $\mathrm{𝙴𝚡𝚙}$ is positive).

EXAMPLE: An example of use of $\mathrm{𝚜𝚒𝚐𝚗}$ can be found in the last part of the arc constraint of the $\mathrm{𝚌𝚛𝚘𝚜𝚜𝚒𝚗𝚐}$ constraint:

$\mathrm{𝚜𝚒𝚐𝚗}\left(\left(𝚜\mathtt{2}.\mathrm{𝚘𝚡}-𝚜\mathtt{1}.\mathrm{𝚎𝚡}\right)*\left(𝚜\mathtt{1}.\mathrm{𝚎𝚢}-𝚜\mathtt{1}.\mathrm{𝚘𝚢}\right)-\left(𝚜\mathtt{1}.\mathrm{𝚎𝚡}-𝚜\mathtt{1}.\mathrm{𝚘𝚡}\right)*\left(𝚜\mathtt{2}.\mathrm{𝚘𝚢}-𝚜\mathtt{1}.\mathrm{𝚎𝚢}\right)\right)\ne$

$\mathrm{𝚜𝚒𝚐𝚗}\left(\left(𝚜\mathtt{2}.\mathrm{𝚎𝚡}-𝚜\mathtt{1}.\mathrm{𝚎𝚡}\right)*\left(𝚜\mathtt{2}.\mathrm{𝚘𝚢}-𝚜\mathtt{1}.\mathrm{𝚘𝚢}\right)-\left(𝚜\mathtt{2}.\mathrm{𝚘𝚡}-𝚜\mathtt{1}.\mathrm{𝚘𝚡}\right)*\left(𝚜\mathtt{2}.\mathrm{𝚎𝚢}-𝚜\mathtt{1}.\mathrm{𝚎𝚢}\right)\right)$

• $\mathrm{𝚌𝚊𝚛𝚍}_\mathrm{𝚜𝚎𝚝}\left(\mathrm{𝚂𝚎𝚝}\right)$:

• $\mathrm{𝚂𝚎𝚝}$ is a reference to a set of integers or to a set variable. $\mathrm{𝚌𝚊𝚛𝚍}_\mathrm{𝚜𝚎𝚝}\left(\mathrm{𝚂𝚎𝚝}\right)$ denotes the number of elements of that set.

EXAMPLE: An example of use of $\mathrm{𝚌𝚊𝚛𝚍}_\mathrm{𝚜𝚎𝚝}$ can be found in the $\mathrm{𝚜𝚢𝚖𝚖𝚎𝚝𝚛𝚒𝚌}_\mathrm{𝚐𝚌𝚌}$ constraint: $\mathrm{𝚟𝚊𝚛𝚜}.\mathrm{𝚗𝚘𝚌𝚌}=\mathrm{𝚌𝚊𝚛𝚍}_\mathrm{𝚜𝚎𝚝}\left(\mathrm{𝚟𝚊𝚛𝚜}.\mathrm{𝚟𝚊𝚛}\right)$.

• ${\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{1}\mathrm{mod}{\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{2}$,

$min\left({\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{1},{\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{2}\right)$ or $max\left({\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{1},{\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{2}\right)$

• ${\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{1}$ is a simple arithmetic expression,

• ${\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙴𝚡𝚙}}_{2}$ is a simple arithmetic expression.

#### Arc constraints

Now that we have introduced simple arithmetic expressions as well as arithmetic expressions we define an arc constraint. An arc constraint is recursively defined by one of the following expressions:

• $\mathrm{𝚃𝚁𝚄𝙴}$

This stands for an arc constraint that always holds. As a result, the corresponding arc always belongs to the final graph.

EXAMPLE: An example of use of $\mathrm{𝚃𝚁𝚄𝙴}$ can be found in the $\mathrm{𝚜𝚞𝚖}_\mathrm{𝚌𝚝𝚛}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},$ $\mathrm{𝙲𝚃𝚁},$ $\mathrm{𝚅𝙰𝚁}\right)$ constraint, where it is used in order to enforce keeping all items of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection in the final graph.

• ${\mathrm{𝙴𝚡𝚙}}_{1}\mathrm{𝙲𝚘𝚖𝚙𝚊𝚛𝚒𝚜𝚘𝚗}{\mathrm{𝙴𝚡𝚙}}_{2}$
• ${\mathrm{𝙴𝚡𝚙}}_{1}$ is an arithmetic expression,

• $\mathrm{𝙲𝚘𝚖𝚙𝚊𝚛𝚒𝚜𝚘𝚗}$ is one of the comparison operators $\le$, $\ge$, $<$, $>$, $=$, $\ne$,

• ${\mathrm{𝙴𝚡𝚙}}_{2}$ is an arithmetic expression.

EXAMPLE: As an example of such arc constraint, the second graph-constraint of the $\mathrm{𝚌𝚞𝚖𝚞𝚕𝚊𝚝𝚒𝚟𝚎}$$\left(\mathrm{𝚃𝙰𝚂𝙺𝚂},\mathrm{𝙻𝙸𝙼𝙸𝚃}\right)$ constraint uses the following arc constraints:

• $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{1}.\mathrm{𝚍𝚞𝚛𝚊𝚝𝚒𝚘𝚗}>0$,

• $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{2}.\mathrm{𝚘𝚛𝚒𝚐𝚒𝚗}\le \mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{1}.\mathrm{𝚘𝚛𝚒𝚐𝚒𝚗}$,

• $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{1}.\mathrm{𝚘𝚛𝚒𝚐𝚒𝚗}<\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{2}.\mathrm{𝚎𝚗𝚍}$.

The conjunction of these three arc constraints can be interpreted in the following way: an arc from a task $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{1}$ to a task $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{2}$ will belong to the final graph if and only if $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{2}$ overlaps the origin of $\mathrm{𝚝𝚊𝚜𝚔𝚜}\mathtt{1}$.

• ${\mathrm{𝙴𝚡𝚙}}_{1}\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙲𝚝𝚛}{\mathrm{𝙴𝚡𝚙}}_{2}$
• ${\mathrm{𝙴𝚡𝚙}}_{1}$ is an arithmetic expression,

• $\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙲𝚝𝚛}$ is an argument of type $\mathrm{𝚊𝚝𝚘𝚖}$ that can only take one of the values $\le$, $\ge$, $<$, $>$, $=$, $\ne$,

• ${\mathrm{𝙴𝚡𝚙}}_{2}$ is an arithmetic expression.

EXAMPLE: An example of use of such an arc constraint can be found in the $\mathrm{𝚌𝚑𝚊𝚗𝚐𝚎}$$\left(\mathrm{𝙽𝙲𝙷𝙰𝙽𝙶𝙴},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝙲𝚃𝚁}\right)$ constraint: $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}.\mathrm{𝚟𝚊𝚛}$ $\mathrm{𝙲𝚃𝚁}$ $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}.\mathrm{𝚟𝚊𝚛}$. Within this expression, $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}$ and $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}$ correspond to consecutive items of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection.

• ${\mathrm{𝙴𝚡𝚙}}_{1}¬\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙲𝚝𝚛}{\mathrm{𝙴𝚡𝚙}}_{2}$
• ${\mathrm{𝙴𝚡𝚙}}_{1}$ is an arithmetic expression,

• $\mathrm{𝚂𝚒𝚖𝚙𝚕𝚎𝙲𝚝𝚛}$ is an argument of type $\mathrm{𝚊𝚝𝚘𝚖}$ that can only take one of the values $\le$, $\ge$, $<$, $>$, $=$, $\ne$,

• ${\mathrm{𝙴𝚡𝚙}}_{2}$ is an arithmetic expression.

EXAMPLE: An example of use of such an arc constraint can be found in the $\mathrm{𝚌𝚑𝚊𝚗𝚐𝚎}_\mathrm{𝚌𝚘𝚗𝚝𝚒𝚗𝚞𝚒𝚝𝚢}$$\left(\mathrm{𝙽𝙱}_\mathrm{𝙿𝙴𝚁𝙸𝙾𝙳}_\mathrm{𝙲𝙷𝙰𝙽𝙶𝙴},$ $\mathrm{𝙽𝙱}_\mathrm{𝙿𝙴𝚁𝙸𝙾𝙳}_\mathrm{𝙲𝙾𝙽𝚃𝙸𝙽𝚄𝙸𝚃𝚈},$ $\mathrm{𝙼𝙸𝙽}_\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝙷𝙰𝙽𝙶𝙴},$ $\mathrm{𝙼𝙰𝚇}_\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝙷𝙰𝙽𝙶𝙴},$ $\mathrm{𝙼𝙸𝙽}_\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝙾𝙽𝚃𝙸𝙽𝚄𝙸𝚃𝚈},$ $\mathrm{𝙼𝙰𝚇}_\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝙾𝙽𝚃𝙸𝙽𝚄𝙸𝚃𝚈},$ $\mathrm{𝙽𝙱}_\mathrm{𝙲𝙷𝙰𝙽𝙶𝙴},$ $\mathrm{𝙽𝙱}_\mathrm{𝙲𝙾𝙽𝚃𝙸𝙽𝚄𝙸𝚃𝚈},$ $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},$ $\mathrm{𝙲𝚃𝚁}\right)$ constraint: $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}.\mathrm{𝚟𝚊𝚛}$ $¬\mathrm{𝙲𝚃𝚁}$ $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}.\mathrm{𝚟𝚊𝚛}$. Within this expression, $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}$ and $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}$ correspond to consecutive items of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection.

• $\mathrm{𝚌𝚘𝚗𝚜𝚝𝚛𝚊𝚒𝚗𝚝}\left({\mathrm{𝙴𝚡𝚙}}_{1},\cdots ,{\mathrm{𝙴𝚡𝚙}}_{n}\right)$
• $\mathrm{𝚌𝚘𝚗𝚜𝚝𝚛𝚊𝚒𝚗𝚝}$ is a global constraint defined in the catalogue for which there exists a graph-based and/or an automaton-based representation,

• ${\mathrm{𝙴𝚡𝚙}}_{1},\cdots ,{\mathrm{𝙴𝚡𝚙}}_{n}$ correspond to the arguments of the global constraint $\mathrm{𝚌𝚘𝚗𝚜𝚝𝚛𝚊𝚒𝚗𝚝}$. Each argument should be a simple arithmetic expression that is compatible with the type declaration of the argument of $\mathrm{𝚌𝚘𝚗𝚜𝚝𝚛𝚊𝚒𝚗𝚝}$.

EXAMPLE: An example of such arc constraint can be found in the definition of $\mathrm{𝚍𝚒𝚏𝚏𝚗}$: $\mathrm{𝚍𝚒𝚏𝚏𝚗}$$\left(\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴𝚂}\right)$ uses the $\mathrm{𝚝𝚠𝚘}_\mathrm{𝚘𝚛𝚝𝚑}_\mathrm{𝚍𝚘}_\mathrm{𝚗𝚘𝚝}_\mathrm{𝚘𝚟𝚎𝚛𝚕𝚊𝚙}$$\left(\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴}\mathtt{1},$ $\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴}\mathtt{2}\right)$ global constraint for defining its arc constraint. Since $\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴𝚂}$ is a collection of type $\mathrm{𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝚒𝚘𝚗}$$\left(\mathrm{𝚘𝚛𝚒}-\mathrm{𝚍𝚟𝚊𝚛},$ $\mathrm{𝚜𝚒𝚣}-\mathrm{𝚍𝚟𝚊𝚛},$ $\mathrm{𝚎𝚗𝚍}-\mathrm{𝚍𝚟𝚊𝚛}\right)$ and since both $\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴}\mathtt{1}$ and $\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴}\mathtt{2}$ correspond to items of $\mathrm{𝙾𝚁𝚃𝙷𝙾𝚃𝙾𝙿𝙴𝚂}$ there is no type compatibility problem between the call to $\mathrm{𝚝𝚠𝚘}_\mathrm{𝚘𝚛𝚝𝚑}_\mathrm{𝚍𝚘}_\mathrm{𝚗𝚘𝚝}_\mathrm{𝚘𝚟𝚎𝚛𝚕𝚊𝚙}$ and its definition.

• ${\mathrm{𝙰𝚛𝚌𝙲𝚝𝚛}}_{1}\mathrm{𝙻𝚘𝚐𝚒𝚌𝚊𝚕𝙲𝚘𝚗𝚗𝚎𝚌𝚝𝚘𝚛}{\mathrm{𝙰𝚛𝚌𝙲𝚝𝚛}}_{2}$
• ${\mathrm{𝙰𝚛𝚌𝙲𝚝𝚛}}_{1}$ is an arc constraint,

• $\mathrm{𝙻𝚘𝚐𝚒𝚌𝚊𝚕𝙲𝚘𝚗𝚗𝚎𝚌𝚝𝚘𝚛}$ is one of the logical connectors $\vee$, $\wedge$, $⇒$, $⇔$,

• ${\mathrm{𝙰𝚛𝚌𝙲𝚝𝚛}}_{2}$ is an arc constraint.

EXAMPLE: As shown by the following example, $\mathrm{𝚖𝚒𝚗𝚒𝚖𝚞𝚖}$$\left(\mathrm{𝙼𝙸𝙽},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\right)$ uses this kind of arc constraint: $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}=\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}\vee \mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}.\mathrm{𝚟𝚊𝚛}<\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}.\mathrm{𝚟𝚊𝚛}$, where $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}$ and $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}$ correspond to items of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection, holds if and only if one of the following conditions holds:

• $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}$ and $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}$ correspond to the same item of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection,

• The $\mathrm{𝚟𝚊𝚛}$ attribute of $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{1}$ is strictly less than the $\mathrm{𝚟𝚊𝚛}$ attribute of $\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}\mathtt{2}$.