You are on page 1of 2

//family.

pl

parent(pam,bob).
parent(tom,bob).
parent(tom,liz).
parent(bob,ann).
parent(bob,pat).
parent(pat,jim).
offspring(Y,X):-parent(X,Y).
female(pam).
female(liz).
female(pat).
female(ann).
male(tom).
male(bob).
male(jim).
mother(X,Y):-parent(X,Y),female(X).
grandparent(X,Z):-parent(X,Y),parent(Y,Z).
sister(X,Y):-parent(Z,X),parent(Z,Y),female(X).
sister(X,Y):-parent(Z,X),parent(Z,Y),female(X),different(X,Y).
hasachild(X):-parent(X,Y).
happy(X):-parent(X,Y).
hastwochildren(X):-parent(X,Y),sister(Z,Y).
grandchild(X,Z):-parent(Y,X),parent(Z,Y).
aunt(X,Y):-parent(Z,Y),sister(X,Z).
predecessor(X,Z):-parent(X,Z).
predecessor(X,Z):-parent(X,Y),parent(Y,Z).
predecessor(X,Z):-parent(X,Y1),parent(Y1,Y2),parent(Y2,Z).
predecessor(X,Z):-parent(X,Y1),parent(Y1,Y2),parent(Y2,Y3),parent(Y3,Z).
son(X,Y):-offspring(X,Y),male(X).
daughter(X,Y):-offspring(X,Y),female(X).
wife(X,Y):-parent(X,Z),parent(Y,Z),female(X).
spouse(X,Y):-parent(X,Z),parent(Y,Z).
brother(X,Y):-parent(Z,X),parent(Z,Y),male(X).
brother(X,Y):-parent(Z,X),parent(Z,Y),male(X),different(X,Y).
greatGrandParent(X,Z):-parent(X,Z).
greatGrandParent(X,Z):-parent(X,Y),parent(Y,Z).
greatGrandParent(X,Z):-parent(X,Y1),parent(Y1,Y2),parent(Y2,Z).
greatGrandParent(X,Z):-parent(X,Y1),parent(Y1,Y2),parent(Y2,Y3),parent(Y3,Z).
uncle(X,Y):-brother(X,Z),parent(Z,Y).
aunt(X,Y):-sister(X,Z),parent(Z,Y).

//test
?-
| wife(pam,tom).
true.

?- wife(tom,pam).
false.

?- spouse(tom,pam).
true .

?- spouse(pam,tom).
true.
?- aunt(liz,ann).
true .

?- greatGrandParent(pam,pat).
true .

?- wife(X,Y).
X = Y, Y = pam ;
X = pam,
Y = tom ;
X = Y, Y = pat.

?- daughter(X,Y).
X = liz,
Y = tom ;
X = ann,
Y = bob ;
X = pat,
Y = bob ;
false.

?- daughter(liz,tom).
true.

?-
| hasachild(pam).
true.

?- hastwochildren(bob).
true

You might also like