LPN01
LPN01
Logic Programming
• Teaching material
– Learn Prolog Now!
– SWI Prolog interpreter
• • 1
• •
SWI Prolog
– 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
• •
– 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
• • 3
• •
History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz
History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz
implementation of DEC10
compiler by Warren
• • 4
• •
History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz
History of Prolog
© Patrick Blackburn, Johan Bos & Kristina Striegnitz
• • 5
• •
History of Prolog
International Space
Station by NASA
• • 6
• •
Consequences
• 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).
• • 19
• •
Predicates
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
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).
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
• •
– 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).
Knowledge Base 5
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin, honey_bunny).
© Patrick Blackburn, Johan Bos & Kristina Striegnitz
loves(honey_bunny, pumpkin).
?- 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(marsellus,W).
W=vincent
?-
Prolog Syntax
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
Numbers
• • 31
• •
Variables
• Examples:
Complex Terms
• • 32
• •
– jealous(marsellus, W)
Arity
• Examples:
• • 33
• •
Arity is important
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).
• • 34
• •
Exercises
© 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
• • 36