[ library(gfd) | Reference Manual | Alphabetic Index ]

# <ConsistencyModule:> inverse(+Succ,+Pred)

Constrains elements of Succ to be the successors and Pred to be the predecessors of nodes in a digraph

Succ
  A collection of N different (domain) variables or integers
Pred
  A collection of N different (domain) variables or integers

## Description

Succ and Pred are collections of N elements, representing a digraph of N nodes, where the i'th element of Succ and Pred represents the successor and predecessor of the node i respectively. The constraint enforces each node in the digraph to have one successor and one predecessor node, and that if node y is the successor of node x, then node x is the predecessor of node y.

One of the two arguments can be uninstantiated or partial list at call time.

Note that the Gecode implementation of this constraint actually index from 0. A dummy element is added to the start of Succ and Pred so that the indices returned corresponds to ECLiPSe's (starting from 1). A version of this constraint using native Gecode indexing is available as inverse_g/2.

ConsistencyModule is the optional module specification to give the consistency level for the propagation for this constraint: gfd_gac for generalised arc consistency (domain consistency), and gfd_vc for value consistency.

This constraint is known as inverse in the global constraint catalog, but with implicit node index based on the position in the list, and is implemented using Gecode's channel() constraint (variant with two IntVarArgs).

## See Also

inverse_g / 2, inverse / 2