/*
  solve(Goal) :-
     Goal is true given the pure Prolog program defined by clause/2.
*/

  solve(Goal) :- solve(Goal,[]).

     solve([],[]).
     solve([],[G|Goals]) :- solve(G,Goals).
     solve([A|B],Goals) :- append(B,Goals,Goals1),solve(A,Goals1).
     solve(A,Goals) :- rule(A,B), solve(B,Goals).

%  Program 17.6  A meta-interpreter for pure Prolog in continuation style
