Академический Документы
Профессиональный Документы
Культура Документы
10/19/16
PROLOG
(PROGRAMMING IN
LOGIC)
ARTIFICIAL INTELLIGENCE
INTRODUCTION TO PROLOG
10/19/16
SWI
Aashik Azim
Learn
Book:
SWI PROLOG
10/19/16
Sociaal-Wetenschappelijke Informatica("Social
Science Informatics")
Freely available Prolog interpreter
Works with
Windows,
Mac
OS
Aashik Azim
Linux,
or
LECTURE 1
10/19/16
Theory
to Prolog
Facts, Rules and Queries
Prolog Syntax
Aashik Azim
Introduction
Facts
Aashik Azim
10/19/16
Give
Rules
Queries
Introduce
the
role of logic
unification with the help of variables
Begin
PROLOG
10/19/16
Aashik Azim
Aashik Azim
CONSEQUENCES
Think declaratively, not procedurally
Requires
a different mindset
High-level language
Not
Aashik Azim
Challenging
10/19/16
LOGIC PROGRAMS
1.
2.
3.
Aashik Azim
10/19/16
Facts
Queries
Rules
9
FACTS
Aashik Azim
10/19/16
10
QUERIES
10/19/16
Aashik Azim
11
ATOMS
Aashik Azim
10/19/16
An
Examples:
: ,
:-
12
NUMBERS
10/19/16
Aashik Azim
0-9
Integers: 12, -34, 22342
Floats: 34573.3234
13
VARIABLES
Aashik Azim
10/19/16
Examples:
X, Y, Variable, Vincent, _tag etc.
14
15
TERMS
Aashik Azim
10/19/16
16
Aashik Azim
10/19/16
17
Conjunction
Disjunction
:,
;
Aashik Azim
Implication
10/19/16
18
RULES
10/19/16
Aashik Azim
19
KNOWLEDGE BASE
Aashik Azim
10/19/16
20
KNOWLEDGE BASE 1
10/19/16
Aashik Azim
woman(mia).
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
21
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- woman(mia).
yes
?- playsAirGuitar(jody).
22
KNOWLEDGE BASE 1
?- woman(mia).
yes
?- playsAirGuitar(jody).
yes
?-
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
23
KNOWLEDGE BASE 1
?- woman(mia).
yes
?- playsAirGuitar(jody).
yes
?- playsAirGuitar(mia).
no
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
24
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- tattoed(jody).
25
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- tattoed(jody).
no
?26
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- tattoed(jody).
ERROR: predicate tattoed/1 not defined.
?27
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- party.
28
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- party.
yes
?29
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- rockConcert.
30
KNOWLEDGE BASE 1
Aashik Azim
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
party.
10/19/16
woman(mia).
?- rockConcert.
no
?31
KNOWLEDGE BASE 2
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
32
KNOWLEDGE BASE 2
fact
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
33
KNOWLEDGE BASE 2
fact
fact
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
34
KNOWLEDGE BASE 2
fact
fact
Aashik Azim
listens2music(mia).
rule
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
35
KNOWLEDGE BASE 2
fact
fact
Aashik Azim
listens2music(mia).
rule
listens2music(yolanda):- happy(yolanda).
rule
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
36
KNOWLEDGE BASE 2
10/19/16
happy(yolanda).
fact
fact
rule
Aashik Azim
listens2music(mia).
rule
listens2music(yolanda):- happy(yolanda).
rule
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
37
KNOWLEDGE BASE 2
head
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
body
38
KNOWLEDGE BASE 2
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
?-
39
KNOWLEDGE BASE 2
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
?- playsAirGuitar(mia).
yes
?40
KNOWLEDGE BASE 2
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
?- playsAirGuitar(mia).
yes
?- playsAirGuitar(yolanda).
yes
41
CLAUSES
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
PREDICATES
Aashik Azim
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
10/19/16
happy(yolanda).
KNOWLEDGE BASE 3
Aashik Azim
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent),
happy(vincent).
playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).
10/19/16
happy(vincent).
44
EXPRESSING CONJUNCTION
10/19/16
Aashik Azim
happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).
45
KNOWLEDGE BASE 3
Aashik Azim
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).
10/19/16
happy(vincent).
?- playsAirGuitar(vincent).
no
?-
46
KNOWLEDGE BASE 3
Aashik Azim
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).
10/19/16
happy(vincent).
?- playsAirGuitar(butch).
yes
?-
47
EXPRESSING DISJUNCTION
Aashik Azim
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
playsAirGuitar(butch):- happy(butch).
playsAirGuitar(butch):- listens2music(butch).
10/19/16
happy(vincent).
happy(vincent).
listens2music(butch).
playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).
playsAirGuitar(butch):- happy(butch); listens2music(butch).
48
KNOWLEDGE BASE 4
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
49
PROLOG VARIABLES
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- woman(X).
50
VARIABLE INSTANTIATION
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- woman(X).
X=mia
51
ASKING ALTERNATIVES
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- woman(X).
X=mia;
52
ASKING ALTERNATIVES
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- woman(X).
X=mia;
X=jody
53
ASKING ALTERNATIVES
?- woman(X).
X=mia;
X=jody;
X=yolanda
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
54
ASKING ALTERNATIVES
?- woman(X).
X=mia;
X=jody;
X=yolanda;
no
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
55
KNOWLEDGE BASE 4
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- loves(marsellus,X), woman(X).
56
KNOWLEDGE BASE 4
?- loves(marsellus,X), woman(X).
X=mia
yes
?-
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
57
KNOWLEDGE BASE 4
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- loves(pumpkin,X), woman(X).
58
KNOWLEDGE BASE 4
Aashik Azim
loves(vincent, mia).
loves(marsellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
10/19/16
woman(mia).
woman(jody).
woman(yolanda).
?- loves(pumpkin,X), woman(X).
no
?59
KNOWLEDGE BASE 5
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
Aashik Azim
loves(marsellus,mia).
10/19/16
loves(vincent,mia).
60
KNOWLEDGE BASE 5
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
Aashik Azim
loves(marsellus,mia).
10/19/16
loves(vincent,mia).
?- jealous(marsellus,W).
61
KNOWLEDGE BASE 5
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
Aashik Azim
loves(marsellus,mia).
10/19/16
loves(vincent,mia).
?- jealous(marsellus,W).
W=vincent
?62
PROLOG SYNTAX
10/19/16
Constants
Atom s
Aashik Azim
Term s
Variables
N um bers
63
ARITY
Examples:
Aashik Azim
10/19/16
woman(mia)
is a term with arity 1
loves(vincent,mia)
has arity 2
father(father(butch))
arity 1
64
ARITY IS IMPORTANT
10/19/16
Aashik Azim
65
EXAMPLE OF ARITY
10/19/16
Aashik Azim
happy(yolanda).
listens2music(mia).
listens2music(yolanda):- happy(yolanda).
playsAirGuitar(mia):- listens2music(mia).
playsAirGuitar(yolanda):- listens2music(yolanda).
This knowledge base defines
happy/1
listens2music/1
playsAirGuitar/1
66
Aashik Azim
@>(Item1,
10/19/16
67
COMPARISON OPERATORS
Meaning
Not (negation by failure)
=, \=, =..
==, \==
is
=:=, =\=
Aashik Azim
\+
10/19/16
Operator
:
+, -, /\, \/
*, /, //,
rem, mod
>>, <<
**, ^. \
68
ARITHMETIC FUNCTIONS
10/19/16
Aashik Azim
69
ARITHMETIC
Example.
Aashik Azim
bonus(Number) :- Number is 2 + 3.
?- bonus(3).
No
?- bonus(5).
10/19/16
Yes
?- bonus(X).
X = 5
70
ARITHMETIC
10/19/16
Example.
| ?-
Aashik Azim
| ?- X is 5 + 2.
X = 7
yes
| ?- X = 5 + 2.
X = 5+2
yes
| ?- X is 5.3 + 7.
X = 12.3
yes
71
ARITHMETIC
Example: geography.pl
Try:
north_of(madrid, tokyo).
Aashik Azim
/*
10/19/16
west_of(X, tokyo).
west_of(london, X).
72
TRACING
The prolog command is trace
Aashik Azim
|?-trace.
yes
[trace] 1 ?- north_of(madrid,tokyo).
Call: (7) north_of(madrid, tokyo) ? creep
Call: (8) location(madrid, _G2207, _G2208) ? creep
Exit: (8) location(madrid, 48, 3) ? creep
Call: (8) location(tokyo, _G2207, _G2208) ? creep
Exit: (8) location(tokyo, 35, -139) ? creep
Call: (8) 48>35 ? creep
Exit: (8) 48>35 ? creep
Exit: (7) north_of(madrid, tokyo) ? creep
true.
For more: visit: http://www.cse.unsw.edu.au/~
billw/dictionaries/prolog/tracing.html
10/19/16
73
TRACING
Aashik Azim
|?-notrace.
The debugger is switched off
Yes
|?-
10/19/16
74
MAKING DECISIONS
Aashik Azim
10/19/16
There
75
MAKING DECISIONS
10/19/16
Can ask
howHot(X, 80).
But not
howHot(very, X).
Aashik Azim
Hot(HowHot, Temp) :-
10/19/16
Aashik Azim
Thanks
77