Prolog programming Introduction to Prolog

23
Prolog programming Introduction to Prolog CS 461

description

Prolog programming Introduction to Prolog . CS 461. What is Prolog programming? . Prolog is a programming language for symbolic , non-numeric commutation. It solves problems that involve objects and relations between objects. . Defining relations by facts. - PowerPoint PPT Presentation

Transcript of Prolog programming Introduction to Prolog

Page 1: Prolog programming Introduction to Prolog

Prolog programmingIntroduction to Prolog

CS 461

Page 2: Prolog programming Introduction to Prolog

What is Prolog programming ?• Prolog is a programming language for

symbolic , non-numeric commutation.

•It solves problems that involve objects and relations between objects.

Page 3: Prolog programming Introduction to Prolog

Defining relations by facts•The fact that Tom is a parent of Bob can

be written in prolog as:

Parent(tom, bob).

•tom and bob are objects,• Parent(tom, bob) is a relation between

these objects.

Page 4: Prolog programming Introduction to Prolog

Defining relations by facts•The whole family tree can be described by

the following facts:Parent(pam,bob).Parent(tom,bob).Parent(tom,liz).Parent(bob,ann).Parent(bob,pat).Parent(pat,jim).

pam

tom

bob liz

ann pat

jim

Page 5: Prolog programming Introduction to Prolog

Defining relations by facts•We can also add information about the sex of

the people by the following facts:

female(pam).male(tom).male(bob).female(liz).female(pat).female(ann).male(jim).

Page 6: Prolog programming Introduction to Prolog

Defining relations by facts

•female(pam) is a Unary relation

•parent(bob,pat) is a Binary relation.

Think about this relation:Sex(pam, feminist).

Page 7: Prolog programming Introduction to Prolog

Questions in prolog.

•Prolog can posed questions about any relation.

•So, we can ask a question about Parent relation,

•For example : Is bob a parent of Pat? ?- Parent(bob,pat).

The answer will be YES.

Page 8: Prolog programming Introduction to Prolog

•Another question can be asked: Who is Liz’s parent?

?- Parent(X, liz).

The answer here will not be Yes/No, rather, prolog will find the value of X. So the answer is : tom

Questions in prolog.

pam

tom

bob liz

ann pat

jim

Page 9: Prolog programming Introduction to Prolog

Class exercise(1)

•Who are bob’s children?•Who is parent of whom?

pam

tom

bob liz

ann pat

jim

Page 10: Prolog programming Introduction to Prolog

Questions in prolog.•In prolog, we can ask more complicated

questions such as: Who is a grandparent of jim?

?- Parent(Y,jim) , Parent( X,Y).

The answer will be:X=bobY=pat

X

Y

jim

Parent

Parentgrandparent

Page 11: Prolog programming Introduction to Prolog

Class exercise(2)•Who are Tom’s grandchildren?

Page 12: Prolog programming Introduction to Prolog

Questions in prolog.•Do ann and pat have a common

parents?

?- Parent(X,ann) , Parent(X, pat).The answer will be : X = bob.

Page 13: Prolog programming Introduction to Prolog

Some important points• A prolog program consists of clauses, each clause

ends with a full stop.

• The arguments of relation can be concrete objects, constant objects (such as bob and pat) or general object (such as X and Y).

• Questions in prolog consist of one or more goals.

parent(X,ann),parent(X,pat) means the conjunctions of the goals:X is parent of ann , andX is parent of Pat.

Page 14: Prolog programming Introduction to Prolog

Defining relations by rules.• Consider the relation offspring: offspring(liz, tom)

• This relation can be defined by making use of the fact that : the parent is the inverse of offspring.

• The alternative way can be based of the following logical statements:

For all X and Y, Y is an offspring of X if X is a parent of Y.

Page 15: Prolog programming Introduction to Prolog

Defining relations by rules.• In prolog we can define the offspring relation in the

following way:

Offspring(Y,X) :- Parent(X, Y)

• This clause is called a rule

• The differences between rule and fact:Fact: is a something that always, unconditionally true.Rule: specify things that are true if some condition is

satisfied.

Page 16: Prolog programming Introduction to Prolog

Defining relations by rules.•Each rule has two parts:1. Condition. (The right hand side)2. Conclusion. (The left hand side)

•offspring(X,Y):-parent(Y,X).offspring(X,Y) -> is a conclusion part.parent(X,Y) -> is a condition part.

Page 17: Prolog programming Introduction to Prolog

Defining relations by rules.•How rules are actually used by prolog

program?Consider the following question:

?- offspring(liz, tom)

There are no facts in the program about the offspring, therefore, the only way to find the answer is to apply the rule about offspring relation.

Page 18: Prolog programming Introduction to Prolog

Defining relations by rules.• Now we want to apply this rule:Offspring(Y,X) :- Parent(X, Y)

to find the answer of this question: ?- offspring(liz, tom).

1. X= tom, Y= liz.2. The initial goal is: offspring(liz,tom).3. The condition part become: parent(tom,liz).4. The initial goal will be replaced with the subgoal parent(tom,liz).5. Program can find the answer of this subgoal by using the facts

about parent relation.6. After finding that the condition part is true, the conclusion part

will be also true.

Page 19: Prolog programming Introduction to Prolog

Class exercise(2)•Write a rule to describe the

grandparent relation?

Page 20: Prolog programming Introduction to Prolog

Home exercise(1)•Write a rule to describe the sister

relation?

Page 21: Prolog programming Introduction to Prolog

Recursive rule•Let’s describe the predecessor relation ,

this relation will be defined in term of parent relation.

•For all X and Z X is a predecessor of Z if X is a parent of Z

predecessor(X,Z):- parent(X,Z).

Page 22: Prolog programming Introduction to Prolog

Recursive rule• What about indirect predecessor?• The rule will be as the following:predecessor(X,Z):- parent(X,Y),parent(Y,Z) predecessor(X,Z):- parent(X,Y1),parent(Y1,Y2).parent(y2,Z).

…….…….

x

Y1

z

y2

Y3

Predecessor

parent

parent

parent

parent

Page 23: Prolog programming Introduction to Prolog

Recursive ruleFor all X and Zthere is a Y such that (1)X is the parent of Y , and(2) Y is a predecessor of Z.

predecessor(X, Z) parent(X,Y),predecessor(Y,Z).

x

Y1

z

y2

Y3

Predecessor

parent

parent

parent

parent

Predecessor