Question: Define and test the PROLOG predicates described below. Each of your predicates must have the same name and signature as the examples below . Your

Define and test the PROLOG predicates described below. Each of your predicates must have the same name and signature as the examples below. Your predicates must behave properly on all instances of valid input types. Please write in PROLOG.

5) 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.

Note: The Knowledge Base of people below is for example only. You are just responsible for the definitions of predicate rules. The Knowledge Base used for grading will be different.

% 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).

Input:

?- mother(ava,Kid).

Kid = bob;

Kid = barbara.

?- father(bob, Kid).

Kid = clay.

?- parent(X, colette).

X = barbara.

?- sibling(X,Y).

X = bob,

Y = barbara;

?- grandparent(GParent,colette).

GParent = adam;

GParent = ava.

?- grandmother(X, clay).

X = ava ;

?- grandfather(X, clay).

X = adam .

?- grandchild(GChild, adam).

GChild = clay;

GChild = colette.

?- grandson(Grandson, adam).

Grandson = clay.

?- granddaughter(X, ava).

X = colette .

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!