Documente Academic
Documente Profesional
Documente Cultură
1 Clauze Horn
4 Rezoluţie SLD
2 / 40
Clauze Horn
3 / 40
Clauze în logica de ordinul I
{¬Q1 , . . . , ¬Qn , P1 , . . . , Pk }
unde n, k ≥ 0 şi Q1 , . . . , Qn , P1 , . . . , Pk sunt formule atomice.
4 / 40
Clauze definite. Programe logice. Clauze Horn
clauză:
clauza vidă : n = k = 0
6 / 40
Programare logica
Exemplu
Fie următoarele clauze definite:
father(jon, ken).
father(ken, liz).
father(X, Y) → ancestor(X, Y)
dauther(X, Y) → ancestor(Y, X)
ancestor(X, Y) ∧ ancestor(Y, Z) → ancestor(X, Z)
Putem întreba:
ancestor(jon, liz)
dacă există Q astfel încât ancestor(Q, ken)
(adică (∃Q)ancestor(Q, ken))
8 / 40
Cel mai mic model Herbrand
9 / 40
Modele Herbrand
10 / 40
Modele Herbrand
LHT |= T.
Exerciţiu: De ce?
11 / 40
Cel mai mic model Herbrand
Propoziţie
Pentru orice formulă atomică Q,
T |= Q ddacă LHT |= Q.
Demonstraţie
T |= Q
ddacă T ∪ {¬Q} nesatisfiabilă
ddacă T ∪ {¬Q} nu are niciun model Herbrand
ddacă ¬Q este falsă în toate modelele Herbrand ale lui T
ddacă Q este adevărată în toate modelele Herbrand ale lui T
ddacă Q este adevărată în LHT
Vom caracteriza cel mai mic model Herbrand LHT printr-o construcţie
de punct fix.
12 / 40
Cel mai mic model Herbrand
13 / 40
Cel mai mic model Herbrand
Exemplu
Fie L un limbaj cu un sb. de constantă 0, un sb. de funcţie unară s
şi un sb. de relaţie unar par
TL = {0, s(0), s(s(0)), . . .}
Fie T mulţimea clauzelor:
par(0) par(x) → par(s(s(x)))
Instanţe de bază:
par(0) → par(s(s(0)))
par(s(0)) → par(s(s(s(0))))
fT ({}) = {par(0)}
fT ({par(0)}) = {par(0), par(s(s(0)))}
fT ({par(s(0))}) = {par(0), par(s(s(s(0))))}
fT ({par(s(s(0)))}) = {par(0), par(s(s(s(s(0)))))}
14 / 40
Cel mai mic model Herbrand
Din teorema Knaster-Tarski, fT are un cel mai mic punct fix FPT .
15 / 40
Sistem de deducţie pentru logica Horn
16 / 40
Sistem de deducţie backchain
17 / 40
Sistem de deducţie
Exemplu
Pentru ţinta
ancestor(Z, ken),
putem folosi o clauză
daughter(X, Y) → ancestor(Y, X)
18 / 40
Puncte de decizie în programarea logica
19 / 40
Strategia de căutare din Prolog
de la stânga la dreapta
pentru alegerile de tip ŞI
alege noile ţinte în ordinea în care apar în clauza aleasă
20 / 40
Proprietăţi ale sistemului de inferenţă
Veşti bune!
Regula backchain conduce la un sistem de deducţie complet:
Pentru o mulţime de clauze T şi o ţintă Q,
dacă T |= Q,
atunci există o derivare a lui Q folosind regula backchain.
Veşti proaste!
Strategia de căutare din Prolog este incompletă:
Poate eşua în a găsi o derivare, chiar şi când există o derivare!
21 / 40
Sistemul de inferenţă backchain
Teoremă
Sistemul de inferenţă backchain este corect şi complet pentru formule
atomice fără variabile Q.
T |= Q dacă şi numai dacă T ⊢b Q
22 / 40
Corectitudine
Propoziţie (Corectitudine)
Dacă T ⊢b Q, atunci T |= Q.
Demonstraţie [schiţă]
Presupunem că toate clauzele din T sunt adevărate.
Ne uităm, inductiv, la cazurile care pot să apară în derivarea lui Q.
23 / 40
Completitudine
Teoremă (Completitudine)
Dacă T |= Q, atunci T ⊢b Q.
Trebuie să arătăm că
Teoremă
Pentru orice T un program logic definit şi Q o formulă atomică,
T ⊢B Q ddacă LHT |= Q ddacă T |= Q.
Demonstraţie (schiţă)
Demonstrăm numai prima echivalenţă.
Implicaţia de la stânga la dreapta rezultă uşor din corectitudinea
sistemului de inferenţă backchain.
25 / 40
Rezoluţie SLD
26 / 40
Regula backchain şi rezoluţia SLD
27 / 40
Rezoluţia SLD
28 / 40
Rezoluţia SLD
Exemplu
father(eddard,sansa).
father(eddard,jonSnow).
stark(eddard).
?- stark(jonSnow)
stark(catelyn).
stark(X) :- father(Y,X),
stark(Y).
29 / 40
Rezoluţia SLD
Exemplu
father(eddard, sansa)
father(eddard, jonSnow) ¬stark(jonSnow)
¬father(Y, jonSnow) ∨ ¬stark(Y)
stark(eddard)
stark(catelyn)
θ(X) = jonSnow
stark(X) ∨ ¬father(Y, X) ∨ ¬stark(Y)
30 / 40
Rezoluţia SLD
31 / 40
Rezoluţia SLD
T ⊢b Q1 ∧ . . . ∧ Qm ,
T |= Q1 ∧ · · · ∧ Qm .
Demonstraţie
Rezultă din completitudinea sistemului de deducţie backchain şi din
faptul că:
există o SLD-respingere a lui Q1 ∧ . . . ∧ Qm din T
ddacă
T ⊢b Q1 ∧ . . . ∧ Qm
32 / 40
Rezoluţia SLD - arbori de căutare
Arbori SLD
Presupunem că avem o mulţime de clauze definite T şi o ţintă
G0 = ¬Q1 ∨ . . . ∨ ¬Qm
Construim un arbore de căutare (arbore SLD) astfel:
Fiecare nod al arborelui este o ţintă (posibil vidă)
Rădăcina este G0
Dacă arborele are un nod Gi , iar Gi+1 se obţine din Gi folosind regula
SLD folosind o clauză Ci ∈ T, atunci nodul Gi are copilul Gi+1 .
Muchia dintre Gi şi Gi+1 este etichetată cu Ci .
33 / 40
Rezoluţia SLD
Exemplu
Fie T următoarea mulţime de clauze definite:
1 grandfather(X, Z) : −father(X, Y), parent(Y, Z)
2 parent(X, Y) : −father(X, Y)
3 parent(X, Y) : −mother(X, Y)
4 father(ken, diana)
5 mother(diana, brian)
34 / 40
Rezoluţia SLD
Exemplu
Fie T următoarea mulţime de clauze definite:
1 grandfather(X, Z) ∨ ¬father(X, Y) ∨ ¬parent(Y, Z)
2 parent(X, Y) ∨ ¬father(X, Y)
3 parent(X, Y) ∨ ¬mother(X, Y)
4 father(ken, diana)
5 mother(diana, brian)
35 / 40
Rezoluţia SLD
Exemplu
1 grandfather(X, Z) ∨ ¬father(X, Y) ∨ ¬parent(Y, Z)
2 parent(X, Y) ∨ ¬father(X, Y)
3 parent(X, Y) ∨ ¬mother(X, Y)
4 father(ken, diana)
5 mother(diana, brian) ¬grandfather(ken, Y)
1
¬father(ken, V) ∨ ¬parent(V, Y)
4
¬parent(diana, Y)
2 3
¬father(diana, Y) ¬mother(diana, Y)
5
Ce lipseşte?
36 / 40
Limbajul Prolog
37 / 40
Limbajul Prolog
Exemplu
warmerClimate :- albedoDecrease.
warmerClimate :- carbonIncrease.
iceMelts :- warmerClimate.
albedoDecrease :- iceMelts.
carbonIncrease.
?- iceMelts.
! Out of local stack
38 / 40
Limbajul Prolog
Exemplu (cont.)
Există o derivare a lui iceMelts în sistemul de deducţie din clauzele:
albedoDecrease → warmerClimate
carbonIncrease → warmerClimate
warmerClimate → iceMelts
iceMelts → albedoDecrease
⊤ → carbonIncrease
39 / 40