% Lab 6: Setting up sentences for Word Agreement

% AI = animate or inanimate
% Num = singular or plural

:- consult('sent2lst.pl').

se(sentence(NP, VP)) --> ne(NP, [Num, AI]), ve(VP, [Num, AI]).
ne(nphrase(D,N), [Num, AI]) --> dr(D, [Num, AI]), nn(N, [Num, AI]).
ve(vphrase(V), [Num, AI]) --> vb(V, [Num, AI]).
ve(vphrase(V,NP), [Num, AI]) --> vb(V, [Num, AI]), ne(NP, [_, _]).

% Determiners
dr(det(the), [_, _]) --> [the].
dr(det(a), [singular, _]) --> [a].
dr(det(a), [plural, _]) --> [some].

% Nouns
nn(noun(apple), [singular, inanimate]) --> [apple].
nn(noun(apples), [plural, inanimate]) --> [apples].
nn(noun(man), [singular, animate]) --> [man].
nn(noun(men), [plural, animate]) --> [men].

% Verbs
vb(verb(eats), [singular, animate]) --> [eats].
vb(verb(eat), [plural, animate]) --> [eat].
