Logic Programming Using: Prolog

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Logic Programming

using
PROLOG

Amir Tavasoli
What is PROLOG?

 Its a way of programming using logical statements. It’s the


most common logic programming language around.

 There are several implementations of PROLOG


 SWI PROLOG
 http://www.swi-prolog.org/
 Turbo PROLOG
 http://www.fraber.de/university/prolog/tprolog.html
 Micro PROLOG
 http://www.lpa.co.uk/dow_fre.htm
 Visual PROLOG
 http://www.visual-prolog.com/

 They have some differences in syntax.


PROLOG Syntax 1/3

 We have two kinds of statements in PROLOG.

1 – FACTS (or the Knowledge Bases)


 Like “Jim is a child.”
 In PROLOG we write “child(jim).”

 “Joe is father of Jim.”


 father(joe, jim).

 “Jill is mother of Jim”


 mother(jill, jim).
PROLOG Syntax (cont.) 2/3

2 – RULES
 Like “A parent is either a father or mother.”
 parent(X,Y) :- father(X,Y); mother(X,Y).
 “;” is the logical disjunction OR

 “Two persons are siblings if they have the same parents.”


 siblings(X,Y) :- parent(Parent,X),parent(Parent,Y).
 “,” is the logical conjunction AND

 As you can notice variables are in Uppercase. They need to


start with a Uppercase letter or “_”. Like “Parent” or “_parent” .
PROLOG Syntax (cont.) 3/3

 We call these clauses in logic Horn Clauses.

 Not all FOL statements can be said this way.

 Even thou, PROLOG has its limitations a lot of AI algorithms


like Expert Systems, Heuristic Searches, Constraint
Satisfaction Problems, and … can be easily implemented
using PROLOG.
A test program 1/3

 Here are the FACTS of my program.


 child(jim).
 father(joe, jim).
 mother(jill, jim).
 child(jan).
 father(joe, jan).
 mother(jill, jan).
A test program (cont.) 2/3

 After loading the file in PROLOG. We can ask questions


from PROLOG like:
 Is joe is the father of jim?
 ?father(joe, jim).
 Who is the father of jim?
 ?father(X,jim).
 Whom mother is jill?
 ?mother(jill, X).

 You can use . and ; to answer the questions.


A test program (cont.) 3/3

 We can add some rules to our program.


 parent(X,Y) :- father(X,Y); mother(X,Y).
 siblings(X,Y) :- parent(Parent,X),parent(Parent,Y).

 And we can ask questions from it:


 “Who are the parents of jan?”
 ?parent(X,jan).
 “Who are siblings to each other?”
 ?siblings(X,Y).
Recursive Rules

 We can have recursive rules in our program.

 For example in natural numbers we can say “successor of


a number is also a number.”
 numeral(succ(X)):-numeral(X).
 We should add the fact numeral(0). also to the program in
order for it to start working. Because we simply need
something to start from.

 (Jason Utt, 2005)


Unification

 The equality symbol “=“ in PROLOG is not like the equality


symbol in logic.

 The equality symbol in PROLOG is used to unify two terms.

 parent(X,tom)=parent(jim,Y).
How PROLOG works

 PROLOG uses the backward chaining process.

 It starts from the entered statement and tries to go through


branches of possible answers that is made by rules using Depth
First Search Algorithm.

 PROLOG uses a lot of techniques to make the process more


and more efficient.

 You can find more about this in Chapter 9 of “Artificial


Intelligence: A Modern Approach” by Russell and Norving 2003
Parent Tree

Unification
Extending PROLOG

 PROLOG Technology Theorem Prover, or PTTP (Stickel,


1988) is a sound and complete theorem prover. They took
the PROLOG compiler and extend it such that, it can be
used as a sound and complete reasoner for full First Order
Logic. (Russell, 2003)

 In PTTP you can use all of the FOL statements but it has its
own deficiencies.
References

 Artificial Intelligence: A Modern Approach, Second


Edition, Stuart J. Russell and Peter Norving, 2003

 PROLOG versus You, An Introduction to Logic


Programming, A.-L. Johansson, A. Eriksson-Granskog, A.
Edman, 1989

 http://www.ims.uni-
stuttgart.de/~uttjn/prolog/lpn/3.1.3%20Example%203_%20
Successor.pdf (Jason Utt, 2005)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy