s(X):- np(X, Y), vp(Y, []). np(X, Y):- det(X, Z), noun(Z, Y). vp(X, Y):- verb(X, Z), np(Z, Y). noun([A|X],X) :- cat(noun, A). verb([A|X],X) :- cat(verb, A). det([A|X],X) :- cat(det, A). cat(noun,boy). cat(noun,frog). cat(noun,girl). cat(verb,likes). cat(verb,hates). cat(det,the). cat(det,a).