42
Curs 6: Bazele Teoretice ale Program˘ arii Logice Mircea Marin [email protected] 16 noiembrie 2011 Mircea Marin Programare logic ˘ a

Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Embed Size (px)

Citation preview

Page 1: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Curs 6: Bazele Teoretice ale ProgramariiLogice

Mircea [email protected]

16 noiembrie 2011

Mircea Marin Programare logica

Page 2: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Logica predicatelor de ordinul întâiSintaxa si semantica

Logica predicatelor de ordinul întâi este formata din 2 parti:Sintaxa: Cum scriem corect în limbajul logicii predicatelor

de ordinul întâi?Semantica: Cum interpretam ceea ce am scris în limbajul

logicii predicatelor de ordinul întâi?

Mircea Marin Programare logica

Page 3: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Logica de ordinul întâiSintaxa limbajelor de ordin întâi

Vom descrie limbajul logicii (predicatelor) de ordinul întâipornind de la elementele de baza si continuând cu elementelemai complexe (termeni si formule):

Elementele de baza ale limbajului:Simboluri logice: apar în toate limbajele de ordin întâi

Conective logice: ¬ (negatie), ∨ (conjunctie), ∧ (disjunctie),→ (implicatie),↔ (echivalenta)Cuantificatori: ∀ (universal), ∃ (existential)Variabile: elemente ale unei multimi infinite X ;variabilele se refera la obiecte generice.

Simboluri nelogice: specifice fiecarui limbaj de ordin întâisimboluri constantesimboluri functionalesimboluri predicative

Reguli de construire de expresii complexe: termeni,formule atomice, si formule arbitrare.

Mircea Marin Programare logica

Page 4: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SintaxaElemente sintactice de baza

1 Simboluri constante: se refera la obiecte dintr-un domeniu dediscurs. Exemple:

Constante numerice: 1, 3.14Siruri de caractere: ’Alexandru Ioan Cuza’Constante simbolice: π, g, true, false

2 Simboluri functionale: desemneaza operatii, prin aplicarea lor laun numar de argumente.

Exemple: sin(π), 1 + 5, tree(a,b), .(a,b)Fiecare simbol functional are specificata oaritate = numarul exact de argumente acceptate.

Obisnuim sa scriem f/n pentru a indica faptul ca un simbolfunctional accepta exact n argumente.Exemple: sin/1, +/2, tree/2, ./2.

3 Simboluri predicative: desemneaza relatii care au loc întreun numar dat de argumente.

Exemple: stramos(adam), 1 ≤ 2, member(1, [1,2,3]).Si simbolurile predicative au aritate.De exemplu: adam/1, ≤ /2, member/2.

4 Semne de punctuatie: paranteze (( si )), virgula (,)Mircea Marin Programare logica

Page 5: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SintaxaReguli sintactice pentru termeni

Indica felul în care se construiesc expresii mai complexe(termeni, atomi, formule) din expresii mai simple.Vom prezenta regulile sintactice cu ajutorul notatiei Backus-Naur

Pentru termeni:

t ::=c | x | f (t1, . . . , tn)c este un simbol constant,x este o variabila,f este simbol functional cu aritatea n,t1, . . . , tn sunt termeni deja construiti.

OBSERVATII:’::=’ separa ceea ce se defineste de definitie, iar ’|’ dindreapta unei reguli separa cazuri alternative.⇒ Regula pentru termeni se citeste astfel: t este termendaca si numai daca este fie o constanta c, o variabila x ,sau o expresie de forma f (t1, . . . , tn) unde f/n este simbolfunctional iar t1, . . . , tn sunt termeni.

Mircea Marin Programare logica

Page 6: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SintaxaReguli sintactice pentru termeni si atomi

Variatii de reprezentare a termenilor:prefix: +(x , y), list(H,T )

infix: x + y , 47/225mixed: [H | T ] în loc de list(H,T )

O formula atomica (sau atom) este definita cu regula:

A ::= p(t1, . . . , tn)

unde p/n este un simbol predicativ cu aritate n, iart1, . . . , tn sunt termeni.Variatii de reprezentare a atomilor:

prefix: mama(doina, radu),carte(’Mara’,autor(’Ioan Slavici’)), less(1,2).

infix: 2 ≤ 5.

Mircea Marin Programare logica

Page 7: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SintaxaReguli sintactice pentru formule

F ::= A atom| ¬F1 negatie| F1∧F2 conjunctie| F1∨F2 disjunctie| F1→F2 implicatie| F1↔F2 echivalenta| ∀x .F formula cuantificata universal| ∃x .F formula cuantificata existential

Mircea Marin Programare logica

Page 8: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Sintaxa limbajelor de ordin întâiConcluzii

Sintaxa unui limbaj de ordin întâi consta din1 O parte logica, care este identica în toate limbajele de

ordin întâi. Partea logica este formata din: conective logice(¬,∧,∨,→,↔), cuantificatori si variabile.

2 O parte nelogica, specifica fiecarui limbaj. Partea nelogicaeste formata din

O multime C de constante.O multine F de simboluri functionale cu aritati specifice.O multime P de simboluri predicative cu aritati date.

3 Reguli sintactice care descriu cum se construiesc termeni,formule atomice, si fomule arbitrare.

Mircea Marin Programare logica

Page 9: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Sintaxa limbajelor de ordin întâiExemple

1 Un limbaj referitor la relatii de familieC = {Ion,Dan,Ana,Liviu}F = ∅P = {tata/2,mama/2,parinte/1}

⇒ formule atomice: tata(Ana,Dan), mama(Liviu, y)⇒ formule:

∃x .mama(Ana, x), ∀x∃y .tata(x , Ion)parinte(x)↔ ∃y .(tata(x , y) ∨mama(x , y))

2 Un limbaj aritmeticC = {0,1,−1,2,−2, . . .}F = {+/2,−/2, ∗/2}P = {</2,≤/2,= /2}

⇒ termeni: 1 + 2, x ∗ 3− y/2⇒ atomi: x + y = y + x , x ≤ y , 1 + 3 = 5⇒ formule:

∀x .∀y .∀z.x ∗(y +z) = x ∗y +x ∗z∧(x < y → x +z < y +z).¬∃x .x + x > 2.

Mircea Marin Programare logica

Page 10: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Semantica

Semantica unui limbaj indica felul în care interpretam toateelementele limbajului respectiv: constante, simbolurifunctionale, simboluri predicative, termeni. si formule.

Exemplul 1 (relatii de familie)

Constantele Ion,Dan,Ana,Liviu sunt interpretate ca fiindprimele persoane gasite în cartea de telefoane a Timisorii, cuaceste nume.

tata(x , y) reprezinta relatia "tatal lui x este y."mama(x , y) reprezinta relatia "mama lui x este y."parinte(x) reprezinta relatia "x este parintele cuiva."

Mircea Marin Programare logica

Page 11: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Semantica

Exemplul 2 (Un limbaj aritmetic)

Constantele 0,1,−1,2,−1 sunt interpretate ca fiind numereleîntregi respective.

Simbolurile functionale sunt interpretate astfel:

+ reprezinta functia de adunare a numerelor întregi− reprezinta functia de scadere a numerelor întregi∗ reprezinta functia de înmultire a numerelor întregi.

Simbolurile predicative sunt interpretate astfel:

= reprezinta relatia de egalitate între numere întregi≤ reprezinta relatia "mai mic sau egal" între numere întregi.

Mircea Marin Programare logica

Page 12: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SemanticaInterpretare

O interpretare a unui limbaj de ordin întâi L format dinmultimea de constante C,multimea de simboluri functionale F , simultimea de simboluri predicative P

este o pereche (D, I) unde. D este o multime nevida, numita domeniu de discurs. I este o functie care asociaza o interpretare pentru toate

elementele limbajului L:. c ∈ C 7→ cI ∈ D

(o constanta c este interpetata ca un element din D). f/n ∈ F 7→ f I : Dn → D

(f/n ∈ F este interpretat ca o functie de la Dn la D). p/n ∈ F 7→ pI ⊆ Dn

(p/n ∈ P este interpretat ca o relatie n-ara ⊆ Dn)

Mircea Marin Programare logica

Page 13: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SemanticaInterpretare (continuare)

Interpretarea I(t) a unui termen fara variabile este unelement din D care se calculeaza astfel:. Daca t este o constanta c ∈ C atunciI(t) := cI .

. Altfel, t este de forma f (t1, . . . , tn). În acest cazI(t) := f I(I(t1), . . . , I(tn)).

Interpretarea I(F ) a unei formule atomice fara variabileeste fie T sau F, si se calculeaza astfel:. I(true) := T. I(false) := F

. I(p(t1, . . . , tn)) :={

T daca (I(t1), . . . , I(tn)) ∈ pI ,F în caz contrar.

Mircea Marin Programare logica

Page 14: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretarea termenilor si atomilor cu variabile

Î: Cum putem interpreta termeni si atomi cu variabile cândavem data interpretare (D, I)?

R: Ne mai trebuie ceva: un mod de interpretare a variabilelorO atribuire de variabile este o functie σ : X → D.

Interpretarea Iσ(t) a unui termen este un element din Dcare se calculeaza astfel:. Iσ(c) := cI daca c ∈ C este constanta. Iσ(x) := σ(x) daca x ∈ X este variabila. Iσ(f (t1, . . . , tn)) := f I(Iσ(t1), . . . , Iσ(tn))

Interpretarea Iσ(p(t1, . . . , tn)) a unui atom se calculeazaastfel:

Iσ(p(t1, . . . , tn)) :={

T daca (Iσ(t1), . . . , Iσ(tn)) ∈ pI ,F în caz contrar.

Mircea Marin Programare logica

Page 15: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretarea termenilor si atomilor cu variabileExemplu

Consideram limbajul L al logicii predicatelor de ordin întâi cuC = {z}, F = {s/1,plus/2}, P = {= /2}, împreuna cu

Interpretarea (D, I) cu domeniul de discurs D = N si

zI := 0

sI(n) := n + 1

plusI(n,m) := n + m

=I := {(n,n) | n ∈ N}.

Atribuirea de variabile σ : X → D cu σ(x) = 0 si σ(y) = 2.

. Iσ(plus(s(x), s(s(z)))) = plusI(sI(σ(x)), sI(sI(zI))) =(0 + 1) + ((0 + 1) + 1) = 3.

. Iσ(s(z) = y) = F fiindca (Iσ(s(z)), Iσ(y)) = (1,2) 6∈=I .

Mircea Marin Programare logica

Page 16: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretarea formulelor arbitrare cu variabileNotiuni preliminare

. var(t): multimea variabilelor care apar în un termen t .

. Multimea fvar(F ) a variabilelor libere în o formula F estemultimea variabilelor care apar necuantificate în formula F . Sepoate calcula astfel: fvar(F ) := fvarac(F , ∅), unde

fvarac(F ,V ) :=

(⋃nk=1 var(ti)

)− V daca F ≡ p(t1, . . . , tn)

∅ daca F ≡ true sau falsefvarac(F1) daca F ≡ ¬F1fvarac(F1,V ) ∪ fvarac(F2,V ) daca F ≡ F1 op F2

unde op ∈ {∧,∨,→,↔}fvarac(F1,V ∪ {x}) daca F ≡ ∀x .F1 sau

F = ∃x .F1

. Daca fvar(F ) = {x1, . . . , xn} atunciÎnchiderea existentiala a lui F este ∃F := ∃x1. · · · ∃xn.FÎnchiderea universala a lui F este ∀F := ∀x1. · · · ∀xn.F

Mircea Marin Programare logica

Page 17: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretarea formulelor arbitrare cu variabileNotiuni preliminare

ExempluFie formula

F := f (x ,g(x)) < 1 ∨ ∀y .(y < 1 ∧ ∀x .g(z) < f (x ,2))

din limbajul în care C = {1,2}, F = {f/2,g/1}, P = {</2}.

. fvar(F ) = {x , z}.

. ∃F = ∃x .∃z.(f (x ,g(x)) < 1 ∨ ∀y .(y < 1 ∧ ∀x .g(z) < f (x ,2))).

. ∀F = ∀x .∀z.(f (x ,g(x)) < 1 ∨ ∀y .(y < 1 ∧ ∀x .g(z) < f (x ,2))).

Închiderea universala si închiderea existentiala a uneiformule sunt formule fara variabile libere.O formula fara variabile libere se numeste formula închisa.

Mircea Marin Programare logica

Page 18: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretarea formulelor arbitrare cu variabile

Presupunem date o interpretare (D, I) si o atribuiree σ : X → D.Interpretarea Iσ(F ) a unei formule neatomice F în raport cu(D, I) si σ este T sau F, si se calculeaza astfel:

Iσ(true) := T, Iσ(false) := FIσ(¬F ) := ¬Iσ(F ) si Iσ(F1 op F2) := Iσ(F1)op Iσ(F2)unde operatiile booleene se efectueaza folosindurmatoarele tabele de adevar:

b ¬bT FF T

b1 b2 b1 ∧ b2

F F FF T FT F FT T T

b1 b2 b1 ∨ b2

F F FF T TT F TT T T

b1 b2 b1 → b2

F F TF T TT F FT T T

b1 b2 b1 ↔ b2

F F TF T FT F FT T T

Mircea Marin Programare logica

Page 19: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretarea formulelor arbitrare cu variabile

. Iσ(∀x .F ) :=

{T daca Iσ[x 7→d ](F ) = T pentru toti d ∈ DF în caz contrar.

. Iσ(∃x .F ) :=

{T daca Iσ[x 7→d ](F ) = T pentru un d ∈ DF în caz contrar.

unde atribuirea de variabile σ[x 7→ d ] coincide cu σ, cu exceptiafaptului ca atribuie variabilei x valoarea d :

σ[x 7→ d ](y) :={σ(y) daca y 6= xd daca y = x

TeoremaDaca F este o formula închisa, atunci interpretarea Iσ(F ) areaceeasi valoare, indiferent de σ.

Din acest motiv, pentru formule închise vom scrie I(F ) în locde Iσ(F ).

Mircea Marin Programare logica

Page 20: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SemanticaExemplu

Fie formulele F ≡ p(u) ∨ ¬p(u) si G ≡ ∃x .x ∼ u în limbajul cuC = {u}, F = ∅ si P = {p/1,∼/2}.

1 În interpretarea (N, I1) în careuI1 := 1, pI1 := ∅, si ∼I1 :=>

avem I1(F ) = T fiindca I1(F ) = ”pI1(1) ∨ ¬pI1(1)” = F ∨ T = Tsi I1(G) = T fiindcaI1(G) = ”exista n ∈ N astfel încât n > 1” = T.

2 În interpretarea ({0,1}, I2) în careuI2 := 0, pI2 := {0,1}, si ∼I2 :=<

avem I2(F ) = T fiindca I2(F ) = ”pI2(0) ∨ ¬pI2(0)” = T ∨ F = Tsi I2(G) = F fiindcaI2(G) = ”exista n ∈ {0,1} astfel încât n < 0” = F.

Mircea Marin Programare logica

Page 21: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Formule valide, satisfiabile, nesatisfiabile

F este valida daca este mereu adevarata, adica:I(∀F ) = T pentru orice interpretare I.. Exemple:

true∀x .p(x) ∨ ¬p(x)false→ p(x).

F este satisfiabila daca este uneori adevarata, adica:I(∃F ) = T pentru o interpretare I.. Exemple:

∀x .∃y .x < ypatru > cinci .

F este nesatisfiabila daca este mereu falsa, adica:I(∃F ) = F pentru orice interpretare I.. Exemple:

false¬∀x .∀y .(p(x , y) ∨ ¬p(x , y))

I este model al unei multimi M de formule daca I(∀F ) = Tpentru toate formulele F din multimea M.

Mircea Marin Programare logica

Page 22: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SemanticaEchivalenta si consecinta logica

Doua formule F si G sunt logic echivalente, si scriemF ≡ G, daca au acelasi înteles în orice interpretare, adicadaca Iσ(F ) = Iσ(G) pentru orice interpretare I si oriceatribuire de variabile σ.G este consecinta logica a formulelor F1, . . . ,Fn, si scriem

F1, . . . ,Fn |= G

daca G este adevarata atunci când F1, . . . ,Fn suntsimultan adevarate. Adica:

F1, . . . ,Fn |= G daca si numai daca I(∀G) = T pentru oriceinterpretare I care satisface conditia

I(∀F1) = . . . = I(∀Fn) = T.

Altfel spus, I(∀G) = T pentru orice model al multimii deformule {F1, . . . ,Fn}.

Mircea Marin Programare logica

Page 23: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Variant

Scriem Fx [t ] pentru formula obtinuta din formula Fînlocuind toate aparitiile libere ale lui x în F cu termenul t .Exemplu:

daca F ≡ f (x , y) < x ∧ ∃x .f (x , y) < a atunci Fx [z] estef (z, x) < z ∧ ∃x .f (x , y) < a.

Un variant al unei formule F este orice formula obtinuta dinF prin o secventa de înlocuiri de subformule, astfel:

∃x .G se înlocuieste cu ∃y .Gx [y ] unde y ∈ X − fvar(G).∀x .G se înlocuieste cu ∀y .Gx [y ] unde y ∈ X − fvar(G).

. Daca G este un variant al lui F atunci F ≡ G (sunt logicechivalente).

. Intuitiv, acest lucru înseamna ca interpretarea unei formulenu depinde de numele alese pentru variabile.

Exemplu: formulele ∀x .∃y .f (x) < g(y) si ∀u.∃v .f (u) < g(v)sunt varianti, deci logic echivalente.

Mircea Marin Programare logica

Page 24: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Forma prenex

O forma prenex este o formula F de forma

Q1x1.Q2x2. · · · .Qnxn.G

unde Q1, . . . ,Qn sunt cuantificatori, iar G este o formulafara cuantificatori.. Q1x1.Q2x2. · · · .Qnxn se numeste prefixul lui F , iar. G se numeste matricea (sau scheletul) lui F .

Un literal este fie o formula atomica sau negatia uneiformule atomice.O forma prenex conjunctiva este o forma prenex a carieimatrice este de forma F1 ∧ . . . ∧ Fn, în care fiecare Fi esteo conjunctie de literali.O forma prenex disjunctiva este o forma prenex a carieimatrice este de forma F1 ∨ . . . ∨ Fn, în care fiecare Fi esteo disjunctie de literali.

Mircea Marin Programare logica

Page 25: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Transformari în forma prenex

Orice formula este echivalenta logic cu o forma prenex.Se aplica top-down transformarile urmatoare:. Se elimina implicatiile si disjunctiile:

F → G⇒ ¬F ∨GF ↔ G⇒ (¬F ∨G) ∧ (¬G ∨ F ).

. Se propaga negatiile:¬∀F ⇒ ∃¬F¬∃F ⇒ ∀¬F¬(F ∨G)⇒ ¬F ∧ ¬G¬(F ∧G)⇒ ¬F ∨ ¬G

. Se grupeaza disjunctiile sub acelasi cuantificatorQx .F ∨G⇒ Qy .(Fx [y ] ∨G) unde y 6∈ fvar(F ) ∪ fvar(G)F ∨Qx .G⇒ Qy .(F ∨Gx [y ]) unde y 6∈ fvar(F ) ∪ fvar(G)

. Se grupeaza conjunctiile sub acelasi cuantificatorQx .F ∧G⇒ Qy .(Fx [y ] ∧G) unde y 6∈ fvar(F ) ∪ fvar(G)F ∧Qx .G⇒ Qy .(F ∧Gx [y ]) unde y 6∈ fvar(F ) ∪ fvar(G)

Mircea Marin Programare logica

Page 26: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Transformari în forma prenex conjunctiva (CNF)

Orice formula este echivalenta logic cu o forma prenexconjunctiva care poate fi calculata.

Mai întâi, se aduce formula la forma prenexQ1x1 · · ·Qnxn.FSe aplica repetat transformarile urmatoare asupra lui F :

Se elimina negatiile duble:¬¬G⇒ GSe distribuie disjunctiile:G1 ∨ (G2 ∧G3)⇒ (G1 ∨G2) ∧ (G1 ∨G3)(G1 ∧G2) ∨G3 ⇒ (G1 ∨G3) ∧ (G2 ∨G3)Se propaga negatiile:¬(F ∨G)⇒ ¬F ∧ ¬G¬(F ∧G)⇒ ¬F ∨ ¬G

Mircea Marin Programare logica

Page 27: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Transformari în forma prenex disjunctiva (DNF)

Orice formula este echivalenta logic cu o forma prenexdisjunctiva care poate fi calculata.

Mai întâi, se aduce formula la forma prenexQ1x1 · · ·Qnxn.FSe aplica repetat transformarile urmatoare asupra lui F :

Se elimina negatiile duble:¬¬G⇒ GSe distribuie conjunctiile:G1 ∧ (G2 ∨G3)⇒ (G1 ∧G2) ∨ (G1 ∧G3)(G1 ∨G2) ∧G3 ⇒ (G1 ∧G3) ∨ (G2 ∧G3)Se propaga negatiile:¬(F ∨G)⇒ ¬F ∧ ¬G¬(F ∧G)⇒ ¬F ∨ ¬G

Mircea Marin Programare logica

Page 28: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Forma Skolem standard

Forma Skolem standard sau forma standard unei forme prenexF ≡ Q1x1.Q2x2. · · · .Qnxn.G este formula FH care se obtine prineliminarea repetata a cuantificatorilor existentiali, de la stânga ladreapta, si introducerea de constante si simboluri functionale noi,astfel:. Fie Qk primul cuantificator existential care apare de la stânga la

dreapta în F . Înseamna ca

F ≡ ∀x1. · · · ∀xk−1.∃xk .Qk+1xk+1. · · · .Qnxn.F︸ ︷︷ ︸F ′

.

. Se produce transformarea

F ⇒ ∀x1. · · · ∀xk−1.F ′xk[f (x1, . . . , xk−1)]

unde f este un simbol nou introdus în limbaj:daca k = 1 atunci f este o constanta nou introdusa în Caltfel, f este un simbol functional nou cu aritatea k − 1.

Mircea Marin Programare logica

Page 29: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Forma Skolem: exemplu

F ≡ ∃x .∀y .∀z.∃u.∀v .∃w .p(x , y , z,u, v ,w).

. Prima eliminare:

∃x .∀y .∀z.∃u.∀v .∃w .p(x , y , z, u, v ,w)⇒ ∀y .∀z.∃u.∀v .∃w .p(a, y , z, u, v ,w)

unde a este o constanta noua.. A doua eliminare:

∀y .∀z.∃u.∀v .∃w .p(a, y , z, u, v ,w)⇒ ∀y .∀z.∀v .∃w .p(a, y , z, f (y , z), v ,w)

unde f/2 este o constanta functionala noua.. A treia eliminare:

∀y .∀z.∀v .∃w .p(a, y , z, f (y , z), v ,w)⇒ ∀y .∀z.∀v .p(a, y , z, f (y , z), v , g(y , z, v))

. Toti ∃ au fost eliminati, deci forma Skolem a lui F este

FH ≡ ∀y .∀z.∀v .p(a, y , z, f (y , z), v ,g(y , z, v)).

Mircea Marin Programare logica

Page 30: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

SemanticaTeste semantice

Întrebare: Cum putem verifica daca o formula estesatisfiabila sau nu?

. F este satisfiabila daca si numai daca ¬F estenesatisfiabila.

. Herbrand (1930) a descoperit un rezultat important:O formula F este nesatisfiabila daca si numai daca forma eistandard FH este nesatisfiabila.

Forma standard a unei formule se poate aduce in formanormala conjunctiva ∀x1. · · · ∀xn.(C1 ∧ . . . ∧ Cp) undeC1, . . . ,Cp sunt disjunctii de literali.În general, o clauza este o disjunctie de literali.Pentru a usura notatia, vom identifica forma normalaconjunctiva ∀x1. · · · ∀xn.(C1 ∧ . . . ∧ Cp) cu multi-setul declauze {C1, . . . ,Cp}, si presupunem implicit ca toatevariabilele sunt cuantificate universal.

Mircea Marin Programare logica

Page 31: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Interpretare Herbrand

Cum verificam daca o multime de clauze este nesatisfiabila?. Nesatisfiabil = fals în toate interpretarile⇒ imposibil de

verificat toate cazurile (numar infinit de interpretari). Herbrand a descoperit ca este suficient sa verificam

nesatisfiabilitatea în raport cu interpretarile Herbrand H alemultimii de clauze:

Domeniul de discurs este multimea T a termenilor faravariabile, construiti cu constantele si simbolurile functionalecare apar în clauze. Daca nu sunt constante, adaugam unanoua. Multimea T se numeste univers Herbrand.Multimea formulelor atomice fara variabile se numeste bazaHerbrand.Simbolurile din C ∪ F au interpretari predefinite:

c ∈ C 7→ cH := cf/n ∈ F 7→ fH : T n → T , fH(t1, . . . , tn) := f (t1, . . . , tn).

De obicei, interpretarea simbolurilor predicative este datade o submultime H a lui B, în raport cu care definim:H(p(t1, . . . , tn)) = T daca si numai daca p(t1, . . . , tn) ∈ H.

Mircea Marin Programare logica

Page 32: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Semantica

Exemplu de interpretare HerbrandConsideram multimea de clauze S = {P(x) ∨Q(x),R(f (y))}.

. Universul Herbrand al acestor clauze esteT = {a, f (a), f (f (a)), . . .}

. Baza Herbrand a acestor clauze este{P(a),Q(a),R(a),P(f (a)),Q(f (a)),R(f (a)), . . .}.

. Interpretarea Herbrand H = {R(a),Q(f (a))} indica faptul ca

Relatia P(t) nu are loc pentru nici un termen t .R(t) are loc daca si numai daca t ≡ a.Q(t) are loc daca si numai daca t ≡ f (a).

Mircea Marin Programare logica

Page 33: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Semantica clauzelor

O substitutie σ este o functie care mapeaza variabile latermeni.O substitutie ground este o substitutie care mapeazavariabile la termeni fara variabile. Altfel spus, a substitutieground este o asignare σ : X → T .Instanta unui termen t cu substitutia σ este termenul tσprodus prin înlocuirea fiecarei variabile x din t cu σ(x).Instanta unei clauze C = L1 ∨ . . . ∨ Ln este clauzaCσ := L1σ ∨ . . . ∨ Lnσ produsa prin înlocuirea variabilelorcu valorile lor date de σ.O instanta ground este o instanta care nu contine variabile.

Exemplu

Daca σ1 = {x 7→ f (x)} si σ2 = {x 7→ a} atunci p(x)σ1 = p(f (x))si p(x)σ2 = p(a). Deci clauzele p(f (x)) si p(a) sunt instante aleclauzei p(x).

Mircea Marin Programare logica

Page 34: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Observatii

Fie C o clauza, si S o multime de clauze.Spunem ca C este Herbrand satisfiabila daca esteadevarata în o interpretare Herbrand. În caz contrarspunem ca C este Herbrand nesatisfiabila.S este Herbrand satisfiabila daca exista o interpretare H încare sunt adevarate toate clauzele din S. În caz contrarspunem ca S este Herbrand nesatisfiabila.

TeoremaC este satisfiabila⇔ C este Herbrand-satisfiabila.

Pentru a verifica satisfiabilitatea unei formule arbitrare F , putemcalcula forma Skolem standard FH a lui F , apoi forma normalaconjunctiva a acestei forme:

∀x1.∀x2. · · · .∀xn.C1 ∧ . . . ∧ Cp

iar apoi sa folosim Teorema lui Herbrand ca sa verificam dacamultimea de clauze S = {C1, . . . ,Cp} este satisfiabila.

Mircea Marin Programare logica

Page 35: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Tehnici de verificare a satisfiabilitatii HerbrandArbori semantici

Au rol important în gasirea unei demonstratii pentrusatisfiabilitatea unui set de clauze:. Demonstratie = generarea unui arbore semantic.

O pereche complementara este o multime {A,¬A} unde Aeste un atom. A este complementul lui ¬A, si vice-versa.Un arbore semantic pentru o multime de clauze S este unarbore, posibil infinit, definit astfel:

Fie A1,A2, . . . o enumerare a tuturor atomilor ground pt. S.Fiecare nod la nivelul k are 2 ramuri spre fii, etichetate cuAk si ¬Ak .Pentru fiecare nod N, fie I(N) conjunctia literalilor careeticheteaza muchiile ramurii de la radacina la nodul N.Un nod esec este un nod N pentru care I(N) falsifica oinstanta ground a unei clauze din S, iar nodurile dedeasupra lui nu sunt noduri esec.

Mircea Marin Programare logica

Page 36: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Tehnici de verificare a satisfiabilitatii HerbrandArbori semantici (continuare)

Observatie

Ramurile unui arbore semantic reprezinta toate interpretarileHerbrand posibile ale multimii de clauze S.

Un arbore semantic este închis daca fiecare ramura seîncheie cu un nod esec.Un nod de inferenta este un nod care are toti descendentiiimediati noduri esec.

Mircea Marin Programare logica

Page 37: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Arbori semanticiExemplu

S = {P,Q ∨ R,¬P ∨ ¬Q,¬P ∨ ¬R}.S are un numar finit de atomi ground: B = {P,Q,R}.

. Un arbore semantic complet si un arbore semantic închispentru S sunt ilustrati aici:

• •

• • • •

• • • • • • • •

¬PP

Q ¬Q

R ¬RR ¬R

Q ¬Q

R ¬R R ¬R

• x

x •

x x

¬PP

Q ¬Q

R ¬R

Mircea Marin Programare logica

Page 38: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Arbori semanticiExemplu

S = {P(x),¬P(x) ∨Q(f (x)),¬Q(f (a))}.În acest caz, B = {P(a),Q(a),P(f (a)),Q(f (a)), . . .}.

. Un arbore semantic închis pentru S este•

• x

x x

¬P(a)P(a)

Q(f (a)) ¬Q(f (a))

Mircea Marin Programare logica

Page 39: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Teorema lui Herbrand

Versiunea 1O multime de clauze S este nesatisfiabila daca si numai dacaoricarui arbore semantic complet îi corespunde un arboresemantic închis finit.

DEMONSTRATIE."⇒." Presupunem ca S este nesatisfiabila. Fie T un arbore semantic complet al lui S.Pentru fiecare ramura B din T , fie IB multimea literalilor care marcheza muchiile lui B.

. IB este o interpretare Herbrand.

. S nu este satisfiabila⇒ IB falsifica o instanta ground C′ = L1σ ∨ . . . ∨ Lmσ aunei clauze C = L1 ∨ . . . ∨ Lm din S ⇒ unul dintre literalii L1σ, . . . , Lmσ esteeticheta unei muchii din B catre un nod esec.

Deci toate ramurile B ale lui T contin un nod esec⇒ exista un arbore semantic închisT ′ al lui S. T ′ trebuie sa fie finit, pentru ca altfel ar contine o ramura infinita B fara nodesec. Dar T ′ s-a obtinut din T , deci B este o ramura infinita din T fara nod esec,contradictie.

"⇐." Daca fiecarui arbore semantic complet al lui S îi corespunde un arbore semantic

închis finit, atunci fiecare ramura B a lui T contine un nod esec⇒ S este nesatisfiabila

în toate interpretarile Herbrand ale lui S.

Mircea Marin Programare logica

Page 40: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Teorema lui Herbrand

Versiunea 2O multime S de clauze este nesatisfiabila⇔ exista o multimefinita nesatisfiabila de instante ground de clauze din S.

DEMONSTRATIE."⇒." Presupunem ca S este nesatisfiabila. Fie T un arbore semantic complet pentruS. Din Versiunea 1 a Teoremei lui Herbrand, rezulta ca exista un arbore semanticînchis finit T ′ corespunzator lui T . Pentru fiecare nod esec din T ′ exista o instantaground de clauza din S care este falsificata de acel nod. Fie S′ o multime de astfel deinstante ground, câte una pentru fiecare nod esec din T ′.

. T ′ este finit⇒ numarul de noduri esec din T ′ este finit⇒ S′ este o multimefinita de instante ground din S.

. S′ este Herbrand nesatisfiabila, deci nesatisfiabila.

"⇐." Presupunem ca exista o multime nesatisfiabila finita S′ de instante ground declauze din S.

. Orice interpretare Herbrand I a lui S contine o interpretare Herbrand I′ a luiS′ ⇒ daca I′ nu este model al lui S′ atunci I nu este model al lui S′.

. Nici un I′ nu este model al lui S′ ⇒ nici un I nu este model al lui S′.

⇒ S este Herbrand nesatisfiabila, deci este nesatisfiabila.

Mircea Marin Programare logica

Page 41: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Aplicatii ale Teoremei lui Herbrand

Versiunea 2 a stat la baza implementarii uneia dintre primelemetode automate de demonstrare a nesatisfiabilitatii uneimultimi de clauze S:

Se genereaza succesiv multimi tot mai largi S′1,S′2, . . . de

instante ground ale clauzelor din S.Pentru fiecare i = 1,2, . . .

Se testeaza daca S′i este o multime nesatisfiabila de clauzeground

. Acest test este simplu, bazat pe logica propozitionala.

. Daca S′i este nesatisfiabila, atunci S este nesatisfiabila. În

acest caz, metoda se opreste, raportând "S estenesatisfiabila".În caz contrar, se testeaza mai departe, S′

i+1.

Aceasta metoda a fost implementata de Gilmore în 1960.Este foarte ineficienta.În cursul urmator ve fi prezentata o metoda mult maieficienta: Principiul Rezolutiei.

Mircea Marin Programare logica

Page 42: Curs 6: Bazele Teoretice ale Programarii Logiceweb.info.uvt.ro/~mmarin/lectures/LP/curs-07.pdf · Logica predicatelor de ordinul întâi ... Regula pentru termeni se citeste¸ astfel:

Referinte

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

Mircea Marin Programare logica