3. INTRODUCTION
Prolog is the most popular language of the logic
programing languages.
It is goal based language, it has automatic
backtracking and uses recursion.
Prolog stands for programmation en logique", or
programming in logic."
4. INTRODUCTION [CTD...]
Invented by Alain Colmerauer and Philippe Roussel
of the Groupe d'Intelligence Articielle (GIA) in early
1970s.
The earliest Prolog interpreter was written in Algol
in1972 by Roussel.
The official ISO standard for Prolog was published
in 1996.
5. CURRENT IMPLEMENTATIONS
There are several popular Prolog interpreters
available. They include:
GNU Prolog (http://pauillac.inria.fr/vdiaz/gnu-
prolog/)
SWI-Prolog (http://www.swi-prolog.org/)
Visual Prolog (http://www.visual-
prolog.com/vip6/Download/Default.htm)
BProlog
(http://www.cad.mse.kyutech.ac.jp/people/zhou/bpr
olog.html)
7. LANGUAGE FEATURES[CTD...]
Facts-Something that is declared to always be true.
Ex-father(bob,george)
mother(alice,jeffrey)
Rules- Something which is true only if all conditions
(sub goals) on the right are true
Ex-
parent(X,Y) :- father(X,Y).
parent(X,Y) :- mother(X,Y).
grandparent(X,Z) :- parent(X,Y), parent(Y,Z).
8. LANGUAGE FEATURES[CTD...]
Questions- Something which asks from the system
Ex- ?-ancestor(X,cindy),sibling(X,jeffrey)
Clauses- Something which has a head and a body.
Fact = head
Rules = head + body
Question=body
9. LANGUAGE FEATURES [CTD...]
Ex-
uncle(X,Y) :- sibling(X,Z), parent(Z,Y).
(head) (body)
?- ancestor(X,cindy),sibling(X,jeffrey)
(body)
father(john,mary)
(head)
10. LANGUAGE FEATURES[CTD...]
Terms - term can be number, constant (Albert) or
variable(X).
Compound Terms- data structure, convenient way
of grouping relevant data together
Ex- fullname( joe,brown )
student( fullname( joe,brown ), 25 )
Full name , Student are called as functors.
11. MORE FEATURES
Order- order matters in prolog, order is top to
bottom.
Ex- dog(rover).
dog(duke).
We enter the following question:
?- dog(X).
Answer : X = rover
Order is important for the efficiency and correctness
of the program.
12. MORE FEATURES[CTD...]
Backtracking-
prolog stores data in tree.
It uses depth first search to find answers.
In its attempt to prove a goal, Prolog sometimes
goes down a dead-end, at which point it needs to
backtrack.ck
13. MORE FEATURES[CTD...]
Ex- Sample Code
Facts- green(poisonivy).
green(broccoli).
edible(icecream).
edible(broccoli).
Question- ?- green(X),edible(X).
Answer- X = broccoli
15. MORE FEATURES[CTD...]
Cuts- The cut is denoted by exclamation mark “!” and
disallows prolog from backtracking past that point.
Ex-
With Out Cut
grade(G,a) :- G > 90.
grade(G,b) :- G > 80.
grade(G,c) :- G > 70.
grade(G,d) :- G > 60.
grade(_,f).
With Cut
grade2(G,a) :- G > 90, !.
grade2(G,b) :- G > 80, !.
grade2(G,c) :- G > 70, !.
grade2(G,d) :- G > 60, !.
grade2(_,f).
16. MORE FEATURES[CTD...]
Forced Backtrack With Grade
?- grade(83,X)
X = b;
X = c;
X = d;
X = f
yes
Forced Backtrack With Grade2
?- grade2(83,X)
X = b;
yes
Forced back tracking with semi
colon.
Types of Cuts
Red Cuts
Green Cuts
17. MORE FEATURES[CTD...]
Recursion- like functional languages prolog uses
recursion.
Ex-
ancestor(X,Z) :- parent(X,Z).
(Base Case)
ancestor(X,Z) :- parent(X,Y),ancestor(Y,Z).
(Recursive Rule)
18. MORE FEATURES [CTD...]
Lists- important data structure in prolog and are
processed recursively.
Ex-
[a, b, a, a, c, d]
[]
[the, dog]
List= Head + Tail
List= [Head | Tail ]
Ex-
List- [a,b,a] can be represented as
[a | [b,a] ] or
[a, b | [a]] or
[a, b, a | []]
21. RESOLUTION AND UNIFICATION
Resolution
The resolution principle,
If C1 and C2 are Horn clauses and the head of C1 matches
one of the terms in the body of C2 then we can replace the
term in C2 with the body of C1.
Example :
takes(Saman, cs123).
classmates(X, Y) :- takes(X, Z), takes(Y, Z).
classmates(Saman, Y) :- takes(Y, cs123).
22. RESOLUTION AND UNIFICATION [CTD…]
Unification
Prolog associates variables and values using a process
known as unification
Variables that receive a value are said to be instantiated
Example :
The pattern-matching process used to associate variable X
with Saman and Z with cs123 is known as unification.
23. RESOLUTION AND UNIFICATION [CTD…]
The unification rules for Prolog :
A constant unifies only with itself.
Two structures unify if and only if they have the same
functor and the same number of arguments, and the
corresponding arguments unify recursively.
Example :
?- f(a, b) = f(a, b, c).
No
A variable unifies with anything.
24. DEPTH FIRST SEARCH
Prolog uses a depth-first search strategy when
traversing the tree.
Advantage :
Less memory usage
Disadvantage :
Prolog may descend down an endless branch (Black
holes)
25. TOP DOWN VERSUS BOTTOM UP
Top Down Control
we start from the goal and attempt to reach the
hypotheses
Bottom Up Control
we start with the hypotheses and attempt to reach the
goal
26. BOTTOM UP CONTROL
Example :
Method for calculating a fibonacci number,
Starting with the bases cases and accumulating until it
reaches the goal.
fib(0,1). fib(1,1).
fib(N,F) :- N=M+1, M=K+1, fib(M,G),
fib(K,H), F=G+H, N>1.
:-fib(3,F).
N=3, M=2, K=1,
F = G + H
:-fib(2,F).
N=2, M=1, K=0,
F = G + H
:-fib(1,F).
F = 1
:-fib(1,1).
:-fib(0,F).
F = 1
:-fib(0,1).
:-fib(1,F).
F = 1
:-fib(1,1).
27. COMPILING PROLOG CODE
A program exists called wamcc, based on the
Warren Abstract Machine.
C code may then be compiled to produce stand
alone executable.
GNU Prolog logo
28. STRENGTHS OF PROLOG [CTD…]
Simplicity of Prolog
Ability to model certain problems very concisely and
elegantly
Capability of solving problems that it wasn't
originally designed to solve
Ability to manipulate symbolic data
29. STRENGTHS OF PROLOG [CTD…]
Prolog’s strength to manipulate symbolic data:
“There are well-known examples of symbolic
computation whose implementation in other standard
languages took tens of pages of indigestible code.
When the same algorithms were implemented in
Prolog, the result was a crystal-clear program easily
fitting on one page.”
‒ Bratko
30. WEAKNESSES OF PROLOG
Lack of structure
Issues with readability of Prolog code
serious implications for the readability and
declarativeness of code due to cut predicate (!).
Inefficiency of Prolog code
Logical imperfectness
32. HIERARCHY OF LANGUAGES
According to Programming Language Pragmatics by Michael L.
Scott,
Declarative
functional
Lisp/Scheme
ML
Haskell
dataflow
Id
Val
logic
Prolog
VisiCalc
33. HIERARCHY OF LANGUAGES [CTD…]
Imperative
von Neumann
Fortran
Pascal
Basic
C
Object-Oriented
Smalltalk
Eiel
C++
Java
34. SCOPE
Scope of a variable
in scope within a clause
Scope of the head of each clause
in global scope
Scope of constants
in global scope
• Example
1. hates(X,Y) :- friends(X,Z),hates(Z,Y).
2. loves(X,Y) :- hates(X,Z),hates(Y,Z).
35. TYPE SYSTEMS
Prolog is dynamically typed.
At runtime, if a built-in predicate is given the wrong type
of argument an error will occur.
For example:
1. ?- X is 1+1.
X = 2
Yes
2. ?- X is 1+dog.
uncaught exception: error(type_error(evaluable,dog/0),(is)/2)
36. TYPE SYSTEMS [CTD…]
A term can be quarried to find out its type with
Prolog in the following way:
?- number(5).
yes
?- number(dog).
no
?- var(X).
yes
?- var(5).
no
37. BINDINGS
Variable Cells
A variable is stored in a single heap cell.
This cell contains a tag and a store address of the that
which it is bound to.
Unbound variables,
by convention, point at their own cell.
3 REF 5
2 REF 2
38. BINDINGS [CTD…]
Structure Cells
A non-variable term is stored in a structure cell.
For a structure f(t1:::tn), there will be n + 2 cells in the
heap.
0 STR 1
1 f/n
2 REF 2
…… ……
…… ……
n + 1 REF n + 1
40. TOWERS OF HANOI
In this puzzle, we have three pegs and several
disks, initially stacked from largest to smallest on
the left peg
41. Our goal is to move the entire tower to the
middle peg
We can only move one disk at a time
We can use right peg to temporally hold the
disks
We can never place a larger disk on a smaller
disk in any peg
50. Recursive solution
- Move N - 1 discs from stack 1 to 3 with the help of stack
2.
- Move the Nth disc from 1 to 2
- Move N - 1 discs from stack 3 to 2 with the help of stack
1
51. Implementation in Prolog
hanoi(N) :- dohanoi(N, 1, 2, 3).
dohanoi(0, _ , _ , _ ) :- !.
dohanoi(N, A, B, C) :- N_1 is N-1,
dohanoi(N_1, A, C, B),
moveit(A, B),
dohanoi(N_1, C, B, A).
moveit(F, T) :- write([move, F, -->, T]), nl.
57. Questions we can ask
1) Whether a given string is accepted by the automaton
?- accepts(s1,[a,a,a,b]).
yes
58. Questions we can ask (cont.)
2) What states can we start in if we accept a certain
string?
?- accepts(S,[a,b]).
S = s1;
S = s3
59. Questions we can ask (cont.)
3) What are all strings of length 3 that can be accepted by
the automaton?
?- accepts(s1,[X1,X2,X3]).
X1 = a
X2 = a
X3 = a;
X1 = b
X2 = a
X3 = b
yes
60. CONCLUSION
Prolog is the most popular language of the logic
programing languages.
It is a declarative logic programming language
It is goal based language, it has automatic
backtracking and uses recursion.
A Prolog program consists of facts, rules (relationships), and questions (goals),all of which are clauses.
The first line states that bob is the father of george, the second line states that alice is the mother of jeffrey. Facts represents the data base of the programme.The comma denotes the logical and relationship. For example, the third rule says that X is the grandparent of Z if X is the parent of some Y, and Y is the parentof Z. Notice that in Prolog variables begin with an upper-case letter. Rules based on facts. Complex rules are based on simple rules
These question (or goal) is asking: is there somebody, X, who is an ancestor of cindy, where this same X is a sibling to jerey.Prolog will combine facts and rules to answer this question.Facts rules and questions are altogether called as clauses.
1- rule2-quetsion3-fact
Prolog variable are upper case letters.Compound terms are user as data structures. 1- contains first name and last name 2- full name + age
In a pure logic programming language, order does not affect the meaning ofthe program. However, as you will see in later section, in Prolog order is veryimportant for the effciency and even the correctness of the program
The semi-colon, in a sense, tells Prolog to imagine that the solution it came upwith had failed. Prolog then backtracks and attempts to find another solution.In grade 2 forced backtracking did not work due to the cut.
Programmers may add or remove clauses from a program dynamically, withassert and retract. Retract(C) removes the firrst instance of clause.Assert typically has two forms, asserta(C) and assertz(C), which insert clause C at the beginning and end of the program, respectively
In this section we consider a variety of topics about, how Prolog does what it does, strengths weaknesses
These are two approaches use with Prolog when proving goalsHorn clauses is a clause who’s,head is true if the body is true
B) The process use to associate variables and values in Prolog is unification.A) In Prolog,saying that two terms are equal is saying that they are unifiable.
A) If the other thing has a value, then the variable is instantiated. If the other thing is an uninstantiated variable, then the two variables are associated in such a way that if either is given a value later, that value will be shared by both.
B) The process of backtracking which was mentioned, is essentially a traversal of a tree.A) DisadvantageEndless branches will, preventing it from ever finding the solution
B) There are two principal ways in which,sub goals can be generated: top-down - recursive and bottom-up - iterativeA) Prolog uses the technique of bottom-up control
B) Bottom-up method, more iterative more efficient
B) wamcc compiles Prolog code to C code
3rd point - The flexibility to choose which variables to instantiate in a goal make4th point – This makes it a very useful tool for artificial intelligence applications
In this section Prolog will be classified according to, its place in the language hierarchy,its scope, bindings and type systems.
B) Main two types: Declarative ImperativeA) Prolog is a Declarative – Logic language
B) In Prolog there are no,procedures other typical blocks of code therefore concept of scope is a little different for Prolog1) Each X refers to the same thing in first lineThe variable X in line one has nothing to do with the X in line two2) The head of each clause can be either a fact or part of a ruleThe predicate hates(X;Z) in second line refers to the same predicate in the first line
A) In the first case checks whether, 1+1 equals 2In the second case trying to checks solution for 1+dog, as argument type dog doesn’t match with the given predicate, Prolog produces an exceptionHowever, this program can be compiled with no problem, GNU Prolog compiler does no type-checking at compile time.All type checking would have to occur at run-time.
B) Terms in Prolog are stored in an “addressable heap”.There are, variable cells structure cells
A) f is the functorti are the remaining items in this data structure, First, there will be a structure cell (denoted STR), which points to the address of the functor cell.Structure cell, and the functor cell need not be contiguous.The functor cell will always be followed by n contiguous blocks containing the cells of the terms ti.
2 -> In theory of computing
Ancient, famousEverybody knows itJust to refresh ur memory
In this example, goal is moving the entire left stack to middle stack3 rules
We are done.But this is for n equals 3For a general solution we have to consider an arbitrary N value
In the general solution that can be implemented to solve using a computer, there are 3 steps involved1Pls remember our final goal is to move the stack 1 to stack 2 not to 323Recursive solution, we considering an arbitrary N valueMoving N-1 -> similar and smaller versionDoesn’t violate the rule: larger cant be on smaller
1st rule -> start2nd -> terminate. Stopping condition3N A B C F T are variables4Write -> implemented function in prolog. Like println in javaNothing more is needed
Same as we did it manually
2nd exampleImplementing ----- in prolog
Have to define some FactsConstants not variablesDefines this state diagramStore it in prolog
Basic function of FA to accept strings 1st -> no string