Sunteți pe pagina 1din 30

Curs 7

2017-2018 Programare Logică


1 / 31
Cuprins

1 Forma normală conjunctivă şi forma clauzală

2 Literali, clauze, mulţimi de clauze

3 Rezoluţia în calculul propoziţional (recap.)

4 Rezoluţia în logica de ordinul I

2 / 31
Forma normală conjunctivă şi forma clauzală

3 / 31
Literali. FNC

În calculul propoziţional un literal este o variabilă sau negaţia unei


variabile.

literal := p | ¬p unde p este variabilă propoziţională

În logica de ordinul I un literal este o formulă atomică sau negaţia


unei formule atomice.

literal := P(t1 , . . . , tn ) | ¬P(t1 , . . . , tn )


unde P ∈ R, ari(P) = n, şi t1 , . . . , tn sunt termeni.

Pentru un literal L vom nota cu Lc literalul complement.


De exemplu, dacă L = ¬P(x) atunci Lc = P(x) şi invers.

O formulă este în formă normală conjunctivă (FNC) dacă este o


conjuncţie de disjuncţii de literali.
4 / 31
FNC în calculul propoziţional

Pentru orice formulă α există o FNC αfc astfel încât α  αfc .


Pentru o formulă din calculul propoziţional determinăm FNC
corespunzătoare prin următoarele transformări:
1 înlocuirea implicaţiilor şi echivalenţelor
φ→ψ  ¬φ ∨ ψ
φ↔ψ  (¬φ ∨ ψ) ∧ (¬ψ ∨ φ)
2 regulile De Morgan
¬(φ ∨ ψ)  ¬φ ∧ ¬ψ
¬(φ ∧ ψ)  ¬φ ∨ ¬ψ
3 principiului dublei negaţii
¬¬ψ  ψ
4 distributivitatea
φ ∨ (ψ ∧ χ)  (φ ∨ ψ) ∧ (φ ∨ χ)
(ψ ∧ χ) ∨ φ  (ψ ∨ φ) ∧ (χ ∨ φ)
5 / 31
FNC în calculul propoziţional

Exemplu
Determinaţi FNC pentru formula
(¬p → ¬q) → (p → q)
 ¬(¬p → ¬q) ∨ (p → q)
 ¬(p ∨ ¬q) ∨ (¬p ∨ q)
 (¬p ∧ q) ∨ (¬p ∨ q)
 (¬p ∨ ¬p ∨ q) ∧ (q ∨ ¬p ∨ q)
 (¬p ∨ q) ∧ (q ∨ ¬p)

6 / 31
FNCP şi forma clauzală în logica de ordinul I

O formulă este formă normală conjunctivă prenex (FNCP) dacă


este în formă prenex Q1 x1 . . . Qn xn ψ (Qi ∈ {∀, ∃} oricare i)
ψ este FNC

O formulă este formă clauzală dacă este enunţ universal şi FNCP:


∀x1 . . . ∀xn ψ unde ψ este FNC

Exemplu
∀y∃z ((P(f(y)) ∨ Q(z)) ∧ (¬Q(z) ∨ ¬P(g(z)) ∨ Q(y)))
este FNCP

∀y∀z ((P(f(y)) ∨ Q(z)) ∧ (¬Q(z) ∨ ¬P(g(z)) ∨ Q(y)))


este formă clauzală.

7 / 31
Forma clauzală în logica de ordinul I

Pentru orice formulă φ din logica de ordinul I există o formă clauzală


φfc astfel încât
φ este satisfiabilă dacă şi numai dacă φfc este satisfiabilă

Pentru o formulă φ, forma clauzală φfc se poate calcula astfel:


1 se determină forma rectificată
2 se cuantifică universal variabilele libere
3 se determină forma prenex
4 se determină forma Skolem
în acest moment am obţinut o formă Skolem ∀x1 . . . ∀xn ψ
5 se determină o FNC ψ ′ astfel încât ψ  ψ ′
6 φfc este ∀x1 . . . ∀xn ψ ′

8 / 31
Literali, clauze, mulţimi de clauze

9 / 31
Clauze

O clauză este o disjuncţie de literali.

Dacă L1 , . . . , Ln sunt literali atunci clauza L1 ∨ . . . ∨ Ln o vom scrie


ca mulţimea {L1 , . . . , Ln }
clauză = mulţime de literali

Clauza C = {L1 , . . . , Ln } este satisfiabilă dacă L1 ∨ . . . ∨ Ln este


satisfiabilă.

O clauză C este trivială dacă conţine un literal şi complementul lui.

Când n = 0 obţinem clauza vidă, care se notează 

Prin definiţie, clauza  nu este satisfiabilă.

10 / 31
Forma clauzală

Observăm că o FNC este o conjuncţie de clauze.

Dacă C1 , . . . , Ck sunt clauze atunci C1 ∧ . . . ∧ Ck o vom scrie ca


mulţimea {C1 , . . . , Ck }
FNC = mulţime de clauze

O mulţime de clauze C = {C1 , . . . , Ck } este satisfiabilă dacă


C1 ∧ . . . ∧ Ck este satisfiabilă

Când k = 0 obţinem mulţimea de clauze vidă, pe care o notăm {}

Prin definiţie, mulţimea de clauze vidă {} este satisfiabilă.

{} este satisfiabilă, dar {} nu este satisfiabilă

11 / 31
Forma clauzală

Dacă φ este o formulă în calculul propoziţional, atunci


∧k ∨n i
φfc = i=1 j=1 Lij unde Lij sunt literali

Dacă φ o formulă în logica de ordinul I, atunci


(∧ ∨ )
k ni
φfc = ∀x1 . . . ∀xn i=1 j=1 Lij unde Lij sunt literali

φ este satisfiabilă dacă şi numai dacă


φfc este satisfiabilă dacă şi numai dacă
{{L11 , . . . , L1n1 }, . . . , {Lk1 , . . . , Lknk }} este satisfiabilă

12 / 31
Forma clauzală

Exemplu
În calculul propoziţional:
pentru a verifica satisfiabilitatea lui φ := (¬p → ¬q) → (p → q)
determinăm φfc := (¬p ∨ q) ∧ (q ∨ ¬p)
şi analizăm mulţimea de clauze {{¬p, q}, {q, ¬p}}.

În logica de ordinul I:
pentru a verifica satisfiabilitatea formulei
φ := ∀y∀z((P(f(y)) ∨ Q(z)) ∧ (Q(z) → (¬P(g(z)) ∨ Q(y))))
determinăm
φfc := ∀y∀z ((P(f(y)) ∨ Q(z)) ∧ (¬Q(z) ∨ ¬P(g(z)) ∨ Q(y)))
şi analizăm mulţimea de clauze
{{P(f(y)), Q(z)}, {¬Q(z), ¬P(g(z)), Q(y)}}
13 / 31
Deducţie şi satisfiabilitate

Fie φ1 , . . . , φn , φ formule în logica propoziţională


(enunţuri în calculul cu predicate).

{φ1 , . . . , φn }  φ este echivalent cu

 φ1 ∧ . . . ∧ φn → φ este echivalent cu

 ¬φ1 ∨ . . . ¬φn ∨ φ este echivalent cu

φ1 ∧ . . . ∧ φn ∧ ¬φ este satisfiabilă

Pentru a cerceta satisfiabilitatea este suficient să studiem forme clauzale

{{L11 , . . . , L1n1 }, . . . , {Lk1 , . . . , Lknk }}

atât în logica propoziţională, cât şi în calculul cu predicate.

14 / 31
Rezoluţie

Rezoluţia este o metodă de verificare a satisfiabilităţii formelor clauzale.

Rezoluţia în calculul propoziţional (recap.)

Rezoluţia în logica de ordinul I


cazul clauzelor fără variabile
cazul general

15 / 31
Rezoluţia în calculul propoziţional (recap.)

16 / 31
Regula rezoluţiei

C1 ∪ {p}, C2 ∪ {¬p}
Rez
C1 ∪ C2
unde C1 , C2 clauze, iar p este variabila propoziţională astfel încât
{p, ¬p} ∩ C1 = ∅ şi {p, ¬p} ∩ C2 = ∅.

Propoziţie
Regula Rez păstrează satisfiabilitatea. Sunt echivalente:
mulţimea de clauze {C1 ∪ {p}, C2 ∪ {¬p}} este satisfiabilă,
clauza C1 ∪ C2 este satisfiabilă.

Exemplu

{p, ¬q}, {¬p, q}


{q, ¬q}
Este mulţimea de clauze {{p, ¬q}, {¬p, q}} satisfiabilă?
17 / 31
Derivare prin rezoluţie

Fie C o mulţime de clauze. O derivare prin rezoluţie din C este o secvenţă


finită de clauze astfel încât fiecare clauză este din C sau rezultă din
clauzele anterioare prin rezoluţie (este rezolvent).

Exemplu
Fie C = {{¬q, ¬p}, {q}, {p}} o mulţime de clauze. O derivare prin
rezoluţie pentru  din C este
C1 = {¬q, ¬p}
C2 = {q}
C3 = {¬p} (Rez, C1 , C2 )
C4 = {p}
C5 =  (Rez, C3 , C4 )

Teorema de completitudine
 φ dacă şi numai dacă există o derivare prin rezoluţie a lui  din (¬φ)fc .

18 / 31
Procedura Davis-Putnam DPP (informal)

Intrare: o mulţime C de clauze

Se repetă următorii paşi:

se elimină clauzele triviale

se alege o variabilă p

se adaugă la mulţimea de clauze toţi rezolvenţii obţinuti prin


aplicarea Rez pe variabila p

se şterg toate clauzele care conţin p sau ¬p

Ieşire: dacă la un pas s-a obţinut , mulţimea C nu este satisfiabilă;


altfel C este satisfiabilă.

19 / 31
Procedura Davis-Putnam DPP

Exemplu
Este C0 = {{p, ¬r}, {q, p}, {q, ¬p, r}, {q, ¬r}} satisfiabilă?
Alegem variabila r şi selectăm C0r := {{q, ¬p, r}},
C0¬r := {{p, ¬r}, {q, ¬r}}.
Mulţimea rezolvenţilor posibili este R0 := {{q, ¬p, p}, {q, ¬p}};
Se observă că p, ¬p ∈ {q, ¬p, p} deci R0 := {{q, ¬p}}
Se elimină clauzele în care apare r şi se adaugă noii rezolvenţi
C1 := {{q, p}, {q, ¬p}}
Alegem variabila q şi selectăm C1q := {{q, p}, {q, ¬p}}, C1¬q := ∅.
Mulţimea rezolvenţilor posibili este vidă R1 := ∅.
Se elimină clauzele în care apare q şi se adaugă noii rezolvenţi
C2 := {} mulţimea de clauze vidă
Deoarece {} este satisfiabilă, rezultă că C0 este satisfiabilă.

Atenţie! La fiecare pas se alege pentru prelucrare o singură variabilă.


20 / 31
Rezoluţia în logica de ordinul I

21 / 31
Clauze închise

Fie C o clauză. Spunem că C ′ este o instaţă a lui C dacă există o


substituţie θ : V → TrmL astfel încât C ′ = θ(C).
Spunem că C ′ este o instanţă închisă a lui C dacă există o
substituţie θ : V → TL such that C ′ = θ(C) ( C ′ se obţine din C
înlocuind variabilele cu termeni din universul Herbrand)

Fie C o mulţime de clauze. Definim


H(C) := {θ(C) | C ∈ C, θ : V → TL }
H(C) este mulţimea instanţelor închise ale clauzelor din C.

Teoremă
O mulţime de clauze C este satisfiabilă dacă şi numai dacă H(C) este
satisfiabilă. O mulţime de clauze C este nesatisfiabilă dacă şi numai dacă
există o submulţime finită a lui H(C) care este nesatisfiabilă.

22 / 31
Clauze închise

Exemplu
Cercetaţi satisfiabilitatea mulţimii de clauze

C = {{¬P(x), Q(x)}, {P(y)}, {¬Q(z)}}

Dacă c este constantă atunci {{¬P(c), Q(c)}, {P(c)}, {¬Q(c)}} ⊆ H(C).


Considerăm toate valorile de adevăr pentru P(c) şi Q(c):
P(c) Q(c) (¬P(c) ∨ Q(c)) ∧ P(c) ∧ ¬Q(c)
0 0 0
0 1 0
1 0 0
1 1 0

{{¬P(c), Q(c)}, {P(c)}, {¬Q(c)}} este nesatisfiabilă, deci


C este nesatisfiabilă.

Putem gândi formulele atomice închise ca variabile propoziţionale.


23 / 31
Rezoluţia pe clauze închise

C1 ∪ {L}, C2 ∪ {¬L}
Rez
C1 ∪ C2
unde C1 , C2 clauze închise, iar L este o formulă atomică închisă astfel
încât {L, ¬L} ∩ C1 = ∅ şi {L, ¬L} ∩ C2 = ∅.

Propoziţie
Regula Rez păstrează satisfiabilitatea. Sunt echivalente:
mulţimea de clauze {C1 ∪ {L}, C2 ∪ {¬L}} este satisfiabilă,
clauza C1 ∪ C2 este satisfiabilă.

Teoremă
Fie φ o formulă arbitrară în logica de ordinul I. Atunci  φ dacă şi numai
dacă există o derivare pentru  din H(C) folosind Rez, unde C este
mulţimea de clauze asociată lui (¬φ)fc .
24 / 31
Rezoluţia pe clauze închise

Exemplu
Fie f, g simboluri de funcţii unare, P, Q simboluri de predicate unare.
Cercetaţi satisfiabilitatea formulei:
φ = ∀x((¬P(x) ∨ Q(f(x))) ∧ P(g(x)) ∧ ¬Q(x))
Determinăm forma clauzală:
C = {{¬P(x), Q(f(x))}, {P(g(x))}, {¬Q(x)}}
Pentru c o constantă obţinem următoarea derivare:
C1 = {¬P(g(c)), Q(f(g(c)))}
C2 = {P(g(c))}
C3 = {Q(f(g(c)))} Rez, C1 , C2
C4 = {¬Q(f(g(c)))}
C5 =  Rez, C3 , C4

25 / 31
Rezoluţia pe clauze arbitrare

Observaţii:
Unificarea literalilor revine la unificarea argumentelor
Dacă σ : V → TrmL o substituţie, atunci sunt echivalente
σ(P(t1 , . . . , tn )) = σ(P(t′1 , . . . , t′n ))
σ(¬P(t1 , . . . , tn )) = σ(¬P(t′1 , . . . , t′n ))
σ(t1 ) = σ(t′1 ), . . . , σ(tn ) = σ(t′n )

Redenumirea variabilelor în clauze păstrează validitatea


Exemplu
Deoarece ∀x(φ ∧ ψ)  (∀xφ) ∧ (∀xψ) obţinem
∀x((P1 (x) ∨ P2 (x)) ∧ (Q1 (x) ∨ Q2 (x)))
 (∀x(P1 (x) ∨ P2 (x))) ∧ (∀x(Q1 (x) ∨ Q2 (x)))
 (∀x(P1 (x) ∨ P2 (x))) ∧ (∀y(Q1 (y) ∨ Q2 (y)))
 ∀x∀y(P1 (x) ∨ P2 (x)) ∧ (Q1 (y) ∨ Q2 (y))
26 / 31
Rezoluţia pe clauze arbitrare

Regula rezoluţiei pentru clauze arbitrare

C1 , C2
Rez
(σC1 \ σLit1 ) ∪ (σC2 \ σLit2 )

dacă următoarele condiţii sunt satisfăcute:


1 C1 , C2 clauze care nu au variabile comune,
2 Lit1 ⊆ C1 şi Lit2 ⊆ C2 sunt mulţimi de literali,
3 σ este un cgu pentru Lit1 şi Litc2 , adică
σ unifică toţi literalii din Lit1 şi Litc2 .

O clauză C se numeşte rezolvent pentru C1 şi C2 dacă există o


redenumire de variabile θ : V → V astfel încât C1 şi θC2 nu au
variabile comune şi C se obţine din C1 şi θC2 prin Rez.

27 / 31
Rezoluţia în logica de ordinul I

Exemplu
Găsiţi un rezolvent pentru clauzele:
C1 = { P(f(x), g(y)), Q(x, y)} şi
C2 = {¬P(f(f(a)), g(y)), Q(f(a), g(y))}
redenumim variabilele pentru a satisface condiţiile din Rez
θC2 = {¬P(f(f(a)), g(z)), Q(f(a), g(z))} unde θ = {y ← z}
determinăm Lit1 şi Lit2
Lit1 = { P(f(x), g(y))} şi Lit2 = {¬P(f(f(a)), g(z))}
găsim un cgu σ care este unificator pentru
Lit1 = { P(f(x), g(y))} şi Litc2 = {P(f(f(a)), g(z))}
σ = {x ← f(a), y ← z}
Rezolventul este C = (σC1 \ σLit1 ) ∪ (σ(θC2 ) \ σLit2 )
C = {Q(f(a), z), Q(f(a), g(z))}

28 / 31
Rezoluţia în logica de ordinul I

Fie C o mulţime de clauze. O derivare prin rezoluţie din mulţimea C


pentru o clauză C este o secvenţă C1 , . . . , Cn astfel încât Cn = C şi,
pentru fiecare i ∈ {1, . . . , n}, Ci ∈ C sau Ci este un rezolvent pentru
două cauze Cj , Ck cu j, k < i.

Teoremă
O mulţime de clauze C este nesatisfiabilă dacă şi numai dacă există o
derivare a clauzei vide  din C prin Rez.

Rezoluţia este corectă şi completă în calculul cu predicate,


dar nu este procedură de decizie.

29 / 31
Rezoluţia în logica de ordinul I

Exemplu
Găsiţi o derivare a  din C = {C1 , C2 , C3 , C4 } unde:
C1 = { ¬P(x, y), P(y, x) }
C2 = { ¬P(x, y), ¬P(y, z), P(x, z) }
C3 = { P(x, f(x)) }
C4 = { ¬P(x, x) }
C ′3 = { P(x1 , f(x1 )) } redenumire în C3
C5 = { P(f(x), x) } Rez, σ = {x1 ← x, y ← f(x)}, C1 , C ′3
C′′3 = { P(x2 , f(x2 )) } redenumire în C3
C6 = { ¬P(f(x), z), P(x, z) } Rez, σ = {x2 ← x, y ← f(x)}, C2 , C′′3
C′5 = { P(f(x3 ), x3 ) } redenumire în C5
C7 = { P(x, x) } Rez, σ = {x3 ← x, z ← x}, C6 , C′5
C′4 = { ¬P(x4 , x4 ) } redenumire în C4
C5 =  Rez, σ = {x4 ← x}, C7 , C′4

30 / 31

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