!TITLE Use Of Meta-Predicates
!KEY
This example illustrates the use  of  the  meta-predicates  var  and  =...  The
procedure  call  variables(Term,L,[])  instantiates variable L to a list of all
the variable occurrences in the term Term.  e.g.  variables(d(U*V,X,DU*V+U*DV),
[U,V,X,DU,V,U,DV], []).

    | variables(X,[X|L],L) :- var(X),!.
    | variables(T,L0,L) :- T =.. [F|A], variables1(A,L0,L).
    |
    | variables1([T|A],L0,L) :- variables(T,L0,L1), variables1(A,L1,L).
    | variables1([],L,L).

