Sunteți pe pagina 1din 33

Curs 3

2017-2018 Programare Logică


1 / 34
Verificarea problemei consecinţei logice

În principiu, sistemul poate verifica problema consecinţei logice


construind un tabel de adevăr, cu câte o linie pentru fiecare
interpretare posibilă.

În cazul în care programul şi ţinta conţin n atomi diferiţi, tabelul de


adevăr rezultat o să aibă 2n rânduri.

Această metodă este atât de costisitoare computaţional, încât este


irealizabilă. (Timp exponenţial)

Problemă deschisă de un milion de dolari:


Este posibil să găsim o metodă mai bună pentru a decide problema
consecinţei logice în cazul propoziţional care să funcţioneze în timp
polinomial faţă de intrarea programului şi a ţintei?
Echivalent, este adevărată P = NP?
(Institutul de Matematica Clay – Millennium Prize Problems)

2 / 34
Cum salvăm situţia?

1 Folosirea metodelor sintactice pentru a stabili problema consecinţei


logice (proof search)

2 Restricţionarea formulelor din ”programele logice”

Această metodologie este eficientă şi flexibilă.

3 / 34
Clauze propoziţionale definite

4 / 34
Clauze propoziţionale definite

O clauză definită este o formulă care poate avea una din formele:
1 q (clauză unitate) (un fapt în Prolog q.)
2 p1 ∧ . . . ∧ pk → q (o regulă în Prolog q :- p1 ,. . .,pk )
unde q, p1 , . . . , pn sunt variabile propoziţionale
(constante în Prolog).
Numim variabilele propoziţionale şi atomi.

Programare logică – cazul logicii propoziţionale


Un ”program logic” este o listă F1 , . . . , Fn de clauze definite.
O ţintă (întrebare, goal) este o listă g1 , . . . , gm de atomi.
Sarcina sistemului este să stabilească:
F1 , . . . , Fn |= g1 ∧ . . . ∧ gm .

Scop: Vrem să găsim metode sintactice pentru a rezolva problema


de mai sus!

5 / 34
Sistem de deducţie CDP

Sistem de deducţie CDP pentru clauze definite propoziţionale


Pentru o mulţime S de clauze definite propoziţionale, avem
Axiome (premise): orice clauză din S

Reguli de deducţie:
P P→Q P Q
(MP) (andl)
Q P∧Q

Aceste reguli ne permit să deducem formula de sub linie din


formulele de deasupra liniei.
Sunt regulile (→ e) şi (∧i) din deducţia naturală pentru logica
propoziţională.

6 / 34
Sistemul de deducţie CDP

P P→Q P Q
(MP) (andl)
Q P∧Q

Exemplu
oslo → windy
oslo → norway
norway → cold
cold ∧ windy → winterIsComing
oslo
oslo oslo → norway
norway → cold
norway oslo oslo → windy
cold windy
cold ∧ windy

cold ∧ windy cold ∧ windy → winterIsComing


winterIsComing

7 / 34
Sistemul de deducţie CDP

P P→Q P Q
(MP) (andl)
Q P∧Q

Exemplu
oslo → windy
oslo → norway
norway → cold
cold ∧ windy → winterIsComing
oslo

1. oslo → windy 6. norway (MP 5,2)


2. oslo → norway 7. cold (MP 6,3)
3. norway → cold 8. windy (MP 5,1)
4. cold ∧ windy → winterIsComing 9. cold ∧ windy (andl 7,8)
5. oslo 10. winterIsComing (MP 9,4)

8 / 34
Sistemul de deducţie CDP

O formulă Q se poate deduce din S în sistemul de deducţie CDP, notat

S ⊢ Q,
dacă există o secvenţă de formule Q1 , . . . , Qn astfel încât Qn = Q şi
fiecare Qi :
fie aparţine lui S
fie se poate deduce din Q1 , . . . , Qi−1 folosind regulile de deducţie
(MP) şi (andl)

9 / 34
Sistemul de deducţie CDP

Putem folosi sistemul de deducţie CDP pentru a deduce alţi atomi:


Clauzele unitate din S (atomii pi ∈ S) sunt considerate adevărate.
Sunt deduşi ca axiome.

Putem deduce că un nou atom r este adevărat dacă


am dedus că p1 , . . . , pn sunt adevăraţi, şi
p1 ∧ . . . ∧ pn → r este în S.
O astfel de derivare foloseşte de n − 1 ori (andl) şi o data (MP).

Deci putem construi mulţimi din ce în ce mai mari de atomi care sunt
consecinţe logice din S, şi pentru care există derivări din S.

10 / 34
Completitudinea sistemului de deducţie CDP

Se poate demonstra că aceste reguli sunt corecte, folosind tabelele


de adevăr.
Dacă formulele de deasupra liniei sunt adevărate, atunci şi formula
de sub linie este adevărată.

Mai mult, sistemul de deducţie este şi complet. Adică


dacă S |= Q, atunci S ⊢ Q.
Dacă Q este o consecinţă logică a lui S, atunci există o derivare a sa
din S folosind sistemul de deducţie CDP

Pentru a demonstra completitudinea vom folosi teorema


Knaster-Tarski.

11 / 34
Puncte fixe. Teorema Knaster-Tarski

12 / 34
Mulţimi parţial ordonate

O mulţime parţial ordonată (mpo) este o pereche (M, ≤) unde


≤⊆ M × M este o relaţie de ordine.
relaţie de ordine: reflexivă, antisimetrică, tranzitivă

O mpo (L, ≤) se numeşte lanţ dacă este total ordonată, adică x ≤ y


sau y ≤ x pentru orice x,y ∈ L. Vom considera lanţuri numărabile,
i.e.
x1 ≤ x2 ≤ x3 ≤ . . .

13 / 34
Mulţimi parţial ordonate complete

O mpo (C, ≤) este completă (cpo) dacă:


C are prim element ⊥ (⊥ ≤ x oricare x ∈ C),

n xn există în C pentru orice lanţ x1 ≤ x2 ≤ x3 ≤ . . .

Exemplu
Fie X o mulţime şi P(X) mulţimea submulţimilor lui X.
(P(X), ⊆) este o cpo:
⊆ este o relaţie de ordine
∅ este prim element (∅ ⊆ Q pentru orice Q ∈ P(X))
∪ şir (numărabil) de submulţimi ale lui X Q1 ⊆ Q2 ⊆ . . .
pentru orice
evident n Qn ∈ P(X)

14 / 34
Funcţie monotonă

Fie (A, ≤A ) şi (B, ≤B ) mulţimi parţial ordonate.


O funcţie f : A → B este monotonă (crescătoare)
dacă a1 ≤A a2 implică f(a1 ) ≤B f(a2 ) oricare a1 , a2 ∈ A.

Exemplu
Fie următoarele funcţii fi : P({1, 2, 3}) → P({1, 2, 3}) cu i ∈ {1, 2, 3}
f1 (Y) = Y ∪ {1} este monotonă.
{
{1} dacă 1 ∈ Y
f2 (Y) = este monotonă.
∅ altfel
{
∅ dacă 1 ∈ Y
f3 (Y) = nu este monotonă.
{1} altfel

15 / 34
Funcţie continuă

Fie (A, ≤A ) şi (B, ≤B ) mulţimi parţial ordonate complete.


O funcţie f : A → B este continuă dacă
∨ ∨
f( n an ) = n f(an ) pentru orice lanţ {an }n din A.

Observăm că orice funcţie continuă este crescătoare.

Exemplu
Fie următoarele funcţii fi : P(N) → P(N) cu i ∈ {1, 2}.

f1 (Y) = Y ∪ {1} este continuă.


{
∅ dacă Y este finita
f2 (Y) =
Y altfel
este monotonă, nu este continuă.

16 / 34
Teorema de punct fix

Un element a ∈ C este punct fix al unei funcţii f : C → C dacă


f(a) = a.

Teorema Knaster-Tarski pentru CPO


Fie (C, ≤) o mulţime parţial ordonată completă şi F : C → C o funcţie
continuă. Atunci ∨
a= Fn (⊥)
n

este cel mai mic punct fix al funcţiei F.

Observăm că în ipotezele ultimei teoreme secvenţa

F0 (⊥) = ⊥ ≤ F(⊥) ≤ F2 (⊥) ≤ · · · ≤ Fn (⊥) ≤ · · ·



este un lanţ, deci n Fn (⊥) există.

17 / 34
Teorema Knaster-Tarski pentru CPO

Demonstraţie
Fie (C, ≤) o mulţime parţial ordonată completă şi F : C → C o funcţie
continuă.

Arătăm că a = n Fn (⊥) este punct fix, i.e. F(a) = a

F(a) = F( n Fn (⊥))

= n F(Fn (⊥)) din continuitate

= n Fn+1 (⊥)

= n Fn (⊥) = a

18 / 34
Teorema Knaster-Tarski pentru CPO

Demonstraţie (cont.)
Arătăm că a este cel mai mic punct fix.

Fie b un alt punct fix, i.e. F(b) = b.


Demonstrăm prin inducţie după n ≥ 1 că Fn (⊥) ≤ b.
Pentru n = 0, F0 (⊥) = ⊥ ≤ b deoarece ⊥ este prim element.
Dacă Fn (⊥) ≤ b, atunci Fn+1 (⊥) ≤ F(b), deoarece F este crescătoare.
Deoarece F(b) = b rezultă Fn+1 (⊥) ≤ b.

Ştim Fn (⊥) ≤ b oricare n ≥ 1, deci a = n Fn (⊥) ≤ b.
Am arătat că a este cel mai mic punct fix al funţiei F. 

19 / 34
Completitudinea sistemului de deducţie CDP

20 / 34
Clauze definite şi funcţii monotone

Fie A mulţimea atomilor p1 , p2 , . . . care apar în S.


Fie Baza = {pi | pi ∈ S} mulţimea clauzelor unitate din S.

Exemplu
oslo → windy
oslo → norway
norway → cold
cold ∧ windy → winterIsComing
oslo

A = {oslo, windy, norway, cold, winterIsComing}

Baza = {oslo}

21 / 34
Clauze definite şi funcţii monotone

Fie A mulţimea atomilor p1 , p2 , . . . care apar în S.


Fie Baza = {pi | pi ∈ S} mulţimea atomilor care apar în clauzele unitate
din S.
Definim funcţia fS : P(A) → P(A) prin

fS (Y) = Y ∪ Baza
∪ {a ∈ A | (s1 ∧ . . . ∧ sn → a) este în S,
s1 ∈ Y, . . . , sn ∈ Y}

Exerciţiu. Arătaţi că funcţia fS este monotonă.

22 / 34
Clauze definite şi funcţii monotone

Fie A mulţimea atomilor p1 , p2 , . . . care apar în S.


Propoziţie
Funcţia fS : P(A) → P(A) este continuă.

Demonstraţie
∪ ∪
Arătăm că dacă Y1 ⊆ Y2 ⊆ Y3 ⊆ . . . atunci fS ( k Yk ) = k fS (Yk ).
∪ ∪
Din faptul că fS este crescătoare rezultă fS ( k Yk ) ⊇ k fS (Yk )
∪ ∪ ∪
Demonstrăm în continuare că fS ( k Yk ) ⊆ k fS (Yk ). Fie a ∈ fS ( n Yk ).
Sunt posibile trei cazuri

a ∈ k Yk ∪
Există un k ≥ 1 astfel încât a ∈ Yk , deci a ∈ fS (Yk ) ⊆ k fS (Yk ).

a ∈ Baza ⊆ k fS (Yk )

Există s1 , . . . , sn în k Yk astfel încât (s1 ∧ . . . ∧ sn → a) este în S.
23 / 34
Clauze definite şi funcţii monotone

Demonstraţie (cont.)

Există s1 , . . . , sn în k Yk astfel încât (s1 ∧ . . . ∧ sn → a) este în S.
Pentru fiecare i ∈ {1, . . . , n} există ki ∈ N astfel încât si ∈ Yki .
Dacă k0 = max{k1 , . . . , kn } atunci Yki ⊆ Yk0 pentru orice
i ∈ {1, . . . , n}.

Rezultă că s1 , . . . , sn ∈ Yk0 , deci a ∈ fS (Yk0 ) ⊆ k fS (Yk ).

Am demonstrat că fS este continuă. 

24 / 34
Clauze definite şi funcţii monotone

Pentru funcţia continuă fS : P(A) → P(A)

fS (Y) = Y ∪ Baza
∪ {a ∈ A | (s1 ∧ . . . ∧ sn → a) este în S,
s1 ∈ Y, . . . , sn ∈ Y}

aplicând Teorema Knaster-Tarski pentru CPO, obţinem că



fnS (∅)
n

este cel mai mic punct fix al lui fS .

25 / 34
Clauze definite şi funcţii monotone

Analizaţi ce se întamplă când considerăm succesiv

∅, fS (∅), fS (fS (∅)), fS (fS (fS (∅))), . . .

La fiecare aplicare a lui fS , rezultatul fie se măreşte, fie rămâne


neschimbat.

Să presupunem că în S avem k atomi. Atunci după k + 1 aplicări ale


lui fS , trebuie să existe un punct în şirul de mulţimi obţinute de unde
o nouă aplicare a lui fS nu mai schimbă rezultatul (punct fix):
fS (X) = X

Dacă aplicăm fS succesiv ca mai devreme până găsim un X cu


proprietatea fS (X) = X, atunci găsim cel mai mic punct fix al lui fS .

26 / 34
Cel mai mic punct fix

Exemplu

fS (Y) = Y ∪ Baza
cold → wet
∪{a ∈ A | (s1 ∧ . . . ∧ sn → a) este în S,
wet ∧ cold → scotland
s1 ∈ Y, . . . , sn ∈ Y}

Se observă că fS (∅) =∅, deci ∅ este cel mai mic punct fix.
De aici deducem că niciun atom nu este consecinţă logică a formulelor de
mai sus.

27 / 34
Exemplu

Exemplu

cold fS (Y) = Y ∪ Baza


cold → wet
∪{a ∈ A | (s1 ∧ . . . ∧ sn → a) este în S,
windy → dry
s1 ∈ Y, . . . , sn ∈ Y}
wet ∧ cold → scotland

fS (∅) = { cold }
fS ({ cold }) = { cold, wet }
fS ({ cold, wet }) = { cold, wet, scotland }
fS ({ cold, wet, scotland }) = { cold, wet, scotland }

Deci cel mai mic punct fix este { cold, wet, scotland }.

28 / 34
Programe logice şi cel mai mic punct fix

Teoremă
Fie X este cel mai mic punct fix al funcţiei fS . Atunci

q∈X ddacă S |= q.

Intuiţie: Cel mai mic punct fix al funcţiei fS este mulţimea tuturor
atomilor care sunt consecinţe logice ale programului.

Funcţia fS : P(A) → P(A) este definită prin

fS (Y) = Y ∪ Baza
∪{a ∈ A | (s1 ∧ . . . ∧ sn → a) este în S, s1 ∈ Y, . . . , sn ∈ Y}

unde A este mulţimea atomilor din S şi Baza = {pi | pi ∈ S} este mulţimea atomilor
care apar în clauzele unitate din S.

29 / 34
Programe logice şi cel mai mic punct fix

Demonstraţie
(⇒) q ∈ X ⇒ S |= q.
Funcţia fS conservă atomii adevăraţi.
Deci, dacă fiecare clauză unitate din S este adevărată, după fiecare
aplicare a funcţiei fS obţinem o mulţime adevărată de atomi.

(⇐) S |= q ⇒ q ∈ X.
Fie S |= q. Presupunem prin absurd că q ̸∈ X.
Căutăm o evaluare e care face fiecare clauză din S adevărată, dar q
falsă.

30 / 34
Programe logice şi cel mai mic punct fix

Demonstraţie (cont.)
Fie evaluarea {
1, dacă p ∈ X
e(p) =
0, altfel
Evident, această interpretare face q falsă.
Arătăm că e+ (P) = 1, pentru orice clauză P ∈ S.
Fie P ∈ S. Avem două cazuri:
1 P este o clauză unitate. Atunci P ∈ X, deci e(P) = 1.
2 P este de forma p1 ∧ . . . ∧ pn → r. Atunci avem două cazuri:
există un pi , i = 1, . . . , n, care nu este în X. Deci e+ (P) = 1.
toţi pi , i = 1, . . . , n, sunt în X. Atunci r ∈ fS (X) = X, deci e(r) = 1.
În concluzie e+ (P) = 1.

31 / 34
Sistemul de deducţie CDP

Corolar
Sistemul de deducţie pentru clauze definite propoziţionale este complet
pentru a arăta clauze unitate:
dacă S |= q, atunci S ⊢ q.

Demonstraţie
Presupunem S |= q.
Atunci q ∈ X, unde X este cel mai mic punct fix al funcţiei fS .
Fiecare aplicare a funcţiei fS produce o mulţime demonstrabilă de
atomi.
Cum cel mai mic punct fix este atins după un număr finit de aplicări
ale lui fS , orice a ∈ X are o derivare.

32 / 34
Metodă de decizie

Avem o metodă de decizie (decision procedure) pentru a verifica S ⊢ q:


Metoda constă în:
calcularea celui mai mic punct fix X al funcţiei fS
dacă q ∈ X atunci returnăm true, altfel returnăm false

Această metodă se termină.


Exerciţiu. De ce?

Nu acesta este algoritmul folosit de Prolog!

33 / 34

S-ar putea să vă placă și