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

Define and test the PROLOG predicates described below. Each of your predicates m

ID: 3725114 • Letter: D

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

Explanation / Answer

In Prolog, facts are used to define clauses.

In a fact, The predicate may be followed by one or more arguments which are enclosed by parentheses

Hence, to define the knowledge base, facts need to be added like.

male(X).

female(Y).

Define set of mother and father predicate

mother(X,Y).

father(X,Y).

To deifne further knowledge base and query on it, we will define rules.

A rule can be viewed as an extension of a fact with added conditions that also have to be satisfied for it to be true

Rule 1: parent(X, Y) :- father(X, Y).
Rule 2: parent(X, Y) :- mother(X, Y).

Rule 3: grandfather(X, Y) :- father(X, Z), parent(Z, Y).

Rule 4: grandmother(X, Y) :- mother(X, Z), parent(Z, Y).

Rule 5: grandparent(X, Y) :- parent(X, Z), parent(Z, Y).

Rule 6: child(X,Y) :- parent(Y,X).

Rule 7: sibling(X,Y):- parent(Z,X), parent(Z,Y).

Rule 8: grandchild(X,Y) :- parent(Y, Z), parent(Z, X).

Rule 9: grandson(X,Y) :- grandchild(X,Y) , male(X).

Rule 10: granddaughter(X,Y) :- grandchild(X,Y) , female(X).

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote