pn      --> [mary].
n(sg)   --> [clown].
n(pl)   --> [clowns].
det(sg) --> [a].
det(_)  --> [the].

vi(3,sg) --> [laughs].
vi(_,pl) --> [laugh].
vt(3,sg) --> [loves].
vt(_,pl) --> [love].
vs(_,pl) --> [think].
vs(3,sg) --> [thinks].

s --> np(Per,Num), 
      vp(Per,Num).

np(3,sg)  --> pn.
np(3,Num) --> det(Num),
              n(Num).

vp(Per,Num) --> vi(Per,Num).
vp(Per,Num) --> vt(Per,Num), np(_,_).
vp(Per,Num) --> vs(Per,Num), s.
