1type_restriction(member(A,B),[atomic(A),list(B)]).
    2type_restriction(components(A,B,C),[list(A),atomic(B),list(C)]).
    3
    4list([]).
    5list([A|B]):- atomic(A),list(B).
    6
    7
    8components([X|Y],X,Y).
    9
   10
   11ex(member(e,[e,o,z]),+).
   12ex(member(o,[o,z]),+).
   13ex(member(o,[e,o,z]),+).
   14ex(member(z,[z]),+).
   15ex(member(z,[o,z]),+).
   16ex(member(z,[e,o,z]),+).
   17
   18
   19
   20ex(member(e,e),-).
   21ex(member(e,o),-).
   22ex(member(e,z),-).
   23ex(member(e,[]),-).
   24ex(member(e,[z]),-).
   25ex(member(e,[o,z]),-).
   26ex(member(o,e),-).
   27ex(member(o,o),-).
   28ex(member(o,z),-).
   29ex(member(o,[]),-).
   30ex(member(o,[z]),-).
   31ex(member(z,e),-).
   32ex(member(z,o),-).
   33ex(member(z,z),-).
   34ex(member(z,[]),-).
   35ex(member([],e),-).
   36ex(member([],o),-).
   37ex(member([],z),-).
   38ex(member([],[]),-).
   39ex(member([],[z]),-).
   40ex(member([],[o,z]),-).
   41ex(member([],[e,o,z]),-).
   42ex(member([z],e),-).
   43ex(member([z],o),-).
   44ex(member([z],z),-).
   45ex(member([z],[]),-).
   46ex(member([z],[z]),-).
   47ex(member([z],[o,z]),-).
   48ex(member([z],[e,o,z]),-).
   49ex(member([o,z],e),-).
   50ex(member([o,z],o),-).
   51ex(member([o,z],z),-).
   52ex(member([o,z],[]),-).
   53ex(member([o,z],[z]),-).
   54ex(member([o,z],[o,z]),-).
   55ex(member([o,z],[e,o,z]),-).
   56ex(member([e,o,z],e),-).
   57ex(member([e,o,z],o),-).
   58ex(member([e,o,z],z),-).
   59ex(member([e,o,z],[]),-).
   60ex(member([e,o,z],[z]),-).
   61ex(member([e,o,z],[o,z]),-).
   62ex(member([e,o,z],[e,o,z]),-)