curs 8 - prolog si logica predicatelor de ordinul i partea a ii-a

32
Curs 8 PROLOG ¸ si Logica Predicatelor de Ordinul I Partea a II-a Programare logic ˘ a

Upload: phamxuyen

Post on 06-Jan-2017

265 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Curs 8PROLOG si Logica Predicatelor de Ordinul I

Partea a II-a

Programare logica

Page 2: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaRecapitulare

Exercitiul 1

Sa se formalizeze proprietatile unui grup G în forma clauzala.

1 Daca x , y ∈ G atunci x · y ∈ G.

2 Daca x , y , z ∈ G atunci x · (y · z) = (x · y) · z.3 x · e = e · x = x pentru toti x ∈ G.

4 Pentru fiecare x ∈ G exista y ∈ G astfel încât x · y = y · x = e.

Programare logica

Page 3: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaPasul 0: de la limbaj natural la logica predicatelor de ordinul I

Fie p(x , y , z) predicatul cu semnificatia x · y = z.1 Daca x , y ∈ G atunci x · y ∈ G.

(∀x)(∀y)(∃z)p(x , y , z).2 Daca x , y , z ∈ G atunci x · (y · z) = (x · y) · z.

(∀x)(∀y)(∀z)(∀u)(∀v)(p(x , y , u) ∧ p(y , z, v) ∧ p(u, z,w)→ p(x , v ,w)).

3 x · e = e · x = x pentru toti x ∈ G.(∀x)(p(x , e, x) ∧ p(e, x , x)).

4 Pentru fiecare x ∈ G exista y ∈ G astfel încât x · y = y · x = e.(∀x)(∃y)(p(x , y , e) ∧ p(y , x , e)).

Programare logica

Page 4: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaDe la logica predicatelor de ordinul I la forma clauzala: pasii 1-3

1. Transformarea în forma prenex echivalenta.

(∀x)(∀y)(∃z)p(x , y , z).(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(p(x , y , u) ∧ p(y , z, v) ∧ p(u, z,w)→ p(x , v ,w)) ≡(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬(p(x , y , u) ∧ p(y , z, v) ∧ p(u, z,w)) ∨ p(x , v ,w)).

(∀x)(p(x , e, x) ∧ p(e, x , x)).

(∀x)(∃y)(p(x , y , e) ∧ p(y , x , e)).

2. Eliminarea cuantificatorilor existentiali (Skolemizare).Doar formulelele 1 si 4 au cuantificatori universali. Eliminarea lor produceformele Skolem:

(∀x)(∀y)(∃z)p(x , y , z) ≡ (∀x)(∀y)p(x , y , r(x , y)).(∀x)(∃y)(p(x , y , e) ∧ p(y , x , e)) ≡ (∀x)(p(x , i(x), e)) ∧ p(i(x), x , e)).

3. Calculul formelor normale conjunctive (CNF).

Formulele 1, 3 si 4 sunt în forma normala conjunctiva. Transformarea formulei 2:

(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬(p(x , y , u) ∧ p(y , z, v) ∧ p(u, z,w)) ∨ p(x , v ,w)) ≡(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬p(x , y , u) ∨ ¬p(y , z, v) ∨ ¬p(u, z,w) ∨ p(x , v ,w)︸ ︷︷ ︸

disjunctie de literali

).

Programare logica

Page 5: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaDe la logica predicatelor de ordinul I la forma clauzala: pasul 4

4. Transformarea în conjunctie de forme clauzale

(∀x)(∀y)p(x , y , r(x , y)).(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬p(x , y , u)∨¬p(y , z, v)∨¬p(u, z,w))∨p(x , v ,w)).

(∀x)(p(x , e, x) ∧ p(e, x , x)) ≡ (∀x)p(x , e, x) ∧ (∀x)p(e, x , x).(∀x)(p(x , i(x), e)) ∧ p(i(x), x , e) ≡ (∀x)p(x , i(x), e)) ∧ (∀x)p(i(x), x , e).

⇒ 6 forme clauzale care au urmatoarele reprezentari simplificate:p(X ,Y , r(X ,Y )).¬(p(X ,Y ,U),¬p(Y ,Z ,V ),¬p(U,Z ,W ), p(X ,V ,W ).p(X , e,X).p(e,X ,X).p(X , i(X), e).p(i(X),X , e).

Toate cele 6 forme sunt clauze Horn⇒ pot fi descrise ca reguli si fapte în Prolog:p(X ,Y , r(X ,Y )). % faptp(X ,V ,W ):-p(X ,Y ,U), p(Y ,Z ,V ), p(U,Z ,W ), p(X ,V ,W ). % regulap(X , e,X). % faptp(e,X ,X). % faptp(X , i(X), e). % faptp(i(X),X , e). % fapt

Programare logica

Page 6: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaDe la logica predicatelor de ordinul I la forma clauzala: pasul 4

4. Transformarea în conjunctie de forme clauzale

(∀x)(∀y)p(x , y , r(x , y)).(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬p(x , y , u)∨¬p(y , z, v)∨¬p(u, z,w))∨p(x , v ,w)).

(∀x)(p(x , e, x) ∧ p(e, x , x)) ≡ (∀x)p(x , e, x) ∧ (∀x)p(e, x , x).(∀x)(p(x , i(x), e)) ∧ p(i(x), x , e) ≡ (∀x)p(x , i(x), e)) ∧ (∀x)p(i(x), x , e).

⇒ 6 forme clauzale care au urmatoarele reprezentari simplificate:p(X ,Y , r(X ,Y )).¬(p(X ,Y ,U),¬p(Y ,Z ,V ),¬p(U,Z ,W ), p(X ,V ,W ).p(X , e,X).p(e,X ,X).p(X , i(X), e).p(i(X),X , e).

Toate cele 6 forme sunt clauze Horn⇒ pot fi descrise ca reguli si fapte în Prolog:p(X ,Y , r(X ,Y )). % faptp(X ,V ,W ):-p(X ,Y ,U), p(Y ,Z ,V ), p(U,Z ,W ), p(X ,V ,W ). % regulap(X , e,X). % faptp(e,X ,X). % faptp(X , i(X), e). % faptp(i(X),X , e). % fapt

Programare logica

Page 7: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaDe la logica predicatelor de ordinul I la forma clauzala: pasul 4

4. Transformarea în conjunctie de forme clauzale

(∀x)(∀y)p(x , y , r(x , y)).(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬p(x , y , u)∨¬p(y , z, v)∨¬p(u, z,w))∨p(x , v ,w)).

(∀x)(p(x , e, x) ∧ p(e, x , x)) ≡ (∀x)p(x , e, x) ∧ (∀x)p(e, x , x).(∀x)(p(x , i(x), e)) ∧ p(i(x), x , e) ≡ (∀x)p(x , i(x), e)) ∧ (∀x)p(i(x), x , e).

⇒ 6 forme clauzale care au urmatoarele reprezentari simplificate:p(X ,Y , r(X ,Y )).¬(p(X ,Y ,U),¬p(Y ,Z ,V ),¬p(U,Z ,W ), p(X ,V ,W ).p(X , e,X).p(e,X ,X).p(X , i(X), e).p(i(X),X , e).

Toate cele 6 forme sunt clauze Horn⇒ pot fi descrise ca reguli si fapte în Prolog:

p(X ,Y , r(X ,Y )). % faptp(X ,V ,W ):-p(X ,Y ,U), p(Y ,Z ,V ), p(U,Z ,W ), p(X ,V ,W ). % regulap(X , e,X). % faptp(e,X ,X). % faptp(X , i(X), e). % faptp(i(X),X , e). % fapt

Programare logica

Page 8: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaDe la logica predicatelor de ordinul I la forma clauzala: pasul 4

4. Transformarea în conjunctie de forme clauzale

(∀x)(∀y)p(x , y , r(x , y)).(∀x)(∀y)(∀z)(∀u)(∀v)(∀w)(¬p(x , y , u)∨¬p(y , z, v)∨¬p(u, z,w))∨p(x , v ,w)).

(∀x)(p(x , e, x) ∧ p(e, x , x)) ≡ (∀x)p(x , e, x) ∧ (∀x)p(e, x , x).(∀x)(p(x , i(x), e)) ∧ p(i(x), x , e) ≡ (∀x)p(x , i(x), e)) ∧ (∀x)p(i(x), x , e).

⇒ 6 forme clauzale care au urmatoarele reprezentari simplificate:p(X ,Y , r(X ,Y )).¬(p(X ,Y ,U),¬p(Y ,Z ,V ),¬p(U,Z ,W ), p(X ,V ,W ).p(X , e,X).p(e,X ,X).p(X , i(X), e).p(i(X),X , e).

Toate cele 6 forme sunt clauze Horn⇒ pot fi descrise ca reguli si fapte în Prolog:p(X ,Y , r(X ,Y )). % faptp(X ,V ,W ):-p(X ,Y ,U), p(Y ,Z ,V ), p(U,Z ,W ), p(X ,V ,W ). % regulap(X , e,X). % faptp(e,X ,X). % faptp(X , i(X), e). % faptp(i(X),X , e). % fapt

Programare logica

Page 9: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaRecapitulare

Exercitiul 2

Sa se aduca formula

(∀x)(∀y)((∃z)(p(x , z) ∧ p(y , z))→ (∃z)q(x , y , z))

în forma clauzala.

(∀x)(∀y)((∃z)(p(x , z) ∧ p(y , z))→ (∃z)q(x , y , z))≡ (∀x)(∀y)(¬(∃z)(p(x , z) ∧ p(y , z)) ∨ (∃z)q(x , y , z)) % eliminare→≡ (∀x)(∀y)((∀z)(¬(p(x , z) ∧ p(y , z))) ∨ (∃z)q(x , y , z))≡ (∀x)(∀y)(∀u)(¬(p(x ,u) ∧ p(y ,u)) ∨ (∃z)q(x , y , z)) % redenumire≡ (∀x)(∀y)(∀u)(∃v)(¬(p(x ,u) ∧ p(y ,u)) ∨ q(x , y , v)) % redenumire≡ (∀x)(∀y)(∀u)(¬(p(x ,u) ∧ p(y ,u)) ∨ q(x , y , r(x , y ,u))) % skolemizare≡ (∀x)(∀y)(∀u)(¬p(x ,u) ∨ ¬p(y ,u) ∨ q(x , y , r(x , y ,u))︸ ︷︷ ︸

disjunctie de literali

).

Forma clauzala simplificata: ¬p(X ,U),¬p(Y ,U),q(X ,Y , r(X ,Y ,U)).

În PROLOG: q(X ,Y , r(X ,Y ,U)):-p(X ,U),p(Y ,U).

Programare logica

Page 10: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Formalizarea cunostintelor în forma clauzalaRecapitulare

Exercitiul 2

Sa se aduca formula

(∀x)(∀y)((∃z)(p(x , z) ∧ p(y , z))→ (∃z)q(x , y , z))

în forma clauzala.

(∀x)(∀y)((∃z)(p(x , z) ∧ p(y , z))→ (∃z)q(x , y , z))≡ (∀x)(∀y)(¬(∃z)(p(x , z) ∧ p(y , z)) ∨ (∃z)q(x , y , z)) % eliminare→≡ (∀x)(∀y)((∀z)(¬(p(x , z) ∧ p(y , z))) ∨ (∃z)q(x , y , z))≡ (∀x)(∀y)(∀u)(¬(p(x ,u) ∧ p(y ,u)) ∨ (∃z)q(x , y , z)) % redenumire≡ (∀x)(∀y)(∀u)(∃v)(¬(p(x ,u) ∧ p(y ,u)) ∨ q(x , y , v)) % redenumire≡ (∀x)(∀y)(∀u)(¬(p(x ,u) ∧ p(y ,u)) ∨ q(x , y , r(x , y ,u))) % skolemizare≡ (∀x)(∀y)(∀u)(¬p(x ,u) ∨ ¬p(y ,u) ∨ q(x , y , r(x , y ,u))︸ ︷︷ ︸

disjunctie de literali

).

Forma clauzala simplificata: ¬p(X ,U),¬p(Y ,U),q(X ,Y , r(X ,Y ,U)).

În PROLOG: q(X ,Y , r(X ,Y ,U)):-p(X ,U),p(Y ,U).

Programare logica

Page 11: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Principiul rezolutiei

A fost introdus în 1965 de Alan Robinson în demonstrareaautomata a teoremelorB Daca C si C′ sunt forme clauzale astfel încât

C ≡ L1, . . . ,Li−1, A, Li+1, . . . ,LmC′ ≡ M1, . . . ,Mj−1, ¬B, Mj+1, . . . ,Mn

si atomii A si B se pot unifica cu cel mai general unificatorθ = [X1 7→ t1, . . . ,Xr 7→ tr ]. (acest lucru implica Aθ = Bθ)

B atunci putem construi clauzaR ≡ M ′1, . . . ,M

′j−1,L

′1, . . . ,L

′i−1,L

′j+1, . . . ,L

′m,M ′j+1, . . . ,M

′n

unde L′u = Luθ si M ′v = Mvθ pentru toti indicii u, v .

R se numeste rezolvent al clauzelor C si C′.

OBSERVATIE: Daca C si C′ sunt clauze adevarate atunci sirezolventul lor este o clauza adevarata.

Programare logica

Page 12: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Principiul rezolutieiReprezentare schematica

C1,A,C2. C′1,¬B,C′2.clauza C clauza C′

θ = mgu(A,B)

Aθ = Bθ

C′1θ,C1θ,C2θ,C′2θ.

rezolvent al lui C si C′

Exemplu

str(X ,Z ),¬str(X ,Y ),¬str(Y ,Z ). ¬str(v ,Y 1),¬str(Y 1,g).

θ = [X 7→ v ,Y 1 7→ Z ]

¬str(v ,Y ),¬str(Y ,Z ),¬str(Y , g).

Programare logica

Page 13: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Interpretarea declarativa a programelor logice

Cautarea raspunsurilor la o întrebare ?-B1, . . . ,Bp. în raport cu unprogram logic P se face astfel:

Se presupune ca întrebarea este falsa, adica negatia ei esteadevarata. Negatia întrebarii este forma clauzalaR1 = ¬B1, . . . ,¬Bp.

Se cauta sa se deduca o contradictie cu principiul rezolutiei:

Daca R2 este un rezolvent între negatia întrebarii initiale (presupusaadevarata) si un variant al unei clauze sau fapte din program (care suntpresupuse adevarate) atunci R2 trebuie sa fie adevarat.We continua recursiv: se genereaza un rezolvent R3 din R2 si program, R4

din R3 si program, . . . , pâna când se obtine un rezolvent Rn+1 fara literali(rezolventul �). Conform principiului rezolutiei, toti Ri sunt adevarati.O forma clauzala este o disjunctie de literali⇒ poate fi adevarata doardaca unul din literali este adevarat.Rezolventul Rn+1 nu are nici un literal⇒ Rn+1 este fals⇒ contradictie⇒întrebarea initiala este adevarata.

Acest mod de interpretare a unei întrebari se numeste metoda respingerii rezolutive.

Programare logica

Page 14: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Principiul rezolutieiDerivatii, respingeri rezolutive si arbori de derivare

O derivatie a unei întrebari B este o secventa de întrebari

B1 = B,B2, . . . ,Bn,Bn+1, . . .

în care fiecare Bn+1 este negatia unui rezolvent calculat cusubstitutia θn între ¬Bn si un variant al unei clauze sau fapte.

O respingere rezolutiva a lui B este o derivatieB1 = B,B2, . . . ,Bn,Bn+1 = �.

Raspunsul calculat de aceasta derivatie pentru B estesubstitutia θ1θ2 . . . θn pentru variabilele din B.

Un arbore de derivare al unei întrebari B este un arbore curadacina B în care fiecare nod este o întrebare si

fiecare nod, cu exceptia lui �, are un atom selectat A (decinodul este de forma C,A,C′) iar fiii lui sunt toti rezolventiicare se pot obtine unificând A cu capul unei raguli sau faptedin program.

Programare logica

Page 15: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Semnificatia declarativa a programelor logice

Definitie

Spunem ca o întrebare ?− B1, . . . ,Bp este adevarata într-un program PROLOG dacap = 0 sau daca întrebarea poate fi satisfacuta sau derivata logic din program în felulurmator:

Putem selecta un atom Bi din întrebare

Putem selecta un variant A:-D1, . . . ,Dn. al unei reguli sau fapte din program stfelîncât A si B sa aibe un cel mai general unificator θ = [X1 7→ t1, . . . ,Xr 7→ tr ]

Gasirea termenilor t1, . . . , tr astfel încât Aθ = Biθ se numeste potrivire sauunificare.

Construim întrebarea noua B1θ, . . . ,Bi−1θ,D1θ, . . . ,Dnθ,Bi+1θ, . . . ,Bpθ.

Întrebarea nou construita este adevarata în programul PROLOG.

OBSERVATIE: O întrebare este adevarata într-un program PROLOG daca si numai dacaputem calcula o respingere rezolutiva a lui B:

B1 = B,B2, . . . ,Bn,Bn+1 = �

Programare logica

Page 16: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Metoda respingerii rezolutiveReprezentare schematica a interpretarii declarative

Interpretarea declarativa a unei întrebari ?-B1, . . . ,Bi−1︸ ︷︷ ︸D1

,Bi ,Bi+1, . . . ,Bp︸ ︷︷ ︸D2

.

Variantide

reguli si

fapte din

programderivatie

D1,Bi ,D2.

D1θ1,C1θ1,D2θ1 = E1,F ,E2.

G.

�.

A1:-C1.

A2:-C2.

...

An.

θ1 = mgu(A1, Bi )

θ2 = mgu(A2, F )

θn−1 = mgu(An−1, . . .)

θn = mgu(An−1,G)

întrebare initiala

întrebare finala

Rezolventii R2, . . . ,Rn,Rn+1 sunt negatiile întrebarilor succesive.

Fiecare Ri (i > 1) este un rezolvent dintre Ri−1 si un variant ¬Ci ∨ Ai alunei reguli sau fapte din program.

Raspunsul la întrebarea initiala se obtine compunând substitutiile calculate:θ1θ2 . . . θn.

Programare logica

Page 17: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Semnificatia declarativa a programelor PROLOGExemplu

Întrebarile adevarate pot fi recunoscute construind un arbore de derivare.

Program PROLOG: Arborele genealogic definit de program:

(1) parinte(vali,gelu).(2) parinte(ada,gelu).(3) parinte(ada, mia).(4) parinte(gelu,lina).(5) parinte(gelu,misu).(6) parinte(misu,roco).(7) str(X,Z):-parinte(X,Z).

(8) str(X,Z):-parinte(X,Y),str(Y,Z).

adavali

gelu mia

lina misu

roco

Întrebare: str(X,misu)

parinte(X,misu) parinte(X,Y1),str(Y1,misu)

str(gelu,misu). . . . . .. . .

. . .

(2), [X1=ada,Y1=gelu]

(7), [X1=X,Z1=misu]

(5), [X=gelu]

(8), [X1=X,Z1=misu]Arbore de derivare

pentru întrebarea

str(X,misu).

Programare logica

Page 18: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Arbori de derivareExemplul 1

Program PROLOG: Arbore de derivare infinit:

(1) parinte(vali,gelu).(2) parinte(ada,gelu).(3) parinte(ada, mia).(4) parinte(gelu,lina).(5) parinte(gelu,misu).(6) parinte(misu,roco).(7) str(X,Z):-str(X,Y),parinte(Y,Z).

(8) str(X,Z):-parinte(X,Z).

str(vali,gelu).

str(vali,Y1),parinte(Y1,gelu). parinte(vali,gelu).

str(vali,Y2),parinte(Y2,Y1),parinte(Y1,gelu).

...

(7)

(7)

(7)

(8)

(1)

Programare logica

Page 19: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Arbori de derivareExemplul 2

Program PROLOG: Arbore de derivare finit:

(1) parinte(vali,gelu).(2) parinte(ada,gelu).(3) parinte(ada, mia).(4) parinte(gelu,lina).(5) parinte(gelu,misu).(6) parinte(misu,roco).(7) str(X,Z):-str(X,Y),parinte(Y,Z).

(8) str(X,Z):-parinte(X,Z).

str(vali,gelu).

str(vali,Y1),parinte(Y1,gelu). parinte(vali,gelu).

str(vali,vali). str(vali,ada).

str(vali,Y2),parinte(Y2,vali). str(vali,Y2),parinte(Y2,ada).

parinte(vali,vali). parinte(vali,ada).

(7)

(1) (2)

(8)

(1)

(7)(8)

(7)(8)

OBSERVATIE: Faptul ca un arbore de derivare este finit sau nudepinde de selectia atomilor din întrebari.

Programare logica

Page 20: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

ExempluSa se demonstreze ca unghiurile interioare formate de diagonalaunui trapez sunt egale.

a

d

b

c

Definim

trapez(x , y , u, v) sa însemne ca xyuv este trapez cu colturile x în stânga sus, yîn dreapta sus, z în dreapta jos si v în stânga jos.

par(x , y , u, v) sa însemne ca segmentul xy este paralel cu segmentul uv .

eq(x , y , z, u, v ,w) sa însemne ca unghiul xyz este egal cu unghiul uvw .

Stim ca

(A1) (∀x)(∀y)(∀u)(∀v)(trapez(x , y , u, v)→ par(x , y , u, v)).

(A2) (∀x)(∀y)(∀u)(∀v)(par(x , y , u, v)→ eq(x , y , v , u, v , y)).

(A3) trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

Programare logica

Page 21: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

ExempluSa se demonstreze ca unghiurile interioare formate de diagonalaunui trapez sunt egale.

a

d

b

c

Definim

trapez(x , y , u, v) sa însemne ca xyuv este trapez cu colturile x în stânga sus, yîn dreapta sus, z în dreapta jos si v în stânga jos.

par(x , y , u, v) sa însemne ca segmentul xy este paralel cu segmentul uv .

eq(x , y , z, u, v ,w) sa însemne ca unghiul xyz este egal cu unghiul uvw .

Stim ca

(A1) (∀x)(∀y)(∀u)(∀v)(trapez(x , y , u, v)→ par(x , y , u, v)).

(A2) (∀x)(∀y)(∀u)(∀v)(par(x , y , u, v)→ eq(x , y , v , u, v , y)).

(A3) trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

Programare logica

Page 22: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

ExempluSa se demonstreze ca unghiurile interioare formate de diagonalaunui trapez sunt egale.

a

d

b

c

Definim

trapez(x , y , u, v) sa însemne ca xyuv este trapez cu colturile x în stânga sus, yîn dreapta sus, z în dreapta jos si v în stânga jos.

par(x , y , u, v) sa însemne ca segmentul xy este paralel cu segmentul uv .

eq(x , y , z, u, v ,w) sa însemne ca unghiul xyz este egal cu unghiul uvw .

Stim ca

(A1) (∀x)(∀y)(∀u)(∀v)(trapez(x , y , u, v)→ par(x , y , u, v)).

(A2) (∀x)(∀y)(∀u)(∀v)(par(x , y , u, v)→ eq(x , y , v , u, v , y)).

(A3) trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

Programare logica

Page 23: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

ExempluSa se demonstreze ca unghiurile interioare formate de diagonalaunui trapez sunt egale.

a

d

b

c

Definim

trapez(x , y , u, v) sa însemne ca xyuv este trapez cu colturile x în stânga sus, yîn dreapta sus, z în dreapta jos si v în stânga jos.

par(x , y , u, v) sa însemne ca segmentul xy este paralel cu segmentul uv .

eq(x , y , z, u, v ,w) sa însemne ca unghiul xyz este egal cu unghiul uvw .

Stim ca

(A1) (∀x)(∀y)(∀u)(∀v)(trapez(x , y , u, v)→ par(x , y , u, v)).

(A2) (∀x)(∀y)(∀u)(∀v)(par(x , y , u, v)→ eq(x , y , v , u, v , y)).

(A3) trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

Programare logica

Page 24: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

ExempluSa se demonstreze ca unghiurile interioare formate de diagonalaunui trapez sunt egale.

a

d

b

c

Definim

trapez(x , y , u, v) sa însemne ca xyuv este trapez cu colturile x în stânga sus, yîn dreapta sus, z în dreapta jos si v în stânga jos.

par(x , y , u, v) sa însemne ca segmentul xy este paralel cu segmentul uv .

eq(x , y , z, u, v ,w) sa însemne ca unghiul xyz este egal cu unghiul uvw .

Stim ca

(A1) (∀x)(∀y)(∀u)(∀v)(trapez(x , y , u, v)→ par(x , y , u, v)).

(A2) (∀x)(∀y)(∀u)(∀v)(par(x , y , u, v)→ eq(x , y , v , u, v , y)).

(A3) trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

Programare logica

Page 25: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

Exemplu (continuare)Baza de cunostinte este

par(X ,Y ,U,V ):-trapez(X ,Y ,U,V ).eq(X ,Y ,V ,U,V ,Y ):-par(X ,Y ,U,V ).trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

derivatie

eq(a, b, d , c, d , b).

par(a, b, c, d).

trapez(a, b, c, d).

�.

eq(X1, Y 1, V1,U1, V1, Y 1):-p(X1, Y 1,U1, V1).

par(X2, Y 2,U2, V2):-trapez(X2, Y 2,U2, V2).

trapez(a, b, c, d).

[X1 7→ a, Y1 7→ b, V1 7→ d,U1 7→ C, V1 7→ d ]

[X2 7→ a, Y2 7→ b,U2 7→ c, V2 7→ d ]

[]

Varianti de clauze din baza de cunostinte

Raspunsul la întrebarea ?-eq(a, b, d , c, d , b) este true deoarece a fost derivataîntrebarea �.

B Nu este afisata nici o substitutie deoarece întrebarea nu contine variabile.

Programare logica

Page 26: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Aplicatii ale principiului rezolutieiDemonstrarea automata a teoremelor

Exemplu (continuare)Baza de cunostinte este

par(X ,Y ,U,V ):-trapez(X ,Y ,U,V ).eq(X ,Y ,V ,U,V ,Y ):-par(X ,Y ,U,V ).trapez(a, b, c, d).

si vrem sa demonstram ca eq(a, b, d , c, d , b).

derivatie

eq(a, b, d , c, d , b).

par(a, b, c, d).

trapez(a, b, c, d).

�.

eq(X1, Y 1, V1,U1, V1, Y 1):-p(X1, Y 1,U1, V1).

par(X2, Y 2,U2, V2):-trapez(X2, Y 2,U2, V2).

trapez(a, b, c, d).

[X1 7→ a, Y1 7→ b, V1 7→ d,U1 7→ C, V1 7→ d ]

[X2 7→ a, Y2 7→ b,U2 7→ c, V2 7→ d ]

[]

Varianti de clauze din baza de cunostinte

Raspunsul la întrebarea ?-eq(a, b, d , c, d , b) este true deoarece a fost derivataîntrebarea �.

B Nu este afisata nici o substitutie deoarece întrebarea nu contine variabile.

Programare logica

Page 27: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Principiul Rezolutiei în PROLOG

PROLOG foloseste principiul rezolutiei în interpretareaprocedurala a programelor.

Singura diferenta dintre interpretarea declarativa si ceaprocedurala este strategia de selectie a atomilor dinîntrebare si strategia de selectie a regulilor si faptelor dinprogram.Strategia aleasa de PROLOG pentru implementarea principiuluirezolutiei se numeste strategie de intrare liniara.

Avantaj: implementare foarte eficienta.Dezavantaj: strategia nu este întotdeauna completa,

deoarece:Cautarea raspunsurilor se face parcurgândarborele de derivare în adâncime, de lastânga la dreapta.Daca arborele de derivare are o ramurainfinita, PROLOG nu ajunge sa gaseascaraspunsurile din dreapta ei.

Programare logica

Page 28: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Strategia de cautare liniaraExemplu de cautare incompleta

Program PROLOG: Arbore de derivare infinit:

(1) parinte(vali,gelu).(2) parinte(ada,gelu).(3) parinte(ada, mia).(4) parinte(gelu,lina).(5) parinte(gelu,misu).(6) parinte(misu,roco).(7) str(X,Z):-str(X,Y),parinte(Y,Z).

(8) str(X,Z):-parinte(X,Z).

stramos(vali,gelu).

stramos(vali,Y1),parinte(Y1,gelu). parinte(vali,gelu).

stramos(vali,Y2),parinte(Y2,Y1),parinte(Y1,gelu).

...

(7)

(7)

(7)

(8)

(1)

ramura infinita(se selecteaza mereu

atomul din stânga)

Raspunsul true la întrebarea ?-stramos(vali,gelu) nu va fiobtinut niciodata.

Programare logica

Page 29: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Strategia de cautare liniaraExemplu de cautare incompleta

Program PROLOG: Arbore de derivare infinit:

(1) parinte(vali,gelu).(2) parinte(ada,gelu).(3) parinte(ada, mia).(4) parinte(gelu,lina).(5) parinte(gelu,misu).(6) parinte(misu,roco).(7) str(X,Z):-str(X,Y),parinte(Y,Z).

(8) str(X,Z):-parinte(X,Z).

stramos(vali,gelu).

stramos(vali,Y1),parinte(Y1,gelu). parinte(vali,gelu).

stramos(vali,Y2),parinte(Y2,Y1),parinte(Y1,gelu).

...

(7)

(7)

(7)

(8)

(1)

ramura infinita(se selecteaza mereu

atomul din stânga)

Raspunsul true la întrebarea ?-stramos(vali,gelu) nu va fiobtinut niciodata.

Programare logica

Page 30: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Quiz 1

1. Sa se exprime în forma clauzala cunostintele urmatoare:Unor pacienti le plac toti doctorii. Nici unui pacient nu-i placsarlatanii. Nici un doctor nu este sarlatan.

Folositi principiul rezolutiei pentru a demonstra ca dacaprimele doua afirmatii sunt adevarate atunci si a treiaafirmatie este adevarata.

2. Sa se aduca formulele urmatoare în forma clauzala:1 (¬p(a,b) ∧ p(x))→ r(a, x).2 ¬(p ∨ ¬q) ∧ (s(a)→ r(b)).3 p → (q ↔ (r ∧ p)).

3. Sa se transforme formulele urmatoare în forme clauzale:1 (∀x)(p(x)→ (∃y)q(x , y)).2 (∃x)(¬((∃y)p(x , y))→ ((∃z)q(z)→ r(x))).3 (∀x)(∀y)((∃z)p(x , y , z) ∧ ((∃u)q(x ,u)→ (∃x)q(y , x))).

Programare logica

Page 31: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Quiz 2

4. Se presupun adevarate urmatoarele afirmatii:Sfântul Petru este iubit de oricine care iubeste pe cineva.Nu exista persoana care sa nu iubeasca pe nimeni.

Folositi principiul rezolutiei pentru a demonstra ca SfântulPetru este iubit de toata lumea.

5. Se considera programul Prologparinte(vali,gelu).parinte(ada,gelu).parinte(ada, mia).parinte(gelu,lina).parinte(gelu,misu).parinte(misu,roco).str(X,Z):-str(X,Y),parinte(Y,Z).str(X,Z):-parinte(X,Z).

Sa se construiasca o derivatie care dovedeste faptul ca[X=ada,Y=lina] este un raspuns la întrebarea?-stramos(X,Y).

Programare logica

Page 32: Curs 8 - Prolog si Logica Predicatelor de Ordinul I Partea a II-a

Referinte bibliografice

B Capitolele 3-4 dinChin-Liang Chang, Richard Char-Tung Lee. Symbolic Logicand Mechanical Theorem Proving. Computer ScienceClassics. Academic Press, 1973.

B A.M. Florea, B. Dorohonceanu, C. Frâncu. Programare înProlog pentru Inteligenta Artificiala. Capitolul 3: LimbajulProlog si logica cu predicate de ordinul I. Universitatea„Politehnica” Bucuresti 1997.

Programare logica