s(P1,Number,s(Np,Vp),P3) :- np(P1,Number,Np,P2), vp(P2,Number,Vp,P3). np(P1,Number,np(Art,N),P3) :- art(P1,Number,Art,P2),n(P2,Number,N,P3). vp(P1,Number,vp(Verb),P2) :- v(P1,Number,Verb,P2). art(I, Number,art(Word),O) :- word(Word,I,O), isart(Word,Number). n(I,Number,n(Word),O) :- word(Word,I,O), isnoun(Word,Number). v(I,Number,v(Word),O) :- word(Word,I,O), isverb(Word,Number). isart(a,s3). isart(the,s3). isart(the,p3). isnoun(dog,s3). isnoun(dogs,p3). isverb(cried,p3). isverb(cried,s3). word(the,1,2). word(dog,2,3). word(cried,3,4).