[ library(gfd) | Reference Manual | Alphabetic Index ]
# <ConsistencyModule:> circuit(+Succ)

Constrains elements in Succ to form a Hamiltonian circuit.
*Succ*
- A collection of different (domain) variables or integers

## Description

Succ is a collection of N elements presenting a digraph of N nodes, where
the i'th element of Succ represents the successor to node i. The constraint
enforces Succ to form a Hamiltonian circuit, a path through every node in
the graph, visiting each node once and forming a circuit.

Note that the Gecode implementation of this constraint has index (node id)
starting from 0, rather than 1. This constraint is actually posted
as circuit_offset_g/2 with an offset of 1. A version of this constraint
with native Gecode indexing is available as circuit_g/1.

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 circuit in the global constraint catalog. It is
implemented with Gecode's circuit() constraint with an offset of 1.

## Examples

[eclipse 7]: circuit([2,A,4,1]).
A = 3
[eclipse 2]: circuit([]).
No (0.00s cpu)
[eclipse 11]: circuit([A]).
A = 1

## See Also

circuit_g / 1, circuit_offset_g / 2