kef laio 7 logikìc programmatismìc: h gl¸ssa prologcgi.di.uoa.gr/~prondo/languages/ch6.pdf ·...

73
Prolog

Upload: others

Post on 26-Oct-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kef�laio 7

Logikìc Programmatismìc:

H Gl¸ssa Prolog

P. Rontogi�nnhc

Ejnikì kai Kapodistriakì Panepist mio Ajhn¸n

Tm ma Plhroforik c kai Thlepikoiwni¸n

P. Rontogi�nnhc Logikìc Programmatismìc

Page 2: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Basik� StoiqeÐa Gl¸ssac Prolog

OrismoÐ (statements): EpiteloÔn to rìlo entol¸nstic klassikèc gl¸ssec programmatismoÔ

Gegonìta

Kanìnec

Erwt seic

'Oroi (terms): Monadik  dom  dedomènwn Prolog

P. Rontogi�nnhc Logikìc Programmatismìc

Page 3: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Gegonìc

EÐnai to aploÔstero eÐdoc orismoÔ, pou uposthrÐzei hProlog.

Parèqei trìpo èkfrashc thc sqèshc pou isqÔeian�mesa se ontìthtec.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 4: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma Gegonìtoc

Gegonìc

father (john, mary).

Ekfr�zei ìti o john eÐnai patèrac thc mary   ìti h sqèshfather isqÔei an�mesa sta �toma john kai mary.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 5: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

OrismoÐ

Sqèseic ìpwc to father onom�zontaikathgor mata.

Oi ontìthtec mary kai john onom�zontai orÐsmatatou kathgor matoc.

'Ena kathgìrhma mazÐ me ta orÐsmata pouperilamb�nei onom�zetai atomikìc tÔpoc.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 6: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Sqèsh Plus

SÔnolo gegonìtwn

plus(0,0,0).

plus(0,1,1).

plus(1,0,1).

plus(2,0,2).

plus(0,2,2).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 7: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Sqèsh Plus

OrÐzei thn prìsjesh fusik¸n arijm¸n

Den mporeÐ na oristeÐ apokleistik� me th qr shgegonìtwn

ApaiteÐtai �peiroc arijmìc gegonìtwn, (ìpwc

parap�nw)

P. Rontogi�nnhc Logikìc Programmatismìc

Page 8: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Metablhtèc

H Prolog epitrèpei th qr sh metablht¸n se

Gegonìta, kanìnec kai erwt seic

Oi metablhtèc arqÐzoun p�nta me kefalaÐo gr�mma

H qr sh metablht¸n epitrèpei thn èkfrash sunìlougegonìtwn

Par�deigma

plus(0,X,X).

Ekfr�zei thn idiìthta tou oudèterou stoiqeÐou thcprìsjeshc.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 9: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Erwt seic

Parèqoun th dunatìthta exagwg c plhroforÐac apìèna logikì prìgramma.

DiereunoÔn thn isqÔ miac sqèshc an�mesa seorismènec ontìthtec.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 10: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Er¸thsh

?-father(john, mary).

Diereun� an h sqèsh father isqÔei an�mesa sta �tomajohn kai mary.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 11: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Er¸thsh

An èqei dojeÐ sthn Prolog to gegonìc:

father(john, mary).

Tìte h ap�nthsh sthn er¸thsh ?-father(john, mary).

ja eÐnai YES.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 12: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Metablhtèc kai Erwt seic (1)

Er¸thsh

?-father(X,mary).

Diab�zetai wc: {Up�rqei k�poio prìswpo X to opoÐo eÐnaipatèrac thc mary?}

P. Rontogi�nnhc Logikìc Programmatismìc

Page 13: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Metablhtèc kai Erwt seic (2)

MÐa er¸thsh mporeÐ na epistrèyei perissìterec apìmÐa apant seic.

Par�deigma

An èqoume d¸sei sthn Prolog dÔo gegonìta

father(john, mary).

father(john, ann).

Tìte h er¸thsh: ?-father(john, X).

Ja epistrèyei dÔo lÔseic X=mary kai X=ann

P. Rontogi�nnhc Logikìc Programmatismìc

Page 14: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

SÔnjetec Erwt seic

Er¸thsh

?-father(X,mary), father(X,ann)

Anazht� to prìswpo pou eÐnai patèrac thc mary kai thcann.

H sÔnjeth er¸thsh apoteleÐtai apì upoerwt seic(kl seic). Oi kl seic se mÐa sÔnjeth er¸thshqwrÐzontai metaxÔ touc me kìmma, pou èqei thn ènnoialogikoÔ {kai}.

Gia na alhjeÔei mÐa sÔnjeth er¸thsh prèpei naalhjeÔoun ìlec oi aploÔsterec erwt seic, pou thnapoteloÔn.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 15: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kanìnec

Epitrèpoun ton orismì nèwn sqèsewn wc sun�rthsh�llwn sqèsewn.

Par�deigma

son(X,Y):-father(Y,X), male(X).

OrÐzei th sqèsh son wc sun�rthsh twn sqèsewn father

kai male.Diab�zetai wc: {O X eÐnai giìc tou Y an o Y eÐnai patèractou X kai o X eÐnai gènouc arsenikoÔ}.

To sÔmbolo {:-} diab�zetai san {e�n}, en¸ to {,}wc {kai}.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 16: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

AnadromikoÐ Kanìnec

Par�deigma

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

ancestor(X,Y):-parent(X,Z), ancestror(Z,Y).

H sqèsh ancestor (prìgonoc) mporeÐ na orisjeÐ me qr shdÔo kanìnwn, ek twn opoÐwn o ènac eÐnai anadromikìc.

Genik�, ènac kanìnac èqei th morf 

H:-B1,...,Bn.

ìpou to H lègetai kefal  tou kanìna kai oi atomikoÐtÔpoi B1,...,Bn, apoteloÔn to s¸ma tou kanìna.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 17: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

'Oroi

Basik  dom  ston logikì programmatismì

Stajer� (ìpwc john), metablht  (ìpwc X)   sÔnjetocìroc

O sÔnjetoc ìroc apoteleÐtai apì èna sunarthsiakì

sÔmbolo (functional symbol), pou efarmìzetai se

akoloujÐa apì ìrouc.

Par�deigma

list(a,nil)

ìpou list to sunarthsiakì sÔmbolo kai a,nil stajerèc

P. Rontogi�nnhc Logikìc Programmatismìc

Page 18: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

'Oroi

Qr sh gia kwdikopoÐhsh sÔnjetwn morf¸nplhroforÐac

Par�deigma

Orismìc kathgor matoc book, pou lamb�nei sanparamètrouc ìrouc gia perigraf  twn qarakthristik¸nthc ènnoiac biblÐo. Me ton trìpo autì dhmiourgeÐtai mÐaapl  b�sh dedomènwn:

book(author(surname(stoll), name(robert)),

subject(logic)).

book(author(surname(kleene), name(steven)),

subject(mathematics)).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 19: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

'Oroi

Diafor� an�mesa sta

book (ìnoma kathgor matoc)

author, surname, name, subject (sunarthsiak�sÔmbola)

P. Rontogi�nnhc Logikìc Programmatismìc

Page 20: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Er¸thsh

Anaz thsh onomatepwnÔmwn, pou èqoun gr�yei biblÐa selogik 

?-book(author(surname(X), name(Y)),

subject(logic)).

Er¸thsh

An den endiafèroun ta mikr� onom�twn suggrafèwn, her¸thsh mporeÐ na tejeÐ:

?-book(author(surname(X), ), subject(logic)).

'Opou me { } sumbolÐzontai oi ìroi twn opoÐwn h tim  denmac endiafèrei.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 21: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

'Oroi

Graf  programm�twn ìqi mìno me qr sh kanìnwn kaigegonìtwn

Par�deigma

Orismìc thc sqèshc nat(X), h opoÐa alhjeÔei ìtan Qfusikìc arijmìc.

'Enac trìpoc eÐnai na sumfwnhjeÐ h anapar�stashtwn fusik¸n arijm¸n antÐ gia 0, 1, 2, . . . me0, s(0), s(s(0)), . . .

To sunarthsiakì sÔmbolo s ekfr�zei thn ènnoia tou{epìmenou arijmoÔ}.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 22: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

To prìgramma gia to nat gr�fetai:

Prìgramma

nat(0).

nat(s(X)):-nat(X).

Parìmoia orÐzontai kai �llec sqèseic p�nw se fusikoÔcarijmoÔc.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 23: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

To plus(X,Y,Z) eÐnai alhjèc an to Z eÐnai to �jroismatwn X kai Y.

Prìgramma

plus(0,X,X).

plus(s(X),Y,s(Z)):-plus(X,Y,Z).

Jètontac thn er¸thsh: ?-plus(s(0), s(0),K).

PaÐrnoume thn ap�nthsh K = s(s(0)).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 24: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

OrÐsmata

Sthn Prolog den gÐnetai kajorismìc poia apì taorÐsmata enìc kathgor matoc eÐnai eÐsodoi kai poiaèxodoi.

Poll� progr�mmata èqoun diaforetikèc qr seic

Par�deigma: An tejeÐ h er¸thsh:?-plus(X,s(0), s(s(s(0)))).

DÐnetai h ap�nthsh X=s(s(0)), pou antistoiqeÐ stonarijmì, pou lamb�netai an afairèsoume apì to trÐtoìrisma to deÔtero.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 25: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Ektèlesh Programm�twn Prolog

'Estw to prìgramma

Prìgramma

grandparent(X,Y):-parent(X,Z), parent(Z,Y).

parent(tom,jim).

parent(jim,george).

'Otan tejeÐ h er¸thsh:?-grandparent(A,B). o mhqanismìcektèleshc thc Prolog ekteleÐ anaz thsh lÔsewn thc morf ctou dèntrou, pou akoloujeÐ.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 26: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Dèntro ektèleshc thc er¸thshc

grandparent(A,B)

parent(A,Z),parent(Z,B)

parent(jim,B)

{A=tom,Z=jim}

parent(george,B)

fail

{A=jim,Z=george}

P. Rontogi�nnhc Logikìc Programmatismìc

Page 27: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Ektèlesh Programm�twn Prolog

Arqik� o mhqanismìc thc Prolog anazht� stoprìgramma kathgìrhma me to ìnoma grandparent

¸ste na tairi�zei me th dedomènh er¸thsh.

Mìlic brejeÐ prìtash, pou afor� autì tokathgìrhma, antikajist� thn dedomènh er¸thsh me tos¸ma thc prìtashc kai dhmiourgeÐtai nèa (sÔnjeth)er¸thsh parent(A,Z), parent(Z,B).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 28: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Mhqanismìc Ektèleshc Prolog

'Estw ìti èqoume èna prìgramma kai mÐa er¸thsh thcmorf c ?− A1, . . . , An. Tìte:

H Prolog exet�zei e�n ikanopoioÔntai ìloi oi stìqoiA1, . . . , An xekin¸ntac apì to A1 kai phgaÐnontac procto An.

Gia na ikanopoi sei èna apì ta Ai h Prolog,

dialègei thn pr¸th prìtash sto prìgramma thc

opoÐac h kefal  tairi�zei me to Ai,

kai antikajist� to Ai me to s¸ma thc prìtashc

aut c (afoÔ pr¸ta to tropopoi sei kat�llhla).

H diadikasÐa suneqÐzetai mèqri na mhn up�rqei plèon�llh kl sh, pou na prèpei na ikanopoihjeÐ.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 29: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Apl� Anadromik� Progr�mmata se Prolog

Me th qr sh ìrwn gr�fontai apl� kai ekfrastik�progr�mmata, ìpwc to

Prìgramma

plus(0,X,X).

plus(s(X),Y,s(Z)):-plus(X,Y,Z).

'Omoia orÐzetai gia ton pollaplasiasmì fusik¸narijm¸n

Prìgramma

times(0,X,0).

times(s(X),Y,Z):-times(X,Y,W), plus(W,Y,Z).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 30: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Sqìlia

H parap�nw sqèsh qrhsimopoieÐ dÔo basik�axi¸mata tou pollaplasiasmoÔ:

0 · X = 0(X + 1) · Y = X · Y + Y

O orismìc tou pollaplasiasmoÔ qrhsimopoieÐ autìnthc prìsjeshc

P. Rontogi�nnhc Logikìc Programmatismìc

Page 31: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Majhmatikèc Sqèseic Fusik¸n Arijm¸n

Me qr sh tou orismoÔ tou pollaplasiasmoÔ dÐnetai hsqèsh gia to paragontikì enìc fusikoÔ arijmoÔ

Prìgramma

factorial(0,s(0)).

factorial(s(N),F):-factorial(N,F1),times(s(N),F1,F).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 32: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Majhmatikèc Sqèseic Fusik¸n Arijm¸n

Sqèsh between(X,Y,Z): alhjeÔei ìtan X eÐnai ènacfusikìc arijmìc mikrìteroc   Ðsoc apì ton Y kai o Y eÐnaimikrìteroc   Ðsoc apì ton Z.

Prìgramma

between(0,0,Z).

between(0,s(Y),s(Z)):-between(0,Y,Z).

between(s(X),s(Y),s(Z)):-between(X,Y,Z).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 33: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Sqìlia

Oi fusikoÐ arijmoÐ anaparÐstantai me polÔ pio bolikìtrìpo sthn Prolog (ìpwc kai stic upìloipec gl¸ssecprogrammatismoÔ).

H anapar�stash, pou qrhsimopoi jhke staparap�nw progr�mmata den eÐnai genik� bolik  kaiapotelesmatik . Uiojet jhke gia na deiqjoÔn oiarqikèc dunatìthtec thc Prolog.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 34: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Anadromikìc Programmatismìc me LÐstec

LÐsta

PolÔ qr simh dom  dedomènwn gia programmatismì seProlog

Ken  - sumbolÐzetai me []

Perièqei stoiqeÐa, p.q. h [a,b,c] eÐnai mh ken  lÐsta

To pr¸to stoiqeÐo lÐstac onom�zetai kefal  (head)H lÐsta pou prokÔptei an afairèsoume thn kefal ,

onom�zetai our� (tail)O telest c | apoteleÐ eidik  anapar�stash, pou

deÐqnei �mesa thn kefal  kai thn our� miac lÐstac. H

lÐsta [a,b,c] gr�fetai wc [ a|[b,c] ] kai h [a] wc

[a|[ ]].

P. Rontogi�nnhc Logikìc Programmatismìc

Page 35: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.1

Oi lÐstec Prolog mporoÔn na perièqoun sa stoiqeÐatouc kai �llec lÐstec, all� kai polÔplokouc ìrouc,ìpwc

[[ ]] epitrept  lÐsta

[[1,X], s(s(X))]

Oi [ a| [ 1|[2] ] ] kai [X,Y|[a]] eÐnai isodÔnamec metic lÐstec [a,1,2] kai [X,Y,a] antÐstoiqa.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 36: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.2

H sqèsh member(X,Y) eÐnai alhj c, ìtan to X eÐnaistoiqeÐo thc lÐstac Y.

Prìgramma

member(X,[X|Y]).

member(X,[Y|Z]):-member(X,Z).

To nìhma tou progr�mmatoc eÐnai: {To X eÐnai mèloc miaclÐstac an eÐnai h kefal  thc lÐstac   an eÐnai mèloc thcour�c thc lÐstac}.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 37: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.3

H sqèsh append(X,Y,Z) eÐnai alhj c, ìtan to Z eÐnai hlÐsta, pou prokÔptei apì thn sunènwsh twn list¸n X kaiY.

Prìgramma

append([ ],Y,Y).

append([X|Xs],Ys,[X|Zs]):-append(Xs,Ys,Zs).

H dom  tou parap�nw progr�mmatoc eÐnai parìmoia meaut  tou progr�mmatoc gia ton orismì thc sqèshc plus.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 38: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.4

Suqn� ston programmatismì se PrologqrhsimopoioÔntai aplèc sqèseic,  dh orismènec gia nagrafoÔn pio polÔploka progr�mmata.

Sqèseic ìpwc h member kai h append

qrhsimopoioÔntai sqedìn se opoiod pote meg�loprìgramma grafteÐ se Prolog.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 39: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.4

Sqèsh reverse(X,Y) orÐzetai sa sun�rthsh thc append.EÐnai alhj c, ìtan h lÐsta Y eÐnai h antÐstrofh thclÐstac X:

Prìgramma

reverse([ ],[ ]).

reverse([X|Xs],Ys):-reverse(Xs,Rs),

append(Rs,[X],Ys).

To nìhma tou parap�nw progr�mmatoc eÐnai: {HantÐstrofh thc ken c lÐstac eÐnai h ken  lÐsta.H antÐstrofh mh-ken c lÐstac mporeÐ na paraqjeÐantistrèfontac thn our� thc kai proskoll¸ntac stotèloc thc antestrammènhc our�c thn kefal  thc arqik clÐstac.}

P. Rontogi�nnhc Logikìc Programmatismìc

Page 40: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.4

To prohgoÔmeno par�deigma mporeÐ na grafeÐ kai qwrÐcth qr sh thc append, all� me prosj kh enìc bohjhtikoÔkathgor matoc tou reverse1, pou diajètei èna epiplèonìrisma:

Prìgramma

reverse(Xs, Ys):-reverse1(Xs,[ ],Ys).

reverse1([ ],Ys, Ys).

reverse1([X|Xs],A,Ys):-reverse1(Xs,[X|A],Ys).

To ìrisma A onom�zetai susswreut c (accumulator)diìti susswreÔei b ma-b ma to telikì apotèlesma (dhlad thn antÐstrofh lÐsta).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 41: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Anadromikìc Programmatismìc me Dèntra

Dèntra

PolÔ qr simoc tÔpoc dedomènwn

AnaparÐstantai me qr sh ìrwn (monadik  dom dedomènwn Prolog)

Qr sh tou sunarthsiakoÔ sumbìlou tree me treic

paramètrouc:

tree(Element, Left, Right)

To stoiqeÐo Element eÐnai h rÐza tou sugkekrimènou

dèntrou, to Left to aristerì upìdentro kai to Right

to dexÐ upodèntro.To kenì dèntro anaparÐstatai me th stajer� void.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 42: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Par�deigma

Dèntro me koruf  a, aristerì paidÐ b kai dexÐ paidÐ cgr�fetai wc:

tree(a, tree(b,void,void), tree(c,void, void))

P. Rontogi�nnhc Logikìc Programmatismìc

Page 43: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Prìgramma gia èlegqo tou an ènac dedomènoc ìroc eÐnaipr�gmati duadikì dèntro (an�logo tou kathgor matocnat)

Prìgramma

binary tree(void).

binary tree(tree(E,L,R)):-binary tree(L),

binary tree(R).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 44: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Prìgramma gia èlegqo tou an èna dedomèno stoiqeÐoan kei se èna dèntro   ìqi. To prìgramma eÐnai an�logome to member , pou orÐsjhke gia tic lÐstec:

Prìgramma

tree member(X, tree(X, , )).

tree member(X, tree(Y,L,R)):-tree member(X,L).

tree member(X, tree(Y,L,R)):-tree member(X,R).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 45: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

To parap�nw prìgramma elègqei an èna dedomènostoiqeÐo eÐnai tautìshmo me thn koruf  tou dedomènoudèntrou.

An nai, to prìgramma stamat� me epituqÐa.

An ìqi, to prìgramma suneqÐzei anadromik� thdiereÔnhsh sto aristerì kai to dexÐ upodèntro.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 46: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata

Ousiastik� {diasqÐzoun} èna dedomèno dèntro me mÐaprokajorismènh seir�.

To apotèlesma thc di�sqishc epistrèfetai se mÐalÐsta.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 47: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

H preorder di�sqish enìc duadikoÔ dèntrou orÐzetai apì toakìloujo kathgìrhma:

Prìgramma

preorder(void,[ ]).

preorder(tree(X,L,R),Xs):-preorder(L,Ls),

preorder(R,Rs),

append([X|Ls],Rs,Xs).

Kat� thn preorder di�sqish enìc dèntrou katagr�fetaiarqik� h rÐza tou dèntrou kai katìpin episkeptìmasteanadromik� pr¸ta to aristerì upodèntro kai met� to dexÐ.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 48: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Me an�logo trìpo gr�fetai prìgramma, pou ulopoieÐ thndi�sqish inorder:

Prìgramma

inorder(void,[ ]).

inorder(tree(X,L,R),Xs):-inorder(L,Ls),

inorder(R,Rs),

append(Ls,[X|Rs],Xs).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 49: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

Prìgramma gia thn postorder di�sqish:

Prìgramma

postorder(void,[ ]).

postorder(tree(X,L,R),Xs):-postorder(L,Ls),

postorder(R,Rs),

append(Ls,Rs,Ms),

append(Ms,[X],Xs).

Ta parap�nw progr�mmata diafèroun mìno wc proc tontrìpo, pou gÐnetai h sunènwsh twn epimèroucapotelesm�twn (append).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 50: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Telestèc

Sunarthsiak� sÔmbola

Qr sh se epexergasÐa pio polÔplokwn dom¸n apì ìtioi lÐstec kai ta dèntra

Sthn èkfrash 1+3, to + eÐnai telest c

IsodÔnamh èkfrash +(1,3) kai ìqi o arijmìc 4, ìpwc

sumbaÐnei se �llec gl¸ssec programmatismoÔ

H prìsjesh ja pragmatopoioÔtan an o ìroc 1+3

 tan ìrisma sto eidikì kathgìrhma is thc Prolog gia

upologismì arijmhtik¸n ekfr�sewn

P. Rontogi�nnhc Logikìc Programmatismìc

Page 51: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Telestèc (2)

Oi telestèc +,-,*,/,... den lamb�noun sugkekrimènonìhma apì thn Prolog

QrhsimopoioÔntai gia na grafoÔn efarmogèc mekomyì kai sunoptikì trìpo

Sto epìmeno par�deigma oi telestècqrhsimopoioÔntai, gia th diatÔpwsh thc diadikasÐacparag¸gishc sunart sewn

P. Rontogi�nnhc Logikìc Programmatismìc

Page 52: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Parag¸gish

Prìgramma

derivative(N,X,0):-nat(N).

derivative(X,X,s(0)).

derivative(X^s(N),X,s(N)*(X^N)).

derivative(sin(X),X,cos(X)).

derivative(cos(X),X,-sin(X)).

derivative(e^X,X,e^X).

derivative(log(X),X,1/X).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 53: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Parag¸gish

Prìgramma

derivative(F+G, X, DF+DG):-

derivative(F,X,DF),derivative(G,X,DG).

derivative(F-G, X, DF-DG):-

derivative(F,X,DF),derivative(G,X,DG).

derivative(F*G, X, F*DG+G*DF):-

derivative(F,X,DF),derivative(G,X,DG).

derivative(1/F, X, -DF/(F*F)):-

derivative(F,X,DF).

derivative(F/G, X, G*DF-F*DG/(G*G)):-

derivative(F,X,DF), derivative(G,X,DG).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 54: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Parag¸gish

To prìgramma upologÐzei thn par�gwgo mÐacmeg�lhc kathgorÐac sunart sewn.

Oi telestèc, pou qrhsimopoioÔntai ekfr�zoun pr�xeicmetaxÔ sunart sewn.

Thn èkfrash F*G, o programmatist c thnkatalabaÐnei san pollaplasiasmì sunart sewn kaiautì eÐnai dunatì kaj¸c h Prolog den dÐneiprokajorismèno nìhma se sÔmbola, ìpwc to *.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 55: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Parag¸gish

An sto parap�nw prìgramma dojeÐ h er¸thsh

?-derivative(cos(x)*(x^s(s(0))),x,D).

H opoÐa anazht� thn par�gwgo thc sun�rthshc cos x · x2

Ja l�boume thn ap�nthsh

D=cos(x)*(s(s(0))*x^s(0))+x^s(s(0))*(-sin(x))

H opoÐa antistoiqeÐ sth sun�rthsh cos x · 2x + x2 · (− sin x).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 56: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Arijmhtikèc pr�xeic kai Prolog

K�je gl¸ssa programmatismoÔ parèqei idiaÐtereceukolÐec sth qr sh kai epexergasÐa arijm¸n.

H Prolog diajètei

Eidik� kathgor mata, gnwst� wc kathgor matasust matoc (system predicates).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 57: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata Prolog

Basikì kathgìrhma to is, pou qrhsimopoieÐtai sthmorf  V is E.

H Prolog upologÐzei thn tim  tou E kai an aut  h tim sumfwneÐ me to V, tìte epitugq�nei.

An V metablht , tìte lamb�nei thn tim  tou E.

'Otan E perièqei metablhtèc me �gnwsth tim  thstigm  thc ektèleshc, o diermhnèac thc Prolog dÐneim numa l�jouc.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 58: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.5

H er¸thsh

?-8 is 5+3 epitugq�nei

H er¸thsh

?-5+3 is 8 apotugq�nei

diìti h Prolog blèpei to aristerì mèloc thc san tonìro +(5,3) kai den upologÐzei thn tim  tou.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 59: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma

H er¸thsh

?-X is 5+3

ja d¸sei thn ap�nthsh Q = 8

H er¸thsh

?-X is 2+Y

ja d¸sei m numa l�jouc,diìti h arijmhtik  tim  tou dexioÔ mèlouc den mporeÐna upologisjeÐ lìgw thc metablht c Y.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 60: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata thc Prolog gia arijmhtikèc

pr�xeic

X =:= Y Oi arijmhtikèc timèc twn X kai Y eÐnai ÐdiecX == Y Oi arijmhtikèc. timèc twn X kai Y eÐnai

diaforetikècX < Y H arijmhtik  tim  tou X eÐnai mikrìterh

apì aut  tou Y

X =< Y H arijmhtik  tim  tou X eÐnai mikrìterh  Ðsh apì aut  tou Y

X > Y H arijmhtik  tim  tou X eÐnai megalÔterhapì aut  tou Y

X >= Y H arijmhtik  tim  tou X eÐnai megalÔterh  Ðsh apì aut  tou Y

P. Rontogi�nnhc Logikìc Programmatismìc

Page 61: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata

Me qr sh twn prohgoÔmenwn kathgorhm�twn mporoÔnna xanagrafoÔn kathgor mata pou orÐsjhkan meqr sh twn ìrwn

(p.q. 0, s(0), s(s(0)) . . .)

P. Rontogi�nnhc Logikìc Programmatismìc

Page 62: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata

To kathgìrhma plus mporeÐ na orisjeÐ wc:

Prìgramma

plus(X,Y,Z):-Z is X+Y

Meionèkthma: Q�netai h antistreyimìthta k�poiwnprogramm�twn

P. Rontogi�nnhc Logikìc Programmatismìc

Page 63: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata

H er¸thsh

?-plus(A,B,8)

ja d¸sei m numa l�jouc (kai ìqi ìla ta zeÔghfusik¸n me �jroisma 8).

Autì sumbaÐnei giatÐ h parap�nw er¸thsh an�getaiapì to mhqanismì thc Prolog sthn er¸thsh

?-8 is A+B

P. Rontogi�nnhc Logikìc Programmatismìc

Page 64: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Kathgor mata

Me qr sh kathgorhm�twn sust matoc mporoÔn nagrafoÔn progr�mmata, pou ekteloÔn arijmhtikèc pr�xeicme to sunhjismèno trìpo:

Prìgramma

sumlist([ ],0).

sumlist([I|L],Sum):-sumlist(L,S), Sum is S+I.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 65: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Apokop 

Progr�mmata Prolog

Anapotelesmatik�, giatÐ to dèntro

anaz thshc eÐnai arket� meg�lo

Endiafèron

'Uparxh lÔshc probl matoc

'Oqi gia thn posìthta   eÐdoc lÔsewn

P. Rontogi�nnhc Logikìc Programmatismìc

Page 66: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Apokop 

Den eÐnai aparaÐthto o mhqanismìc ektèleshc thcProlog na diasqÐsei olìklhro to dèntro anaz thshc,all� èna mèroc tou.

O programmatist c kajodhgeÐ to mhqanismìanaz thshc proc apofug  peritt¸n anazht sewn meth bo jeia thc apokop c (cut) (sÔmbolo {!}).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 67: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.6

'Estw er¸thsh thc morf c

?- A, B, C.

Kai to akìloujo tm ma progr�mmatoc

Prìgramma

B : −A1, · · · , Ak, !, Ak+1, · · · , An.B : −D1, · · · , Dm.B : −F1, · · · , Fk.

P. Rontogi�nnhc Logikìc Programmatismìc

Page 68: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Rìloc Apokop c

'Otan o mhqanismìc ektèleshc thc Prolog per�sei apìthn apokop , tìte

ta A1, · · · , Ak den prìkeitai na xanaexetastoÔn gia

epiplèon lÔseic

oi enallaktikèc prot�seic gia to B, pou up�rqoun

sto prìgramma met� thn prìtash, pou perièqei thn

apokop , den prìkeitai na exetastoÔn

K�poiec lÔseic apokìptontai apì th diadikasÐa

P. Rontogi�nnhc Logikìc Programmatismìc

Page 69: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.7

'Estw to prìgramma:

Prìgramma

father(tom,jim).

male(jim).

son(X,Y):-father(Y,X), male(X).

son(george, jim).

son(john, nick).

Kai h er¸thsh

?-son(S,F).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 70: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.7

O mhqanismìc thc Prolog ja d¸sei treic lÔseic:

{ S=jim, F=tom }

{ S=george, F=jim }

{ S=john, F=nick }

P. Rontogi�nnhc Logikìc Programmatismìc

Page 71: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.7

An to prìgramma antikatastajeÐ me to:

Prìgramma

father(tom,jim).

male(jim).

son(X,Y):-father(Y,X), !, male(X).

son(george, jim).

son(john, nick).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 72: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Par�deigma 7.7

O mhqanismìc ektèleshc thc Prolog dÐnei th lÔsh

{S=jim, F=tom}.

Oi �llec dÔo lÔseic apokìptontai lìgw tou sumbìlou !,pou den epitrèpei thn exètash twn enallaktik¸nprot�sewn gia to son(S,F).

P. Rontogi�nnhc Logikìc Programmatismìc

Page 73: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec

Sqìlia

H apokop  qrhsimopoieÐtai sun jwc ìtan gnwrÐzoumeìti to prìblhma èqei mÐa kai monadik  lÔsh kaiepijumoÔme ton periorismì �skopou yaxÐmatoc. Taprogr�mmata eÐnai ètsi pio apotelesmatik�.

H apokop  den an kei sto logikì tm ma thc Prologkai gi' autì endèqetai na dhmiourg sei dusnìhtaprogr�mmata. Lanjasmènh qr sh thc perikìpteilÔseic qr simec kai epijumhtèc.

P. Rontogi�nnhc Logikìc Programmatismìc