Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Genealogy Design a set of predicates that encode genealogical relationships. • m

ID: 3731911 • Letter: G

Question

Genealogy

Design a set of predicates that encode genealogical relationships.

• male(X) - X is male.

• female(X) - X is female.

• parent(X,Y) - X is the parent of Y.

• mother(X,Y) - X is the mother of Y.

• father(X,Y) - X is the father of Y.

• child(X,Y) - X is the child of Y.

• sibling/2 (reflexive)

• grandparent(X,Y) - X is the grandparent of Y.

• grandmother(X,Y) - X is the grandmother of Y.

• grandfather(X,Y) - X is the grandfather of Y.

• grandchild(X,Y) - X is the grandchild of Y.

• grandson(X,Y) - X is the grandson of Y.

• granddaughter(X,Y) - X is the granddaughter of Y.

Note: Your definitions should avoid infinite recursion and return a single result set. For

example, siblings(X,Y) should queries should return a single result set, i.e. not X=bob,

Y=joe; X=joe, Y=bob.

Explanation / Answer

ANS:-

given that ,

  

Genealogy:- a set of predicates that encode genealogical relationships.

Note: Your definitions should avoid infinite recursion and return a single result set. For

example, siblings(X,Y) should queries should return a single result set, i.e. notX=bob,

Y=joe; X=joe, Y=bob.

% Knowledge Base
male(adam).
male(bob).
male(brett).
male(charles).
male(chris).
male(clay).
female(ava).
female(barbara).
female(betty).
female(colette).
female(carrie).
parent(adam,bob).
parent(adam,barbara).
parent(ava,bob).
parent(ava,barbara).
parent(bob,clay).
parent(barbara,colette).
?- mother(ava,Kid)
Kid = bob;
Kid = barbara.
?- sibling(X,Y).
X = bob,
Y = barbara;
?- grandparent(GParent,colette).
GParent = adam;
GParent = ava.

.