Presentation is loading. Please wait.

Presentation is loading. Please wait.

How To Think Like a Prolog ?

Similar presentations


Presentation on theme: "How To Think Like a Prolog ?"— Presentation transcript:

1 How To Think Like a Prolog ?
Done by : Asma Almane , Banan Alhadlaq

2 Example 1: Consider the following Prolog program:
Q: As a compiler , find the possible answers of X in the following query : ? – predecessor ( X , jim ) . parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z).

3 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr1 From the fact parent (pat,jim) X = pat , Z = jim parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). parent(pat,jim) TRUE X= pat ;

4 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 From the fact Parent(pam,bob). X=pam , Y=bob parent( pam , bob ) , predecessor(bob , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor(bob , jim). By using rule pr 2 By using rule pr 1 From the fact Parent(bob,ann). X=bob , Y=ann parent( bob , jim ). parent( bob , ann ), predecessor( ann , jim). FALSE predecessor( ann , jim). By using rule pr 1 By using rule pr 2 parent( ann , jim). parent( ann , Y ), predecessor( Y , jim). FALSE FALSE

5 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 From the fact Parent(pam,bob). X=pam , Y=bob parent( pam , bob ) , predecessor(bob , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor(bob , jim). By using rule pr 2 By using rule pr 1 From te fact Parent(bob,pat). X=bob , Y=ann parent( bob , jim ). parent( bob , pat ), predecessor( pat , jim). FALSE predecessor( pat , jim). By using rule pr 1 parent( pat , jim). X=pam ; TRUE

6 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 From the fact Parent(pam,bob). X=tom , Y=bob parent( tom , bob ) , predecessor(bob , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor(bob , jim). By using rule pr 2 By using rule pr 1 From the fact Parent(bob,ann). X=bob , Y=ann parent( bob , jim ). parent( bob , ann ), predecessor( ann , jim). FALSE predecessor( ann , jim). By using rule pr 1 By using rule pr 2 parent( ann , jim). parent( ann , Y ), predecessor( Y , jim). FALSE FALSE

7 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 From the fact Parent(pam,bob). X=tom , Y=bob parent( tom , bob ) , predecessor(bob , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor(bob , jim). By using rule pr 2 By using rule pr 1 From the fact Parent(bob,pat). X=bob , Y=ann parent( bob , jim ). parent( bob , pat ), predecessor( pat , jim). FALSE predecessor( pat , jim). By using rule pr 1 parent( pat , jim). X=tom ; TRUE

8 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 From the fact Parent(pam,bob). X=tom , Y=liz parent( tom , liz ) , predecessor(liz , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor(liz , jim). By using rule pr 1 By using rule pr 2 parent( liz , jim ). parent( liz , Y ), predecessor( Y , jim). FALSE There is NO Y FALSE

9 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X , jim). By using rule pr 2 From the fact Parent(bob,ann). X=bob , Y=ann parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). parent( bob , ann ), predecessor( ann , jim). predecessor( ann , jim). By using rule pr 1 By using rule pr 2 parent( ann , jim). parent( ann , Y ), predecessor( Y , jim). FALSE There is NO Y FALSE

10 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 From the fact Parent(bob,pat). X=bob , Y=pat parent( bob , pat ), predecessor( pat , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor( pat , jim). By using rule pr 1 parent( pat , jim). TRUE X=bob ;

11 Example 1: Consider the following Prolog program:
? – predecessor ( X , jim ) . Example 1: Consider the following Prolog program: predecessor(X,jim) By using rule pr 2 parent( pat , jim ), predecessor( jim , jim). parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). predecessor(X,Z):- parent(X,Z). parent(X,Y), predecessor(Y,Z). predecessor( jim , jim). By using rule pr 1 By using rule pr 2 parent( jim , jim). parent( jim , Y ), predecessor( Y , jim). FALSE There is NO Y FALSE

12 Example 2: Consider the following Prolog program:
Q: As a compiler , find the possible answers of X and Y in the following query : ? – brother ( X , Y ) . father(ahmad,sami). father(ahmad,khalid). father(sami,fahad). father(sami,mohammed). father(khalid,naseer). brother(X,Y):- father(Z,X) , father(Z,Y), not(X=Y).

13 Example 2: Consider the following Prolog program:
? – brother ( X , Y ) . Example 2: Consider the following Prolog program: brother ( X , Y ) father(ahmad,sami). father(ahmad,khalid). father(sami,fahad). father(sami,mohammed). father(khalid,naseer). brother(X,Y):- father(Z,X) , father(Z,Y), not(X=Y). By using the facts father (ahmad , sami) , father (ahmed,Y) , not(sami=Y). TRUE ; X= sami , Y=khalid

14 Example 2: Consider the following Prolog program:
? – brother ( X , Y ) . Example 2: Consider the following Prolog program: brother ( X , Y ) father(ahmad,sami). father(ahmad,khalid). father(sami,fahad). father(sami,mohammed). father(khalid,naseer). brother(X,Y):- father(Z,X) , father(Z,Y), not(X=Y). By using the facts father (ahmad , khalid) , father (ahmed,Y) , not(khalid=Y). TRUE ; X= khalid , Y=sami

15 Example 2: Consider the following Prolog program:
? – brother ( X , Y ) . Example 2: Consider the following Prolog program: brother ( X , Y ) father(ahmad,sami). father(ahmad,khalid). father(sami,fahad). father(sami,mohammed). father(khalid,naseer). brother(X,Y):- father(Z,X) , father(Z,Y), not(X=Y). By using the facts father (sami , fahad) , father (sami,Y), Not(fahad=Y). TRUE X= fahad , Y=mohammed ;

16 Example 2: Consider the following Prolog program:
? – brother ( X , Y ) . Example 2: Consider the following Prolog program: brother ( X , Y ) father(ahmad,sami). father(ahmad,khalid). father(sami,fahad). father(sami,mohammed). father(khalid,naseer). brother(X,Y):- father(Z,X) , father(Z,Y), not(X=Y). By using the facts father (sami,mohammed), father(sami,Y), not(mohammed=Y). TRUE X=mohammed , Y= fahad ;

17 Example 2: Consider the following Prolog program:
? – brother ( X , Y ) . Example 2: Consider the following Prolog program: brother ( X , Y ) father(ahmad,sami). father(ahmad,khalid). father(sami,fahad). father(sami,mohammed). father(khalid,naseer). brother(X,Y):- father(Z,X) , father(Z,Y), not(X=Y). By using the facts father (khalid,naseer), father(khalid,Y), not(naseer=Y). FALSE false.


Download ppt "How To Think Like a Prolog ?"

Similar presentations


Ads by Google