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

alldifferent(?List)

All elements of List are different
List
List of domain variables or atomic values

Description

Constrains all list elements to be different atomic values. At call time, the list elements must already have domains or be instantiated.

Operationally, the predicate delays until list elements become instatiated, and removes the corresponding values from the domains of the other list elements.

Examples

    ?- [X, Y, Z] &:: [a,b,c,d], alldifferent([X,Y,Z]), X = a.
    X = a
    Y = Y{[b, c, d]}
    Z = Z{[b, c, d]}
    There are 2 delayed goals.
    Yes (0.00s cpu)

    ?- X &:: [a,b,c], alldifferent([a,b,X]).
    X = c
    Yes (0.00s cpu)
    

See Also

&\= / 2