% DELAYING META-INTERPRETER
% CILog code. Copyright David Poole, 1997.

% dprove(G,D0,D1) is true if G can be proven from the delayables in D1-D0
%   where D0 is a tail of D1.

dprove(true,D,D).
dprove((A & B),D1,D3) <-
   dprove(A,D1,D2) &
   dprove(B,D2,D3).
dprove(G,D,[G|D]) <-
   delay(G).
dprove(H,D1,D2) <-
   (H <= B) &
   dprove(B,D1,D2).
