Answered step by step
Verified Expert Solution
Link Copied!

Question

00
1 Approved Answer

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

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions