Prolog Programming to work out the Family Tree of the Mr Men and
Little Miss.
Nolan Harley
Year 3, University of Bath.
male(mrstrong).
female(missbossy).
married(mrstrong,missbossy).
male(mrbounce).
female(missbrainy).
married(mrbounce,missbrainy).
female(misschatterbox).
parent(mrbounce,misschatterbox).
parent(missbrainy,misschatterbox).
male(mrgreedy).
married(mrgreedy,misschatterbox).
male(mrlazy).
parent(mrbounce,mrlazy).
parent(missbrainy,mrlazy).
female(misscurious).
married(mrlazy,misscurious).
female(missdotty).
parent(mrlazy,missdotty).
parent(misscurious,missdotty).
male(mrjelly).
parent(mrbounce,mrjelly).
parent(missbrainy,mrjelly).
female(missfickle).
married(mrjelly,missfickle).
female(missfun).
parent(mrjelly,missfun).
parent(missfickle,missfun).
female(missgiggles).
parent(mrjelly,missgiggles).
parent(missfickle,missgiggles).
male(mrhappy).
female(missnaughty).
married(mrhappy,missnaughty).
parent(mrbounce,mrhappy).
parent(missbrainy,mrhappy).
parent(mrstrong,missnaughty).
parent(missbossy,missnaughty).
male(nolan).
male(mrforget).
parent(mrhappy,nolan).
parent(missnaughty,nolan).
parent(mrhappy,mrforget).
parent(missnaughty,mrforget).
male(mrfunny).
parent(mrstrong,mrfunny).
parent(missbossy,mrfunny).
female(missneat).
married(mrfunny,missneat).
male(mrbrave).
parent(mrfunny,mrbrave).
parent(missneat,mrbrave).
male(mrdaydream).
parent(mrfunny,mrdaydream).
parent(missneat,mrdaydream).
male(mrfussy).
parent(mrstrong,mrfussy).
parent(missbossy,mrfussy).
female(missquick).
married(mrfussy,missquick).
male(mrbump).
parent(mrfussy,mrbump).
parent(missquick,mrbump).
female(missscatterbox).
parent(mrfussy,missscatterbox).
parent(missquick,missscatterbox).
female(missshy).
parent(mrfussy,missshy).
parent(pauline,missshy).
spouse(A,B) :- married(A,B).
spouse(B,A) :- married(A,B).
son(A,B) :- male(A), parent(B,A).
daughter(A,B) :- female(A), parent(B,A).
father(P,C) :- male(P), parent(P,C).
mother(P,C) :- female(P), parent(P,C).
sibling(A,B) :- mother(C,A), mother(C,B),
father(D,A), father(D,B), A\=B.
brother(A,B) :- male(A), sibling(A,B).
sister(A,B) :- female(A), sibling(A,B).
sib_of_parent(A,C) :- parent(B,C), sibling(A,B).
uncle(A,C) :- male(A), sib_of_parent(A,C).
uncle(A,C) :- male(A), sib_of_parent(B,C), spouse(A,B).
aunt(A,C) :- female(A), sib_of_parent(A,C).
aunt(A,C) :- female(A), sib_of_parent(B,C), spouse(A,B).
nephew(N,A) :- male(N), sib_of_parent(A,N).
nephew(N,A) :- male(N), sib_of_parent(B,N), spouse(A,B).
niece(N,A) :- female(N), sib_of_parent(A,N).
niece(N,A) :- female(N), sib_of_parent(B,N), spouse(A,B).
cousin(A,B) :- sibling(C,D), parent(C,A), parent(D,B).
grandparent(A,C) :- parent(A,B), parent(B,C).
grandfather(X,Y) :- male(X), grandparent(X,Y).
grandmother(X,Y) :- female(X), grandparent(X,Y).
grandson(S,F) :- male(S), grandparent(F,S).
granddaughter(S,F) :- female(S), grandparent(F,S).
Previous Page