s --> np(subj,NUM), vp(NUM).

np(_,NUM) --> det(NUM), n(NUM).
np(_,NUM) --> pn(NUM).
np(CASE,NUM) --> pro(CASE,NUM).
np(_,pl) --> n(pl).

vp(NUM) --> vi(NUM).
vp(NUM) --> vt(NUM), np(obj,_).


%% Lexicon

det(sing) --> [a].
det(_) --> [the].

n(sing) --> [bride].
n(pl) --> [brides].
n(sing) --> [nurse].
n(pl) --> [nurses].
n(_) --> [yakuza].
n(sing) --> [whiskey].

pn(sing) --> [bill].
pn(sing) --> [gogo].

pro(subj,sing) --> [he].
pro(subj,sing) --> [she].
pro(obj,sing) --> [him].
pro(obj,sing) --> [her].
pro(subj,pl) --> [they].
pro(obj,pl) --> [them].

vi(sing) --> [whistles].
vi(pl) --> [whistle].
vi(sing) --> [fights].
vi(pl) --> [fight].

vt(sing) --> [drinks].
vt(pl) --> [drink].
vt(sing) --> [kills].
vt(pl) --> [kill].