Comp 205 comparative programming languages
Download
1 / 24

Comp 205: Comparative Programming Languages - PowerPoint PPT Presentation


  • 129 Views
  • Uploaded on

Comp 205: Comparative Programming Languages. Declarative Programming Languages Unification Backtracking Lecture notes, exercises, etc., can be found at: www.csc.liv.ac.uk/~grant/Teaching/COMP205/. Substitutions. While solving a query, the Prolog interpreter

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Comp 205: Comparative Programming Languages' - milly


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Comp 205 comparative programming languages
Comp 205:Comparative Programming Languages

  • Declarative Programming Languages

  • Unification

  • Backtracking

  • Lecture notes, exercises, etc., can be found at:

  • www.csc.liv.ac.uk/~grant/Teaching/COMP205/


Substitutions
Substitutions

While solving a query, the Prolog interpreter

maintains a list of goals and attempts to unify

one of its goals with the head of a Horn clause

in the database.

Unification involves finding substitutions for

variables in the goal, and substitutions for

variables in the head that make the goal equal

to the head.


Example
Example

Suppose Lucy only knows fellow members of her

yachting club, and Suzy is a member of all

exclusive clubs, and that Lucy's yachting club

is exclusive.

knows(lucy,X) :- member(X,yachtClub).

member(suzy,Y) :- exclusive(Y).

exclusive(yachtClub).


Example1
Example

The query "?- knows(lucy,Z)" unifies with

the head of

knows(lucy,X) :- member(X,yachtClub).

by substituting the variable Z for X in the head,

giving the new goal member(Z,yachtClub).


Example2
Example

The goal member(Z,yachtClub) unifies with

the head of

member(suzy,Y) :- exclusive(Y).

by substituting suzy for Z in the goal,

and substituting yachtClub for Y in the head,

giving the new goal exclusive(yachtClub).

which is asserted as a fact in the database,

giving the final solution Z=suzy.


More variables
More Variables

Variables that occur in conditions but not in the

head of a Horn clause have an existential force:

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

This is most naturally read as

"X is the grandfather of Y

if there is some Z such that X is the father of Z

and Z is a parent of Y".


A little predicate calculus
A Little Predicate Calculus

In general, variables are universally quantified

in Horn clauses. The existential force in the

"Grandfather" example comes from the following

property of the predicate calculus:

(x,y,z . P(x,z) and F(z,y)  G(x,y))

is equivalent to

(x,y . (z . P(x,z) and F(z,y))  G(x,y))


More clauses
More Clauses

When a relation is defined by more than one

clause, the effect is to include an "or" in the

definition:

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

This is most naturally read as

"X is the parent of Y

if X is the father of Y or X is the mother of Y".


Proof search
Proof Search

Consider the following Prolog database:

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

and the query ?-grandfather(ted,Y)


Selecting clauses
Selecting Clauses

The Prolog interpreter attempts to match the first

goal in its list

(in this case grandfather(ted,Y))

with the first clause in the database:

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

Unification succeeds, give the goal-list

father(ted,Z), parent(Z,Y)


Selecting clauses1
Selecting Clauses

The first clause in the database that matches

with father(ted,Z) is:

father(ted,mary).

giving the goal-list parent(mary,Y).

The first clause that matches with this is:

parent(X,Y) :- father(X,Y).

giving the goal-list father(mary,Y).


Backtracking
Backtracking

The goal father(mary,Y) fails

(it fails to match with any clause in the database).

At this point, the Prolog interpreter backtracks

to the last successful match,

reinstates the goal-list to its previous state

and looks for the next match:

parent(X,Y) :- mother(X,Y).

giving the goal-list mother(mary,Y).


Backtracking1
Backtracking

  • The Prolog interpreter always tries

  • to unify the first goal in its list

  • with the earliest possible Horn clause;

  • when failure occurs,

  • the interpreter backtracks to the last unification,

  • marks that clause as unsuccessful

  • proceeds to attempt unification with thefollowing clauses

  • This process is iterative, and is a form of

  • depth-first search


Proof search1
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

Now consider ?- grandfather(X,lucy) ...


Proof search2
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: father(X,Z), parent(Z,lucy)


Proof search3
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: parent(mary,lucy)


Proof search4
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: father(mary,lucy)


Proof search5
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: father(mary,lucy) FAIL


Proof search6
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: mother(mary,lucy)


Proof search7
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: mother(mary,lucy) FAIL


Proof search8
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals were: father(X,Z), parent(Z,lucy)


Proof search9
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: parent(jack,lucy)


Proof search10
Proof Search

grandfather(X,Y) :- father(X,Z), parent(Z,Y).

parent(X,Y) :- father(X,Y).

parent(X,Y) :- mother(X,Y).

father(ted,mary).

father(ted,jack).

mother(mary,ian).

father(jack,lucy).

goals: father(jack,lucy)


Summary
Summary

  • Unification

  • Backtracking and depth-first search

  • Next: Exams….


ad