% grammar
s(S)   --> np(NP), vp(VP), {reduce(NP,VP,S)}.
np(NP) --> d(D),   n(N),   {reduce(D,N,NP) }.
vp(VP) --> v(VP).

% lexicon
v(X^walk(X))             --> [walks].
n(X^man(X))              --> [man].
det(RL^SL^all(X,R => S)  --> [every], {reduce(RL,X,R),reduce(SL,X,S)}.
