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
Step: 1
Get Instant Access with AI-Powered Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started