sentence(X):-append(Y,Z,X),noun_phrase(Y),verb_phrase(Z). noun_phrase(X):-append(Y,Z,X),determiner(Y),noun(Z). verb_phrase(X):-append(Y,Z,X),verb(Y),noun_phrase(Z). verb_phrase(X):-verb(X). determiner([the]). determiner([an]). determiner([a]). noun([apple]). noun([pear]). noun([man]). verb([eats]). verb([likes]). /* [][a,man,eats,an,apple] [a][man,eats,an,apple] [a,man][eats,an,apple] [a,man,eats][an,apple] [a,man,eats,an][apple] [a,man,eats,an,apple][]