% CS-335 Foundations of AI % Coursework 1 - Part 1 % % Sean Handley, 320097@swan.ac.uk %define a simple sentence - noun phrase, followed by verb phrase sentence(sentence(NP,VP)) --> noun_phrase(Num,NP), verb_phrase(Num,VP). %define different forms of noun phrase noun_phrase(Num,NP) --> quantifier(Q), anim_noun(Num,N), {build_noun_phrase(Q,N,NP)}. noun_phrase(Num,NP) --> quantifier(Q), adjective(A), anim_noun(Num,N), {build_noun_phrase(Q,A,N,NP)}. noun_phrase(Num,NP) --> anim_noun(Num,N), {build_noun_phrase(N,NP)}. noun_phrase(Num,NP) --> adjective(A), anim_noun(Num,N), {build_noun_phrase(A,N,NP)}. build_noun_phrase(Q,N,noun_phrase(Q,N)). build_noun_phrase(N,noun_phrase(N)). build_noun_phrase(Q,A,N,noun_phrase(Q,A,N)). build_noun_phrase(A,N,noun_phrase(A,N). %distinguish subject NPs and object NPs object_noun_phrase(Num,NP) --> quantifier(Q), inanim_noun(Num,N), {build_object_noun_phrase(Q,N,NP)}. object_noun_phrase(Num,NP) --> quantifier(Q), adjective(A), inanim_noun(Num,N), {build_object_noun_phrase(Q,A,N,NP)}. object_noun_phrase(Num,NP) --> inanim_noun(Num,N), {build_object_noun_phrase(N,NP)}. object_noun_phrase(Num,NP) --> adjective(A), inanim_noun(Num,N), {build_object_noun_phrase(A,N,NP)}. object_noun_phrase(Num,NP) --> noun_phrase(Num,NP). build_object_noun_phrase(Q,N,object_noun_phrase(Q,N)). build_object_noun_phrase(N,object_noun_phrase(N)). build_object_noun_phrase(Q,A,N,object_noun_phrase(Q,A,N)). build_object_noun_phrase(A,N,object_noun_phrase(A,N)). %verb phrase must be followed by object NP verb_phrase(Num,verb_phrase(TV,NP)) --> transitive_verb(Num,TV), object_noun_phrase(_,NP). %define quantifiers quantifier(quantifier(Q)) --> [Q], {quantifier(Q)}. quantifier(some). quantifier(every). quantifier(all). quantifier(a). %define adjectives adjective(adjective(A)) --> [A], {adjective(A)}. adjective(black). adjective(small). adjective(ugly). adjective(sweet). %define nouns, distinguishing anim and inanim as well as plurality anim_noun(sing,anim_noun(N)) --> [N], {anim_noun(N,_X)}. anim_noun(plu,anim_noun(N)) --> [N], {anim_noun(_X,N)}. anim_noun(child,children). anim_noun(boy,boys). anim_noun(girl,girls). anim_noun(goat,goats). anim_noun(cow,cows). anim_noun(sheep,sheep). inanim_noun(sing,inanim_noun(N)) --> [N], {inanim_noun(N,_X)}. inanim_noun(plu,inanim_noun(N)) --> [N], {inanim_noun(_X,N)}. inanim_noun(ball,balls). inanim_noun(doll,dolls). inanim_noun(toy,toys). %define verbs as well as plurality transitive_verb(sing,transitive_verb(TV)) --> [TV], {transitive_verb(TV,_X)}. transitive_verb(plu,transitive_verb(TV)) --> [TV], {transitive_verb(_X,TV)}. transitive_verb(follows,follow). transitive_verb(hits,hit). transitive_verb(carries,carry). transitive_verb(loves,love).