0% found this document useful (0 votes)
54 views24 pages

Prolog Programming: Continued

This document introduces the basics of Prolog programming. It discusses defining relations using facts and rules, including recursive rules. It explains how Prolog answers questions by trying to satisfy goals and finding variable instantiations that make the goals true based on the program facts and rules. It also distinguishes between the declarative meaning of what a program defines and the procedural meaning of how Prolog evaluates relations.

Uploaded by

Alexandru
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views24 pages

Prolog Programming: Continued

This document introduces the basics of Prolog programming. It discusses defining relations using facts and rules, including recursive rules. It explains how Prolog answers questions by trying to satisfy goals and finding variable instantiations that make the goals true based on the program facts and rules. It also distinguishes between the declarative meaning of what a program defines and the procedural meaning of how Prolog evaluates relations.

Uploaded by

Alexandru
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Prolog Programming

Continued

Chapter 1: Introduction to Prolog

1
Chapter 1: Introduction to Prolog
 Defining relations by facts

 Defining relations by rules

 Recursive rules

 How Prolog answers questions

 Declarative and procedural meaning of programs


2
Fig 1 Fig 2 Fig 3

3
1.3 Recursive Rules
To add a new predecessor relation in our family program

For all X and Z,


X is a predecessor of Z if
X is a parent of Z.

In Prolog,
Rule 1 For Fig 1
 predecessor(X,Z) :-

 parent(X,Z). 4
In our family program
 parent(pam,bob).
 parent(tom,bob).
 parent(tom,liz).
 parent(bob,ann).
 parent(bob,pat).
 parent(pat,jim).

So Tom is a direct predecessor of Liz and indirect


predecessor of Pat.
Rule 1 is just to find a direct predecessor 5
Family program again
In Prolog,
Rule 2 For Fig 2
 predecessor(X,Z) :-

 parent(X,Y),
 parent(Y,Z).
Rule 3 For Fig 3
 predecessor(X,Z) :-

 parent(X,Y1),
 parent(Y1,Y2),
 parent(Y2,Z). 6
What about more depth for predecessor
 predecessor(X,Z) :-
 parent(X,Y1),
 parent(Y1,Y2),
 parent(Y2,Y3),
 parent(Y3,Z).

The program will be lengthy and work to some extent.

7
An Elegant and Correct Formation of Predecessor
For all X and Z,
X is a predecessor of Z if
there is a Y such that
(1) X is a parent of Y and
(2) Y is a predecessor of Z.
In Prolog,
 predecessor(X,Z) :-

 parent(X,Y),
 predecessor(Y,Z).
8
Recursive Rules
 predecessor(X,Z) :-
 parent(X,Z). % for direct predecessor

 predecessor(X,Z) :-
 parent(X,Y),
 predecessor(Y,Z). % for indirect predecessor

9
Questions to Prolog
 Who are Pam’s successors?

 ?- predecessor(pam,X).

 Answer:
 X=bob
 X=ann
 X=pat
 X=jim
10
Chapter 1: Introduction to Prolog
 Defining relations by facts

 Defining relations by rules

 Recursive rules

 How Prolog answers questions

 Declarative and procedural meaning of programs


11
1.4 How Prolog answer questions
 A question to Prolog is always a sequence of one or
more goals
 To answer a question, Prolog tries to satisfy all the goals
 To satisfy a goal means to demonstrate that the goal is
true
 In other words, to satisfy a goal means to demonstrate
that the goal logically follows from the facts and rules in
the program

12
How Prolog answers continue ---
 If the question contains variables, Prolog also has to
find what are the particular objects ( in place of
variables) for which the goals are satisfy.
 The particular instantiation of variables to these objects
is displayed to the user.
 If prolog cannot demonstrate for some instantiation of
variables that the goals logically follow from the
program, then Prolog’s answer to the question will be
“no”.

13
Mathematically,
 Prolog accepts facts and rules as a set of axioms

 the user’s question as a conjectured theorem

 then prolog tries to prove this theorem

 that is, to demonstrate that it can be logically


derived from the axioms

14
Example
Axioms are :
 All men are fallible.

 Socrates is a man.

A theorem logically follows from these two axioms


 Socrates is fallible.

15
Example continue ---
For all X,
if X is a man then X is fallible.

In Prolog,
 fallible(X) :- man(X). % All men are fallible
 man(socrates). % Socrates is a man
 ?- fallible(socrates) % Is Socrates fallible?
 yes

16
our family program
parent(pam,bob). /* The following are rules */
parent(tom,bob). offspring(Y,X) :- parent(X,Y).
parent(tom,liz). grandparent(X,Y):-
parent(bob,ann). parent(X,Z),
parent(bob,pat). parent(Z,Y).
parent(pat,jim). sister(X,Y) :-
female(pam). parent(Z,X),
male(tom). parent(Z,Y),
male(bob). female(X).
female(liz). predecessor(X,Z):- %pr1
female(pat). parent(X,Z).
female(ann). predecessor(X,Z):- %pr2
male(jim). parent(X,Y),
predecessor(Y,Z).
17
Example from our family program
Question
 ?- predecessor(tom,pat).

Need to check if it satisfies one of two rules pr1 or pr2


predecessor(X,Z):- %pr1 (direct)
parent(X,Z).
predecessor(X,Z):- %pr2 (indirect)
parent(X,Y),
predecessor(Y,Z).
18
The complete execution trace to satisfy the goal
predecessor(tom,pat)

predecessor(tom,pat)

by rule pr1 by rule pr2

parent(tom,pat) parent(tom,Y)
predecessor(Y,pat)

no Y=bob by fact parent(tom,bob)


predecessor(bob,pat)

by rule pr1
parent(bob,pat)

yes 19
Important Points
Procedure
 A set of clauses about the same relation is called a
procedure
 for example, predecessor relation is a procedure since
it is defined by two clauses

 Comments
 /* This is a comment */
 % This is also a comment
20
Chapter 1: Introduction to Prolog
 Defining relations by facts

 Defining relations by rules

 Recursive rules

 How Prolog answers questions

 Declarative and procedural meaning of programs


21
1.5 Declarative and procedural meaning of programs
 the declarative meaning
 concerned with the relations defined in the program

 what will be the output of the program

 the procedural meaning


 how this output is obtained, that is,

 how the relations are actually evaluated by the


Prolog system

22
Summary
 Prolog programming consists of defining relations and querying about
relations
 A program consists of clauses. ( facts, rules, questions)
 A relation can be specified by facts or by stating rules about the relation
 procedure is a set of clauses about the same relation
 querying about relations, by means of questions
 In prolog, to establish whether an object satisfies a query is often a
complicated process that involves logical inference, exploring among
alternatives and possibly backtracking. All this is done automatically by the
Prolog system and is , in principle, hidden from the user
 The declarative view is advantageous from the programming point of view.
 Nevertheless, the procedural details often have to be considered by the
programmer as well.
23
End of Chapter 1

24

You might also like