Professional Documents
Culture Documents
Introduction to Prolog
SWI Prolog
• Theory
– Introduction to Prolog
– Facts, Rules and Queries
– Prolog Syntax
• Exercises
– Exercises of LPN chapter 1
Aim of this lecture
• Give some simple examples of Prolog
programs
• Discuss the three basic constructs in Prolog:
– 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
?-
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- woman(shaina).
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- woman(shaina).
yes
?-
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- woman(shaina).
yes
?- playsAirGuitar(arushi).
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- woman(shaina).
yes
?- playsAirGuitar(arushi).
yes
?-
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- woman(shaina).
yes
?- playsAirGuitar(arushi).
yes
?- playsAirGuitar(shaina).
no
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- student(arushi).
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- student(arushi).
no
?-
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- student(arushi).
ERROR: predicate student/1 not defined.
?-
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- party.
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- party.
yes
?-
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- rockConcert.
Knowledge Base 1
woman(shaina).
woman(arushi).
woman(juhi).
playsAirGuitar(arushi).
party.
?- rockConcert.
no
?-
Knowledge Base 2
happy(juhi).
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
Knowledge Base 2
happy(juhi). fact
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
Knowledge Base 2
happy(juhi). fact
listens2music(shaina). fact
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
Knowledge Base 2
happy(juhi). fact
listens2music(shaina). fact
listens2music(juhi):- happy(juhi).
rule
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
Knowledge Base 2
happy(juhi). fact
listens2music(shaina). fact
listens2music(juhi):- happy(juhi).
rule
playsAirGuitar(shaina):- listens2music(shaina).rule
playsAirGuitar(juhi):- listens2music(juhi).
Knowledge Base 2
happy(juhi). fact
listens2music(shaina). fact
listens2music(juhi):- happy(juhi).
rule
playsAirGuitar(shaina):- listens2music(shaina).rule
playsAirGuitar(juhi):- listens2music(juhi). rule
Knowledge Base 2
happy(juhi).
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
head body
Knowledge Base 2
happy(juhi).
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
?-
Knowledge Base 2
happy(juhi).
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
?- playsAirGuitar(shaina).
yes
?-
Knowledge Base 2
happy(juhi).
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
?- playsAirGuitar(shaina).
yes
?- playsAirGuitar(juhi).
yes
Clauses
happy(juhi).
listens2music(shaina).
listens2music(juhi):- happy(juhi).
playsAirGuitar(shaina):- listens2music(shaina).
playsAirGuitar(juhi):- listens2music(juhi).
?- playsAirGuitar(amar).
no
?-
Knowledge Base 3
happy(amar).
listens2music(mukesh).
playsAirGuitar(amar):- listens2music(amar), happy(amar).
playsAirGuitar(mukesh):- happy(mukesh).
playsAirGuitar(mukesh):- listens2music(mukesh).
?- playsAirGuitar(mukesh).
yes
?-
Expressing Disjunction
happy(amar).
listens2music(mukesh).
playsAirGuitar(amar):- listens2music(amar), happy(amar).
playsAirGuitar(mukesh):- happy(mukesh).
playsAirGuitar(mukesh):- listens2music(mukesh).
happy(amar).
listens2music(mukesh).
playsAirGuitar(amar):- listens2music(amar), happy(amar).
playsAirGuitar(mukesh):- happy(mukesh); listens2music(mukesh).
Prolog and Logic
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
Prolog Variables
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- boy(X).
Variable Instantiation
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- boy(X).
X=amit
Asking Alternatives
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- boy(X).
X=amit;
Asking Alternatives
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- boy(X).
X=amit;
X=sumit
Asking Alternatives
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- boy(X).
X=amit;
X=sumit;
X=raman
Asking Alternatives
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- boy(X).
X=amit;
X=sumit;
X=raman;
no
Knowledge Base 4
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- brother(mukesh,X), boy(X).
Knowledge Base 4
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- brother(mukesh,X), boy(X).
X=raman
yes
?-
Knowledge Base 4
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- loves(apple,X), boy(X).
Knowledge Base 4
boy(amit).
boy(sumit).
boy(raman).
sister(shaina, sumit).
brother(mukesh, raman).
loves(apple, flowers).
loves(sham, cricket).
?- loves(apple,X), boy(X).
no
?-
Knowledge Base 5
play(amar, football).
play(raman, football).
play(sunny, cricket).
play(ranjeet, hockey).
?- friend(raman,W).
Knowledge Base 5
play(amar, football).
play(raman, football).
play(sunny, cricket).
play(ranjeet, hockey).
?- friend(raman,W).
W=amar
?-
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
• Examples:
• Examples: