0% found this document useful (0 votes)
6 views36 pages

LPN01

The document outlines a course on Logic Programming, specifically focusing on Prolog, including its teaching materials and structure. It covers the history of Prolog, its basic constructs like facts, rules, and queries, and provides examples of Prolog programs. The document emphasizes the declarative nature of Prolog and its applications in AI, alongside practical exercises for students.

Uploaded by

damfont
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)
6 views36 pages

LPN01

The document outlines a course on Logic Programming, specifically focusing on Prolog, including its teaching materials and structure. It covers the history of Prolog, its basic constructs like facts, rules, and queries, and provides examples of Prolog programs. The document emphasizes the declarative nature of Prolog and its applications in AI, alongside practical exercises for students.

Uploaded by

damfont
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/ 36

• •

Logic Programming

• About the course


– Taught in English
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• Teaching material
– Learn Prolog Now!
– SWI Prolog interpreter

Learn Prolog Now!


© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• • 1
• •

SWI Prolog

• Freely available Prolog interpreter


• Works with
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

– Linux,
– Windows, or
– Mac OS
• There are many more Prolog
interpreters
• Not all are ISO compliant

Lecture 1

• Theory
– Introduction to Prolog
– Facts, Rules and Queries
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

– Prolog Syntax

• Exercises
– Exercises of LPN chapter 1
– Practical work

• • 2
• •

Aim of this lecture


• Give some simple examples of Prolog
programs
• Discuss the three basic constructs in Prolog:
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

– Facts
– Rules
– Queries
• Introduce other concepts, such as
– the role of logic
– unification with the help of variables
• Begin the systematic study of Prolog by
defining terms, atoms, and variables

Prolog

• "Programming with Logic"


• Declarative
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• Very different from other (procedural)


programming languages
• Good for knowledge-rich tasks

• • 3
• •

History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

first Prolog interpreter by


Colmerauer and Roussel

1972 1977 1980 1980s/1990s 2005

History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

implementation of DEC10
compiler by Warren

1972 1977 1980 1980s/1990s 2005

• • 4
• •

History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Definite Clause Grammars


implementation by Pereira
and Warren

1972 1977 1980 1980s/1990s 2005

History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Prolog grows in popularity


especially in Europe and Japan

1972 1977 1980 1980s/1990s 2005

• • 5
• •

History of Prolog

Prolog used to program


natural language
interface in
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

International Space
Station by NASA

1972 1977 1980 1980s/1990s 2005

Basic idea of Prolog

• Describe the situation of interest


• Ask a question
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• Prolog logically deduces new facts


about the situation we described
• Prolog gives us its deductions back as
answers

• • 6
• •

Consequences

• Think declaratively, not procedurally


– Challenging
– Requires a different mindset
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• High-level language
– Not as efficient as, say, C
– Good for rapid prototyping
– Useful in many AI applications

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

• • 7
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?-

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- woman(mia).

• • 8
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- woman(mia).
yes
?-

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- woman(mia).
yes
?- playsAirGuitar(jody).

• • 9
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- woman(mia).
yes
?- playsAirGuitar(jody).
yes
?-

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- woman(mia).
yes
?- playsAirGuitar(jody).
yes
?- playsAirGuitar(mia).
no

• • 10
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- tattoed(jody).

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- tattoed(jody).
no
?-

• • 11
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- tattoed(jody).
ERROR: predicate tattoed/1 not defined.
?-

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- party.

• • 12
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- party.
yes
?-

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- rockConcert.

• • 13
• •

Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(jody).
party.

?- rockConcert.
no
?-

Knowledge Base 2
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

• • 14
• •

Knowledge Base 2
happy(yolanda). fact
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

Knowledge Base 2
happy(yolanda). fact
listens2music(mia). fact
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

• • 15
• •

Knowledge Base 2
happy(yolanda). fact
listens2music(mia). fact
listens2music(yolanda):- happy(yolanda). rule
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

Knowledge Base 2
happy(yolanda). fact
listens2music(mia). fact
listens2music(yolanda):- happy(yolanda). rule
rule
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

• • 16
• •

Knowledge Base 2
happy(yolanda). fact
listens2music(mia). fact
listens2music(yolanda):- happy(yolanda). rule
rule
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda). rule

Knowledge Base 2
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

head body

• • 17
• •

Knowledge Base 2
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

?-

Knowledge Base 2
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

?- playsAirGuitar(mia).
yes
?-

• • 18
• •

Knowledge Base 2
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

?- playsAirGuitar(mia).
yes
?- playsAirGuitar(yolanda).
yes

Clauses
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

There are five clauses in this knowledge base:


two facts, and three rules.

The end of a clause is marked with a full stop.

• • 19
• •

Predicates
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

There are three predicates


in this knowledge base:
happy, listens2music, and playsAirGuitar

Knowledge Base 3
happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).

• • 20
• •

Expressing Conjunction
happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).

The comma “," expresses conjunction in Prolog

Knowledge Base 3
happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).

?- playsAirGuitar(vincent).
no
?-

• • 21
• •

Knowledge Base 3
happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).

?- playsAirGuitar(butch).
yes
?-

Expressing Disjunction

happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).

happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
playsAirGuitar(butch):- happy(butch); listens2music(butch).

• • 22
• •

Prolog and Logic

• Clearly Prolog has something to do with


logic
• Operators
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

– Implication :-
– Conjunction ,
– Disjunction ;
• Use of modus ponens
• Negation

Knowledge Base 4
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

• • 23
• •

Prolog Variables
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- woman(X).

Variable Instantiation
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- woman(X).
X=mia

• • 24
• •

Asking Alternatives
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- woman(X).
X=mia;

Asking Alternatives
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- woman(X).
X=mia;
X=jody

• • 25
• •

Asking Alternatives
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- woman(X).
X=mia;
X=jody;
X=yolanda

Asking Alternatives
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- woman(X).
X=mia;
X=jody;
X=yolanda;
no

• • 26
• •

Knowledge Base 4
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- loves(marsellus,X), woman(X).

Knowledge Base 4
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- loves(marsellus,X), woman(X).
X=mia
yes
?-

• • 27
• •

Knowledge Base 4
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- loves(pumpkin,X), woman(X).

Knowledge Base 4
woman(mia).
woman(jody).
woman(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

?- loves(pumpkin,X), woman(X).
no
?-

• • 28
• •

Knowledge Base 5
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin, honey_bunny).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(honey_bunny, pumpkin).

jealous(X,Y):- loves(X,Z), loves(Y,Z).

Knowledge Base 5
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin, honey_bunny).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(honey_bunny, pumpkin).

jealous(X,Y):- loves(X,Z), loves(Y,Z).

?- jealous(marsellus,W).

• • 29
• •

Knowledge Base 5
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin, honey_bunny).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

loves(honey_bunny, pumpkin).

jealous(X,Y):- loves(X,Z), loves(Y,Z).

?- jealous(marsellus,W).
W=vincent
?-

Prolog Syntax

• What exactly are facts, rules and


queries built out of?
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Terms
Terms

Simple
SimpleTerms
Terms Complex
ComplexTerms
Terms

Constants
Constants Variables
Variables

Atoms
Atoms Numbers
Numbers

• • 30
• •

Atoms
• A sequence of characters of upper-case letters,
lower-case letters, digits, or underscore, starting
with a lowercase letter
• Examples: butch, big_kahuna_burger, playGuitar
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• An arbitrary sequence of characters enclosed in


single quotes
• Examples: 'Vincent', 'Five dollar shake', '@$%'

• A sequence of special characters


• Examples: : , ; . :-

Numbers

• Integers: 12, -34, 22342


• Floats: 34573.3234
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• • 31
• •

Variables

• A sequence of characters of upper-


case letters, lower-case letters, digits,
or underscore, starting with either an
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

uppercase letter or an underscore

• Examples:

X, Y, Variable, Vincent, _tag

Complex Terms

• Atoms, numbers and variables are


building blocks for complex terms
• Complex terms are built out of a functor
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

directly followed by a sequence of


arguments
• Arguments are put in round brackets,
separated by commas
• The functor must be an atom

• • 32
• •

Examples of complex terms

• Examples we have seen before:


– playsAirGuitar(jody)
– loves(vincent, mia)
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

– jealous(marsellus, W)

• Complex terms inside complex terms:


– hide(X,father(father(father(butch))))

Arity

• The number of arguments a complex


term has is called its arity
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• Examples:

woman(mia) is a term with arity 1


loves(vincent,mia) has arity 2
father(father(butch)) arity 1

• • 33
• •

Arity is important

• In Prolog you can define two predicates


with the same functor but with different
arity
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• Prolog would treat this as two different


predicates
• In Prolog documentation arity of a
predicate is usually indicated with the
suffix "/" followed by a number to
indicate the arity

Example of Arity
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).

• This knowledge base defines


– happy/1
– listens2music/1
– playsAirGuitar/1

• • 34
• •

Exercises
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Summary of this lecture

• Simple examples of Prolog programs


• Introduced three basic constructs in Prolog:
– Facts
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

– Rules
– Queries
• Discussed other concepts, such as
– the role of logic
– unification with the help of variables
• Definition of Prolog constructs:
terms, atoms, and variables

• • 35
• •

Next lecture

• Discuss unification in Prolog


• Prolog's search strategy
© Patrick Blackburn, Johan Bos & Kristina Striegnitz

• • 36

You might also like