[ library(gfd) | Reference Manual | Alphabetic Index ]
# <ConsistencyModule:> mem(+Vars,?Member)

Constrains Member to be the a member element in Vars.
*Vars*
- Collection (a la collection_to_list/2) of (domain) variables or integers (NOT arbitrary expressions)
*Member*
- Member element of Vars (domain variable or integer, array notation accepted)

## Description

Constrains Member to be a one of the elements in Vars.

Note that this constraint has the same declarative semantics as the
standard member/2 predicate, but the order of the arguments are
reversed to allow the constraint to be used in constraint
expressions.

You may find it more convenient to embed `mem(Vars)` in a
constraint expression.

This constraint is implemented by Gecode's member() constraint.

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

## Examples

[eclipse 7]: A :: 1..10, B :: 2..20, mem([A,B], M).
A = A{[1 .. 10]}
B = B{[2 .. 20]}
M = M{[1 .. 20]}
[eclipse 8]: A :: 1..10, B :: 2..20, mem([A,B], M), M #< 5.
A = A{[1 .. 10]}
B = B{[2 .. 20]}
M = M{[1 .. 4]}
[eclipse 9]: A :: 1..10, B :: 2..20, mem([A,B], M), M #< 2.
A = A{[1 .. 10]}
B = B{[2 .. 20]}
M = 1
[eclipse 10]: mem([4,5,5,4,1,5], C).
C = C{[1, 4, 5]}

## See Also

mem / 3, eclipse_6 : collection_to_list / 2, lists : collection_to_list / 2