
alldifferent(+Vars)

   All members of Vars are different

Arguments
   Vars                A collection (a la collection_to_list/2) of variables or integers

Type
   library(ic_global)

Description
    Constrains all elements of a collection to be pairwise different (and
    integral).  This is an implementation with the same semantics as the
    standard alldifferent/1 constraint, but with stronger propagation
    behaviour.  It checks for exhaustion of all sub-ranges of possible
    values.
    
    The algorithm is based roughly on: Jean Francois Puget, A fast algorithm
    for the bound consistency of the alldiff constraint, AAAI 1998, but
    makes some additional inferences based on domain size.
    
    Any input variables which do not already have finite bounds will
    be given default bounds of -10000000 to 10000000.

Examples
   
    ?- length(Xs,5), Xs::1..4, alldifferent(Xs).
    no (more) solution.


    ?- [X1,X2]::1..2, [X3,X4,X5]::1..5, alldifferent([X1,X2,X3,X4,X5]).

    X1 = X1{[1, 2]}
    X2 = X2{[1, 2]}
    X3 = X3{[3..5]}
    X4 = X4{[3..5]}
    X5 = X5{[3..5]}

    Delayed goals:
        alldifferent([X1{[1, 2]}, X2{[1, 2]}], 1)
        alldifferent([X3{[3..5]}, X4{[3..5]}, X5{[3..5]}], 1)
    

See Also
   ic : alldifferent / 1, ic_symbolic : alldifferent / 1, gfd : alldifferent / 1, sd : alldifferent / 1, fd_global : alldifferent / 1, fd : alldifferent / 1, fd_global_gac : alldifferent / 1, ic_global_gac : alldifferent / 1, alldifferent / 2, eclipse_6 : collection_to_list / 2, lists : collection_to_list / 2
