2What is Prolog programming? Prolog is a programming language for symbolic , non-numeric commutation.It solves problems that involve objects and relations between objects.
3Defining 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.
4Defining 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).pamtomboblizannpatjim
5Defining 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).
6Defining relations by facts female(pam) is a Unary relationparent(bob,pat) is a Binary relation.Think about this relation:Sex(pam, feminist).
7Questions 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.
8Questions in prolog.Another question can be asked: Who is Liz’s parent??- Parent(X, liz).The answer here will not beYes/No, rather, prolog willfind the value of X.So the answer is : tompamtomboblizannpatjim
9Class exercise(1) Who are bob’s children? Who is parent of whom? liz pamtomboblizannpatjim
10Questions 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=patXParentgrandparentParentYjim
12Questions in prolog. Do ann and pat have a common parents? ?- Parent(X,ann) , Parent(X, pat).The answer will be : X = bob.
13Some important pointsA 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.
14Defining 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 ifX is a parent of Y.
15Defining 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 ruleThe differences between rule and fact:Fact: is a something that always, unconditionally true.Rule: specify things that are true if some condition is satisfied.
16Defining relations by rules. Each rule has two parts:Condition. (The right hand side)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.
17Defining 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.
18Defining 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).X= tom, Y= liz.The initial goal is: offspring(liz,tom).The condition part become: parent(tom,liz).The initial goal will be replaced with the subgoal parent(tom,liz).Program can find the answer of this subgoal by using the facts about parent relation.After finding that the condition part is true, the conclusion part will be also true.
19Class exercise(2)Write a rule to describe the grandparent relation?
20Home exercise(1)Write a rule to describe the sister relation?
21Recursive ruleLet’s describe the predecessor relation , this relation will be defined in term of parent relation.For all X and ZX is a predecessor of Z ifX is a parent of Zpredecessor(X,Z):- parent(X,Z).
22Recursive rule x z Y1 y2 Y3 What about indirect predecessor? parentY1What about indirect predecessor?The rule will be as the following:predecessor(X,Z):-parent(X,Y),parent(Y,Z)parent(X,Y1),parent(Y1,Y2).parent(y2,Z).…….parenty2PredecessorparentY3parentz
23Recursive rule x z Y1 For all X and Z there is a Y such that parentY1For all X and Zthere is a Y such thatX is the parent of Y , andY is a predecessor of Z.predecessor(X, Z)parent(X,Y),predecessor(Y,Z).parenty2PredecessorparentY3Predecessorparentz