Program written in PROLOG to Calculate a Family tree for a Family.
(In this case the Mr Men and Little Misses)



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

Any Comments then mail me