# 4.2.2.14. Deprecated constraints

In this section: at_least, at_most, exactly, global_cardinality_low_up, global_cardinality_low_up_closed.

## at_least

```
predicate at_least(int: n, array [$X] of var $$E: x, $$E: v)
``` |

Requires at least This constraint is deprecated. Use count(i in x)(i=v) >= n instead. |

## at_most

```
predicate at_most(int: n, array [$X] of var $$E: x, $$E: v)
``` |

Requires at most This constraint is deprecated. Use count(i in x)(i=v) <= n instead. |

## exactly

```
predicate exactly(int: n, array [$X] of var $$E: x, $$E: v)
``` |

Requires exactly This constraint is deprecated. Use count(i in x)(i=v) = n instead. |

## global_cardinality_low_up

```
predicate global_cardinality_low_up(array [$X] of var int: x,
array [$Y] of int: cover,
array [$Y] of int: lbound,
array [$Y] of int: ubound)
``` |

Requires that for all This constraint is deprecated. Use global_cardinality(x, cover, lbound, ubound) instead. |

## global_cardinality_low_up_closed

```
predicate global_cardinality_low_up_closed(array [$X] of var int: x,
array [$Y] of int: cover,
array [$Y] of int: lbound,
array [$Y] of int: ubound)
``` |

Requires that for all The elements of This constraint is deprecated. Use global_cardinality_closed(x, cover, lbound, ubound) instead. |