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

# card_labeling(?SetVars)

Label cardinality of set variables

SetVars
  A list of set variables.

## Description

Instantiate all cardinalities of variables in SetVars from first to last, using indomain/1 predicate of fd library.

card_labeling/1 is defined as:

      card_labeling([]).
      card_labeling([H|T]):-
    	cardinality(H, C),
    	indomain(C),
    	card_labeling(T).

### Fail Conditions

Fails if cardinalities of SetVars can not be labeled (because constraint propagation leads to a failure).

### Resatisfiable

Yes.

## Examples

    ?- S `:: [a]+[b,c]:CS, T `:: [1] + [2], card_labeling([S, T]).
    CS = 1, S = [a], T = [1] ;
    CS = 1, S = [a], T = [1, 2] ;
    CS = 2, T = [1] ;
    CS = 2, T = [1, 2] ;
    CS = 3, S = [a,b,c], T = [1] ;
    CS = 3, S = [a,b,c], T = [1, 2] ;
    no

    ?- S `:: [a] + [b,c,d,e,f]:[2,3,6,9], card_labeling([S]), cardinality(S,C).
    C = 2 ;
    C = 3 ;
    C = 6, S = [a,b,c,d,e,f] ;
    no

## See Also

set_labeling / 2, refine / 2, cardinality / 2