yzm 3217 yapay zeka ders#7: prolog...

38
YZM 3217– YAPAY ZEKA DERS#7: PROLOG DİLİ

Upload: others

Post on 03-Sep-2019

16 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

YZM 3217– YAPAY ZEKADERS#7: PROLOG DİLİ

Page 2: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

Prolog’un özellikleri

• PROgrammig in LOGic• Semboller üzerinde çalışma• Gerçekler ve kurallardan oluşur• Büyük küçük harfe duyarlıdır

– Sabitler için Küçük harfler– Değişkenler için Büyük harfler

• Program çıktıları çok sade• Prolog’da olmayanlar

– For, while döngüleri– IF…THEN yapısı– DizilerANCAK öz yinelemeli fonksiyonlarla yukarıdakiler sağlanır

2

Page 3: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

3

Dekleratif Programlama

• Prolog Dekleratif programlama dili • Prosedürel programlamada adım adım ne yapılması

gerektiğini kodlarız (Ör: C, Pascal, Java vs.) • Dekleratif programlamada bir durum tanımlanır. Bu

tanıma göre yorumlayıcı ya da derleyici bir çözüm üretir

• Prolog – bir cümlenin doğru / yanlış olduğunu – cümle içinde değişken(ler) varsa cümlenin doğru olması

için o değişken(ler)in değer(ler)inin ne olması gerektiğini söyler.

Page 4: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

4

Örnek : Aile Ağacı

pam tom

bob liz

ann pat

jim

Page 5: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

5

İlişkileri gerçek(fact)lerle tanımlama

• “Tom, Bob’un ebeveynidir” gerçeğinin prolog’daifadesi:

parent(tom, bob).

– parent: ilişkinin ismi

– tom ve bob: ilişkinin argümanları (atomlar)

– .: sonlandırıcı

Page 6: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

6

Aile Ağacı

• Tüm aile ağacını aşağıdaki Prolog ifadeleriyle tanımlarız:

parent(pam, bob).

parent(tom, bob).

parent(tom, liz).

parent(bob, ann).

parent(bob, pat).

parent(pat,jim).

pam tom

bob liz

ann pat

jim

Page 7: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

7

Prolog Sorguları

• ?- iliski(a,b).

– a ve b arasında iliski isminde bir ilişki var mı?

– cevap YES yada NO

• ?- iliski(A,b).

– b ile iliski adlı ilişkiyi doğrulayan A lar nelerdir?

– cevap varsa A lar

yoksa NO

A: değişken

a, b: atom (sabit)

Page 8: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

8

İlişkileri sorgulamak-1

• Bob, Pat’in ebeveyni mi?

?- parent(bob, pat).

yes

• Tom, Ben’in ebeveyni mi? :

?- parent(tom, ben).

no

pam tom

bob liz

ann pat

jim

Page 9: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

9

İlişkileri sorgulamak-2

• Liz’in ebeveyni kimdir??- ebeveyn(Kim, liz).Prolog’un cevabı :Kim = tom

• Bob’un çocukları kimlerdir??- ebeveyn(bob, Cocuk).Prolog’un cevabı :Cocuk = ann ;Cocuk = pat ;no

pam tom

bob liz

ann pat

jim

Page 10: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

10

İlişkileri sorgulamak-3

• Kimler kimlerin çocuğudur? ?- ebeveyn (Ebeveyn, Cocuk).Ebeveyn = pamCocuk = bob;

Ebeveyn = tomCocuk = bob;

Ebeveyn = tomCocuk = liz;

…• Çözümler listesini yarıda kesmek için enter• Devam ettirmek için ;

pam tom

bob liz

ann pat

jim

Page 11: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

11

İlişkileri sorgulamak-4

• Jim’in büyük ebeveyni (grandparent) kimdir?

• Bilgi tabanımızda büyük ebeveyn diye bir ilişki tanımlı değil.

• Büyük ebeveyn ilişkisi iki ebeveyn ilişkisinin «ve» lenmesiyle elde edilebilir.

?- parent(Y, jim), parent(X, Y).X=bobY=pat

X

Y

jim

parent

parent

grandparent

Page 12: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

12

İlişkileri sorgulamak-5

• Torun ilişkisi de benzer biçimde tanımlanabilir.

– tom, X’in ebeveyni,

– X, Y’nin ebeveyni ise

– Y, tom’un torunudur.

?- parent(tom,X), parent(X, Y).

X=bob

Y=ann;

X=bob

Y=pat;

no

X

Y

jim

parent

parent

grandparent

Page 13: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

13

Çocuk ilişkisi

pam tom

bob liz

ann pat

jim

parent(pam, bob).

parent(tom, bob).

parent(tom, liz).

parent(bob, ann).

parent(bob, pat).

parent(pat, jim).

offspring(bob, pam).

offspring(bob, tom).

offspring(liz, tom).

offspring(ann, bob).

offspring(pat, bob).

offspring(jim, pat).

Page 14: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

14

Kurallar

• Kurallar iki parçadan oluşur:

– head : böyledir (sonuç, çıkarım)

– body : eğer

parent(X, Y)offspring(Y, X) :-

head body

Page 15: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

15

Kuralların Çalışması

• Veritabanı:

• Çalışma Mekanizması:1. offsprings ilişkisi için gerçek ara2. Yok => offsprings ilişkisi için kural varsa uygula3. Kuralda X tom’la , Y liz’le eşleştirilerek kuralın bir gerçeklemesi

bulunur:offspring(liz,tom) :- parent(tom,liz).

4. parents(tom,liz). gerçeği aranır. Bulunduğunda kuralın eğer kısmı doğrulandığından böyledir kısmı da doğrulanmış olur ve prolog “yes” cevabını verir

parent(pam, bob).

parent(tom, bob).

parent(tom, liz).

parent(bob, ann).

offspring(Y, X) :- parent(X, Y).

Sorgu:offspring(liz, tom).

Page 16: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

16

Örnek: Anne ilişkisi

• Tüm X ve Y ler için,

X, Y’nin annesidir Eğer

X, Y’nin ebeveyni ise ve

X kadınsa.

• İlişkinin Prolog’da ifadesi :

mother(X, Y) :- parent(X, Y), female(X).

mother

X

Y

parent

female

Page 17: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

17

Örnek: Kız kardeş ilişkisiTüm X ve Y ler için,

X, Y’nin kız kardeşidir EğerX ve Y aynı ebeveyne sahip ise veX bayansa

• İlişkinin Prolog’da ifadesi :sister(X, Y) :- parent(Z, X), parent(Z, Y), female(X).

• Sorgu:sister(X,pat).

sister

Z

X

parent

Y

parent

Page 18: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

18

Örnek: Hala ilişkisi

Tüm X ve Y ler için,

X, Y’nin halasıdır

Eğer

Z, Y’nin ebeveyni ise ve

Z, erkek ise ve

X, Z’in kız kardeşi ise

• İlişkinin Prolog’da ifadesi :

sister(X, Y) :- parent(Z, X), parent(Z, Y), female(X).

hala(X,Y) :- parent(Z,Y), male(Z), sister(X,Z).

Page 19: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

19

• parent(pam, bob).• parent(tom, bob).• parent(tom, liz).• parent(bob, ann).• parent(bob, pat).• parent(pat,jim).• predecessor(X, Z) :- parent(X, Z).• predecessor(X, Z) :- parent(X, Y),predecessor(Y, Z).

HEDEF / SORGU ?-predecessor(tom, pat).

PR1

PR2

Sonuç Ata İlişkisi

Page 20: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

20

Cevap nasıl bulunur?

• Prolog hedefe ulaşmak için programdaki yazılış sırasına göre cümlecikleri kullanır.

Y = bob

by rule pr1 by rule pr2

no

predecessor(tom, pat)

parent(tom, pat)parent(tom, Y)

predecessor(Y, pat)

by fact parent(tom, bob)

predecessor(bob, pat)

yes

parent(bob, pat)

by rule pr1

Page 21: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

21

Doğal Dil vs. Prolog

• Bütün çocuklar kısadır.

kisa(X):-cocuk(X).

• Bütün erkek çocuklar arabaları sever.

sever(X,araba):-erkek(X),cocuk(X).

• Bütün çocukların annesi vardır.

var(X,anne):-cocuk(X).

• Sebzeyi hiçbir çocuk sevmez.

sevmez(X,Y):-sebze(Y), cocuk(X).

• Çocuğunu döven öğretmeni hiçbir anne sevmez.

sevmez(X,Y):-anne(X,Z),ogretmen(Y,Z),dover(Y,Z).

Page 22: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

22

Doğal Dil vs. Prolog 2

• Bütün insanlar canlıdır. Ahmet insandır. Dolayısıyla Ahmet canlıdır.canli(X):-insan(X).insan(ahmet).?-canli(ahmet).

• Ahmet 20 metre zıplayabilir. Birisi X metreye zıplayabilirse daha azlarına da zıplayabilir.

ziplar(ahmet,20).ziplar(X,Y):-ziplar(X,Z),Z>Y.?-ziplar(ahmet,15).

• Kendi kalesine gol atan futbolcuyu kendi takımının taraftarları sevmez, karşı takımınkiler sever.

sevmez(Y,X):- futbolcu(X), taraftar(Y), aynitakim(X,Y), kendikalesinegolatar(X). sever(Y,X):- futbolcu(X), taraftar(Y), karsitakim(X,Y), kendikalesinegolatar(X).

Page 23: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

SWI Prolog’la çalışmak

• SWI prolog kurulur.

http://www.swi-prolog.org

• Gerçekler ve kurallar .pl uzantılı bir dosyaya kaydedilir.

Page 24: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

SWI Prolog’la çalışmak

• .pl uzantılı dosyanın üzerine çift tıklanarak

Page 25: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

SWI Prolog’la çalışmak

• Yada SWI prolog açıldıktan sonra file menüsünden dosya ‘consult’ edilerek

Page 26: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

SWI Prolog’la çalışmak

• Gerçek ve kurallarımız prolog’a yüklenir. Artık sorgularımız komut satırından girilerek çalıştırılabilir.

Page 27: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

27

Aşırı Yükleme

• Aynı isimde farklı ilişkiler olabilir:– point(1, 1), point(1, 1, 1), point(1, 1, 1, 1), …

• +(X,Y,Z):-Z is X+Y.• +(X,Y,Z,F):-F is X+Y+Z.

?- +(200,0.03,7.2,G).G = 207.23 ;No

?- +(200,0.03,G).G = 200.03 ;No

Page 28: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

28

Ve , veya ; (1)

• P :- Q; R.

P doğrudur Eğer

Q doğruysa

veya

R doğruysa

• Aynı ifadeyi aşağıdaki şekilde de yazabiliriz:

P :- Q.

P :- R.

Page 29: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

29

• Ve, veya’dan daha yüksek önceliklidir.

• Aşağıdaki iki ifade aynı sonucu verir:

P :- Q, R; S, T, U.

P :- (Q, R); (S, T, U).

• Aynı ifadeyi aşağıdaki şekilde de yazabiliriz:

P :- Q, R.

P :- S, T, U.

Ve , veya ; (2)

Page 30: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

30

Hedefleri Birleştirme

• araba(chrysler,130000,3,kirmizi,12000).• araba(ford,90000,4,gri,25000).• araba(ferrari,30000,5,siyah,30000).• kamyon(mercedes,10000,2,mavi,20000).• kamyon(ford,50000,8,sari,28000).• kamyon(volvo,35000,2,siyah,35000).

• arac(Marka,Kilometresi,Yas,Renk,Fiyat):-araba(Marka,Kilometresi,Yas,Renk,Fiyat);kamyon(Marka,Kilometresi,Yas,Renk,Fiyat).

Page 31: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

31

Fiyatı 25000’den az olan araçlar:

• ?- arac(Marka,KiloMetre,Yasi,Renk,Fiyat), Fiyat<25000.

Marka = chryslerKiloMetre = 130000Yasi = 3Renk = kirmiziFiyat = 12000 ;

Marka = mercedesKiloMetre = 10000Yasi = 2Renk = maviFiyat = 20000 ;

No

Page 32: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

Hedef BirleştirmeHasta mı?

• tahlil(ahmet,tahlil1,90).

• tahlil(ahmet,tahlil2,25).

• tahlil(ahmet,tahlil3,10).

• yuksektansiyon(X) :-

(tahlil(X,tahlil1,Y),Y>100); (tahlil(X,tahlil2,Z),Z<30).

• kalphastasi(X) :-

yuksektansiyon(X), tahlil(X,tahlil3,Q), Q<20.

• ?-kalphastasi(ahmet).

Page 33: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

/*Unification Ch05Ex01.pro*/

domainstitle, author = symbolpages = integer

predicatesbook(title, pages)written_by(author, title)long_novel(title)

clauseswritten_by(fleming, "DR NO").written_by(melville, "MOBY DICK").book("MOBY DICK", 250).book("DR NO", 310).long_novel(Title) :-

written_by(_, Title),book(Title, Length),Length > 300.

Goal: written_by(X, Y) X=fleming, Y=DR NO X=melville, Y=MOBY DICK 2 Solutions

Goal:

Trace CALL: written_by( _, _) RETURN: *written_by("fleming","DR NO”)YES

Goal: long_novel(Title)

Page 34: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

/* BacktrackingCho5ex02.pro */

predicateslikes(symbol,symbol)tastes(symbol,symbol)food(symbol)

clauseslikes(bill, X) :-

food(X), tastes(X, good).

tastes(pizza, good).tastes(brussels_sprouts,

bad).

food(brussels_sprouts).food(pizza).

CALL: likes("bill",_)CALL: food(_)RETURN: *food("brussels_sprouts")CALL: tastes("brussels_sprouts","good")REDO: tastes("brussels_sprouts","good")REDO: food(_)RETURN: food("pizza")CALL: tastes("pizza","good")RETURN: tastes("pizza","good")RETURN: likes("bill","pizza")

Goal: likes(bill, X)X=pizza1 Solution

Page 35: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

/* BacktrackingCho5ex02.pro */

predicateslikes(symbol,symbol)tastes(symbol,symbol)food(symbol)

clauseslikes(bill, X) :-

food(X), tastes(X, good).

tastes(pizza, good).tastes(brussels_sprouts,

bad).

food(brussels_sprouts).food(pizza).

CALL: likes("bill",_)CALL: food(_)RETURN: *food("brussels_sprouts")CALL: tastes("brussels_sprouts","good")REDO: tastes("brussels_sprouts","good")REDO: food(_)RETURN: food("pizza")CALL: tastes("pizza","good")RETURN: tastes("pizza","good")RETURN: likes("bill","pizza")

Goal: likes(bill, X)X=pizza1 Solution

Page 36: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

Arama Kontrolü

• Fail --- geriye doğru taramaya devam etmeyi zorlamak için.

• Cut(!) --- geriye doğru taramayı engellemek için kullanılır.

Page 37: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

/* use of fail - Ch05ex06.pro */

domainsname = symbol

predicatesfather(name, name)everybody

clausesfather(leonard, katherine).father(carl, jason).father(carl, marilyn).everybody :-

father(X, Y),write(X, " is ", Y, "'s father\n"),fail.

Goal: father(X, Y)X=leonard, Y=katherineX=carl, Y=jasonX=carl, Y=marilyn3 SolutionsGoal:

Without ‘fail’Goal: everybodyleonard is katherine’s fatherYESGoal:With ‘fail’Goal: everybody leonard is katherine's father carl is jason's father carl is marilyn's father No Goal:

Page 38: YZM 3217 YAPAY ZEKA DERS#7: PROLOG Daytugonan.cbu.edu.tr/YZM3217/LectureNotes/YZM3217_lecture8.pdf · Prolog’unözellikleri •PROgrammig in LOGic •Semboller üzerinde çalışma

/* Cut Example -Ch05ex07.pro */predicates

buy_car(symbol, symbol)car(symbol, symbol, integer)colors(symbol, symbol)

clausesbuy_car(Model, Color) :-

car(Model, Color, Price),colors(Color, sexy),!,Price < 25000.

car(maserati, green, 25000).car(corvette, black, 24000).car(corvette, red, 26000).car(porsche, red, 24000).colors(red, sexy).colors(black, mean).colors(green, preppy).

Goal: buy_car(X, Y)No Solution

CALL: buy_car(_,"red")CALL: car(_,"red",_)REDO: car(_,"red",_)REDO: car(_,"red",_)RETURN: *car("corvette","red",26000)CALL: colors("red","sexy")RETURN: colors("red","sexy")

26000<25000FAIL: buy_car(_,"red")

Goal: buy_car(X, red)No Solution