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

The value Value occurs in Vars N times
*Value*
- Integer (or (domain) variable)
*Vars*
- Collection (a la collection_to_list/2) of integers or (domain) variables
*N*
- (Domain) variable or integer (array notation accepted)

## Description

The value Value occurs in Vars N times.
ConsistencyModule is the optional module specification to give the
consistency level for the propagation for this constraint:
gfd_gac for domain (generalised arc) consistency. Note that if
Value is a domain variable, then the propagation is weak, achieving
neither domain or bound consistency until Value becomes ground.

This constraint can be embedded in a constraint expression in its
functional form (without the last argument).

This constraint is a specialisation of the more general count/4
constraint, with the (#=) relation, i.e. the occurrences of Value
is equal to N.

This constraint is known as exactly in the global constraint
catalog, where N is restricted to an integer; the more general
count/4 constraint is also known as count in the global
constraint catalog, and the constraint is implemented using
Gecode's count() constraint.

## Examples

[eclipse 11]: occurrences(1,[3,5,1,4,1,3], N).
N = 2
[eclipse 12]: occurrences(6, [], N).
N = 0
[eclipse 15]: [A,B,C] :: [1..10], occurrences(3, [A,B,C], 0).
A = A{[1, 2, 4 .. 10]}
B = B{[1, 2, 4 .. 10]}
C = C{[1, 2, 4 .. 10]}
[eclipse 16]: N :: [3, 5], occurrences(3, [3,A,3,5,3], N).
N = 3
A = A{[-1000000 .. 2, 4 .. 1000000]} % A cannot be 3
[eclipse 17]: N :: [3, 5], occurrences(3, [3,A,3,5,3,3], N).
N = 5
A = 3

## See Also

element / 3, atmost / 3, count / 4, eclipse_6 : collection_to_list / 2, lists : collection_to_list / 2, ic_symbolic : occurrences / 3, fd_global : occurrences / 3, ic_global : occurrences / 3