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
Get step-by-step solutions from verified subject matter experts
