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

atmost(?N, +Vars, +V)

At most N elements of Vars have the value V.
N
An integer or domain variable
+Vars
A collection (a la collection_to_list/2) of domain variables or integers
V
An integer

Description

This constraint ensures that at most N element of Vars have the value V.

This constraint is a specialisation of the more general count/4 constraint, with the (#=<) relation, i.e. the occurrences of V is less than or equal to N. Note that the order in which N and V occur in the constraint are swapped with respect to occurrences/3 and count/4; this is for compatibility with the argument order in IC.

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 V is a domain variable, then the propagation is weak, achieving neither domain or bound consistency until V becomes ground.

This constraint is also known as atmost 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.

The constraint is also known as atmost in the global constraint catalog, and is implemented using Gecode's count() constraint.

Fail Conditions

Fails if more than N elements of Vars can be instantiated to V.

Examples

[eclipse 33]: atmost(N,  [3, 5, 1, 4, 1, 3], 1).

N = N{[2 .. 6]}

[eclipse 34]: N :: [3,5], atmost(N, [3,A,3,5,3,3], 3).

N = 5
A = A{[-1000000 .. 1000000]}

[eclipse 35]:  N :: [3,6], atmost(N, [3,A,3,5,3,3], 3).

N = 6
A = A{[-1000000 .. 1000000]}

[eclipse 36]: N::[1..3], atmost(N, [3,4,2,3,1], 3).

N = N{[2, 3]}

See Also

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