
subset(?SubList, +List)

   Succeeds if List is the list which contains all elements from SubList in
the same order as in SubList.



Arguments
   ?SubList            A term which unifies with a list.
   +List               A term which unifies with a list.

Type
   library(lists)

Description
   Used to test if a specified list contains all elements of another list,
   or to generate all sublists of a given list.

   The definition of this Prolog library predicate is:

        subset([],[]).
        subset([X|L],[X|S]) :-
            subset(L,S).
        subset(L, [_|S]) :-
            subset(L,S).

   This predicate does not perform any type testing functions.

   This predicate works properly for set operations only, so repeated
   elements, variable elements and unsorted lists should not be used.
	

Modes and Determinism
   subset(-, +) is multi

Fail Conditions
      Fails if SubList does not unify with a list whose elements are all
   contained in List in the same order as in SubList.



Resatisfiable
      Yes.

Examples
   
Success:
      subset([1,3], [1,2,3]).
      subset(X, [1,3,4]).        % backtracks over all subsets

Fail:
      subset([2,1], [1,2,3]).   % different order





See Also
   union / 3, subtract / 3, intersection / 3
