Logic Programming
Sukree Sinthupinyo
1
Outline
2
Introduction to Prolog
3
Introduction to Prolog (cont’)
4
Knowledge Representation
5
Knowledge Representation (cont’)
6
Knowledge Representation (cont’)
7
We turn to Prolog
8
Prolog Constants
9
Examples of statement in Prolog form
10
Multiple Clauses
11
Rules
divisible_by_two:- even.
12
Rules (continue)
13
Rules (continue)
14
Semantics
15
The Logical Variable
16
The Logical Variable (continue)
17
Rules and Conjunction
happy(Person):-
man(Person),
rich(Person),
famous(Person).
18
Rules and Disjunctions
happy(Person):- healthy(Person).
happy(Person):- wealthy(Person).
happy(Person):- wise(Person).
19
Both Disjunctions and Conjunctions
happy(Person):-healthy(Person),woman(Person).
happy(Person):-wealthy(Person),woman(Person).
happy(Person):-wise(Person),woman(Person).
20
Prolog’s Search Strategy
21
Queries and Disjunctions
?-
22
Queries and Disjunctions (continue)
woman(jane)
?- woman(jane).
23
A Simple Conjunction
Program Database
woman(jean).
man(fred).
wealthy(fred).
happy(Person):- woman(Person), � wealthy(Person).
24
A Simple Conjunction (continue)
happy(jean):- woman(jean),
wealthy(jean).
25
A Simple Conjunction (continue)
26
Unification
27
Recursion
28
Recursion (continue)
ancestor(X,Y) :- parent(X,Z), � ancestor(Z,Y).
ancestor(X,Y) :- parent(X,Y).
ancestor(X,Y) :- parent(X,Z),� ancestor(Z,Y).
parent(bob,bill). parent(bill,jane).
parent(jane,jim). parent(bob,babe).
29
Lists
30
Lists (continue)
31
Lists (continue)
32
Lists (continue)
33
Lists (continue)
34
Lists (continue)
1. [b,a,d]=[d,a,b] fails
2. [X]=[b,a,d] fails
3. [X|Y]=[he,is,a,cat] succeeds
4. [X,Y|Z]=[a,b,c,d] succeeds
5. [X|Y]=[] fails
6. [X|Y]=[[a,[b,c]],d] succeeds
7. [X|Y]=[a] succeeds
35
Lists (continue)
print_a_list([]).
print_a_list([H|T]):- write(H),
print_a_list(T).
36
The Box Model of Execution
37
The Box Model of Execution (continue)
38
The Box Model of Execution (continue)
39
The Flow of Control
40
The Flow of Control (continue)
41
The Flow of Control (continue)
42
Practical Matter
43
Practical Matter (continue)
44
Practical Matter (continue)
45
Practical Matter (continue)
46
Programming Techniques and Lists Processing
Program Database
square(1,1).
square(2,4).
square(3,9).
square(4,16).
square(5,25).
square(6,36).
47
Programming Techniques and Lists Processing (continue)
?- square(2,X).
?- square(X,5).
?- square(X,Y).
?- square(2,3).
48
Programming Techniques and Lists Processing (continue)
49
Programming Techniques and Lists Processing (continue)
50
Programming Techniques and Lists Processing (continue)
51
Programming Techniques and Lists Processing (continue)
52
Lists Processing
53
Lists Processing (continue)
54
Lists Processing (continue)
55
Lists Processing (continue)
56
Lists Processing (continue)
57
Control and Negation
58
Control and Negation (continue)
59
Some General Program Schemata
. . .
generate(Info,X),
test(Info,X),
. . .
60
Generate – Test
integer_with_two_digit_square(X) :- int(X),
test square(X).
test square(X) :- Y is X*X, Y >= 10, Y < 100.
int(1). int(2). int(3). int(4). int(5).
int(1).
int(N) :- int(N1), N is N1+1.
61
Test – Process
62
Failure-Driven Loop
63
Parsing in Prolog
64
Simple English Syntax
65
First Attempt at Parsing
66
A Second Approach
67
Prolog Grammar Rules
68
Prolog Grammar Rules
69
Prolog Grammar Rules
70
Special Control Predicate
71
Special Control Predicate (continue)
skin(X,Y) :- asia(X),!,Y=yellow.
72
Special Control Predicate (continue)
sum(N,Ans):- NewN is N-1,
sum(NewN,Ans1),
Ans is Ans1+N.
sum(N,Ans):- NewN is N-1,
sum(NewN,Ans1),
Ans is Ans1+N.
73
Special Control Predicate (continue)
\+ (Goal).
woman(X).
74
Changing the Program
75
Changing the Program (continue)
76
Input/Output
77
Input/Output and File
78
Input/Output and File (continue)
79
Input/Output and File (continue)
80
Input/Output and File (continue)
told.
81
Prolog Examples
82
Prolog Examples (continue)
findsuccessor(StartState,Successor,Operator),
depth_first(Successor,GoalState,Ans1),
Ans=[Operator|Ans1].
move(OldState,Operator,NewState).
83