      top_s --> s([],[]).
      s(G1,G3) --> np(G1,G2), vp(G2,G3).

      np([gap],[]) --> [].
      np(G,G) --> [the, man], postmod.

      postmod --> [].
      postmod --> [who], s([gap],[]).

      vp(G,G) --> [slept].
      vp(G1,G2) --> [saw], np(G1,G2).
