
ldsb_indomain_set(?X)

   Instantiates an LDSB set variable to an element
             of its domain.

Arguments
   X                   Set variable or set

Type
   library(ldsb)

Description
 Simple predicate for instantiating a set
             LDSB variable to an element of its domain.  If a set
             value is considered a binary number, where 1 is inclusion
             and 0 is exclusion, the value ordering is descending.
             For example:

             
go :-
    intset(S, 1, 3),
    Xs = [](S),
    ldsb_initialise(Xs, []),
    ( ldsb_indomain_set(S), writeln(S), fail
    ; true).
             

             would produce the following output:

             
[1, 2, 3]
[1, 2]
[1, 3]
[1]
[2, 3]
[2]
[3]
[]
             

             If X is already a ground set, then this predicate
             simply succeeds exactly once without leaving a
             choicepoint.

             This predicate can be used with the search/6
             predicate (see example).

Resatisfiable
   yes

Examples
   
go :-
        intsets(L, 3, 1, 10),
        ( foreach(S, L) do #(S, 3) ),
        ( fromto(L, [X|Xs], Xs, []) do
          ( foreach(Y, Xs), param(X) do
              #(X /\ Y, 0) ) ),
        Xs =.. [[]|L],
        ldsb_initialise(Xs, [values_interchange]),
        ( search(Xs, 0, input_order, ldsb_indomain_set, complete, []),
          writeln(Xs),
          fail
        ; true ).


See Also
   ldsb_indomain / 1, ldsb_initialise / 2
