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

<ConsistencyModule:> bool_channeling(?Var, +DomainBools, +Min)

Channel the domain values of Vars to the 0/1 boolean variables in DomainBools
A (domain) variable (array notation accepted)
A collection of N 0/1 (domain) variables or integers
An integer


Var is a domain variable whose initial interval is Min..(Min+N), and this constraint links the domain values of Var with the N 0/1 variables in DomainBools such that the i'th variable in DomainBools represents the value Min+i, and its value is 0 if the value is not in Var's domain, and 1 if Var is assigned the value [Thus, only one variable in DomainBools can take the value 1].

ConsistencyModule is the optional module specification to give the consistency level for the propagation for this constraint: gfd_gac for generalised arc consistency (domain consistency).

A variant of this constraint, called 'domain_constraint' is in the global constraint catalog. There, instead of having DomainBools and Min, there is a collection of Value-Bool pairs, representing a possible domain value and its associated 0/1 variable. This constraint is implemented using Gecode's channel() constraint (variant with BoolVarArgs and IntVar).


[eclipse 53]: bool_channeling(V, [0,1,1,0,1,0,0], 3).  % fail

[eclipse 54]:  bool_channeling(V, [0,0,1,0,0,0,B], 3).

V = 5
B = 0

[eclipse 55]: bool_channeling(V, [B1,B2,B3,B4,B5], 6), B4 = 0.

V = V{[6 .. 8, 10]}
B1 = B1{[0, 1]}
B2 = B2{[0, 1]}
B3 = B3{[0, 1]}
B4 = 0
B5 = B5{[0, 1]}

See Also

fd_global : bool_channeling / 3, ic_global : bool_channeling / 3