3. Pemrograman Prolog
3
Konstanta, Entitas, Atom
rangkaian huruf lower case
pat, jim, bob, . .
Variabel
huruf UPPER CASE
X, Y, Z, . .
Pemrograman Prolog – IKP213
4. SWI-Prolog
4
http://www.swi-prolog.org/
Implementasi Prolog di Windows
Tuliskan fakta dan rules dalam berkas teks
Consult berkas teks dari IDE SWI-Prolog
File Consult
Tuliskan kueri / goals
Pemrograman Prolog – IKP213
7. Kueri Prolog
7
parent(tom, X).
X = bob ;
X = liz ;
false.
Siapa yang memiliki tom sebagai orang tua?
parent(Y, ann).
Y = bob ;
false.
Siapa orang tua dari ann?
Pemrograman Prolog – IKP213
8. Kueri Prolog
8
parent(X, Y).
Menampilkan semua fakta
Cari semua X dan Y yang memenuhi relasi parent
Substitusi variabel dengan atom di dalam fakta
yang ada
Tidak ada atom yang dapat mensubstitusi: false
parent(badu, Y).
false.
Pemrograman Prolog – IKP213
9. Konjungsi Kueri
9
Siapa grandparent dari jim?
Siapa parent dari jim? Y
Siapa parent dari Y? X
X adalah grandparent dari jim
parent(Y, jim), parent(X, Y).
Cari seseorang, Y, yang menjadi parent dari jim
dan cari X yang menjadi orang tua dari Y
Pemrograman Prolog – IKP213
10. Fakta-fakta Baru
10
female(pam).
female(liz).
female(pat).
female(ann).
male(tom).
male(bob).
male(jim).
Relasi dengan arity 1
Pemrograman Prolog – IKP213
11. Rules
11
offspring(X, Y) :- parent(Y, X).
X adalah offspring dari Y, jika Y adalah parent
dari X
mother(X,Y) :- parent(X,Y),
female(X).
X adalah mother dari Y, jika X adalah parent dari
Y dan X adalah female
Pemrograman Prolog – IKP213
12. Unifikasi
12
parent(X, liz).
Periksa semua fakta yang diberikan
Untuk fakta yang sama, terapkan algoritma Unifikasi
Disagreement set
parent(X, liz) dengan parent(tom, bob).
disagreement set {X, tom}
fail
parent(X, liz) dengan parent(tom, liz).
disagreement set {X, tom}
success
Pemrograman Prolog – IKP213
13. Resolusi
13
offspring(X, liz)
Terapkan algoritma unifikasi untuk rule offspring(X, Y)
disagreement set {liz, Y}
resolusi / menggantikan Head Goal offspring(X, Y)
dengan sub-goal parent(Y, X)
unifikasi Y dengan liz pada sub-goal parent(Y, X)
Unifikasi sub-goal parent(liz, X)
Pemrograman Prolog – IKP213
14. Monkey and Banana Problem
14
States
Monkey at door
Monkey on floor
Box at window
Monkey does not have banana
Ultimate goal
state(X, Y, Z, has).
Pemrograman Prolog – IKP213
16. Monkey and Banana Problem
16
canget(state(atdoor, onfloor, atwindow, hasnot) ).
Pemrograman Prolog – IKP213
17. Ringkasan
17
Deklarasi clauses berupa fakta dan rules
Fakta dinyatakan dengan relasi
Fakta memuat Atom
Rules memuat Variabel
Kueri (Goals) memuat Variabel atau Atom
Pemrograman Prolog – IKP213