### 2.3.2.4. Graph properties

We represent a global constraint as the search of a subgraph (i.e., a final graph) of a known initial graph, so that this final graph satisfies a given set of graph properties and possibly belongs to a specific graph class. Most graph properties have the form $\mathrm{𝙿𝚊𝚛𝚊𝚖𝚎𝚝𝚎𝚛}\mathrm{𝙲𝚘𝚖𝚙𝚊𝚛𝚒𝚜𝚘𝚗}\mathrm{𝙴𝚡𝚙}$ or the form $\mathrm{𝙿𝚊𝚛𝚊𝚖𝚎𝚝𝚎𝚛}\notin \left[{\mathrm{𝙴𝚡𝚙}}_{1},{\mathrm{𝙴𝚡𝚙}}_{2}\right]$, where $\mathrm{𝙿𝚊𝚛𝚊𝚖𝚎𝚝𝚎𝚛}$ is a graph parameter [Berge70], [GondranMinoux84], $\mathrm{𝙲𝚘𝚖𝚙𝚊𝚛𝚒𝚜𝚘𝚗}$ is one of the comparison operators $=$, $<$, $\ge$, $>$, $\le$, $\ne$, and $\mathrm{𝙴𝚡𝚙}$, ${\mathrm{𝙴𝚡𝚙}}_{1}$, ${\mathrm{𝙴𝚡𝚙}}_{2}$ are expressions that can be evaluated to an integer. Before defining each graph parameter, let's first introduce some basic vocabulary on graphs.

#### Graph terminology and notations

A digraph $G=\left(V\left(G\right),E\left(G\right)\right)$ is a pair where $V\left(G\right)$ is a finite set, called the set of vertices, and where $E\left(G\right)$ is a set of ordered pairs of vertices, called the set of arcs. The arc, path, circuit and strongly connected component of a graph $G$ correspond to oriented concepts, while the edge, chain, cycle and connected component are non-oriented concepts. However, as reported in [Berge70] an undirected graph can be seen as a digraph where to each edge we associate the corresponding two arcs. Parts (A) and (B) of Figure 2.3.5 respectively illustrate the terms for undirected graphs and digraphs.

##### Figure 2.3.5. Graph terminology for an undirected graph and a digraph (similar concepts are outlined with the same colour) • We say that ${e}_{2}$ is a successor of ${e}_{1}$ if there exists an arc that starts from ${e}_{1}$ and ends at ${e}_{2}$. In the same way, we say that ${e}_{2}$ is a predecessor of ${e}_{1}$ if there exists an arc that starts from ${e}_{2}$ and ends at ${e}_{1}$.

• A vertex of $G$ that does not have any predecessor is called a source. A vertex of $G$ that does not have any successor is called a sink.

• A sequence $\left({e}_{1},{e}_{2},\cdots ,{e}_{k}\right)$ of edges of $G$ such that each edge has a common vertex with the previous edge, and the other vertex common to the next edge is called a chain of length $k$. A chain where all vertices are distinct is called an elementary chain. Each equivalence class of the relation “${e}_{i}$ is equal to ${e}_{j}$ or there exists a chain between ${e}_{i}$ and ${e}_{j}$” is a connected component of the graph $G$.

• A sequence $\left({e}_{1},{e}_{2},\cdots ,{e}_{k}\right)$ of arcs of $G$ such that, for each arc ${e}_{i}$ $\left(1\le i the end of ${e}_{i}$ is equal to the start of the arc ${e}_{i+1}$, is called a path of length $k$. A path where all vertices are distinct is called an elementary path. Each equivalence class of the relation “${e}_{i}$ is equal to ${e}_{j}$ or there exists a path between ${e}_{i}$ and ${e}_{j}$” is a strongly connected component of the graph $G$.

• A chain $\left({e}_{1},{e}_{2},\cdots ,{e}_{k}\right)$ of $G$ is called a cycle if the same edge does not occur more than once in the chain and if the two extremities of the chain coincide. A cycle $\left({e}_{1},{e}_{2},\cdots ,{e}_{k}\right)$ of $G$ is called a circuit if for each edge ${e}_{i}$ $\left(1\le i, the end of ${e}_{i}$ is equal to the start of the edge ${e}_{i+1}$.

• Given a graph $G$, we define the reduced graph $R\left(G\right)$ of $G$ as follows: to each strongly connected component of $G$ corresponds a vertex of $R\left(G\right)$; to each arc of $G$ that connects different strongly connected components corresponds an arc in $R\left(G\right)$ (multiple arcs between the same pair of vertices are merged).

• The rank function associated with the vertices $V\left(G\right)$ of a graph $G$ that does not contain any circuit is defined in the following way:

• The rank of the vertices that do not have any predecessor (i.e., the sources) is equal to 0,

• The rank $r$ of a vertex $v$ that is not a source is the length of longest path $\left({e}_{1},$ ${e}_{2},$ $\cdots ,$ ${e}_{r}\right)$ such that the start of the arc ${e}_{1}$ is a source and the end of arc ${e}_{r}$ is the vertex $v$.

We now present the different notations used in the catalogue:

• $\left[k\right]$ corresponds to $\left\{1,\cdots ,k\right\}$ for $k$ any positive integer.

• Given a set $X$, $|X|$ is the number of its elements.

• Given two sets $X$ and $Y$, $X\uplus Y$ denotes the union of the two sets when they are disjoint.

• Given a digraph $G$ and $x\in V\left(G\right)$, ${d}_{G}^{+}\left(x\right)=|\left\{y:y\in V\left(G\right):\left(x,y\right)\in E\left(G\right)\right\}|$ and ${d}_{G}^{-}\left(x\right)=|\left\{y:y\in V\left(G\right):\left(y,x\right)\in E\left(G\right)\right\}|$.

• Given a digraph $G$ and $X$ a subset of $V\left(G\right)$, the sub-digraph of $G$ induced by $X$ is the digraph $G\left[X\right]$ where $V\left(G\left[X\right]\right)=X$ and $E\left(G\left[X\right]\right)={X}^{2}\cap E\left(G\right)$. By aim of simplicity, we denote $G\left[V\left(G\right)-X\right]$ by $G-X$. Moreover, if $X=\left\{x\right\}$, we use $G-x$ instead of $G-\left\{x\right\}$.

• Given two digraph ${G}_{1}$ and ${G}_{2}$ such that $V\left({G}_{1}\right)\cap V\left({G}_{2}\right)=\varnothing$, ${G}_{1}\oplus {G}_{2}$ denotes the graph whose vertices set is $V\left({G}_{1}\right)\cup V\left({G}_{2}\right)$ and whose arcs set is $E\left({G}_{1}\right)\cup E\left({G}_{2}\right)$.

• Given a graph parameter $𝐏\in \left\{\mathrm{𝐍𝐂𝐂},\mathrm{𝐍𝐒𝐂𝐂}\right\}$, a digraph $G$ and an integer $k$, $\mathrm{𝐂𝐇}\left(G,k\right)$ is the number of connected components (respectively strongly connected components) of $G$ with cardinal $k$.

Given a graph parameter, for instance the number of connected components, ${\mathrm{𝐍𝐂𝐂}}_{\mathrm{𝙸𝙽𝙸𝚃𝙸𝙰𝙻}}$ will denote the number of connected components of the initial graph (i.e., the graph induced by the constraint under consideration), $\mathrm{𝐍𝐂𝐂}$ will denote the number of connected components of the final graph (i.e., a subgraph of the initial graph). The use of $\mathrm{𝐍𝐂𝐂}\left(G\right)$ will denote the number of connected components of the digraph $G$.

Given a global constraint $C$, and a graph parameter $𝐏$ used in the description of $C$, $\underline{𝐏}$ (respectively $\overline{𝐏}$) denotes a lower bound (respectively upper bound) of $𝐏$ among all possible final graphs compatible with the current status of $C$.

#### Graph parameters

We list in alphabetic order the different graph parameters we consider for a final graph ${G}_{f}=\left(V\left({G}_{f}\right),E\left({G}_{f}\right)\right)$ associated with a global constraint and give an example of constraint where they are used:

• $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐃𝐑𝐆}$ : largest distance between sources and sinks in the reduced graph associated with ${G}_{f}$ (adjacent vertices are at a distance of 1).

EXAMPLE: We do not provide any example since $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐃𝐑𝐆}$ is currently not used.

• $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐈𝐃}$ : number of predecessors of the vertex of ${G}_{f}$ that has the maximum number of predecessors without counting an arc from a vertex to itself.

EXAMPLE: The $\mathrm{𝚌𝚒𝚛𝚌𝚞𝚒𝚝}$ constraint uses the graph property $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐈𝐃}=1$ in order to force each vertex of the final graph to have at most one predecessor.

• $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐍𝐂𝐂}$ : number of vertices of the largest connected component of ${G}_{f}$.

EXAMPLE: The $\mathrm{𝚕𝚘𝚗𝚐𝚎𝚜𝚝}_\mathrm{𝚌𝚑𝚊𝚗𝚐𝚎}$$\left(\mathrm{𝚂𝙸𝚉𝙴},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝙲𝚃𝚁}\right)$ constraint uses the graph property $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐍𝐂𝐂}=\mathrm{𝚂𝙸𝚉𝙴}$ in order to catch in $\mathrm{𝚂𝙸𝚉𝙴}$ the maximum number of consecutive variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection for which constraint $\mathrm{𝙲𝚃𝚁}$ holds.

• $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐍𝐒𝐂𝐂}$ : number of vertices of the largest strongly connected component of ${G}_{f}$.

EXAMPLE: The $\mathrm{𝚝𝚛𝚎𝚎}$ constraint covers a digraph by a set of trees in such a way that each vertex belongs to a distinct tree. It uses the graph-property $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐍𝐒𝐂𝐂}$ $\le$ 1 in order to avoid to have any circuit involving more than one vertex.

• $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐎𝐃}$ : number of successors of the vertex of ${G}_{f}$ that has the maximum number of successors without counting an arc from a vertex to itself.

EXAMPLE: The $\mathrm{𝚝𝚘𝚞𝚛}$ constraint forces to cover a graph with a Hamiltonian cycle. It uses the graph-property $\mathrm{𝐌𝐀𝐗}_\mathrm{𝐎𝐃}=2$ to enforce that each vertex of ${G}_{f}$ have at most twoSince the $\mathrm{𝚝𝚘𝚞𝚛}$ constraint uses the $\mathrm{𝐶𝐿𝐼𝑄𝑈𝐸}\left(\ne \right)$ arc generator the vertices of ${G}_{f}$ do not have any loop. successors.

• $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐃𝐑𝐆}$ : smallest distance between sources and sinks in the reduced graph associated with ${G}_{f}$ (adjacent vertices are at a distance of 1).

EXAMPLE: We do not provide any example since $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐃𝐑𝐆}$ is currently not used by any constraint.

• $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐈𝐃}$ : number of predecessors of the vertex of ${G}_{f}$ that has the minimum number of predecessors without counting an arc from a vertex to itself.

EXAMPLE: The $\mathrm{𝚝𝚘𝚞𝚛}$ constraint forces to cover a graph with a Hamiltonian cycle. It uses the graph-property $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐈𝐃}=2$ to enforce that each vertex of ${G}_{f}$ have at most twoSince the $\mathrm{𝚝𝚘𝚞𝚛}$ constraint uses the $\mathrm{𝐶𝐿𝐼𝑄𝑈𝐸}\left(\ne \right)$ arc generator the vertices of ${G}_{f}$ do not have any loop. predecessors.

• $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐍𝐂𝐂}$ : number of vertices of the smallest connected component of ${G}_{f}$.

EXAMPLE: Within the $\mathrm{𝚐𝚛𝚘𝚞𝚙}$ constraint, each connected component of ${G}_{f}$ corresponds to a maximum sequence of consecutive variables that take their values in a given set of values. Therefore, the graph-property $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐍𝐂𝐂}=\mathrm{𝙼𝙸𝙽}_\mathrm{𝚂𝙸𝚉𝙴}$ forces that the smallest sequence of such variables consist of $\mathrm{𝙼𝙸𝙽}_\mathrm{𝚂𝙸𝚉𝙴}$ variables.

• $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐍𝐒𝐂𝐂}$ : number of vertices of the smallest strongly connected component of ${G}_{f}$.

EXAMPLE: The $\mathrm{𝚌𝚒𝚛𝚌𝚞𝚒𝚝}$$\left(NODES\right)$ constraint forces covering a digraph with one circuit visiting once all its vertices. The graph-property $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐍𝐒𝐂𝐂}=|\mathrm{𝙽𝙾𝙳𝙴𝚂}|$ forces that the smallest strongly connected component of ${G}_{f}$ contain $|\mathrm{𝙽𝙾𝙳𝙴𝚂}|$ vertices. Since $|\mathrm{𝙽𝙾𝙳𝙴𝚂}|$ also corresponds to the number of vertices of the initial graph this means that ${G}_{f}$ is a strongly connected component involving all the vertices. This is clearly a necessary conditionOf course, this is not enough, and the description of the $\mathrm{𝚌𝚒𝚛𝚌𝚞𝚒𝚝}$ constraint asks for some other properties. for having a circuit visiting once all vertices.

• $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐎𝐃}$ : number of successors of the vertex of ${G}_{f}$ that has the minimum number of successors without counting an arc from a vertex to itself.

EXAMPLE: The $\mathrm{𝚝𝚘𝚞𝚛}$ constraint forces to cover a graph with a Hamiltonian cycle. It uses the graph-property $\mathrm{𝐌𝐈𝐍}_\mathrm{𝐎𝐃}=2$ to enforce that each vertex of ${G}_{f}$ have at most twoSince the $\mathrm{𝚝𝚘𝚞𝚛}$ constraint uses the $\mathrm{𝐶𝐿𝐼𝑄𝑈𝐸}\left(\ne \right)$ arc generator the vertices of ${G}_{f}$ do not have any loop. successors.

• $\mathrm{𝐍𝐀𝐑𝐂}$ : cardinality of the set $E\left({G}_{f}\right)$.

EXAMPLE: The $\mathrm{𝚍𝚒𝚜𝚓𝚘𝚒𝚗𝚝}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}\right)$ constraint forces that each variable of the collection $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ take a value that is distinct from all the values assigned to the variables of the collection $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$.

This is imposed by creating an arc from each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ to each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$. To each arc corresponds an equality constraint involving the variables associated with the extremities of the arc. Finally, the graph property $\mathrm{𝐍𝐀𝐑𝐂}=0$ forces ${G}_{f}$ to be empty so that no value is both assigned to a variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ as well as to a variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$.

• $\mathrm{𝐍𝐀𝐑𝐂}_\mathrm{𝐍𝐎}_\mathrm{𝐋𝐎𝐎𝐏}$ : cardinality of the set $E\left({G}_{f}\right)$ without considering the arcs linking the same vertex (i.e., a loop).

EXAMPLE:

• $\mathrm{𝐍𝐂𝐂}$ : number of connected components of ${G}_{f}$.

EXAMPLE: The $\mathrm{𝚝𝚛𝚎𝚎}$ constraint covers a digraph by $\mathrm{𝙽𝚃𝚁𝙴𝙴𝚂}$ trees in such a way that each vertex belongs to a distinct tree. It uses the graph-property $\mathrm{𝐍𝐂𝐂}=\mathrm{𝙽𝚃𝚁𝙴𝙴𝚂}$ in order to state that ${G}_{f}$ is made up from $\mathrm{𝙽𝚃𝚁𝙴𝙴𝚂}$ connected components.

• $\mathrm{𝐍𝐒𝐂𝐂}$ : number of strongly connected components of ${G}_{f}$.

EXAMPLE: The constraint $\mathrm{𝚗𝚟𝚊𝚕𝚞𝚎}$$\left(\mathrm{𝙽𝚅𝙰𝙻},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\right)$ forces $\mathrm{𝙽𝚅𝙰𝙻}$ to be equal to the number of distinct values assigned to the variables of the collection $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$. This is enforced by using the graph-property $\mathrm{𝐍𝐒𝐂𝐂}=\mathrm{𝙽𝚅𝙰𝙻}$. Each strongly connected component of the final graph corresponds to the variables that are assigned to the same value.

• $\mathrm{𝐍𝐒𝐈𝐍𝐊}$ : number of vertices of ${G}_{f}$ that do not have any successor.

EXAMPLE: The $\mathrm{𝚜𝚊𝚖𝚎}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}\right)$ forces that the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ collection correspond to the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$ collection according to a permutation.

We first create an arc from each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ to each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$. To each arc corresponds an equality constraint involving the variables associated with the extremities of the arc. We use the graph-property $\mathrm{𝐍𝐒𝐈𝐍𝐊}=|\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}|$ in order to express the fact that each value assigned to a variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$ should also be assigned to a variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$.

• $\mathrm{𝐍𝐒𝐈𝐍𝐊}_\mathrm{𝐍𝐒𝐎𝐔𝐑𝐂𝐄}$ : sum over the different connected components of ${G}_{f}$ of the minimum of the number of sinks and the number of sources of a connected component.

EXAMPLE: The $\mathrm{𝚜𝚘𝚏𝚝}_\mathrm{𝚜𝚊𝚖𝚎}_\mathrm{𝚟𝚊𝚛}$$\left(𝙲,\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}\right)$ constraint forces $𝙲$ to be the minimum number of values to change in the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ and the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$ collections of variablesBoth collections have the same number of variables., so that the variables of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$ correspond to the variables of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ according to a permutation.

A connected component ${𝒞}_{\mathrm{𝑣𝑎𝑙}}$ of the final graph ${G}_{f}$ corresponds to all variables that are assigned to the same value $\mathrm{𝑣𝑎𝑙}$: the sources and the sinks of ${𝒞}_{\mathrm{𝑣𝑎𝑙}}$ respectively correspond to the variables of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ and to the variables of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$ that are assigned to $\mathrm{𝑣𝑎𝑙}$. For a connected component, the minimum of the number of sources and sinks expresses the number of variables for which we do not need to make any change. Therefore we use the graph-property $\mathrm{𝐍𝐒𝐈𝐍𝐊}_\mathrm{𝐍𝐒𝐎𝐔𝐑𝐂𝐄}=|\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}|-𝙲$ for encoding the meaning of the $\mathrm{𝚜𝚘𝚏𝚝}_\mathrm{𝚜𝚊𝚖𝚎}_\mathrm{𝚟𝚊𝚛}$ constraint.

• $\mathrm{𝐍𝐒𝐎𝐔𝐑𝐂𝐄}$ : number of vertices of ${G}_{f}$ that do not have any predecessor.

EXAMPLE: The $\mathrm{𝚜𝚊𝚖𝚎}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}\right)$ forces that the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ collection correspond to the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$ collection according to a permutation.

We first create an arc from each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ to each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$. To each arc corresponds an equality constraint involving the variables associated with the extremities of the arc. We use the graph-property $\mathrm{𝐍𝐒𝐎𝐔𝐑𝐂𝐄}=|\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}|$ in order to express the fact that each value assigned to a variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{1}$ should also be assigned to a variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\mathtt{2}$.

• $\mathrm{𝐍𝐓𝐑𝐄𝐄}$ : number of vertices of ${G}_{f}$ that do not belong to any circuit and for which at least one successor belongs to a circuit. Such vertices can be interpreted as root nodes of a tree.

EXAMPLE: The $\mathrm{𝚌𝚢𝚌𝚕𝚎}$$\left(\mathrm{𝙽𝙲𝚈𝙲𝙻𝙴},\mathrm{𝙽𝙾𝙳𝙴𝚂}\right)$ forces that $\mathrm{𝙽𝙲𝚈𝙲𝙻𝙴}$ equal the number of circuits for covering an initial graph in such a way that each vertex belongs to a single circuit.

The graph-property $\mathrm{𝐍𝐓𝐑𝐄𝐄}=0$ forces that all vertices of the final graph belong to a circuit.

• $\mathrm{𝐍𝐕𝐄𝐑𝐓𝐄𝐗}$ : cardinality of the set $V\left({G}_{f}\right)$.

EXAMPLE: The $\mathrm{𝚌𝚞𝚝𝚜𝚎𝚝}$$\left(\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝚄𝚃𝚂𝙴𝚃},\mathrm{𝙽𝙾𝙳𝙴𝚂}\right)$ constraint considers a digraph with $n$ vertices described by the $\mathrm{𝙽𝙾𝙳𝙴𝚂}$ collection. It forces that the subset of kept vertices of cardinality $n-\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝚄𝚃𝚂𝙴𝚃}$ and their corresponding arcs form a graph without a circuit. It uses the graph-property $\mathrm{𝐍𝐕𝐄𝐑𝐓𝐄𝐗}=n-\mathrm{𝚂𝙸𝚉𝙴}_\mathrm{𝙲𝚄𝚃𝚂𝙴𝚃}$ for enforcing that the final graph ${G}_{f}$ contain the required number of vertices.

• $\mathrm{𝐑𝐀𝐍𝐆𝐄}_\mathrm{𝐃𝐑𝐆}$ : difference between the largest distance between sources and sinks in the reduced graph associated with ${G}_{f}$ and the smallest distance between sources and sinks in the reduced graph associated with ${G}_{f}$.

EXAMPLE: The $\mathrm{𝚝𝚛𝚎𝚎}_\mathrm{𝚛𝚊𝚗𝚐𝚎}$ constraint forces to cover a digraph in such a way that each vertex belongs to a distinct tree. In addition it forces the difference between the longest and the shortest paths of ${G}_{f}$ to be equal to the variable $𝚁$. For this purpose it uses the graph-property $\mathrm{𝐑𝐀𝐍𝐆𝐄}_\mathrm{𝐃𝐑𝐆}=𝚁$.

• $\mathrm{𝐑𝐀𝐍𝐆𝐄}_\mathrm{𝐍𝐂𝐂}$ : difference between the number of vertices of the largest connected component of ${G}_{f}$ and the number of vertices of the smallest connected component of ${G}_{f}$.

EXAMPLE: We do not provide any example since $\mathrm{𝐑𝐀𝐍𝐆𝐄}_\mathrm{𝐍𝐂𝐂}$ is currently not used by any constraint.

• $\mathrm{𝐑𝐀𝐍𝐆𝐄}_\mathrm{𝐍𝐒𝐂𝐂}$ : difference between the number of vertices of the largest strongly connected component of ${G}_{f}$ and the number of vertices of the smallest strongly connected component of ${G}_{f}$.

EXAMPLE: The $\mathrm{𝚋𝚊𝚕𝚊𝚗𝚌𝚎}$$\left(\mathrm{𝙱𝙰𝙻𝙰𝙽𝙲𝙴},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\right)$ constraint forces $\mathrm{𝙱𝙰𝙻𝙰𝙽𝙲𝙴}$ to be equal to the difference between the number of occurrences of the value that occurs the most and the value that occurs the least within the collection of variables $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$. Each strongly connected component of ${G}_{f}$ corresponds to the variables that are assigned to the same value. The graph property $\mathrm{𝐑𝐀𝐍𝐆𝐄}_\mathrm{𝐍𝐒𝐂𝐂}=\mathrm{𝙱𝙰𝙻𝙰𝙽𝙲𝙴}$ allows for expressing this definition.

• $\mathrm{𝐎𝐑𝐃𝐄𝐑}\left(\mathrm{𝚛𝚊𝚗𝚔},\mathrm{𝚍𝚎𝚏𝚊𝚞𝚕𝚝},\mathrm{𝚊𝚝𝚝𝚛}\right)$

• $\mathrm{𝚛𝚊𝚗𝚔}$ is an integer or an argument of type integer of the global constraint,

• $\mathrm{𝚍𝚎𝚏𝚊𝚞𝚕𝚝}$ is an integer,

• $\mathrm{𝚊𝚝𝚝𝚛}$ is an attribute corresponding to an integer or to a domain variable that occurs in all the collections that were used for generating the vertices of the initial graph.

We explain what is the value associated with $\mathrm{𝐎𝐑𝐃𝐄𝐑}\left(\mathrm{𝚛𝚊𝚗𝚔},\mathrm{𝚍𝚎𝚏𝚊𝚞𝚕𝚝},\mathrm{𝚊𝚝𝚝𝚛}\right)$. Let $𝒱$ denote the vertices of rank $\mathrm{𝚛𝚊𝚗𝚔}$ of ${G}_{f}$ from which we remove any loops.

• When $𝒱$ is not empty, it corresponds to the values of attribute $\mathrm{𝚊𝚝𝚝𝚛}$ of the items associated with the vertices of $𝒱$,

• Otherwise, when $𝒱$ is empty, it corresponds to the default value $\mathrm{𝚍𝚎𝚏𝚊𝚞𝚕𝚝}$.

EXAMPLE: The $\mathrm{𝚖𝚒𝚗𝚒𝚖𝚞𝚖}$$\left(\mathrm{𝙼𝙸𝙽},\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}\right)$ forces $\mathrm{𝙼𝙸𝙽}$ to be the minimum value of the collection of domain variables $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$. There is an arc from a variable ${\mathrm{𝚟𝚊𝚛}}_{1}$ to a variable ${\mathrm{𝚟𝚊𝚛}}_{2}$ if and only if ${\mathrm{𝚟𝚊𝚛}}_{1}<{\mathrm{𝚟𝚊𝚛}}_{2}$. The graph-property $\mathrm{𝐎𝐑𝐃𝐄𝐑}\left(0,\mathrm{𝙼𝙰𝚇𝙸𝙽𝚃},\mathrm{𝚟𝚊𝚛}\right)=\mathrm{𝙼𝙸𝙽}$ expresses the fact that $\mathrm{𝙼𝙸𝙽}$ is equal to the value of the source of ${G}_{f}$ (since $\mathrm{𝚛𝚊𝚗𝚔}=0$).

• $\mathrm{𝐏𝐀𝐓𝐇}_\mathrm{𝐅𝐑𝐎𝐌}_\mathrm{𝐓𝐎}\left(\mathrm{𝚊𝚝𝚝𝚛},\mathrm{𝚏𝚛𝚘𝚖},\mathrm{𝚝𝚘}\right)$

• $\mathrm{𝚊𝚝𝚝𝚛}$ is an attribute corresponding to an integer that occurs in all the collections that were used for generating the vertices of the initial graph,

• $\mathrm{𝚏𝚛𝚘𝚖}$ is an integer or an argument of type integer of the global constraint,

• $\mathrm{𝚝𝚘}$ is an integer or an argument of type integer of the global constraint.

Let $ℱ$ (respectively $𝒯$) denote the vertices of ${G}_{f}$ such that $\mathrm{𝚊𝚝𝚝𝚛}$ is equal to $\mathrm{𝚏𝚛𝚘𝚖}$ (respectively $\mathrm{𝚝𝚘}$). $\mathrm{𝐏𝐀𝐓𝐇}_\mathrm{𝐅𝐑𝐎𝐌}_\mathrm{𝐓𝐎}\left(\mathrm{𝚊𝚝𝚝𝚛},\mathrm{𝚏𝚛𝚘𝚖},\mathrm{𝚝𝚘}\right)$ is equal to 1 if there exists a path between each vertex of $ℱ$ and each vertex of $𝒯$, and 0 if there exists no path between a vertex of $ℱ$ and a vertex of $𝒯$.

• $\mathrm{𝚊𝚝𝚝𝚛}$ is an attribute corresponding to an integer that occurs in all the collections that were used for generating the vertices of the initial graph,

• $\mathrm{𝚏𝚛𝚘𝚖}$ is an attribute corresponding to an integer or to a set of integers that occurs in all the collections that were used for generating the vertices of the initial graph,

• $\mathrm{𝚝𝚘}$ is an attribute corresponding to an integer or to a set of integers that occurs in all the collections that were used for generating the vertices of the initial graph,

For each vertex $v$ of ${G}_{f}$ let:

• ${ℱ}_{v}$ the set of vertices for which the value of the attribute $\mathrm{𝚊𝚝𝚝𝚛}$ is equal to the $\mathrm{𝚏𝚛𝚘𝚖}$ attribute (or is included within the $\mathrm{𝚏𝚛𝚘𝚖}$ attribute when it corresponds to a set of integers).

• ${𝒯}_{v}$ the set of vertices for which the value of the attribute $\mathrm{𝚊𝚝𝚝𝚛}$ is equal to the $\mathrm{𝚝𝚘}$ attribute (or is included within the $\mathrm{𝚝𝚘}$ attribute when it corresponds to a set of integers).

$\mathrm{𝐏𝐀𝐓𝐇}_\mathrm{𝐅𝐑𝐎𝐌}_\mathrm{𝐓𝐎}\left(\mathrm{𝚊𝚝𝚝𝚛},\mathrm{𝚏𝚛𝚘𝚖},\mathrm{𝚝𝚘}\right)$ is equal to

• 1 if for each vertex of ${G}_{f}$ there exists a path between each vertex of ${ℱ}_{v}$ and each vertex of ${𝒯}_{v}$.

• 0 if for a vertex of ${G}_{f}$ there is no path between a vertex of ${ℱ}_{v}$ and a vertex of ${𝒯}_{v}$.

EXAMPLE:

• $\mathrm{𝐏𝐑𝐎𝐃}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$

• $\mathrm{𝚌𝚘𝚕}$ is a collection that was used for generating the vertices of the initial graph,

• $\mathrm{𝚊𝚝𝚝𝚛}$ is an attribute corresponding to an integer or to a domain variable of the collection $\mathrm{𝚌𝚘𝚕}$.

Let $𝒱$ be the set of vertices of ${G}_{f}$ that were generated from the items of the collection $\mathrm{𝚌𝚘𝚕}$.

• If $𝒱$ is not empty, $\mathrm{𝐏𝐑𝐎𝐃}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$ corresponds to the product of the values of attribute $\mathrm{𝚊𝚝𝚝𝚛}$ associated with the vertices of $𝒱$,

• Otherwise, if $𝒱$ is empty, $\mathrm{𝐏𝐑𝐎𝐃}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$ is equal to 1.

EXAMPLE: The constraint $\mathrm{𝚙𝚛𝚘𝚍𝚞𝚌𝚝}_\mathrm{𝚌𝚝𝚛}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝙲𝚃𝚁},\mathrm{𝚅𝙰𝚁}\right)$ forces the product of the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection to be equal, less than or equal, ... to a given domain variable $\mathrm{𝚅𝙰𝚁}$.

To each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ corresponds a vertex of the initial graph. Since we want to keep all the vertices of the initial graph we use the $\mathrm{𝑆𝐸𝐿𝐹}$ arc generator together with the $\mathrm{𝚃𝚁𝚄𝙴}$ arc constraint. Finally, $\mathrm{𝐏𝐑𝐎𝐃}\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚟𝚊𝚛}\right)\mathrm{𝙲𝚃𝚁}\mathrm{𝚅𝙰𝚁}$ expresses the required condition. In this expression $\mathrm{𝚟𝚊𝚛}$ and $\mathrm{𝙲𝚃𝚁}$ respectively corresponds to the attribute of the collection $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ (a domain variable) and to the condition we want to enforce. Since the final graph ${G}_{f}$ contains all the vertices of the initial graph, the expression $\mathrm{𝐏𝐑𝐎𝐃}\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚟𝚊𝚛}\right)$ corresponds to the product of the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection.

• $\mathrm{𝐑𝐀𝐍𝐆𝐄}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$

• $\mathrm{𝚌𝚘𝚕}$ is a collection that was used for generating the vertices of the initial graph,

• $\mathrm{𝚊𝚝𝚝𝚛}$ is an attribute corresponding to an integer or to a domain variable of the collection $\mathrm{𝚌𝚘𝚕}$.

Let $𝒱$ be the set of vertices of ${G}_{f}$ that were generated from the items of the collection $\mathrm{𝚌𝚘𝚕}$.

• If $𝒱$ is not empty, $\mathrm{𝐑𝐀𝐍𝐆𝐄}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$ corresponds to the difference between the maximum and the minimum values of attribute $\mathrm{𝚊𝚝𝚝𝚛}$ associated with the vertices of $𝒱$,

• Otherwise, if $𝒱$ is empty, $\mathrm{𝐑𝐀𝐍𝐆𝐄}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$ is equal to 0.

EXAMPLE: The constraint $\mathrm{𝚛𝚊𝚗𝚐𝚎}_\mathrm{𝚌𝚝𝚛}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝙲𝚃𝚁},\mathrm{𝚅𝙰𝚁}\right)$ forces the difference between the maximum value and the minimum value of the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection to be equal, less than or equal, ... to a given domain variable $\mathrm{𝚅𝙰𝚁}$.

To each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ corresponds a vertex of the initial graph. Since we want to keep all the vertices of the initial graph we use the $\mathrm{𝑆𝐸𝐿𝐹}$ arc generator together with the $\mathrm{𝚃𝚁𝚄𝙴}$ arc constraint. Finally, $\mathrm{𝐑𝐀𝐍𝐆𝐄}\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚟𝚊𝚛}\right)\mathrm{𝙲𝚃𝚁}\mathrm{𝚅𝙰𝚁}$ expresses the required condition. In this expression $\mathrm{𝚟𝚊𝚛}$ and $\mathrm{𝙲𝚃𝚁}$ respectively corresponds to the attribute of the collection $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ (a domain variable) and to the condition we want to enforce. Since the final graph ${G}_{f}$ contains all the vertices of the initial graph, the expression $\mathrm{𝐑𝐀𝐍𝐆𝐄}\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚟𝚊𝚛}\right)$ corresponds to the difference between the maximum value and the minimum value of the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection.

• $\mathrm{𝐒𝐔𝐌}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$

• $\mathrm{𝚌𝚘𝚕}$ is a collection that was used for generating the vertices of the initial graph,

• $\mathrm{𝚊𝚝𝚝𝚛}$ is an attribute corresponding to an integer or to a domain variable of the collection $\mathrm{𝚌𝚘𝚕}$.

Let $𝒱$ be the set of vertices of ${G}_{f}$ that were generated from the items of the collection $\mathrm{𝚌𝚘𝚕}$.

• If $𝒱$ is not empty, $\mathrm{𝐒𝐔𝐌}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$ corresponds to the sum of the values of attribute $\mathrm{𝚊𝚝𝚝𝚛}$ associated with the vertices of $𝒱$,

• Otherwise, if $𝒱$ is empty, $\mathrm{𝐒𝐔𝐌}\left(\mathrm{𝚌𝚘𝚕},\mathrm{𝚊𝚝𝚝𝚛}\right)$ is equal to 0.

EXAMPLE: The constraint $\mathrm{𝚜𝚞𝚖}_\mathrm{𝚌𝚝𝚛}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝙲𝚃𝚁},\mathrm{𝚅𝙰𝚁}\right)$ forces the sum of the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection to be equal, less than or equal, ... to a given domain variable $\mathrm{𝚅𝙰𝚁}$.

To each variable of $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ corresponds a vertex of the initial graph. Since we want to keep all the vertices of the initial graph we use the $\mathrm{𝑆𝐸𝐿𝐹}$ arc generator together with the $\mathrm{𝚃𝚁𝚄𝙴}$ arc constraint. Finally, $\mathrm{𝐒𝐔𝐌}\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚟𝚊𝚛}\right)\mathrm{𝙲𝚃𝚁}\mathrm{𝚅𝙰𝚁}$ expresses the required condition. In this expression $\mathrm{𝚟𝚊𝚛}$ and $\mathrm{𝙲𝚃𝚁}$ respectively correspond to the attribute of the collection $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ (a domain variable) and to the condition we want to enforce. Since the final graph ${G}_{f}$ contains all the vertices of the initial graph, the expression $\mathrm{𝐒𝐔𝐌}\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},\mathrm{𝚟𝚊𝚛}\right)$ corresponds to the sum of the variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection.

• $\mathrm{𝐒𝐔𝐌}_\mathrm{𝐖𝐄𝐈𝐆𝐇𝐓}_\mathrm{𝐀𝐑𝐂}\left(\mathrm{𝙴𝚡𝚙𝚛}\right)$ $\mathrm{𝙴𝚡𝚙𝚛}$ is an arithmetic expression. For each arc $a$ of $E\left({G}_{f}\right)$, let $f\left(a\right)$ denote the value of $\mathrm{𝙴𝚡𝚙𝚛}$. $\mathrm{𝐒𝐔𝐌}_\mathrm{𝐖𝐄𝐈𝐆𝐇𝐓}_\mathrm{𝐀𝐑𝐂}\left(\mathrm{𝙴𝚡𝚙𝚛}\right)$ is equal to ${\sum }_{a\in E\left({G}_{f}\right)}f\left(a\right)$. The value of $\mathrm{𝙴𝚡𝚙𝚛}$ usually depends on the attributes of the items located at the extremities of an arc.

EXAMPLE: The constraint $\mathrm{𝚐𝚕𝚘𝚋𝚊𝚕}_\mathrm{𝚌𝚊𝚛𝚍𝚒𝚗𝚊𝚕𝚒𝚝𝚢}_\mathrm{𝚠𝚒𝚝𝚑}_\mathrm{𝚌𝚘𝚜𝚝𝚜}$$\left(\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂},$ $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂},\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇},\mathrm{𝙲𝙾𝚂𝚃}\right)$ forces that each value $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}\left[i\right].\mathrm{𝚟𝚊𝚕}$ be assigned to exactly $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}\left[i\right].\mathrm{𝚗𝚘𝚌𝚌𝚞𝚛𝚛𝚎𝚗𝚌𝚎}$ variables of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection. In addition the $\mathrm{𝙲𝙾𝚂𝚃}$ of an assignment is equal to the sum of the elementary costs associated with the fact that we assign the ${i}^{th}$ variable of the $\mathrm{𝚅𝙰𝚁𝙸𝙰𝙱𝙻𝙴𝚂}$ collection to the ${j}^{th}$ value of the $\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}$ collection. These elementary costs are given by the $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}$ collection.

The graph-property $\mathrm{𝚂𝚄𝙼}_\mathrm{𝚆𝙴𝙸𝙶𝙷𝚃}_\mathrm{𝙰𝚁𝙲}\left(\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}\left[\left(\mathrm{𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜}.\mathrm{𝚔𝚎𝚢}-1\right)*\mathrm{𝚜𝚒𝚣𝚎}\left(\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}\right)+\mathrm{𝚟𝚊𝚕𝚞𝚎𝚜}.\mathrm{𝚔𝚎𝚢}\right].𝚌\right)=\mathrm{𝙲𝙾𝚂𝚃}$ expresses that the $\mathrm{𝙲𝙾𝚂𝚃}$ variable is equal to the sum of the elementary costs associated with each variable-value assignment. All these elementary costs are recorded in the $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}$ collection. More precisely, the cost ${c}_{ij}$ is recorded in the attribute $𝚌$ of the ${\left(\left(i-1\right)*|\mathrm{𝚅𝙰𝙻𝚄𝙴𝚂}\right)|+j\right)}^{th}$ entry of the $\mathrm{𝙼𝙰𝚃𝚁𝙸𝚇}$ collection.

A last graph parameter, $\mathrm{𝐃𝐈𝐒𝐓𝐀𝐍𝐂𝐄}$ , is computed on two final graphs ${G}_{1}$ and ${G}_{2}$ that have the same set $V$ of vertices and the sets $E\left({G}_{1}\right)$ and $E\left({G}_{2}\right)$ of arcs. This graph parameter is the cardinality of the set $\left(E\left({G}_{1}\right)-E\left({G}_{2}\right)\right)\cup \left(E\left({G}_{2}\right)-E\left({G}_{1}\right)\right)$. This corresponds to the number of arcs that belong to $E\left({G}_{1}\right)$ but not to $E\left({G}_{2}\right)$, plus the number of arcs that are in $E\left({G}_{2}\right)$ but not in $E\left({G}_{1}\right)$.

#### Graph class

For a given global constraint, a graph class specifies a general property that holds on its final digraph. We list the different graph classes and, for each of them, we point to some global constraints that fit in that class. Finding all the global constraints corresponding to a given graph class can be done by looking into the list of keywords (see Section 3.7 on page 3.7).

• $\mathrm{𝙰𝙲𝚈𝙲𝙻𝙸𝙲}$ : the final graph does not have any circuit.

• $\mathrm{𝙱𝙸𝙿𝙰𝚁𝚃𝙸𝚃𝙴}$ : the final graph is bipartite.

• $\mathrm{𝙲𝙾𝙽𝚂𝙴𝙲𝚄𝚃𝙸𝚅𝙴}_\mathrm{𝙻𝙾𝙾𝙿𝚂}_\mathrm{𝙰𝚁𝙴}_\mathrm{𝙲𝙾𝙽𝙽𝙴𝙲𝚃𝙴𝙳}$ : denotes that the graph constraint of a global constraint uses only the $\mathrm{𝑃𝐴𝑇𝐻}$ and the $\mathrm{𝐿𝑂𝑂𝑃}$ arc generators and that the final graph does not contain consecutive vertices that have a loop and that are not connected together by an arc.

• $\mathrm{𝙴𝚀𝚄𝙸𝚅𝙰𝙻𝙴𝙽𝙲𝙴}$ : the final graph is reflexive, symmetric and transitive.

• $\mathrm{𝙽𝙾}_\mathrm{𝙻𝙾𝙾𝙿}$ : the final graph does not have any loop.

• $\mathrm{𝙾𝙽𝙴}_\mathrm{𝚂𝚄𝙲𝙲}$ : the vertices of the initial graph belong to the final graph and all vertices of the final graph have exactly one successor.

• $\mathrm{𝚂𝚈𝙼𝙼𝙴𝚃𝚁𝙸𝙲}$ : the final graph is symmetric. A digraph is symmetric if and only if, if there is an arc from a vertex $u$ to a vertex $v$, there is also an arc from $v$ to $u$.