
% Grammar 7.8: BH-GRN grammar for semantic translation

:-op(1100, xfx, --->).
:-op(1100, xfx, ===>).
:-op(400, yfx, *).

s(S_trans)   ---> [np(NP_trans), vp(VP_trans)],
                  {beta_reduce(NP_trans*VP_trans, S_trans)}.
vp(Vi_trans) ---> [vi(Vi_trans)].
vp(VP_trans) ---> [vt(Vt_trans), np(NP_trans)],
                  {beta_reduce(Vt_trans*NP_trans, VP_trans)}.
np(NP_trans) ---> [det(Det_trans), nbar(Nbar_trans)],
                  {beta_reduce(Det_trans*Nbar_trans, NP_trans)}.
np(Pname_trans) ---> [pname(Pname_trans)]. 
nbar(N_trans) ---> [n(N_trans)].

det(Q^P^for_all(X, Q*X => P*X)) ===> [every].
n(X^soldier1(X))                ===> [soldier].
pname(P^(P*d))                     ===> [duncan].
vi(X^died1(X))                  ===> [died].
vt(NP^Y^(NP*X^killed1(Y, X)))     ===> [killed].


 

