Constraint programming defines "higher-level" constraints that apply to integer variables. The most common and useful higher-level constraint is the alldifferent constraint, which requires a set of n decision variables to assume some permutation (non-repeating ordering) of integers from 1 to n.