Sunteți pe pagina 1din 311

vii

Cuprins

Prefaţă şi Introducere 1

Capitolul 1 Funcţii booleene 8


§1. Algebre booleene . . . . . . . . . . . . . . . . . . . 14

§2. Teoreme de reprezentare şi


forme normale pentru
funcţiile booleene . . . . . . . . . . . . . . . . . . 22
§3. Clase speciale de funcţii booleene . . . . . 32

§4. Recapitulare şi Index . . . . . . . . . . . . . . . 39

§5. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Capitolul 2 Logica propoziţională


(calculul propoziţional) 43
§1. Logica, parte a filozofiei . . . . . . . . . . . . 45

§2. Sintaxa logicii propoziţionale . . . . . . . . . 55

§3. Semantica logicii propoziţionale . . . . . . 61

§4. Forme normale în LP . . . . . . . . . . . . . . 72

§5. Decidabilitate în LP . . . . . . . . . . . . . . . 77

§6. Formule Horn . . . . . . . . . . . . . . . . . . . . 81


§7. Rezoluţie în LP . . . . . . . . . . . . . . . . . . . 89

PDF created with pdfFactory Pro trial version www.pdffactory.com


viii Cuprins

§8. Rafinări ale rezoluţiei:


strategii şi restricţii . . . . . . . . . . . . . . . . 105
§9. Recapitulare şi Index . . . . . . . . . . . . . . . 111
§10. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . 120

Capitolul 3 Logica (calculul) cu predicate de ordinul I 123


§1. Sintaxa logicii cu predicate
de ordinul I . . . . . . . . . . . . . . . . . . . . . . 123
§2. Semantica logicii cu predicate
de ordinul I . . . . . . . . . . . . . . . . . . . . . . 141
§3. Forme normale în LP1 . . . . . . . . . . . . . 151

§4. Decidabilitate în LP1 (LP1=) . . . . . . . . 170

§5. Rezoluţie în LP1 . . . . . . . . . . . . . . . . . . 184

§6. Recapitulare şi Index . . . . . . . . . . . . . . . 187

§7. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . 190

Capitolul 4 Teorii logice şi sisteme deductive 193


§1. Sisteme deductive . . . . . . . . . . . . . . . . . 196

§2. Teorii logice . . . . . . . . . . . . . . . . . . . . . 207

§3. Clasificarea sistemelor deductive . . . . . . 217

§4. Recapitulare şi Index . . . . . . . . . . . . . . . 232

§5. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . 235

PDF created with pdfFactory Pro trial version www.pdffactory.com


Cuprins ix

Capitolul 5 Programare logică 238


§1. Exemple de programe logice pure . . . . 240

§2. Sintaxa programelor logice . . . . . . . . . . 249

§3. Recapitulare şi Index . . . . . . . . . . . . . . . 258


§4. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . 260

Anexă Rezolvarea exerciţiilor şi


exerciţii propuse 267
§1. Rezolvări Capitolul 1 . . . . . . . . . . . . . . 267

§2. Rezolvări Capitolul 2 . . . . . . . . . . . . . . 272

§3. Rezolvări Capitolul 3 . . . . . . . . . . . . . . 282

§4. Rezolvări Capitolul 4 . . . . . . . . . . . . . . 288

§5. Rezolvări Capitolul 5 . . . . . . . . . . . . . . 292

§6. Exerciţii propuse . . . . . . . . . . . . . . . . . . 302

Bibliografie 312

PDF created with pdfFactory Pro trial version www.pdffactory.com


Capitolul 1
Funcţii booleene

Scopul acestui capitol îl constituie familiarizarea cititorului cu o


clasă particulară de funcţii – clasa funcţiilor booleene. Aceste funcţii,
deşi au o mulţime de definiţie (un domeniu) şi o mulţime de valori (un
codomeniu) aparent simple, au proprietăţi locale şi globale foarte utile.
Teoria dezvoltată pentru ele constituie de fapt baza conceptuală şi
concretă a semanticii logicii propoziţionale în sens clasic (şi nu numai).
Schimbând semnificaţia simbolurilor 0 şi 1 din cifră în valoare de
adevăr (fals, respectiv adevărat), a operaţiilor + şi ¯, etc., din
adunare (de exemplu, adunarea în mulţimea numerelor naturale sau
adunarea modulo 2) şi opus, în disjuncţie, respectiv negaţie (ca
operaţii cu valori de adevăr), etc., multe rezultate din logică pot fi
ulterior deduse printr-o simplă „traducere”. Anumite noţiuni şi
proprietăţi specifice funcţiilor booleene nu sunt direct şi neapărat
necesare în studiul logicii formale, astfel încât subiectul nu este tratat în
detaliu.
Vom introduce - cât mai succint şi la un nivel informal - şi alte
noţiuni, notaţii sau rezultate necesare pentru îmbunătăţirea înţelegerii
majoritatea de natură algebrică ([DID]) sau de informatică elementară
([SOR]). În primul rând, chiar din manualele de matematică de liceu
sunt bine cunoscute cel puţin două modalităţi de a prezenta o mulţime:
• Prin enumerarea elementelor sale. N = {0, 1, 2, ...} este
mulţimea numerelor naturale.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 9

• Prin specificarea unei proprietăţi caracteristice. A = {x ∈ R |


| x2 + 9x – 8 = 0}, este mulţimea rădăcinilor reale ale unei
ecuaţii polinomiale de gradul al II-lea.
Mai există o modalitate de specificare, care, fără a fi fost tratată în mod
explicit, a fost totuşi suficient de des utilizată (în ideea constructivistă,
[CAZ2], [RIC]). Aceasta poate fi descrisă pe scurt astfel: A este cea
mai mică mulţime care conţine elementele ... şi care este închisă la
operaţiile ... . De exemplu, dacă notăm cu 0 cel mai mic (primul) număr
natural şi, pentru fiecare n, număr natural, cu s(n) succesorul său
imediat, mulţimea N poate fi definită (în ideea de mai sus) constructiv
sau structural (ea este de fapt o mulţimebine-ordonată, [ŢIP]), astfel:

Baza. 0 ∈ N (zero este număr natural).


Pas constructiv (structural). Dacă n ∈ N, atunci s(n) ∈ N (dacă n
este număr natural, atunci succesorul său imediat este număr natural).
Nimic altceva nu mai este număr natural.

Prin urmare, N este o mulţime care conţine (iniţial) elementul numit 0.


Se introduc apoi elemente noi folosind elemente „vechi” (deja existente
în mulţime) şi simbolul (operatorial) s. Procesul continuă cât timp este
posibil (în cazul de mai sus, el continuă „la infinit”). Pentru ca N să fie
într-adevăr cea mai mică mulţime construită în felul descris, am
adăugat, în plus faţă de Bază şi Pasul constructiv, condiţia nimic
altceva nu mai este număr natural (în cele ce urmează, ultimul text
va fi implicit presupus a fi prezent.

PDF created with pdfFactory Pro trial version www.pdffactory.com


10 Cristian Masalagiu

Soluţia adoptată pentru această a treia cale de descriere a unei


mulţimi are avantajul de a avea şi o caracteristică de natură
(semi)algoritmică. Acceptăm astfel paradigma imperativă propusă de
D. Knuth ([KNU]), Algoritm = Date + Operaţii. Mai exact, un
algoritm (imperativ) reprezintă o secvenţă finită de paşi (instrucţiuni),
care descriu operaţii precise asupra unor informaţii (date) iniţiale (de
intrare) sau intermediare (de lucru, temporare), în vederea obţinerii
unor informaţii (rezultate) finale (de ieşire). Paşii se execută (operaţiile
se efectuează în mod concret) în ordinea scrierii lor în secvenţă. Un
algoritm calculează o funcţie sau rezolvă o problemă ([CRO],
[SOR]). Intuitiv, datele de intrare reprezintă elemente din domeniul de
definiţie al funcţiei de calculat (sau informaţiile iniţiale din realitatea în
care îşi are originea problema pe care vrem să o rezolvăm), iar datele de
ieşire sunt elemente din codomeniul funcţiei (respectiv, soluţiile
problemei). Un algoritm se termină pentru toate intrările admise, prin
urmare există întotdeauna un ultim pas, a cărui execuţie marchează
de obicei şi obţinerea rezultatelor de ieşire. Din motive tehnice, vom
lua uneori în considerare şi algoritmi care nu se termină pentru toate
intrările, pe care-i vom numi semialgoritmi (proceduri). Un
(semi)algoritm poate fi descris sub mai multe forme, printre care se
numără şi pseudocodul (limbaj intermediar între limbajul natural şi un
limbaj de programare comercial). Astfel, definiţia constructivă a lui N
poate deveni, în limbaj algoritmic (pseudocod, [IVA]):

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 11

Intrare: -.
Ieşire: N.
Metodă:
Pas 1: N ‫{ =׃‬0}.
Pas 2: Cât_timp (este posibil) execută
Pas 3: Alege n ∈ N.
Pas 4: N ‫ =׃‬N U {s(n)}.
Sf_Cât_timp.

Desigur că în cele de mai sus 0 putea fi introdus „din exterior”, adică în


Intrare. Înafara instrucţiunii de ciclare cu un număr necunoscut de
paşi (Cât_timp (<condiţie>) execută <corp> Sf_Cât_timp) şi a
celei de asignare (<variabilă> ‫< =׃‬valoare>), în descrierea algoritmilor
imperativi vom mai folosi selecţia (Dacă (<condiţie>) atunci <corp>
altfel <corp> Sf_Dacă) şi instrucţiunea de ciclare cu un număr
cunoscut de paşi (Pentru <variabilă> = <valoare iniţială>, <indice>,
<valoare finală> execută <corp> Sf_Pentru). Câteodată vom
întrebuinţa şi varianta Repetă <corp> Până_când (<condiţie>)
Sf_Repetă pentru o instrucţiune de ciclare. Presupunând că
semnificaţia intuitivă a instrucţiunilor de mai sus este cunoscută de
către cititor, vom mai face precizări şi completări pe parcursul lucrării
legate de conceptul de algoritm, cum ar fi prezentarea pe scurt a
conceptelor de corectitudine, complexitate, tratabilitate. Orice
manual de introducere în programarea imperativă poate fi folositor
celor care nu stăpânesc asemenea noţiuni (de exemplu, [COR], [AHO],

PDF created with pdfFactory Pro trial version www.pdffactory.com


12 Cristian Masalagiu

[LUC]). Revenind la definiţiile constructive – care „ascund” şi ideea de


recursivitate în programare - ele au şi alte avantaje. Un prim avantaj
este acela că se poate folosi aceeaşi metodă pentru a introduce alte
definiţii, care sunt legate de mulţimea respectivă în totalitatea ei. Putem
da astfel o definiţie constructivă (recursivă) a adunării numerelor
naturale, pe care o vom folosi de altfel în Capitolul 5, după cum
urmează.

Baza: x + 0 = x, pentru fiecare x ∈ N (a aduna 0 la orice număr natural


înseamnă a-l lăsa neschimbat).
Pas constructiv: x + s(y) = s(x + y), pentru fiecare x, y ∈ N (dacă ştim
să calculăm x + y şi cunoaştem succesorul imediat al numărului natural
y, atunci ştim să calculăm şi suma x + s(y); mai exact, aceasta coincide
cu succesorul imediat al numărului care reprezintă suma x + y).

Un al doilea – şi cel mai important – avantaj este posibilitatea folosirii


în demonstraţii a principiului inducţiei structurale:

Fie A o mulţime definită constructiv, A’ ⊆ A mulţimea elementelor


iniţiale (definite prin pasul Baza al definiţiei) şi P o afirmaţie care
trebuie demonstrată pentru toate elementele lui A. Acceptăm că P(a)
este adevărată pentru fiecare a ∈ A dacă şi numai dacă:
1. (Baza.) Arătăm că P(a) este adevărată pentru fiecare a ∈ A’.
2. (Pas inductiv.) Fie orice b ∈ A, element nou obţinut din elementele
deja construite a1, a2, ... , an, cu ajutorul operatorului f (vom conveni să

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 13

scriem acest lucru prin b = f(a1, a2, ... , a n), deşi relaţia dintre
elementele vechi şi cele noi nu este întotdeauna de natură funcţională)
şi presupunem că este adevărată P(ai) pentru fiecare ai ∈ {1, 2, ..., n}.
Arătăm că este adevărată P(b).

Observaţie. Principiul inducţiei matematice (naturale) aşa cum este


el cunoscut din matematica de liceu, este un caz particular al
principiului inducţiei structurale (după cum se observă imediat).
Folosim cuvântul principiu în loc de teoremă (care trebuie să aibă şi o
demonstraţie aferentă) deoarece în cele de mai sus doar stipulăm că
formulele (∀n)P(n) şi respectiv P(0) ∧ (∀n)(P(n) implică P(n+1))
sunt tare echivalente (în sensul care va fi precizat în Capitolul 2). În
cele de mai sus, P(0) poate fi înlocuit şi cu orice P(k), k – număr
natural fixat, deoarece şi submulţimea lui N, {k, k + 1, ... } este bine-
ordonată; în acest caz, locul lui (∀n) este luat de (∀n ≥ k)).
Echivalenţa amintită, deşi adevărată în anumite situaţii („structuri”)
particulare, nu este adevărată în sensul general al logicii formale.
Forme particulare ale principiului inducţiei structurale sunt şi metoda
aserţiunilor invariante ([DIJ]), folosită pentru demonstrarea
corectitudinii algoritmilor imperativi, sau metoda inducţiei asupra
unei demonstraţii ([WIN]), folosită pentru demonstrarea unor teoreme
de tip „corectitudine şi completitudine”. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


14 Cristian Masalagiu

Noţiunile de axiomă, teoremă, regulă de inferenţă, demonstraţie,


raţionament, sunt utilizate în acest capitol la modul informal/descriptiv,
ele urmând a fi precizate în capitolele următoare.

§1. Algebre booleene


Se presupun cunoscute noţiunile şi notaţiile de bază din
matematica de liceu. În plus, submulţimea lui N,
{1, 2, ... ,n} se va nota şi cu [n], iar pentru indicarea unui element al
unui produs cartezian (numit şi tuplu sau n-uplu în cazul în care
numărul n de componente este cunoscut) se vor folosi parantezele
ascuţite, nu cele rotunde (exceptând cazul în care este vorba de
aplicarea unei funcţii unui tuplu).
Notăm cu B mulţimea {0, 1} şi cu FB(n) = {f | f : Bn → B}, Bn
reprezentând produsul cartezian al lui B cu el însuşi, luat de n ∈ N ori
(Bn = B × B × ... × B). FB(0) va coincide cu B, prin convenţie. Vom
pune deci:
 FB = U FBn
n ≥0

 FB = B
(0)

n
Observaţie. card(FBn) = 2 2 . Cardinalul unei mulţimi A va mai fi
notat, atunci când nu există confuzii şi cu |A|. Mai mult, dacă atât
domeniul cât şi codomeniul unei funcţii sunt mulţimi finite, funcţia
poate fi dată tabelar. O asemenea tabelă de definiţie va fi numită încă
de pe acum tabelă de adevăr, deşi semnificaţia acestui termen poate

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 15

crea anumite confuzii de moment. În cazul unei funcţii f ∈ FB(n)


(operaţie n-ară), tabela de definiţie va fi de forma:
x1 x2 ... xn f(x1, x2, ... , x n)
0 0 0 f(0, 0, ... , 0)
0 0 ... 1 f(0, 0, ... , 1)
... ... ... ... ...
1 1 1 1 f(1, 1, ... , 1)

Se mai observă că am folosit o ordine standard pe Bn , de unde


se poate deriva o ordine standard pentru valorile din codomeniul
funcţiei. Acest lucru face posibilă o reprezentare a funcţiilor booleene
ca numere în baza 2 şi (desigur) ca numere în baza 10.

2n
Întrebare. Puteţi justifica egalitatea card (FBn) = 2 ? ■

Indicăm câteva funcţii importante din FB. După cum am


precizat deja, în FB(0) avem doar constantele corespunzătoare, elemente
ale lui B (prin convenţie, acestea sunt funcţii de 0 variabile).

• Pentru n = 1, cele 4 funcţii de o variabilă (operaţii 1-are sau unare)


sunt c0 (funcţia indentic 0), c1 (funcţia identic 1), 1 B (identitatea) şi ¯
(negaţia, opusul), date prin:

PDF created with pdfFactory Pro trial version www.pdffactory.com


16 Cristian Masalagiu

x c0 c1 1B ¯
0 0 1 0 1
1 0 1 1 0

• Pentru n = 2, din totalul celor 16 funcţii de două variabile posibile


(operaţii 2-are; binare), câteva dintre cele mai importante sunt: +
(suma, sau adunarea booleană sau disjuncţia), • (produsul boolean
sau conjuncţia), ⊕ (suma modulo 2 sau disjuncţia exclusivă) şi |
(anticonjuncţia sau operaţia lui Sheffer):

x y x+y x•y x⊕y x|y


0 0 0 0 0 1
0 1 1 0 1 1
1 0 1 0 1 1
1 1 1 1 0 0

Întrebare. Câte funcţii sunt în FB(3) ? Puteţi da vreun exemplu de


asemenea funcţie, care să aibă şi o „semnificaţie cunoscută” ? ■
Întrebare. Puteţi descoperi singuri metoda „standard” de
construcţie a liniilor unui tabel ca cel de mai sus (ordinea standard pe
Bn)? ■

Observaţie. Funcţiile binare •, + şi funcţia unară ¯, pot fi privite ca


legi de compoziţie interne pe mulţimea B. Astfel, într-un mod cu totul

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 17

similar cu cazurile cunoscute ale grupului, inelului sau corpului, tuplul


B = < B, •, +, ¯ > formează o algebră booleană, sau algebră Boole
(după numele matematicianului G. Boole, 1815 – 1864). ■

Definiţia 1.1. Se numeşte algebră booleană un 4-uplu M ,


M = <M, ⊥, ∇, ~ >, format din orice mulţime nevidă M (suportul
algebrei) două operaţii binare ⊥, ∇ : M × M → M şi o operaţie unară
~ : M → M, care satisfac condiţiile (legile):
1) x ⊥ y = y ⊥ x comutativitate (a lui ⊥)
2) (x ⊥ y) ⊥ z = x ⊥ (y ⊥ z) asociativitate (a lui ⊥)
3) x ⊥ (y ∇ z) = (x ⊥ y) ∇ (x ⊥ z) distributivitate (a lui ⊥
faţă de ∇)
4) (x ⊥ y) ∇ y = y absorbţie
5) (x ⊥ (~x)) ∇ y = y legea contradicţiei
şi respectiv
1’) x ∇ y = y ∇ x. comutativitate (a lui ∇)
2’) (x ∇ y) ∇ z = x ∇ (y ∇ z) asociativitate (a lui ∇)
3’) x ∇ (y ⊥ z) = (x ∇ y) ⊥ (x ∇ z) distributivitate (a lui ∇
faţă de ⊥)
4’) (x ∇ y) ⊥ y = y absorbţie
5’) (x ∇ (~x)) ⊥ y = y legea tautologiei

PDF created with pdfFactory Pro trial version www.pdffactory.com


18 Cristian Masalagiu

Legile (numite impropriu şi axiome) de mai sus nu reprezintă


identităţi, ele trebuind să fie înţelese ca nişte ecuaţii satisfăcute pentru
toate valorile variabilelor x, y, z, care sunt nume generice pentru
elemente oarecare din M. Fiecare dintre cei doi membri reprezintă de
fapt (expresiile unor) funcţii booleene (numărul de argumente fiind dat
de numărul de nume de variabile distincte care apar în intreaga ecuaţie).
Egalitatea înseamnă prin urmare egalitatea de funcţii. Mai mult, vom
admite fără demonstraţie, că ecuaţiile reprezintă scheme de axiome,
adică legile anterioare – precum şi cele „derivate” care vor urma - sunt
adevărate şi dacă înlocuim (textual) orice apariţie a unei funcţii
(subexpresii) prin altă functie (subexpresie). O asemenea Teoremă de
substituţie va fi demonstrată în capitolul următor, în contextul logicii
formale.
În general, considerând afirmaţii (notate generic cu A) peste o
mulţime M (suport al unei algebre booleene), care depind doar de
variabile cu valori în M şi folosesc doar operaţiile amintite, afirmaţii
care sunt reprezentate fie prin axiome (Baza definiţiei structurale), fie
obţinute din axiome printr-un anumit raţionament utilizând reguli de
inferenţă (Pasul constructiv: cu ajutorul regulilor se obţin afirmaţii
noi, numite şi teoreme, din afirmaţii vechi), putem defini dualele lor,
Aδ, în felul următor: Aδ se obţine din A prin înlocuirea simultană
(textuală) a tuturor apariţiilor lui ⊥ cu ∇ şi a tuturor apariţiilor lui ∇
cu ⊥.
Putem extinde conceptul şi notaţia anterioară la obiecte oarecare
(afirmaţii, dar şi elemente din M, funcţii peste M, texte, etc.). Astfel, în

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 19

B, 1 este dualul lui 0 (evident şi reciproc, relaţia de dualitate fiind o


relaţie simetrică), duala sumei este produsul, duala unei funcţii
oarecare se obţine prin dualizarea întregii tabele de adevăr, etc. Într-o
algebră booleană oarecare M , se poate arăta (demonstraţia formală
nefiind esenţială pentru scopul acestei lucrări) că există un (unic)
element în M (notat 0) care satisface în plus ecuaţia x ⊥ ( ~
x ) = 0,
precum şi un (unic) element 1 ∈ M, care este dualul lui 0, satisfăcând
x ∇ (~
x ) = 1 (0 fiind desigur distinct de 1). Mai mult, relaţia de dualitate
este şi idempotentă (avem (oδ)δ = o, pentru fiecare obiect o), existând şi
obiecte autoduale, adică obiecte care satisfac oδ = o (de exemplu,
funcţiile 1 B, ¯ şi f ∈ FB(3), dată prin f(x, y, z) = x ⊕ y ⊕ z, sunt
autoduale). Fiecare axiomă i) din Definiţia 1.1, i ∈ [5] are astfel duala
sa, notată acolo prin i’). Mai mult, înlocuind într-un raţionament prin
care se obţine o teoremă A, orice axiomă cu duala ei, vom găsi un
raţionament (dual), prin care se obţine (deduce, demonstrează)
afirmaţia Aδ. Este justificat atunci să adoptăm principiul dualităţii
pentru B (care, la o privire atentă, este şi el un caz particular al
principiului inducţiei structurale). De fapt, pentru fiecare text (secvenţă
finită de caractere grafice) se poate afla dualul său, după schema
sugerată anterior. Admitem deci fără demonstraţie formală că:

O afirmaţie booleană A este adevărată dacă şi numai dacă


duala sa Aδ este adevărată.

PDF created with pdfFactory Pro trial version www.pdffactory.com


20 Cristian Masalagiu

Întrebare. Puteţi arăta că funcţia f(x, y, z) = x ⊕ y ⊕ z este


autoduală ? ■

Teorema 1.1. Tuplul B = < B, •, +, ¯ > este o algebră booleană şi


pentru fiecare x ∈ B avem x•( x ) = 0 şi x + ( x ) = 1.
Demonstraţie. Conform principiului dualităţii, este suficient să arătăm
că sunt adevărate doar axiomele 1) – 5) şi x•( x ) = 0 (în cazul nostru, ⊥
este înlocuit de • iar ∇ de către +). Vom privi atât membrul stâng cât şi
membrul drept al ecuaţiilor ca expresiile unor funcţii şi vom folosi
tabelele de adevăr pentru reprezentarea acestora. Datorită simplităţii
calculelor, dintre axiome vom arăta doar validitatea lui 4). Avem:

x y x•y (x • y) + y y
0 0 0 0 0
0 1 0 1 1
1 0 0 0 0
1 1 1 1 1

şi respectiv:
x x x • (x )
0 1 0
1 0 0

Adevărul axiomei 4) rezultă din primul tabel prin compararea


penultimei coloane (care este membrul stâng al ecuaţiei) cu ultima

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 21

coloană (membrul drept), linie cu linie. Se observă imediat că acestea


coincid, adică funcţiile date de expresiile respective sunt egale (două
funcţii sunt egale dacă au acelaşi domeniu şi codomeniu şi valorile lor
coincid pe fiecare valoare a argumentului). Similar pentru x•( x ) = 0 şi
cel de-al doilea tabel, cu observaţia că nu am mai explicitat coloana
care reprezintă membrul drept (şi care este de fapt expresia funcţiei c0).

O algebră booleană cunoscută este dată de mulţimea părţilor


(submulţimilor) unei mulţimi oarecare V, notată 2V, împreună cu
intersecţia, reuniunea şi complementara faţă de V,
V = < 2 V, ∩, U, CV>.

Observaţie. Conceptul de algebră booleană este prezent în matematică


prin mai multe definiţii, nu toate echivalente în orice context ([BIR]).
Să menţionăm faptul că o definiţie echivalentă cu Definiţia 1.1 este:

O algebră booleană este o latice M = <M, ⊥, ∇> care satisface


condiţiile suplimentare:
• Există (măcar) un prim element, 0 ∈ M, astfel încât x ∇ 0 = x.
• Există (măcar) un ultim element, 1 ∈ M, astfel încât x ⊥ 1 = x.
• Operaţia ⊥ este distributivă faţă de operaţia ∇.
• Pentru fiecare x ∈ M, există un element x ∈ M (numit şi
complementul lui x), astfel încât x ∇ x = 1 şi x ⊥ x = 0.

PDF created with pdfFactory Pro trial version www.pdffactory.com


22 Cristian Masalagiu

O latice (şi aici sunt mai multe accepţiuni matematice ale termenului şi
câteva definiţii echivalente pentru o aceeaşi accepţiune) este un triplet
M = <M, ⊥, ∇>, în care ambele operaţii satisfac proprietăţile de
idempotenţă, comutativitate, asociativitate şi absorbţie. În plus, în
orice latice (deci şi în orice algebră booleană), se poate defini o relaţie
de ordine parţială (relaţie binară, reflexivă, tranzitivă şi antisimetrică),
prin: x ≤ y dacă şi numai dacă x = x ⊥ y (sau, dual, y = x ∇ y). Datorită
acestui fapt, o latice se mai defineşte şi ca fiind o mulţime parţial
ordonată (poset) în care toate submulţimile finite, nevide, admit măcar

o cea mai mică margine superioară (l.u.b., ò) şi o cea mai mare

margine inferioară (g.l. b., ó). ■

§2. Teoreme de reprezentare şi forme normale pentru


funcţiile booleene
Într-o algebră booleană (în particular, în B ) sunt valabile şi alte
teoreme. Ele pot fi demonstrate fie utilizând tabelele de adevăr, fie
construind un raţionament, adică pornind de la axiome (şi/sau de la alte
teoreme, demonstrate anterior) şi utilizând anumite reguli de inferenţă.
Sumarizăm câteva dintre ele în tabelul următor (teoremele sunt notate
cu 6) – 13) iar dualele lor respectiv cu 6’) – 13’); am neglijat uneori, de
exemplu în 13) şi 13’), scrierea lui •).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 23

6) x = x 6’) x = x
7) x• x = 0 7’) x + x = 1
8) x•x = x 8’) x + x = x
9) x•0 = 0 9’) x + 1 = 1
10) x•1 = x 10’) x + 0 = x
11) x1•x2•…•xn = 0 dacă şi 11’) x1 + x2 + … + xn = 1 dacă
numai dacă există i∈[n] astfel şi numai dacă există i∈[n]
încât xi = 0 (oricare ar fi n ≥ 2 astfel încât xi = 1 (oricare ar fi
şi oricare ar fi n ≥ 2 şi oricare ar fi
x1, x2, ..., xn ∈ B) x1, x2, ..., xn ∈ B)
12) x1•x2•…•xn = 1 dacă şi 12’) x1 + x2 + … + xn = 0 dacă
numai dacă pentru fiecare i∈[n] şi numai dacă pentru fiecare
avem xi = 1 (oricare ar fi n ≥ 2 i∈[n] avem xi = 0 (oricare ar fi
şi oricare ar fi n ≥ 2 şi oricare ar fi
x1, x2, ..., xn ∈ B) x1, x2, ..., xn ∈ B)
13) 13’)
x1 ⋅ x 2 ⋅ ... ⋅ x n = x1 + x 2 + ... + x n x1 + x 2 + ... + x n = x1 ⋅ x 2 ⋅ ... ⋅ x n
(oricare ar fi n ≥ 2 şi oricare ar (oricare ar fi n ≥ 2 şi oricare ar
fi x1, x2, ..., xn ∈ B) fi x1, x2, ..., xn ∈ B)

Tabelul 1.1.

Din tabel se observă că afirmaţia 6) este autoduală şi acesta putea fi


completat cu generalizarea la n ≥ 3 elemente a asociativităţii,

PDF created with pdfFactory Pro trial version www.pdffactory.com


24 Cristian Masalagiu

comutativităţii, distributivităţii, precum şi cu alte teoreme, etc.


Afirmaţiile 13) şi 13’) se mai numesc legile lui deMorgan.

Exerciţiul 1.1. Să se demonstreze adevărul afirmaţiilor care urmează


folosind atât tabelele de adevăr cât şi raţionamente, implicând axiome
(sau alte afirmaţii, demonstrate în prealabil) şi reguli de inferenţă
(deducţie, demonstraţie), cunoscute din matematica de liceu (de
exemplu, cele legate de faptul că egalitatea este o relaţie de
echivalenţă, adică este reflexivă, simetrică şi tranzitivă):
a) 11) din tabelul anterior.
b) x•(x + y ) = x.
c) x + x•y = x.
d) x + x •y = x + y.
e) x + x•y = x + y.
f) x•( x + y) = x•y.
g) x •(x + y) = x •y.
Rezolvare. Vom lăsa aplicarea metodei care utilizează tabelele de
adevăr pe seama cititorului. De asemenea, vom presupune deja
demonstrate celelalte afirmaţii din Tabelul 1.1.
a) Procedăm prin inducţie matematică, afirmaţia de demonstrat fiind
(∀n ∈ N)(n ≥ 2 implică P(n)), unde:
P(n): (∀x1, x2, ..., xn ∈ B)( x1•x2•…•xn = 0 dacă şi numai dacă
(∃i ∈[n])(xi = 0)).
Baza. n = 2. Se folosesc 9) şi 10) din Tabelul 1.1.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 25

Pas inductiv. Să presupunem că pentru (orice) k ≥ 2 şi oricare elemente


x1, x2, ..., xk ∈ B avem:
x1•x2•…•xk = 0 atunci şi numai atunci când există i∈[k] astfel încât
xi = 0.
Să presupunem faptul că este adevărată P(k) şi să arătăm că P(k + 1)
este adevărată. Fie orice element din B, notat xk+1 şi să notăm
y = x1•x2•…•xk. Atunci avem de demonstrat că este adevărată afirmaţia
y•xk+1 = 0 dacă şi numai dacă există i∈[k + 1] astfel încât xi = 0,
ceea ce este echivalent cu a arăta că:
y•xk+1 = 0 dacă şi numai dacă există i∈[k] astfel încât xi = 0 sau
xk+1 = 0.
Aplicând acum ipoteza inductivă, rezultă că mai trebuie să arătăm că:
y•xk+1 = 0 dacă şi numai dacă y = 0 sau xk+1 = 0.
Ultima afirmaţie este însă adevărată din cele deja demonstrate (P(2)
este adevărată).
b) x•(x + y) = x. Pornim cu membrul stâng şi folosind axioma 3)
(distributivitate) găsim x•(x + y) = x•x + x•y. Folosim acum 8) din
Tabelul 1.1, distributivitatea şi faptul că egalitatea este o relaţie
tranzitivă, pentru a obţine x•(x + y) = x•(1 + y). Din comutativitate şi
9’) (Tabelul 1.1), se deduce că x•(x + y) = x•1. Ceea ce trebuia arătat
urmează acum imediat, prin aplicarea lui 10) (Tabelul 1.1).
c) x + x•y = x. Rezultă din ultima parte a demonstraţiei anterioare.
d) x + x •y = x + y. Pornim cu membrul stâng al egalităţii şi îl înlocuim
pe x cu x + x•y, ceea ce putem face folosind punctul anterior şi faptul
că egalitatea este o relaţie simetrică. Găsim x + x •y = x + x•y + x •y.

PDF created with pdfFactory Pro trial version www.pdffactory.com


26 Cristian Masalagiu

Folosind comutativitatea şi distributivitatea, rezultă că trebuie să arătăm


x + y•(x + x ) = x + y. Aplicăm acum 7’) şi apoi 10) (Tabelul 1.1),
pentru a obţine ceea ce se cere.
e) x + x•y = x + y. În relaţia precedentă se înlocuiesc toate apariţiile
lui x cu x şi se foloseşte apoi 6).
f) x•( x + y) = x•y. Se folosesc - în ordine – distributivitatea, afirmaţia
7) (Tabelul 1.1), comutativitatea şi 10’) (Tabelul 1.1).
g) x •(x + y) = x •y. Din nou, se înlocuiesc simultan toate apariţiile lui
x cu x în relaţia precedentă şi se aplică 6). ■

Să trecem în revistă şi câteva rezultate importante din teoria


generală a funcţiilor booleene, pregătind un suport abstract adecvat
pentru capitolele următoare. O primă parte dintre enunţuri vor fi reluate
pe parcursul lucrării, într-un alt cadru. O a doua parte este prezentată
mai detaliat în alte cursuri (cum ar fi Arhitecturi şi sisteme de operare).
În sfârşit, a treia parte necesită cunoştinţe suplimentare (din acest
motiv, unele demonstraţii vor fi omise).
O clasă de proprietăţi interesante se referă la o metodă generală
de reprezentare „standard” a funcţiilor din FB. Începând cu teorema
următoare introducem notaţiile x1 = x şi x0 = x (în sensul că „puterea”
1 ataşată unei expresii o lasă neschimbată, iar „puterea” 0 îi
„adaugă” o bară). Să remarcăm că indicii superiori precedenţi nu se
supun principiului dualităţii (de exemplu, nu este adevărat că (x1 = x) δ
coincide cu (x0 = x)).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 27

Teorema 1.2 ([CAZ1], de descompunere, în sumă de „termeni”).


Pentru fiecare n ∈ N*, f ∈ FB(n) şi fiecare k ∈ [n], avem:

f(x1 , x 2 ,..., x n ) = ∑ x 1α1 ⋅ x α2 2 ⋅ ... ⋅ x αk k ⋅ f(α1 , α 2 ,..., α k , x k+1 ,..., x n )


α1 ,α 2 ,...,α k ∈B

oricare ar fi x1, x2, ... , xn ∈ B.


Demonstraţie. Dacă xi, αi ∈ B atunci, direct din notaţiile de mai sus,
rezultă că:
(*) (x 0)α = (xα)0 precum şi xα = 1 dacă şi numai dacă x = α.
Folosind 12) (Tabelul 1.1), rezultă imediat că, în condiţiile teoremei,

x1α1 ⋅ xα2 2 ⋅ ... ⋅ xαk k = 1 dacă şi numai dacă xi = αi pentru fiecare i ∈ [k].
Fie acum elementele a1, a2, ... , an ∈ B, oarecare, fixate. Conform (*), în
suma
α α α
∑ a 1 1 ⋅ a 2 2 ⋅ ... ⋅ a k k ⋅ f(α 1 , α 2 , ..., α k , a k+1 , ..., a n )
α 1 ,α 2 ,...,α k ∈ B

α α α
unul şi numai unul dintre factorii a1 1 ⋅ a 2 2 ⋅ ... ⋅ a k k va fi egal cu 1,

adică cel pentru care αi = ai, pentru fiecare i ∈ [k]. Datorită


comutativităţii şi legilor 10), 9) şi 10’) (Tabelul 1.1), rezultă că suma
este egală exact cu f(a1, a2, ... , an). ■

Este adevărată şi teorema duală (de descompunere, în produs de


„factori”), ambele rezultate fiind folosite pentru demonstrarea
existenţei formelor normale pentru funcţiile booleene. În enunţul
teoremei duale, înafara înlocuirii lui + cu • şi a lui Σ cu Π, numele

PDF created with pdfFactory Pro trial version www.pdffactory.com


28 Cristian Masalagiu

α1 , α2 , ... αk (ca argumente ale lui f) se înlocuiesc cu aceleaşi elemente,


dar barate.

Definiţia 1.2. Fie n ∈ N* şi x1, x2, ... , xn ∈ B variabile (booleene)


distincte (putem nota mulţimea acestora cu X = {x1, x2, ... , xn}, ideea
fiind însă că lucrăm cu o listă, adică cu o colecţie ordonată de elemente
distincte). Se numeşte termen (n-ar, peste X) orice produs (uneori,
operatorul de produs este omis, sau supradimensionat)
α α αk
t = x i 1 ⋅ x i 2 ⋅ ... ⋅ x i , unde 0 ≤ k ≤ n, α1, α2, ... , αk ∈ B şi
1 2 k

1 ≤ i1 < i2 < ... < ik ≤ n. ■

În definiţia precedentă, termenul generat pentru k=0 este 1 (prin


convenţie). Pentru k = n obţinem aşa-numiţii termeni maximali
(maxtermeni), adică acei termeni în care fiecare dintre variabilele
considerate apare o dată şi numai o dată (barată sau nebarată), în
ordinea precizată.

Observaţie. Între mulţimea termenilor n-ari t (peste X) şi mulţimea


n-uplelor peste {0, 1, 2} (aceasta „coincide” de fapt cu mulţimea
{f | f : [n] → {0, 1, 2}}) se poate stabili o corespondenţă biunivocă g,
dată de g(t) = <e1, e2, ... , en>, unde, pentru fiecare i ∈ [n], avem ei = 0
dacă xi apare barată în t, ei = 1 dacă xi apare nebarată în t şi ei = 2 în rest
(xi nu apare în t). Mulţimea termenilor n-ari consideraţi va avea atunci
3n elemente. Raţionând similar pentru cazul maxtermenilor n-ari (în
acest caz, nu este posibil ca vreo variabilă considerată să nu apară),

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 29

rezultă că există 2n maxtermeni n-ari distincţi (indiferent de numele


celor n variabile diferite fixate prin X). ■

Consideraţiile de natură combinatorială sunt practic indispensabile în


vederea obţinerii unor rezultate convenabile.

Întrebare. Puteţi rescrie atât teorema de descompunere cu termeni


cât şi teorema de descompunere cu factori pentru cazul n = 2 şi k = 1 ?

Exemplu. Dacă luăm n = 2 şi notăm x1 cu x şi x2 cu y, atunci cei 3 2 = 9


termeni sunt: x, y, x, y, x•y, x •y, x• y, x ⋅ y, 1. Cei 22 = 4 maxtermeni

sunt: x•y, x •y, x• y , x ⋅ y. ■

Întrebare. Sunt adevărate afirmaţiile făcute în precedenta


Observaţie? Justificaţi răspunsul. ■
Întrebare. Fie X = {x, y, z, t}. Este x •z•t un maxtermen
(peste X) ? ■

Definiţia 1.3. Se numeşte formă normală disjunctivă (n-ară, n ∈ N*),


sau (n-)FND pe scurt, orice sumă (finită) de termeni n-ari distincţi. Se
numeşte formă normală disjunctivă perfectă (n-ară, n ∈ N*), sau
(n-)FNDP pe scurt, orice sumă de maxtermeni n-ari distincţi. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


30 Cristian Masalagiu

Orice FND se poate reprezenta şi grafic, ca un arbore ([KNU],


[LUC]). Datorită comutativităţii adunării putem face abstracţie de
ordinea (max)termenilor dintr-o sumă, mai exact, considerând oricare
două sume care diferă doar prin ordinea termenilor, le vom privi ca
k
fiind identice. Vor exista astfel C 3n
forme normale disjunctive n-are

având k termeni, 0 ≤ k ≤ 3n (prin convenţie, pentru k = 0, unica formă


care este acceptată şi este şi perfectă, se notează tot cu 0). În consecinţă,
numărul total al n-FND – urilor va fi:
n n
C30n + C31n + ... + C3kn + ... + C33n = 23 .

Analog, numărul total al n-FNDP – urilor va fi:


n n
C20n + C12n + ... + C2kn + ... + C22n = 2 2 .

Teorema 1.3 ([CAZ1]). Orice funcţie booleană se poate „reprezenta” în


mod unic ca o FNDP.
Demonstraţie. Fie fixate n ∈ N*, f ∈ FB(n) şi X = {x1, x2, ... , xn}.
Aplicând Teorema de descompunere cu termeni pentru f şi k = n,
găsim că f se poate scrie sub forma:

f(x1, x 2 , ... , xn ) = ∑ x1α1 ⋅ xα2 2 ⋅ ... ⋅ xαn n ⋅ f(α1, α2 ,..., αn )


α1 ,α2 ,...,αn ∈B

oricare ar fi valorile lui x1, x2, ... , xn din B şi prin urmare avem:

f(x 1 , x 2 , ... , x n ) = ∑ x 1α 1 ⋅ x α2 2 ⋅ ... ⋅ x αn n ,


α 1 ,α 2 ,...,α n ∈ B

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 31

oricare ar fi x1, x2, ... , xn ∈ B, α1, α2, ... , αn ∈ B, astfel încât


f(α1, α2, ... ,αn) = 1, ceea ce înseamnă exact o reprezentare a lui f ca o
n-FNDP. Unicitatea reprezentării provine din faptul că mulţimea
n-FNDP–urilor şi mulţimea FB(n) au acelaşi cardinal (adică număr de
elemente). Mai spunem că expresia din membrul drept al reprezentării
este (o) FND(P) pentru f. ■

Prin dualizare se obţin noţiunile de (n-)factor peste X (orice


sumă de n variabile din X, acestea apărând barate sau nu), maxfactor
(n-ar, peste X) – un (n-)factor în care apar toate variabilele, formă
normală conjunctivă (n-ară) ((n-)FNC, adică orice produs de factori
dictincţi), formă normală conjunctivă (n-ară) perfectă ((n-)FNCP,
adică orice produs de maxfactori distincţi). Nu uităm că se aplică
asociativitatea generalizată şi comutativitatea, peste tot, atât pentru
sumă cât şi pentru produs, astfel încât două sume (produse) nu vor fi
considerate distincte dacă diferă doar prin ordinea componentelor.
Aplicând principiul dualităţii, rezultă că este adevărată şi duala
Teoremei 1.3, adică:

Teorema 1.4. Fie orice n ∈ N*, orice f ∈ FB(n) şi oricare nume


distincte de variabile x1, x2, ... , xn. Atunci f se poate reprezenta în mod
unic ca o FNCP peste X = {x1, x2, ... , xn}, sub forma:

f(x 1 , x 2 , ... , x n ) = ∏ (x 1α 1 + x α2 2 + ... + x αn n ) ,


α 1 ,α 2 ,...,α n ∈B

PDF created with pdfFactory Pro trial version www.pdffactory.com


32 Cristian Masalagiu

oricare ar fi x1, x2, ... , xn ∈ B, α1, α2, ... , αn ∈ B, astfel încât


f( α 1 , α 2 , ... , α n ) = 0. ■

§3. Clase speciale de funcţii booleene


Deşi rezultatele teoretice anterioare sunt încurajatoare (funcţiile
booleene, date tabelar, pot fi reprezentate şi prin expresii standard, cum
ar fi FNDP, FNCP; acestea sunt unice dacă se folosesc anumite
convenţii; se pot construi „algoritmic”, conform Teoremei 1.3 şi
Teoremei 1.4, etc.), s-ar putea ca din punct de vedere practic să nu fie
chiar convenabile. Astfel, ne-am putea pune problema găsirii celei mai
„scurte” forme normale, funcţie de o anumită măsură fixată. Există
numeroase „măsuri candidat” pentru o FND sau FNC, suficient de
simple (vom nota orice asemenea formă prin φ): lungimea ca text
(număr de caractere grafice conţinute, poate chiar excluzând
parantezele); numărul de operatori folosiţi (poate chiar exceptând
negaţia); numărul de nivele din arborele ataşat; numărul de termeni
(factori); numărul de componente „elementare” ale unui termen
(factor); numărul total de apariţii ale variabilelor (apariţia unei
aceleiaşi variabile pe poziţii diferite se numără distinct), etc.
Considerând ultima măsură (pe care o vom nota cu n(φ)), putem numi
formă normală disjunctivă minimală (FNDM) pentru f ∈ FB, orice
FND φ’ astfel încât:
n(φ’) = min {n(φ) | φ este FND pentru f}.
Dată o funcţie booleană f ∈ FB, se poate pune problema determinării
tuturor FNDM pentru f, sau a uneia standard (ceea ce este posibil

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 33

deoarece – reamintim - pentru fiecare număr natural n numărul


n
funcţiilor booleene n-are este 2 2 iar numărul formelor disjunctive n-
n
are este 2 3 ). Problema anterioară este rezolvabilă cu ajutorul
algoritmului lui W. Quine ([CAZ1]). Algoritmul lui Quine intră sub
incidenţa principiului dualităţii, astfel încât făcând modificările de
rigoare el poate determina şi toate formele normale conjunctive
minimale (FNCM) pentru orice funcţie booleană.
O problemă similară, prin rezolvarea căreia s-ar putea reduce în
anumite cazuri timpul de procesare a unor texte (expresii, formule,
etc.), este găsirea unui număr minim de operaţii booleene
convenabile, cu ajutorul cărora să se „reprezinte” orice funcţie
booleană.

Definiţia 1.4. Clasa funcţiilor booleene elementare este:


E = { i pn | n ∈ N*, 1 ≤ p ≤ n, i pn : Bn → B,

i pn (x1, x2, ... , xp, ... , xn) = xp}.

Fie n ∈ N*, t un număr natural, f, h1, h2, ... , ht ∈ FB(n) şi g ∈ FB(t).


Spunem că f se obţine din g, h 1, h 2, ... , ht prin superpoziţie dacă pentru
fiecare x = <x1, x2, ... , xn> avem:
f(x) = g(h1(x), h2(x), ... , ht(x)).
Fie M ⊆ FB. Se numeşte M-şir orice secvenţă (listă) finită f0, f1, ... , fr
de funcţii booleene în care fiecare fi este fie din E U M fie se obţine
prin superpoziţie din alte funcţii, aflate în aceeaşi listă dar înaintea lui
fi. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


34 Cristian Masalagiu

Funcţiile i pn se mai numesc şi proiecţii. Pentru superpoziţie vom

utiliza notaţia f = SUP(g, h1, h2, ... , ht), iar M va denota mulţimea
funcţiilor care apar ca elemente în M-şiruri. Pentru fiecare M dat, M
va fi practic o mulţime definită constructiv, în care E U M constituie
mulţimea funcţiilor de bază iar operatorul de superpoziţie este singura
modalitate de a se obţine funcţii noi din funcţii vechi. Prin urmare, M
este cea mai mică mulţime care conţine proiecţiile, elementele lui M şi
este închisă la superpoziţie. Algebric vorbind, se mai spune că M este
închiderea prin superpoziţie a mulţimii E U M. M se va numi închisă
dacă coincide cu închiderea sa.

Teorema 1.5 ([CAZ1]). O mulţime M ⊆ FB este închisă dacă şi numai


dacă conţine funcţiile elementare şi orice superpoziţie de funcţii din M
se află în M.
Demonstraţie. Este imediată din definiţii, demonstraţia reprezintând o
aplicare directă a principiului inducţiei structurale. Astfel, este suficient
să arătăm că, dată M, avem:
Baza. E ⊆ M şi M ⊆ M .
Pas inductiv. Pentru fiecare n ∈ N*, fiecare t ∈ N*, fiecare g ∈ FB(t),
fiecare h1, h2, ... , ht ∈ FB(n), fiecare f ∈ FB(n), astfel încât
f = SUP(g, h1, h2, ... , ht), avem: Dacă g, h1, h 2, ... , ht ∈ M, atunci
f ∈ M. ■

Exemple imediate de mulţimi închise sunt Ø, E şi FB. Se poate


arăta şi că următoarele mulţimi (infinite) sunt mulţimi închise (a se

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 35

consulta şi exerciţiile din finalul capitolului, împreună desigur cu


rezolvările din Anexă):
• T0: mulţimea funcţiilor booleene de oricâte argumente care
păstrează pe 0, adică satisfac f(0, 0, ... , 0) = 0.
• T1: dual, mulţimea funcţiilor care păstrează pe 1, adică satisfac
f(1, 1, ... , 1) = 1.
• Aut: mulţimea funcţiilor autoduale (fδ = f). Să notăm ca o
proprietate de caracterizare interesantă pentru această clasă de
funcţii şi faptul că fδ(x1, x2, ... , xn) = f( x1 , x 2 ,..., x n ) . Acest

lucru se obţine imediat deoarece tabela de definiţie pentru fδ se


obţine din tabela pentru f, înlocuind simultan, peste tot, pe 0 cu
1 şi pe 1 cu 0.
• Mon: mulţimea funcţiilor monotone. Pe B putem defini o relaţie
de ordine „naturală”: 0 ≤ 1 (putem pune chiar 0 < 1). Relaţia
precedentă poate fi extinsă „pe componente” la orice produs
cartezian. Să considerăm două n-uple α = <α1, α2, ... , αn> şi
β = <β1, β2, ... , βn>, αi, βi ∈ B, i ∈ [n]. Vom spune că α ≤ β dacă
şi numai dacă αi ≤ βi pentru fiecare i ∈ [n] (desigur că vom avea
α < β dacă şi numai dacă α ≤ β şi α ≠ β adică α şi β diferă prin
măcar o componentă). O funcţie f ∈ FB(n) este monotonă dacă
pentru fiecare α, β ∈ Bn, din α ≤ β rezultă f(α) ≤ f(β).
• Lin: mulţimea funcţiilor liniare. Se poate arăta mai întâi că
tripletul I = <B, ⊕, •> este un inel comutativ cu unitatea 1,
izomorf cu inelul claselor de resturi modulo 2 (cele două
mulţimi suport şi operaţiile „corespondente” se pot

PDF created with pdfFactory Pro trial version www.pdffactory.com


36 Cristian Masalagiu

„identifica”). Urmează că orice funcţie booleană se poate


reprezenta unic ca un polinom (eventual, de mai multe
variabile) cu coeficienţi în I. Fie astfel o funcţie booleană f,
despre care ştim deja că se poate scrie ca o sumă (booleană) de
termeni. Putem acum folosi egalităţile (se pot demonstra uşor,
folosind tabelele de adevăr): x = x ⊕1 şi x + y = x ⋅ y =

= (x⊕1) • (y ⊕1) ⊕1 = x • y ⊕ x ⊕ y, precum şi proprietăţile


inelelor, pentru a observa că orice FND a lui f devine o sumă
modulo 2 de termeni (care sunt produse de variabile distincte).
Numărul acestor produse este 2n, deci numărul polinoamelor
n
modulo 2 este 2 2 , acelaşi ca şi numărul funcţiilor booleene
n-are (de unde urmează unicitatea reprezentării). Spunem că o
funcţie f ∈ FB(n) este liniară dacă reprezentarea sa (unică) sub
formă de polinom modulo 2 are aspectul:
c0 ⊕ c1 • x1 ⊕ c2 • x2 ⊕ ... ⊕ cn • xn, ci ∈ B, i ∈ [n].

Observaţie. Se poate arăta că toate mulţimile anterioare sunt nebanale,


adică nu coincid nici cu FB, nici cu E, nici cu Ø. ■

Exemplu ([CAZ1]). Funcţia f(x, y, z) = x•z + x •y• z + x • y • z este


liniară deoarece avem succesiv:
f(x, y, z) = comutativitate, distributivitate
= x•z + x • z •(y + y ) = ştim că y+ y = 1
= x•z + x • z = folosind a + b = a•b ⊕ a ⊕ b
= x•z• x • z ⊕ x•z ⊕ x • z = ştim că x•z• x • z = 0

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 37

= x •z ⊕ x• z = folosind a = a ⊕ 1
= x • z ⊕ (x ⊕1) (z ⊕1) = distributivitate
= x•z ⊕ x•z ⊕ x⊕ z ⊕ 1 = folosind a ⊕ a = 0
= x ⊕ z ⊕ 1. ■

Definiţia 1.5. O mulţime de funcţii booleene este completă dacă


închiderea sa coincide cu FB. O mulţime completă se numeşte bază
dacă este maximală (adică nici o submulţime proprie a sa nu mai este
completă). ■

Observaţie. Se arată relativ simplu că mulţimea {c0, c1, f, •}, unde f


este dată prin f(x, y, z) = x ⊕ y ⊕ z, este o bază. Mulţimea {•, +, ¯ }
este completă (ceea ce se arată direct, folosind definiţiile), dar nu este
bază pentru că atât {¯ , •} cât şi {¯ , +} sunt complete (acest lucru
rezultă din legile lui deMorgan, care „ne spun” că disjuncţia se exprimă
cu ajutorul negaţiei şi conjuncţiei şi dual, conjuncţia se exprimă cu
ajutorul negaţiei şi disjuncţiei). Poate surprinzător, {+, •} nu este
completă, dar { | } (care nu este inclusă în nici una dintre mulţimile T0,
T1, Aut, Mon, Lin) este completă şi desigur bază (ne bazăm pe
egalităţile x = x | x şi x•y = (x | y) | (x | y)). Prin urmare, dacă ne
reamintim de unul dintre scopurile enunţate (exprimarea tuturor
funcţiilor booleene cu ajutorul unui număr minim de funcţii), mulţimea
{|} ar fi candidatul ideal. Din păcate, operatorul lui Sheffer („|”) nu
este prea „comod” (din punct de vedere al gândirii umane) astfel încât
exprimările celorlalte funcţii devin complicate şi greu de reţinut. Este

PDF created with pdfFactory Pro trial version www.pdffactory.com


38 Cristian Masalagiu

de dorit să se găsească o cale de mijloc, prin care să se păstreze într-


adevăr cât mai puţine funcţii într-o bază, dar acestea să fie şi uşor de
înţeles/manipulat. ■

Acceptăm fără demonstraţie (Teorema 1.7 a fost însă deja


demonstrată implicit, prin comentariile anterioaree), următoarele
rezultate ([CAZ1], această referinţă nefiind sursa primară):

Teorema 1.6 (E. L. Post). O mulţime de funcţii booleene este completă


dacă şi numai dacă nu este inclusă în nici una dintre mulţimile T0, T1,
Aut, Mon, Lin. ■

Teorema 1.7. Orice bază conţine cel mult patru funcţii şi există baze
compuse din una, două, trei şi patru funcţii. ■

Teorema 1.8. Orice mulţime închisă de funcţii booleene fie este inclusă
cel puţin în una dintre mulţimile T0, T1, Aut, Mon, Lin, fie coincide cu
FB. ■

Teorema 1.9. Mulţimile T0, T1, Aut, Mon, Lin sunt precomplete (o
mulţime M de funcţii booleene este precompletă dacă pentru orice altă
funcţie f ∉ M, mulţimea M U{f} este completă). ■

E. L. Post a determinat chiar toate mulţimile închise de funcţii


booleene încă din anul 1941, cât şi relaţiile de incluziune între ele şi
anumite baze. Încă se fac cercetări în legătură cu extinderea rezultatelor

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 39

de acest tip la mulţimi de cardinal mai mare decât doi (cardinalul lui
B). Importanţa unor asemenea cercetări constă în speranţa reducerii
complexităţii unor algoritmi clasici şi dezvoltării unor teorii similare,
implementabile şi care să fie valabile şi pentru logicile neclasice
multivaluate).

§4. Recapitulare şi Index


Teoria funcţiilor booleene constituie suportul pentru semantica
logicii clasice. Înţelegerea problematicii capitolelor următoare va fi
astfel uşurată, anumite paragrafe (cum ar fi cel privind formele
normale) fiind simple transpuneri într-un alt limbaj ale unor concepte şi
rezultate deja întâlnite. Principalele teme abordate au fost:
• Reprezentarea funcţiilor booleene. Funcţii booleene particulare
importante.
• Proprietăţile globale ale clasei funcţiilor booleene. Principiul
dualităţii. Algebre booleene.
• Forme normale pentru funcţiile booleene. Forme minimale.
• Mulţimi închise şi (pre)complete de funcţii booleene. Baze.
Deşi ne-am bazat în principal pe cunoştinţele de matematică de
liceu, am fost nevoiţi să abordăm tangenţial – într-un mod intuitiv,
pentru coerenţa materialului – subiecte colaterale cum ar fi cele privind
algoritmii (imperativi), mulţimile definite structural (constructiv), sau
principiul inducţiei structurale. Folosirea nediscreţionară, în acest
moment, de către cititor a unor termeni introduşi doar informal (cum
sunt, până acum: axiomă, teoremă, raţionament, demonstraţie, etc.)

PDF created with pdfFactory Pro trial version www.pdffactory.com


40 Cristian Masalagiu

poate fi dăunătoare, mărind confuziile care se fac în mod uzual între


sintaxă şi semantică sau între limbaj şi metalimbaj.

Indexul (neexhaustiv) este:

definiţia structurală (constructivă) a unei mulţimi, 8


algoritm (imperativ), 9
funcţie calculată de un algoritm, 9
problemă rezolvată de un algoritm, 9
terminarea algoritmilor, semialgoritm, 10
pseudocod, 10
principiul inducţiei structurale, 11
funcţii booleene, 13
tabele de adevăr, 13
algebre booleene, 15
afirmaţii şi obiecte duale, 17
principiul dualităţii, 18
termen, maxtermen, 27
formă normală disjunctivă (perfectă), 28-29
factor, maxfactor, 30
formă normală conjunctivă (perfectă), 30
formă normală disjunctivă (conjunctivă) minimală, 31
funcţii booleene elementare, 32
mulţime închisă de funcţii booleene, 33
mulţime completă (precompletă) de funcţii booleene, 36
bază de funcţii, 36

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 41

Este poate bine să menţionăm faptul că am preferat un Index în


ordinea paginilor şi nu în ordine alfabetică, tocmai pentru că insistăm
asupra necesităţii parcurgerii secvenţiale a materialului.

§5. Exerciţii
1. Completaţi demonstraţia Teoremei 1.1, adică arătaţi validitatea
legilor 1), 2), 3), 5), 1’) – 5’) şi x + ( x ) = 1, utilizând tabelele
de adevăr.
2. Arătaţi că V = < 2V, ∩, U, CV> este o algebră booleană, oricare
ar fi mulţimea (nevidă) V. În plus, demonstraţi că 0 = Ø şi
1 = V.
3. Arătaţi adevărul afirmaţiilor rămase nedemonstrate din Tabelul
1.1.
n
4. Justificaţi egalitatea card(FBn) = 2 2 .
5. Fie mulţimea termenilor n-ari t, construiţi peste mulţimea
variabilelor booleene distincte (ordonate) X = {x1, x2, ... , xn},
precum şi mulţimea n-uplelor peste {0, 1, 2}. Arătaţi că există o
funcţie bijectivă g, care „identifică” aceste mulţimi, dată prin
g(t) = <e1, e2, ... , en>, unde, pentru fiecare i ∈ [n], avem ei = 0
dacă xi apare barată în t, ei = 1 dacă xi apare (nebarată) în t şi
ei = 2 în rest (adică xi nu apare în t). De asemenea, arătaţi că
există (măcar) o corespondenţă bijectivă între mulţimea
n-uplelor peste {0, 1, 2} şi mulţimea de funcţii
{f | f : [n] → {0, 1, 2}}. Deduceţi că mulţimea termenilor n-ari

PDF created with pdfFactory Pro trial version www.pdffactory.com


42 Cristian Masalagiu

consideraţi va avea 3n elemente şi că vor exista 2n maxtermeni


n-ari distincţi.
6. Să se găsească FNDP şi FNPC pentru funcţia definită prin
tabelul:
x y z f(x, y, z)
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1

7. Justificaţi faptul că mulţimile T0, T1, Aut, Mon, Lin sunt


infinite. Arătaţi că T0 este mulţime închisă.
8. Arătaţi că mulţimea M = {•, +, ¯ } este o mulţime completă de
funcţii booleene.
9. Arătaţi că funcţia booleană „ +” este o funcţie monotonă.
10. Arătaţi că I = <B, ⊕, •> este un inel comutativ cu unitatea 1 şi
că el este izomorf cu R = <Z2, ⊕, U>, inelul claselor de
resturi modulo 2.
11. Arătaţi că funcţia booleană f(x, y, z) = x y + y z nu este liniară
(acolo unde nu există confuzii, operatorul • nu va fi scris
explicit).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Capitolul 2
Logica propoziţională
(Calculul propoziţional)

Manualele de Logică şi Algebră ([BIE], [DID]) pot fi privite ca


o introducere (firavă) în logica formală. Şi în alte manuale de
matematică (şi nu numai), sunt prezente frecvent noţiuni ca afirmaţie,
axiomă, teoremă, raţionament, demonstraţie, etc. Aceste noţiuni sunt
însă descrise sau concepute/receptate/folosite la modul informal: o
afirmaţie este orice propoziţie (frază) care poate căpăta o unică valoare
de adevăr (a – adevărat, f – fals); o axiomă este o afirmaţie care se
acceptă a fi adevărată fără a se cere o demonstraţie a ei; o teoremă este
o afirmaţie (presupusă a fi adevărată) care se obţine (din axiome sau
teoreme deja acceptate) printr-o demonstraţie (formală), numită şi
raţionament; o demonstraţie (formală) este transpunerea într-o formă
(mai) exactă a unui raţionament; un raţionament este o succesiune
(finită) de aplicări ale unor inferenţe (reguli de deducţie); o regulă de
deducţie (inferenţă) are forma: premize/concluzii (atât premizele cât şi
concluziile sunt afirmaţii, ideea fiind aceea că regulile sunt astfel
construite încât dacă premizele sunt adevărate atunci şi concluziile sunt
adevărate; se mai spune că inferenţele sunt în acest caz valide sau
corecte), etc. De altfel, acesta este modul principal prin care se obţin
(constructiv) în ştiinţele exacte noţiuni noi (utilizând definiţiile) şi
afirmaţii (adevărate) noi (utilizând raţionamentele). Din punctul de
vedere al logicii filozofice, o noţiune este complet caracterizată de

PDF created with pdfFactory Pro trial version www.pdffactory.com


44 Cristian Masalagiu

conţinut (element din structura noţiunii alcătuit din mulţimea


proprietăţilor obiectelor care formează sfera noţiunii) sau sferă
(element din structura noţiunii alcătuit din mulţimea obiectelor ale
căror proprietăţi formează conţinutul noţiunii). O definiţie ar avea
astfel rolul de a delimita precis sfera (conţinutul) noţiunii. Definirea
unei noţiuni noi înseamnă delimitarea unei noi sfere (sau a unui nou
conţinut), ceea ce se poate face de exemplu (există şi alte tipuri
generale de definiţii) prin precizarea unei sfere vechi (care
caracterizează complet o noţiune anterior definită, numită gen proxim)
şi a unei mulţimi de proprietăţi suplimentare (care nu fac parte din
conţinutul vechii noţiuni, dar care – împreună cu acesta – vor alcătui
noul conţinut), numită diferenţă specifică: un paralelogram este un
patrulater convex care are două laturi paralele şi egale; un romb este
un paralelogram cu toate laturile egale; un pătrat este un romb având
un unghi de 90 ○, ş. a. m. d. În acest mod, „mergând invers”, procesul de
definire a unor noţiuni ar deveni infinit dacă nu am accepta existenţa
unor noţiuni primare (pentru o mai bună înţelegere se poate recurge şi
la reprezentări grafice cum ar fi diagramele Venn-Euler – [ŢIP]).
Noţiunile primare nu mai sunt definite prin schema „gen proxim şi
diferenţă specifică” ci sunt doar descrise cu ajutorul unor elemente
considerate a fi suficiente pentru delimitarea exactă a sferei curente de
sfera altor noţiuni (asemenea definiţii sunt cunoscute şi sub numele de
definiţii operaţionale): o mulţime este o colecţie de obiecte distincte
două câte două; un punct este ceea ce se obţine prin apăsarea unui vârf
de creion pe o foaie de hârtie, etc. Un proces similar are loc şi în cazul
conceptelor de axiomă (în „rolul” noţiunilor primare), teoremă (în

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 45

„rolul” noţiunilor noi), regulă de inferenţă (în „rolul” diferenţei


specifice), acceptarea axiomelor ca fiind „advărate fără demonstraţie”
având desigur scopul de a evita raţionamentele infinite. Aşa cum în
momentul definirii unei noţiuni (noi) trebuie să fim atenţi ca sfera
acesteia să fie nevidă şi (în general) distinctă de sferele unor noţiuni
deja existente (chiar definite operaţional), în cazul raţionamentelor este
de dorit ca axiomele să reprezinte „cu certitudine” afirmaţii
adevărate, iar inferenţele să fie valide (inferenţele trebuie să fie valide
pentru a avea raţionamente corecte, adică formate numai din afirmaţii
adevărate). Din păcate, datorită lipsei unei sintaxe clare pentru
conceptul de afirmaţie (lipsei definiţiilor formale în general), precum şi
datorită „amalgamării” consideraţiilor de natură sintactică şi semantică,
eşafodajul anterior este destul de şubred putând conduce la apariţia
unor paradoxuri de gândire sau la acceptarea unor „adevăruri” hilare.
Prima parte a capitolului este destinată unei scurte treceri în revistă a
unor asemenea anomalii şi introducerii primelor elemente de logică
(informatică) formală.

§1. Logica, parte a filozofiei


Ambiguităţile permise de limbajul natural, acceptarea utilizării unor
noţiuni primare sau a unor axiome având conţinut ambiguu în
raţionamente complexe, tratarea simultană a unor probleme de natură
sintactică împreună cu altele care implică semantica, au creat de-a
lungul timpului numeroase confuzii şi interpretări greşite, „bruind”
comunicarea inter-umană. Un prim tip de asemenea confuzii, cunoscute

PDF created with pdfFactory Pro trial version www.pdffactory.com


46 Cristian Masalagiu

sub numele de paradoxuri logice, sunt deja clasificate, împărţite pe


categorii. Nu este simplu să dăm o definiţie unanim acceptată (de altfel,
B. Russell a împărţit paradoxurile în şapte categorii, având definiţii
practic diferite). Pentru unii, un paradox este o afirmaţie care pare să
se autocontrazică, sau poate conduce la o situaţie care contrazice
bunul simţ. Mai general, este orice afirmaţie surprinzătoare,
alambicată, contrară intuiţiei, sau, o argumentaţie aparent solidă,
corectă, dar care conduce la o contradicţie. Pentru alţii, este o
propoziţie care îşi afirmă propria falsitate, sau, un argument care
conduce la o concluzie contradictorie deşi începe cu nişte premize
acceptabile şi se foloseşte o deducţie validă. Oricum, se acceptă faptul
că un paradox nu înseamnă acelaşi lucru cu o contradicţie. Astfel,
afirmaţia „Această cămaşă este albastră şi această cămaşă nu este
albastră” este o contradicţie, dar un paradox va apare atunci când o
persoană face o anumită presupunere şi apoi, urmând o argumentaţie
logică, ajunge la contrariul presupunerii iniţiale. „Nu spun niciodată
adevărul” este considerat un paradox (al mincinosului), deoarece dacă
presupunem că propoziţia este adevărată atunci rezultă imediat că ea
este falsă si reciproc. Mai sus este vorba despre o clasă mai simplă de
paradoxuri (numite şi semantice). Practic, ele ar putea fi „rezolvate”
daca sunt eliminate complet din logica clasică, deoarece pot fi
considerate ca afirmaţii cărora nu li poate ataşa o unică valoare de
adevăr (contradicţiilor nu li se poate practic ataşa nici una!). Un
paradox mai complicat este paradoxul lui B. Russell, legat de teoria
mulţimilor : „Dacă R este mulţimea tuturor mulţimilor care nu se
conţin pe ele însele, atunci R se conţine pe sine însăşi ca element?”.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 47

Imediat se obţine că dacă răspunsul este „DA”, atunci R nu se conţine


pe ea însăşi şi dacă răspunsul este „NU”, atunci R se conţine.
Contradicţia provine aici din acceptarea axiomei înţelegerii: „Dacă P
este o proprietate (relaţie, predicat), atunci M = {x | P(x)} este o
mulţime” (paradoxul precedent se obţine luînd P(x): „x nu este
element al lui x”). Matematic vorbind, paradoxul dispare dacă se
renunţă la axioma înţelegerii (mai exact, M de mai sus nu este o
mulţime, ci o clasă). Un alt paradox, cunoscut încă din antichitate, este
paradoxul lui Ahile şi broasca ţestoasă, atribuit lui Zenon: „Ahile şi o
broască ţestoasă se iau la întrecere într-o alergare de viteză, Ahile
aflându-se iniţial într-un punct A şi broasca în faţa sa, la o distanţă a,
într-un punct B, dar începând să se deplaseze amândoi în acelaşi
moment şi în aceeaşi direcţie. Afirmaţie: Ahile nu va ajunge din urmă
broasca (chiar dacă broasca ar avea...viteza 0)”. Putem „demonstra”
afirmaţia raţionând astfel: fie C mijlocul distanţei dintre A şi B; pentru
a ajunge în B, Ahile trebuie să ajungă întâi în C; fie acum D mijlocul
distanţei dintre A şi C, etc. Cum mulţimea numerelor reale este densă,
mereu mijlocul unui segment de lungime diferită de zero va genera alte
două segmente de lungime nenulă, astfel încât Ahile nu va ajunge
niciodată broasca. Acest tip de paradox se numeşte şi aporie,
contradicţia provenind, în cazul nostru, din utilizarea unui raţionament
corect intr-un „mediu” necorespunzător (drumurile, în legătură cu
deplasarea unor fiinţe, nu pot fi considerate drept reprezentări ale axei
reale). Deşi nu sunt ele însele „absurdităţi”, silogismele reprezintă o
altă sursă generoasă de confuzii. Inferenţele, adică paşii elementari
(consideraţi a fi indivizibili) ai unui raţionament, reprezintă forme

PDF created with pdfFactory Pro trial version www.pdffactory.com


48 Cristian Masalagiu

logice complexe. Aceste raţionamente „elementare” se împart în


deductive şi inductive, iar cele mai simple inferenţe sunt cele imediate,
cu propoziţii categorice (fiind formate din două asemenea propoziţii: o
premiză, şi o concluzie). Silogismul este tipul fundamental de inferenţă
deductivă mediată alcătuită din exact trei propoziţii categorice: două
premize, dintre care una majoră şi alta minoră, precum şi o concluzie.
Silogismele se pot de altfel împărţi în ipotetice, categorice, disjunctive,
etc. (nu insistăm asupra altor detalii). Un exemplu de silogism
(categoric, corect) este:

Premiza majoră: Toate elementele transuranice sunt


radioactive.
Premiza minoră: Plutoniul este element transuranic.
Concluzia: Plutoniul este radioactiv.

Pentru a folosi însă doar silogisme corecte (valide), este necesar un


studiu mai aprofundat al acestora. În caz contrar, putem ajunge, ca şi în
cazul paradoxurilor, să acceptăm nişte aberaţii drept propoziţii
adevărate. De exemplu:
Albă este adjectiv

Zăpada este albă

Zăpada este adjectiv

Greşeala în silogismul anterior constă în aceea că nu se ţine cont de o


lege a silogismelor, care stipulează că într-un silogism valid există trei
şi numai trei termeni lingvistici distincţi. Din păcate însă, în limba

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 49

română (dar nu numai) un acelaşi cuvânt (sau grup de cuvinte) poate


„materializa” mai mult decât o singură noţiune. Astfel, deşi în exemplul
nostru s-ar părea că avem exact trei termeni distincţi (albă, adjectiv,
zăpada), în realitate avem patru: în premiza majoră cuvântul alb
materializează un element al limbajului (o parte de vorbire), iar în
premiza minoră el redă o însuşire (care este caracteristică şi zăpezii).
Neconcordanţele pot fi eliminate dacă legile de genul amintit ar putea fi
„prinse” în forma sintactică exactă a silogismului. Profităm de prilej
pentru a aminti şi câteva idei legate de inferenţele (raţionamentele)
deductive cu propoziţii compuse. Deşi acestea nu sunt automat
generatoare de ambiguităţi/aberaţii, folosirea incorectă a implicaţiei
logice în cadrul lor poate produce neplăceri. Mai întâi, să observăm că
putem considera că am definit structural întreaga (sau măcar o parte
importantă a sa) mulţime de afirmaţii pe care le manipulăm în limbaj
natural, în modul sugerat de logica clasică: pornim de la anumite
afirmaţii (Baza - propoziţii elementare) şi apoi (Pas constructiv)
formăm propoziţii noi (fraze, propoziţii compuse), din propoziţii vechi
cu ajutorul unor operatori (conectori), cum ar fi sau, şi, negaţia,
implicaţia (dacă ... atunci ...), echivalenţa (dacă ... atunci ... şi
reciproc). Notând cu A şi B două propoziţii oarecare (elementare sau
compuse), putem forma propoziţiile compuse (de acum înainte, @ va

nota „egal prin definiţie/notaţie/convenţie”): C @ A sau B (simbolic:

A ∨ B); D @ A şi B (simbolic: A ∧ B); E @ non A (simbolic: A);

F @ dacă A atunci B (simbolic: A → B; A se numeşte uneori ipoteză

PDF created with pdfFactory Pro trial version www.pdffactory.com


50 Cristian Masalagiu

sau antecedent iar B – concluzie sau consecvent); G @ dacă A atunci

B şi reciproc (sau, A dacă şi numai dacă B, sau A atunci şi numai


atunci când B; simbolic: A ↔ B). Cum A şi B pot lua fiecare doar
valorile a - adevărat sau f – fals (desigur...nu simultan), la fel se va
întâmpla şi cu propoziţiile compuse. Astfel, C va fi a atunci şi numai
atunci când măcar una dintre A şi B este a, D va fi a atunci şi numai
atunci când atât A cât şi B sunt a, E va fi a atunci şi numai atunci când
A va fi f, F va fi f atunci şi numai atunci când A este a şi B este f. În
sfârşit, G va fi a atunci şi numai atunci când A şi B sunt simultan a sau
simultan f. Ca o consecinţă, o implicaţie va fi adevărată dacă ipoteza
este falsă, indiferent de valoarea de adevăr a concluziei. Acum ne
putem referi în mod explicit şi la inferenţe cu propoziţii compuse (se
presupune că silogismele utilizează doar propoziţii simple), cele
conţinând implicaţia fiind des utilizate. Cele mai simple inferenţe de
acest tip sunt cele care conţin două premize şi o concluzie, dintre ele
distingându-se cele ipotetico-categorice (prima premiză este o
implicaţie iar cea de-a doua constă fie din antecedentul sau negaţia
antecedentului, fie din consecventul sau negaţia consecventului
implicaţiei respective, conform [BIE]). Schemele valide care se folosesc
în raţionamente sunt astfel de forma:
A→B
A
modus ponendo-ponens (pe scurt, modus ponens)
B
sau

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 51

A→B
B
modus tollendo-tollens (pe scurt, modus tollens)
A
Validitatea (reamintim: dacă ipotezele sunt adevărate, atunci şi
concluzia trebuie să fie adevarată) schemelor modus ponens (modul
afirmativ) şi modus tollens (modul negativ) rezultă imediat din definiţia
implicaţiei. Oprindu-ne la modus ponens, am putea spune că acesta
poate fi reformulat în: din A (adevărată) şi A → B (adevărată)
deducem (că) B (adevărată). Pe scurt, vom nota acest lucru prin
A ⇒ B. Următorul exemplu este edificator pentru greşelile care se pot
face fie din necunoaşterea definiţiei reale a implicaţiei, fie din
confundarea lui A → B (formulă în limbajul de bază) cu A ⇒ B
(formulă în metalimbaj, care sugerează deducerea lui B, pornind de la
A şi folosind un raţionament).

Exemplu. Să considerăm funcţia f : R → R, dată prin:


 x, dacă x ≤ 0
f (x)=  2
 x +1, dacă x>0

Să se arate că f este injectivă.

Conform uneia dintre definiţiile cunoscute, trebuie să arătăm că pentru


fiecare x1, x2 ∈ R, avem: dacă f (x1) = f (x2) atunci x1 = x2. Anticipând
notatiile din Capitolul 3 şi presupunând cunoscută (cel puţin la nivel
informal) semnificaţia cuanficatorilor, putem scrie acest lucru sub

PDF created with pdfFactory Pro trial version www.pdffactory.com


52 Cristian Masalagiu

forma condensată (∀x1, x2 ∈ R)(f(x1) = f(x2) → x1 = x2). Există


următoarele posibilităţi:
a) x 1, x2 ≤ 0. Atunci f (x1) = x1 şi f (x2) = x2. Prin urmare f(x1) = f(x2)
chiar coincide cu x1 = x2 şi deci implicaţia f(x1) = f(x2) → x1 = x2 este
adevărată.
b) x 1, x 2 > 0. Atunci f (x1) = x12 + 1 şi f (x2) = x22 + 1. Prin urmare,
f(x1) = f(x2) înseamnă x12 + 1 = x22 + 1, ceea ce se întâmplă atunci şi
numai atunci când (x1 - x2 )(x1 + x2) = 0. Deoarece variabilele sunt
pozitive, ultima egalitate este echivalentă cu x1 - x2 = 0, deci cu x1 = x2.
Am arătat de fapt că avem f(x1) = f(x2) dacă şi numai dacă x1 = x2 ceea
ce se poate scrie simbolic (în metalimbaj!) f(x1) = f(x2) ⇔ x1 = x2. În
consecinţă, la fel ca la punctul precedent, implicaţia cerută
f(x1) = f(x2) → x1 = x2 este la rândul ei adevărată (este adevărată chiar
echivalenţa f(x1) = f(x2) ↔ x1 = x2), deoarece este clar că dacă
antecedentul f(x1) = f(x2) este adevărat, atunci şi consecventul x1 = x2
este adevărat (de fapt, şi reciproc).
c) x1 ≤ 0, x2 > 0. În acest caz f(x1) = x1 şi f(x2) = x22 + 1. Atunci
f(x1) = f(x2) înseamnă x1 = x22 + 1 şi implicaţia pe care trebuie să o
arătăm devine x1 = x22 + 1 → x1 = x2, şi aceasta pentru fiecare x1 ≤ 0 şi
x2 > 0. Nu mai putem proceda la fel ca în situaţiile anterioare, deoarece
din x1 = x22 + 1 nu se poate deduce x1 = x2. Totuşi, implicaţia în cauză
din limbajul de bază este adevărată, deoarece antecedentul ei este
fals. Într-adevăr, oricare ar fi x1 ≤ 0 şi x2 > 0, în egalitatea x1 = x22 + 1,
membrul stâng este nepozitiv iar membrul drept este pozitiv, ceea ce
face ca relaţia să devină imposibilă în contextul dat. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 53

În finalul paragrafului, pentru a introduce şi o notă optimistă,


prezentăm una dintre cele mai „mari” demonstraţii cunoscute în
literatura „ştiinţifică” a afirmaţiei Oamenii de ştiinţă nu vor câştiga
niciodată la fel de mulţi bani ca directorii executivi ai unor companii
de succes. În acest scop vom porni de la postulatele (axiomele)
Cunoaşterea înseamnă putere şi Timpul înseamnă bani, pe care le vom
folosi sub forma prescurtată: cunoaştere = putere şi respectiv
timp = bani. Ca inferenţe, le vom utiliza pe cele mai simple (imediate,
cu afirmaţii categorice), la care adăugăm altele la fel de simple,
cunoscute din matematica elementară. Plecăm astfel de la axioma
suplimentară:
m un că
= p utere
tim p
Folosind axiomele iniţiale şi proprietăţile relaţiei de egalitate, printr-o
inferenţă simplă deducem:
m u ncă
= cun oaştere
b ani
Aplicând acum o proprietate a proporţiilor, găsim:
m uncă
= bani
c u n o a ş te re
Cititorul poate trage singur concluzia care se impune pentru situaţia în
care cunoaştere se apropie de (tinde la) valoarea zero.

Ca o concluzie, situaţiile neplăcute descrise anterior trebuie


evitate sau eliminate. Acest lucru se poate face doar prin „translatarea”
părţilor de limbaj într-un mecanism formal bine pus la punct, pe care-l

PDF created with pdfFactory Pro trial version www.pdffactory.com


54 Cristian Masalagiu

vom descrie începând cu secţiunea/paragraful următoare/următor.


Enunţul unora dintre exerciţiile care urmează este reluat în §2.10.

Exerciţiul 2.1. O teoremă, în sensul matematicii de liceu, are şi ea


ipoteze şi concluzii. Scrieţi simbolic forma generală a unei teoreme
(directe), utilizând propoziţii elementare (variabile propoziţionale) şi
conectori logici. Scrieţi apoi teorema reciprocă, contrara teoremei
directe şi contrara reciprocei. Există vreo legătură între acestea, în
ceea ce priveşte valoarea lor de adevăr? Daţi un exemplu de teoremă
de caracterizare (A dacă şi numai dacă B). Puteţi specifica altfel
rezultatul exprimat de teoremă, astfel încât să fie – separat - puse în
evidenţă condiţia necesară şi condiţia suficientă?
Exerciţiul 2.2. Să considerăm definiţia limitei unui şir dat de
numere reale, având ca valoare un număr real dat, definiţie exprimată
cu ajutorul vecinătăţilor care sunt intervale simetrice faţă de punctul
considerat. Să se exprime simbolic (în sensul matematicii de liceu,
folosind şi cuantificatorii) această definiţie şi să se nege formula astfel
găsită.
Exerciţiul 2.3. Exprimaţi simbolic, ca o formulă – în sensul
exerciţiilor anterioare – propoziţia Dacă mi-e sete, beau apă. Negaţi
formula şi apoi rescrieţi rezultatul în limbaj natural. Dacă aţi fi negat
direct propoziţia iniţială, aţi fi obţinut acelaşi lucru?

În restul capitolului, câteva dintre concepte/rezultate/exemple


sunt din [MAS1] (trebuie să precizăm că o parte dintre acestea provin,
la origine, din [SCH]).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 55

§2. Sintaxa logicii propoziţionale


Vom trece direct la prezentarea sintaxei formale a logicii
propoziţionale (calculului propoziţional). Logica propoziţională, aşa
cum am sugerat deja, va fi numele unei mulţimi de formule
(propoziţionale), notată LPL sau, prescurtat, LP şi definită structural în
cele ce urmează.

Definiţia 2. 1. Fie o mulţime numărabilă de variabile propoziţionale


(formule elementare, formule atomice pozitive, atomi pozitivi),
A = {A1, A2, … }. Fie, de asemenea, C = {, ∨, ∧} mulţimea
conectorilor/conectivelor logici/logice non (negaţia), sau (disjuncţia),
respectiv şi (conjuncţia) şi P = { ( , ) } mulţimea parantezelor
(rotunde). Formulele (elementele lui LP) vor fi „cuvinte” (expresii bine
formate) peste alfabetul L = A U C U P:

Baza (formulele elementare sunt formule). A ⊆ LP .


Pas constructiv (obţinere formule noi din formule vechi).
(i) Dacă F ∈ LP atunci ( F) ∈ LP.
(ii) Dacă F1, F2 ∈ LP atunci ( F1 ∨ F2 ) ∈ LP.
(iii) Dacă F1, F2 ∈ LP atunci ( F1 ∧ F2 ) ∈ LP.
(iv) Dacă F ∈ LP atunci (F) ∈ LP.
(v) Nimic altceva nu este formulă. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


56 Cristian Masalagiu

Putem privi o formulă F ca fiind reprezentată de un arbore binar


(arborele ataşat lui F, notat Arb(F)), în modul următor (procedăm
structural, conform definiţiei lui LP):

Definiţia 2.2.
Baza. F = A ∈ A. Atunci arborele ataşat lui F (sau, arborele care
reprezintă F), este:
A

Pas constructiv.
(i) Fie F = ( F1) şi să presupunem că se cunoaşte arborele ataşat lui F1,
Arb(F1). Atunci, arborele ataşat lui F va fi (ceva similar se obţine
pentru (iv), adică pentru cazul F = (F1)):

()

Arb(F1)

(iii) Fie F = (F1 ∧ F2) şi să presupunem că se cunosc atât arborele ataşat


lui F1 cât şi arborele ataşat lui F2 , adică Arb(F1) respectiv Arb(F2).
Atunci arborele ataşat lui F va fi (pentru F = (F1 ∨ F2) se obţine ceva
similar):

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 57

()
)

Arb(F1) Arb(F1)


Deşi au un rol pur sintactic, neschimbând cu nimic semantica
formulelor în care apar, parantezele rotunde au fost – din anumite
motive tehnice – privite mai sus ca un operator pre&post-fixat. Dacă
introducem o ordine stânga-dreapta pe mulţimea succesorilor imediaţi
ai fiecarui nod (implicit, pentru o formulă este valabilă ordinea de
scriere a „literelor” în cuvântul respectiv, exceptând paranteza închisă
„)”, care are acelaşi „număr de ordine” cu paranteza deschisă „(”
corespunzătoare), atunci se observă că fiecărei formule îi corespunde
un arbore ataşat unic şi fiecărui arbore ordonat G (cu nodurile
etichetate cu elemente din L ) îi corespunde o unică formulă din LP
(pentru care G este arborele ataşat). Definim structural şi mulţimea
subformulelor oricărei formule date F (notată subf(F)). Admitem
implicit faptul că F’ ∈ subf(F) dacă şi numai dacă F’ este subcuvânt al
lui F şi F’∈ LP (cu alte cuvinte, F1 şi F2, în cele ce urmează, sunt tot
formule).

PDF created with pdfFactory Pro trial version www.pdffactory.com


58 Cristian Masalagiu

Definiţia 2.3.
Baza. F = A ∈ A. Atunci subf(F) = {A}.
Pas constructiv.
(i) F = ( F1). Atunci subf(F) = subf(F1) U { ( F1) }.
(ii) F = (F1 ∧ F2). Atunci subf(F) = subf(F1) U subf(F2) U { (F1 ∧ F2) }.
(iii) Analog cu (ii) pentru cazul F = (F1 ∨ F2) (înlocuind peste tot,
simultan, ∧ cu ∨).
(iv) F = (F1). Atunci subf(F) = subf(F1) U { (F1) } ■

Observaţie. Nu se admit alte posibilităţi pentru scrierea unei formule,


decât cele fixate prin Definiţia 2.1. Există de altfel un algoritm care
rezolvă problema de decizie: Dat orice cuvânt w∈ L * (adică orice

secvenţă finită de caractere din L ) să se decidă dacă w ∈ LP. Conform


[JUC] de exemplu, notaţia L* (algebric, L * este monoidul liber generat
de L ) se explică prin aceea că mulţimea cuvintelor (secvenţelor finite
de simboluri) aparţinând unui alfabet cel mult numărabil formează un
monoid faţă de operaţia de concatenare (de juxtapunere a
literelor/cuvintelor). Elementul neutru, este cuvântul fără nici o literă
(cuvântul vid) şi este notat cu e. Algoritmul menţionat se termină
pentru fiecare intrare w∈ L*, cu răspunsul (ieşirea) „DA” dacă w ∈ LP

şi „NU” dacă w ∉ LP. O problemă de decizie are doar alternativa de


răspuns „DA/NU” şi aici este un caz particular al problemei de
apartenenţă pentru un limbaj de tip 2. Revenind, A1 ∨ A2, nu este

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 59

formulă pentru că nu are parantezele necesare (nu putem vorbi de


subf(A1 ∨ A2) pentru că A1 ∨ A2 nu este formulă). Dar, la fel ca şi în
cazul cunoscut al expresiilor aritmetice care conţin variabile, constante
şi operatorii „–” (având şi sensul de opus), „+”, „•” şi „/”, putem
accepta convenţia de a prescurta scrierea unor expresii (formule,
cuvinte) prin eliminarea unor paranteze (sau chiar pe toate). Acest lucru
se poate face prin atribuirea de priorităţi operatorilor, apoi bazându-ne
pe faptul că aritatea lor (numărul de argumente) este cunoscută,
precum şi pe unele proprietăţi cum ar fi comutativitatea, asociativitatea
sau distributivitatea. Priorităţile standard sunt: 0 – pentru , 1 – pentru
∧, 2 – pentru ∨. Tot o convenţie este şi aceea de a folosi şi alte nume
pentru formulele atomice, înafara celor admise deja prin faptul că sunt
simboluri desemnate a face parte din A. În general vom utiliza pentru
acestea litere mari de la începutul alfabetului latin (A, B, C, ..., cu sau
fără indici). Invers, putem adăuga în orice formulă „bine formată”
cupluri de paranteze corespondente (la fel cum le-am şi eliminat),
pentru a îmbunătăţi receptarea corectă a sintaxei şi fără a schimba
semnificaţia formulei în cauză. Acest lucru este permis de altfel prin
(iv), Definiţia 2.1. ■

Exerciţiul 2.4. Fie formula F = (( A) ∨ (B ∧ C)). Construiţi


arborele ataşat (verificând în acest mod şi faptul că într-adevăr
F ∈ LP). Eliminaţi parantezele şi stabiliţi o prioritate a operatorilor
care intervin, astfel încât semnificaţia intuitivă a noii secvenţe de
caractere să nu difere de semnificaţia iniţială (pentru a construi pe F,

PDF created with pdfFactory Pro trial version www.pdffactory.com


60 Cristian Masalagiu

se consideră întâi afirmaţiile elementare A, B, C; se consideră apoi


negaţia lui A, notată, să spunem, A’ şi conjuncţia lui B cu C, notată D;
în sfârşit, se consideră disjuncţia lui A’ cu D).

Vom face şi alte câteva prescurtări sintactice, justificate de altfel


şi de anumite considerente semantice care vor fi prezentate ulterior:
• ((  F) ∨ G) se va nota cu (F → G).
• Pentru (((  F) ∨ G) ∧ ((  G) ∨ F)) folosim (F ↔ G) sau
((F → G) ∧ (G → F)).
n
• ∧ Fi este o prescurtare pentru F1 ∧ F2 ∧ ... ∧ Fn.
i=1

n
• ∨ Fi este prescurtarea lui F1 ∨ F2 ∨ ... ∨ Fn .
i=1

Simbolurile → şi ↔ (numite după cum ştim implicaţie, respectiv


echivalenţă) pot fi considerate ca şi cum ar fi fost introduse de la bun
început în mulţimea de conectori C (dacă am fi procedat astfel de la bun
început, s-ar fi complicat atât unele lucruri de natură sintactică cum ar fi
definiţiile constructive, priorităţile, etc., cât şi definiţia semanticii LP,
care urmează). Vom numi literal o variabilă propoziţională sau negaţia
sa. A ∈ A se va numi şi literal pozitiv iar orice element de forma A,

A ∈ A va fi un literal negativ (vom nota A = {A1, A2, … }). Dacă


L este un literal, atunci complementarul său, L , va nota literalul  A,
dacă L = A ∈ A şi respectiv literalul A dacă L =  A. Sperăm ca
această notaţie sintactică să nu fie confundată cu operaţia semantică ¯,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 61

prezentă în definiţia algebrelor booleene, rezultatele privind sintaxa


fiind, în general, separate de cele privind semantica. Se numeşte clauză
orice disjuncţie (finită) de literali. Se numeşte clauză Horn o clauză
care are cel mult un literal pozitiv. O clauză pozitivă este o clauză care
conţine doar literali pozitivi, iar o clauză negativă va conţine doar
literali negativi. O clauză Horn pozitivă va conţine exact un literal
pozitiv (dar, posibil, şi literali negativi).

§3. Semantica logicii propoziţionale


Semantica (înţelesul) unei formule propoziţionale este, conform
principiilor logicii aristotelice, o valoare de adevăr (a sau f), obţinută în
mod determinist, care este independentă de context, etc. Notând de la
început pe a cu 1 şi pe f cu 0, astfel încât să putem lucra cu algebra
booleană B = < B, •, +, ¯ >, noţiunea principală este cea de asignare
(interpretare, structură).

Definiţia 2.4. Orice funcţie S, S : A → B se numeşte asignare. ■

Teorema 2.1 (de extensie). Pentru fiecare asignare S există o unică

extensie a acesteia, S’ : LP → B (numită tot structură sau


interpretare), care satisface:
(i) S’(A) = S(A), pentru fiecare A ∈ A.

(ii) S’(( F)) = S' (F) , pentru fiecare F ∈ LP.

(iii) S’((F1 ∧ F2) ) = S’(F1) • S’(F2), pentru fiecare F1, F2 ∈ LP.

PDF created with pdfFactory Pro trial version www.pdffactory.com


62 Cristian Masalagiu

(iv) S’((F1 ∨ F2) ) = S’(F1) + S’(F2), pentru fiecare F1, F2 ∈ LP.

Demonstraţie. Fie S : A → B. Definim funcţia S’ : LP → B, structural,


prin:
Baza. S’(A) = S (A), pentru fiecare A ∈ A.
Pas constructiv.
(a) Dacă F = ( F1), atunci S’(F) = S '(F1 ) .
(b) Dacă F = (F1 ∧ F2), atunci S’(F) = S’(F1) • S’(F2).

(c) Dacă F = (F1 ∨ F2), atunci S’(F) = S’(F1) + S’(F2).


Este evident că S’ este o extensie a lui S, proprietatea (i) fiind
satisfăcută imediat conform pasului Baza de mai sus. De asemenea,
definiţiile (a) – (c) din Pasul constructiv asigură satisfacerea punctelor
(ii) – (iv) din enunţ, deoarece orice formulă din LP, dacă nu este
elementară, are una dintre cele trei forme considerate (cazul F = (F1)
este mult prea simplu pentru a fi tratat separat). Mai rămâne să arătăm
că S’ este funcţie totală (adică, ataşează fiecărui element din domeniu
un element şi numai unul din codomeniu) şi că ea este unica funcţie
care satisface (i) – (iv). Acest lucru se face prin inducţie structurală,
trebuind să arătăm că pentru fiecare F ∈ LP, este adevărat P(F), unde
P(F) este: Oricare ar fi asignarea S, valoarea S’(F) există (ca element
al lui B) şi este unică, adică S’ este funcţie, şi oricare altă funcţie S’’
care satisface (i) – (iv), satisface S’(F)= S’’(F).
Baza. Fie F = A ∈ A şi orice asignare S. Cum S este funcţie (totală)
prin definiţie şi avem S’(A) = S(A), tot prin definiţie (S’ este extensia

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 63

lui S), este imediat faptul că S’(A) există şi este unică în sensul precizat
(orice alt – posibil – S’’ trebuie să fie tot o extensie a lui S).
Pas inductiv. Vom arăta doar cazul F = ( F1), celelalte două
(F = (F1 ∧ F2) şi F = (F1 ∨ F2) ) fiind similare. Presupunem prin urmare
P(F1) ca fiind adevărat şi demonstrăm că P(F) este adevărat. Fie orice
asignare S. Faptul că S’(F) există (ca element al lui B) şi este unică (în
sensul precizat), rezultă din nou imediat, din ipoteza inductivă (S’(F1)

există şi este unică), din definiţia negaţiei în B (ştim că S’(F) = S' (F1 ) )
şi a faptului că orice alt S’’ trebuie să satisfacă punctul (ii) din teoremă.

De acum înainte nu vom face nici o diferenţă, nici măcar


notaţională, între asignare şi structură (intrerpretare). Se observă că
dată orice formulă F ∈ LP şi orice structură S, este suficient să
cunoaştem valorile lui S în variabilele propoziţionale care apar în F
(pentru fiecare F ∈ LP, vom nota cu prop(F) mulţimea atomilor
pozitivi care apar în F, sau peste care este construită F). Vom numi
asignare (structură) completă pentru F, orice funcţie parţială S care

este definită exact (sau, măcar) pe prop(F) ⊆ A şi cu valori în B.


Aceasta, în cazul în care F este cunoscută, poate fi identificată cu o
funcţie totală pe A. Putem conchide chiar că în LP valoarea de adevăr
a unei formule se deduce în mod unic din valoarea de adevăr a
subformulelor (se mai spune că logica propoziţională are proprietatea

PDF created with pdfFactory Pro trial version www.pdffactory.com


64 Cristian Masalagiu

de extensionalitate). Vom mai pune S(F) @ S((F)) pentru fiecare

F∈ LP.

Exerciţiul 2.5. Definiţi structural prop(F), pentru fiecare F ∈ LP.

Fără alte precizări, vom lucra în continuare doar cu structuri


complete pentru mulţimile de formule (o structură este completă pentru
o mulţime de formule dacă este completă pentru fiecare element din
acea mulţime) care ne interesează la momentul dat.

Definiţia 2.5. O formulă F ∈ LP se numeşte satisfiabilă dacă există


măcar o structură S (completă) pentru care formula este adevărată
(S(F) = 1). Se mai spune în acest caz că S este model pentru F

(simbolic, se mai scrie S ‘ F). O formulă este validă (tautologie) dacă

orice structură este model pentru ea. O formulă este nesatisfiabilă


(contradicţie) dacă este falsă în orice structură (S(F) = 0, pentru fiecare

S, sau S — F, pentru fiecare S). ■

Teorema 2.2. O formulă F ∈ LP este validă dacă şi numai dacă ( F)


este contradicţie.
Demonstraţie. F ∈ LP este validă dacă şi numai dacă pentru fiecare
structură S avem S(F) = 1, adică (conform ii), Teorema 2.1) dacă şi

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 65

numai dacă S(( F) ) = 1 = 0 (definiţia negaţiei), ceea ce înseamnă că


( F) este o contradicţie. ■

Clasa tuturor formulelor propoziţionale LP, este astfel


partiţionată în (mulţimile indicate mai jos sunt într-adevăr nevide şi
disjuncte):

Tautologii Formule satisfiabile dar nevalide Contradicţii


F F ( F) ( F)

Tabelul 2.1

În tabelul anterior linia punctată poate fi considerată drept o


oglindă în care se reflectă adevărul.

Definiţia 2.6. Două formule F1, F2 ∈ LP se numesc tare echivalente


dacă pentru fiecare structură S ele au aceeaşi valoare de adevăr, adică
S(F1) = S(F2) (simbolic, vom scrie F1 ≡ F2). F1 şi F2 se numesc slab
echivalente dacă F1 satisfiabilă implică F2 satisfiabilă şi reciproc (vom
scrie F1 ≡s F2, ceea ce înseamnă că dacă există S1 astfel încât
S1(F1) = 1, atunci există S2 astfel încât S2 (F2) = 1 şi reciproc). O
formulă F ∈ LP este consecinţă semantică dintr-o mulţime de formule
G ⊆ LP, dacă pentru fiecare structură corectă S (aceasta înseamnă aici

PDF created with pdfFactory Pro trial version www.pdffactory.com


66 Cristian Masalagiu

faptul că S este definită cel puţin pentru toate variabilele propoziţionale


care apar fie în F fie în elementele lui G), dacă S satisface G (adică
avem S(G) = 1 pentru fiecare G ∈ G) atunci S satisface F (simbolic,

vom scrie G ‘ F). ■

Observaţie. Relaţiile ≡ şi ≡s sunt relaţii de echivalenţă (binare) pe LP,


în sens matematic (adică sunt reflexive, simetrice şi tranzitive) şi prin
urmare LP poate fi partiţionată în clase de ehivalenţă corespunzătoare,
obţinându-se mulţimile cât LP/≡, respectiv LP/≡s. Mai mult, privind
∧ , ∨ ,  ca nişte operatori (de fapt, ar trebui să-i considerăm împreună
cu parantezele pe care le introduc, vezi şi Exerciţiul 2.4), atunci relaţia
≡ este compatibilă (la stânga şi la dreapta) cu aceştia ([ŢIP]), astfel
încât considerând 4-uplul LP = <LP/≡, ∧,∨,>, se poate arăta că acesta
formează o algebră booleană (homomorfă cu B = < B, •, +, ¯ >, după
cum sugerează Teorema de extensie). ■

Teorema 2.3. Fie G ∈ LP şi G = { G1, G2, …, Gn } ⊆ LP. Următoarele


afirmaţii sunt echivalente:
(i) G este consecinţă semantică din G.
n
(ii) ( ∧ Gi ) → G este tautologie.
i=1

n
(iii) ( ∧ Gi ) ∧  G este contradicţie.
i=1

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 67

Demonstraţie.
(i) implică (ii). Presupunem prin reducere la absurd că
n
F = ( ∧ Gi) → G nu este tautologie, deşi G este consecinţă semantică
i=1

din G. Rezultă că există o structură S pentru care F este falsă, adică


n
S( ∧ i=1
Gi) = 1 şi S(G) = 0. Prin urmare, pentru fiecare i ∈ [n] avem

S(Gi) = 1 şi ca urmare S(G) = 0. În concluzie, există o structură S astfel


încât S(G) = 1 şi S(G) = 0. Acest lucru este absurd pentru că G este
consecinţă semantică din G.
(ii) implică (iii). Procedăm din nou prin reducere la absurd, adică
n n
presupunem că deşi ( ∧ Gi) → G este tautologie, ( ∧ Gi) ∧  G nu
i=1 i =1

n
este contradicţie. Această înseamnă că F1 =  ( ∧ Gi) ∨ G este
i=1

n
tautologie, dar F2 = ( ∧ Gi) ∧  G este satisfiabilă. Prin urmare, există
i=1

o structură S astfel încât S(F2) = 1 (şi, desigur, S(F1) = 1). Din S(F2) = 1
n n
rezultă S(( ∧ Gi )) • S( G) = 1, adică S(( ∧ Gi )) = 1 şi S(G) = 1.
i=1 i=1

n
În consecinţă, S( ( ∧ Gi )) = 0 şi S(G) = 0. Pentru că
i=1

n
S(F1) = S(( i∧= 1 Gi )) + S(G), avem S(F1) = 0, ceea ce este absurd

deoarece F1 este tautologie.

PDF created with pdfFactory Pro trial version www.pdffactory.com


68 Cristian Masalagiu

(iii) implică (i). Presupunem prin reducere la absurd că


n
F = ( ∧ Gi) ∧  G este contradicţie, dar G nu este consecinţă semantică
i=1

din G. Atunci există o structură S care satisface toate formulele din G


n
dar nu satisface G. Prin urmare, avem S(( ∧ Gi)) = 1 şi S(G) = 0, adică
i =1

n n n
S(( ∧i=1
Gi)) = 1 şi S(G) = 1. Cum S(( ∧
i=1
Gi) ∧ G) =S(( ∧
i =1
Gi))•S(G),

n
rezultă că există S astfel încât S(( ∧ Gi) ∧  G) = 1, deci F nu este
i=1

contradicţie (absurd). ■

În teorema anterioară am renunţat la anumite paranteze,


respectând priorităţile/convenţiile făcute. Vom face şi pe viitor acest
lucru, fără a-l mai menţiona explicit.

Teorema 2.4. Sunt adevărate următoarele echivalenţe (tari, pentru


oricare F, G, H ∈ LP):
(a) F ∧ F ≡ F (a’) F ∨ F ≡ F (idempotenţă)
(b) F ∧ G ≡ G ∧ F (b’) F ∨ G = G∨ F (comutativitate)
(c) ( F ∧ G ) ∧ H ≡ (c’) (F ∨ G) ∨ H ≡ F ∨ (G ∨ H)
≡F∧(G∧H) (asociativitate)
(d) F ∧ ( G ∨ H ) ≡ (d’) F ∨ ( G ∧ H ) ≡ (F ∨ G) ∧ (F ∨ H)
≡ (F ∧ G) ∨ (F ∧ H) (distributivitate)
(e) F ∧ ( F ∨ G ) ≡ F (e’) F ∨ ( F ∧ G ) ≡ F (absorbţie)

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 69

(f)   F ≡ F (legea dublei negaţii)

(g)  ( F ∧ G ) ≡ (g’)  ( F ∨ G ) ≡  F ∧  G (legile lui


≡F∨G deMorgan)
(h) F ∨ G ≡ F (h’) F ∧ G ≡ G (legile validităţii,
adevărate doar dacă F este tautologie)
(i) F ∧ G ≡ F (i’) F ∨ G ≡ G (legile contradicţiei,
adevărate doar dacă F este contradicţie)
Demonstraţie. Vom arăta doar una dintre echivalenţe şi anume (i). Fie
F ∈ LP orice contradicţie şi G ∈ LP. Fie orice structură S. Atunci

S(F ∧ G) = S(F)•S(G) = 0, conform Tabelului 1.1 (punctul 9)) şi


faptului că F este contradicţie. Aceeaşi valoare o are şi membrul drept
din (i). ■

Se poate arăta, de exemplu, prin inducţie matematică, faptul că


asociativitatea, distributivitatea şi legile lui deMorgan se extind pentru
orice număr finit de formule.

Teorema 2.5 (de substituţie). Fie H ∈ LP, oarecare. Fie orice


F, G ∈ LP astfel încît F este o subformulă a lui H şi G este tare
echivalentă cu F. Fie H’ formula obţinută din H prin înlocuirea (unei
apariţii fixate a) lui F cu G. Atunci H ≡ H’.
Demonstraţie. Intuitiv, teorema „spune” că înlocuind într-o formulă o
subformulă cu o formulă echivalentă, obţinem o formulă echivalentă cu

PDF created with pdfFactory Pro trial version www.pdffactory.com


70 Cristian Masalagiu

cea iniţială. Vom proceda prin inducţie structurală, având de arătat


teorema din metalimbaj (∀H ∈ LP) P(H), unde
P(H): (∀F, G, H’ ∈ LP)(((F ∈ subf(H)) şi
(H’ se obţine din H înlocuind o apariţie fixată a lui F cu G) şi
(F ≡ G)) ⇒ H ≡ H’).
Baza. H = A ∈ A. Să arătăm că P(A) este adevărată. Fie F, G,

H’ ∈ LP, astfel încât F ∈ subf(H), H’ se obţine din H înlocuind


apariţia aleasă a lui F cu G, iar F ≡ G. Trebuie să arătăm că H ≡ H’.
Dar, din F ∈ subf(H) şi subf(H) = {A}, rezultă că F = A ( care coincide
cu H). Prin urmare, H’ = G. Avem acum F = H, G = H’ şi F ≡ G, de
unde urmează imediat că H ≡ H’.
Pas inductiv. Trebuie tratate separat situaţiile care urmează.
(i) H = ( H1). Presupunem că P(H1) este adevărată şi demonstrăm că
P(H) este adevărată. Fie F ∈ subf(H) = subf(H1) U {( H1)}. Dacă
F = ( H1 ) ( = H), suntem într-o situaţie similară cu cea din Baza,
deoarece raţionamentul se face din nou asupra întregii formule H. Fie o
apariţie fixată a lui F ∈ subf(H1) ⊆ subf(H) şi considerăm orice G ∈ LP
astfel încât G ≡ F. Înlocuind pe F cu G în H, înseamnă în acelaşi timp a
înlocui pe F cu G în H1. Notând cu H’ respectiv H1’ formulele obţinute,
putem aplica ipoteza inductivă (P(H1) este adevărată) şi obţinem că
H1 ≡ H1’. Revenind, ştim că H = ( H1), H’ = ( H1’) şi H1 ≡ H1’.
Rezultă imediat că H ≡ H’ (vezi şi Observaţia care precede imediat
Teorema 2.3 şi V.2.8 din Anexă).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 71

(ii) H = (H1 ∧ H2). Presupunem că P(H1) şi P(H2) sunt adevărate şi


demonstrăm că P(H) este adevărată. Fie orice F ∈ subf((H1 ∧ H2)) =
subf(H1) U subf(H2) U{(H1 ∧ H2)}. Dacă F = ( H1 ∧ H2 ) ( = H) suntem
din nou într-un caz similar cu cel din Baza. Să considerăm că
F ∈ subf(H1) (apariţia deja fixată), cazul F ∈ subf(H2) tratându-se
similar. Fie orice G ∈ LP astfel încât G ≡ F. A înlocui pe F cu G în H
înseamnă, în acelaşi timp, a înlocui pe F cu G în H1 (H2 rămânând
neschimbată). Vom nota cu H’ respectiv H1’, formulele obţinute după
aceste înlocuiri. Aplicând ipoteza inductivă (P(H1) este adevărată),
rezultă imediat că H1’ ≡ H1. Revenind, ştim că H = (H1 ∧ H2),
H’ = (H1’ ∧ H2) şi H1’ ≡ H1. Obţinem imediat că H ≡ H’ (putem folosi
direct faptul deja amintit, că ≡ este compatibilă cu operaţiile, respectiv
cu conjuncţia).
(iii) H = (H1 ∧ H2). Se demonstrează analog cu cazul precedent. ■

Pentru a nu exista confuzii între limbajul de bază (LP) şi


metalimbajul în care exprimăm afirmaţiile despre elementele lui LP, în
cele de mai sus (precum şi în continuare) am notat implicaţia cu ⇒ iar
conjuncţia prin şi. Deocamdată am păstrat notaţia clasică pentru
cuantificatorul universal (∀), deoarece el nu apare explicit în LP.

Rezultatele obţinute ne permit practic să tratăm formulele din


LP într-un mod similar cu funcţiile booleene, dacă ne interesează
probleme de natură semantică. Astfel, vom nota cu 0 orice contradicţie
şi cu 1 orice tautologie şi vom accepta principiul dualităţii (rolul lui •

PDF created with pdfFactory Pro trial version www.pdffactory.com


72 Cristian Masalagiu

şi + luându-l ∧ respectiv ∨, după cum se poate deduce chiar din


Teorema 2.4). De asemenea, vom folosi tabelele de adevăr pentru a
găsi în mod direct semantica (valoarea de adevăr a) unei formule într-o
structură dată.

Nu apare astfel surprinzătoare tematica paragrafului următor,


privind existenţa formelor normale.

§ 4. Forme normale în LP
Spre deosebire de cazul funcţiilor booleene, vom studia pentru
început formele normale conjunctive şi formele normale disjunctive
simultan.

Definiţia 2.7. O formulă F ∈ LP se află în formă normală


conjunctivă (FNC, pe scurt) dacă este o conjuncţie de disjuncţii de
literali, adică o conjuncţie de clauze. Simbolic:
m ni ni
F = ∧ ( ∨ L i,j ) (notăm Ci = ∨ Li,j , i ∈ [m] ).
i= 1 j =1 j=1

Similar, F ∈ LP este în formă normală disjunctivă (FND, pe scurt),


dacă este o disjuncţie de conjuncţii de literali. ■

În cele de mai sus Li,j ∈ A U A.

Exemplu. F = (A ∧ (B ∨ C)) este în FNC iar G = ((A ∧  B) ∨ (A ∧ C))


este în FND, dacă A, B, C ∈ A. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 73

Teorema 2.6. Pentru fiecare formulă F ∈ LP există cel puţin două


formule F1, F2 ∈ LP, F1 aflată în FNC şi F2 aflată în FND, astfel încât
F ≡ F1 şi F ≡ F2 (se mai spune că F1 şi F2 sunt o FNC, respectiv o FND,
pentru F).
Demonstraţie. Pentru a demonstra afirmaţia necesară, (∀F)P(F) în
metalimbaj, unde
P(F): există F1 ∈ LP, aflată în FNC şi există F2 ∈ LP, aflată în
FND, astfel încât F ≡ F1 şi F ≡ F2,
procedăm prin inducţie structurală.
Baza. F = A ∈ A. Această formulă este atât în FNC cât şi în FND, deci
putem lua F1 = A şi F2 = A.
Pas inductiv. Trebuie tratate cazurile corespunzătoare definiţiei
constructive a lui LP.
(i) F = ( G). Presupunem că P(G) este adevărată şi demonstrăm că
P(F) este adevărată. Din ipoteza inductivă rezultă că există formulele
G1, aflată în FNC şi G2, aflată în FND, astfel încât G ≡ G1 şi G ≡ G2.
Atunci, de exemplu, G ≡ G1 şi, aplicând legile lui deMorgan, găsim:
m ni m ni
 ( ∧ ( ∨ L i,j )) ≡ ( ∨ ( ∧ (  L i,j ))) .
i= 1 j =1 i= 1 j =1

În ultima formulă putem aplica – unde este cazul – legea dublei negaţii
şi apoi putem înlocui elementele de forma Li,j cu L i, j , obţinând astfel o

FND pentru F. Analog, dacă pornim cu G2, care este o FND pentru G,
vom obţine o FNC pentru F.

PDF created with pdfFactory Pro trial version www.pdffactory.com


74 Cristian Masalagiu

(ii) F = (G ∧ H). Presupunem că afirmaţiile P(G) şi P(H) sunt


adevărate şi arătăm că P(F) este adevărată. Din faptul că P(G) este
adevărată rezultă că există G1, aflată în FNC şi satisfăcând G ≡ G1,
astfel încât:
m1 ( n 1 )i
G1 = ( ∧ ( ∨ L i,j ))
i=1 j =1

Cu totul similar, pentru că P(H) este adevărată, înseamnă că există H1,


aflată în FNC şi satisfăcând H ≡ H1:
m2 ( n 2 )i
H1 = ( i=∧1 ( ∨
j= 1
L i,j ))

Atunci, G ∧ H ≡ G1 ∧ H1 şi este evident că ultima formulă este tot o


conjuncţie de disjuncţii, adică este o FNC, notată F1, pentru F. Pentru a
obţine o FND, F2, pentru F, pornim de la o FND, G2, pentru G şi o
FND, H2, pentru H. Atunci F = G ∧ H ≡ G2 ∧ H2, de unde obţinem
imediat o FND pentru F, notată F2, dacă se aplică mai întâi
distributivitatea generalizată a conjuncţiei faţă de disjuncţie şi apoi, în
interiorul subformulelor, a disjuncţiei faţă de conjuncţie.
(iii) F = (G ∨ H). Procedăm analog ca în cazul anterior. ■

Teorema precedentă sugerează existenţa unui algoritm recursiv


pentru obţinerea simultană a unei FNC şi a unei FND, pentru orice
formulă propoziţională. Putem folosi însă şi tabelele de adevăr şi
modalităţile de găsire a formelor normale conjunctive/disjunctive
(perfecte) descrise în Capitolul 1.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 75

Exemplu. Găsiţi o formulă F ∈ LP construită peste mulţimea de


variabile propoziţionale {A, B, C} şi care să satisfacă condiţia: în
tabelul de adevăr standard care o descrie, o schimbare şi numai una
în secvenţa <S(A), S(B), S(C)> produce schimbarea valorii
corespunzătoare de adevăr S(F). Dacă începem secvenţa S(F) cu 0,
atunci F este descrisă de tabelul:
A B C F
S(A) S(B) S(C) S(F)
0 0 0 0
0 0 1 1 *
0 1 0 1 *
0 1 1 0
1 0 0 0
1 0 1 1 *
1 1 0 1 *
1 1 1 0

Se poate construi apoi direct din tabel măcar o formulă (sau două) care
îi corespunde semantic, formulă ce se află în FND (şi/sau FNC). De
fapt vom folosi algoritmul de construcţie a FNDP (FNCP) pentru o
funcţie booleană. Conform Capitolului 1, acesta poate fi exprimat
astfel: se fixează liniile având 1 în ultima coloană (cele marcate cu *
în tabel); pentru fiecare asemenea linie se construieşte o conjuncţie de
literali (apar toţi, cu bară sau fără): dacă valoarea unei variabile
(atom pozitiv) este 0 în tabel, atunci variabila se trece în conjucţia

PDF created with pdfFactory Pro trial version www.pdffactory.com


76 Cristian Masalagiu

respectivă negată, iar dacă valoarea ei este 1, atunci ea apare


nenegată; formula finală, aflată în FND(P), este disjuncţia tuturor
acestor conjuncţii. Prin urmare, putem pune F = (A ∧  B ∧ C) ∨
∨ (A ∧ B ∧ C) ∨ (A ∧ B ∧ C) ∨ (A ∧ B ∧ C). Găsiţi, analog, o
FNC(P) ■

Conform teoremei anterioare, precum şi datorită comutativităţii


şi idempotenţei disjuncţiei, comutativităţii şi idempotenţei conjuncţiei
(repetarea unui element, fie el literal sau clauză, este nefolositoare din
punctul de vedere al (ne)satisfiabilităţii unei formule), este justificată
scrierea ca mulţimi a formulelor aflate în FNC. Astfel, dacă F este în
FNC (Definiţia 2.7), vom mai scrie F = {C1, C2, ... , Cm} (nu uităm
totuşi că virgula aici provine dintr-o conjuncţie), unde, pentru fiecare
i ∈ [m], vom pune C i = {L i,1 , L i,2 ,..., L i,n i } . Mai mult, dacă avem

F ∈ LP reprezentată ca mulţime (de clauze) sau ca mulţime de mulţimi


(de literali) şi ne interesează doar studiul (ne)satisfiabilităţii ei, putem
elimina clauzele C care conţin atât L cât şi L , deoarece L ∨ L ≡ 1,
1 ∨ C ≡ 1 şi deci aceste clauze sunt tautologii (notate generic cu 1).
Tautologiile componente nu au nici o semnificaţie pentru stabilirea
valorii semantice a unei formule F aflate în FNC (1 ∧ C ≡ C).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 77

§ 5. Decidabilitate în LP
LP, cadrul formal propus (realitatea este modelată prin
afirmaţii, afirmaţiile sunt reprezentate ca formule propoziţionale),
oferă ca principală metodă de a rezolva problemele, testarea adevărului
(satisfiabilităţii) unor formule. Din punctul de vedere al unui
informatician, trebuie ca pentru clasa de formule admisă să existe un
algoritm care, având la intrare orice F ∈ LP, se termină cu răspunsul
„DA”, dacă F este satisfiabilă (sau validă, sau contradicţie) şi „NU” în
rest (ştiind desigur că putem decide dacă un anumit şir de caractere este
formulă sau nu). În această situaţie se spune că problema
satisfiabilităţii (pe scurt, SAT) pentru LP este rezolvabilă
(decidabilă). Mai mult, am vrea să găsim asemenea algoritmi pentru
care complexitatea timp este „rezonabilă”.

Teorema 2.7 (decidabilitatea SAT). Satisfiabilitatea (validitatea,


nesatisfiabilitatea) formulelor calculului propoziţional este decidabilă în
timp exponenţial.
Demonstraţie. Practic, demonstraţia (exceptând complexitatea) a fost
deja făcută, chiar în mai multe moduri. Fie F ∈ LP având prop(F) =
{A1, A2 , ……, An} = An . Se formează, de exemplu în Pasul 1 al unui
posibil algoritm (notat tot SAT) pentru testarea satisfiabilităţii
(validităţii, nesatisfiabilităţii), tabela de adevăr corespunzătoare lui F
(Teorema de extensie, Teorema de substituţie şi legătura dintre

PDF created with pdfFactory Pro trial version www.pdffactory.com


78 Cristian Masalagiu

algebrele booleene LP şi B stau la baza corectitudinii acestei


construcţii) care are forma:

S(A1) S(A2) …… S(An) S(F)


0 0 …… 0 v1
0 0 …… 1 v2
n
…… …… …… …… …… 2 =m
1 1 …… 1 vm

Dacă toţi vi (i ∈ [m]) sunt egali cu 0 atunci F este contradicţie, dacă toţi
vi sunt 1 atunci F este tautologie, iar în rest F este satisfiabilă dar
nevalidă. Pentru a depista acest lucru, trebuie parcurs, în Pasul 2, în
cazul cel mai defavorabil, întregul tabel, linie cu linie şi prin urmare
trebuie efectuate 2n comparaţii (F este construită peste n formule
atomice). Deşi mai sus nu avem o explicaţie formală riguroasă a
faptului că SAT are timp exponenţial, se poate arăta că problema este
chiar NP-completă (conform [AHO]; a se urmări şi comentariile care
urmează imediat după demonstraţie). ■

Datorită Teoremei de extensie şi Teoremei de substituţie,


putem construi o tabelă de adevăr pentru o formulă pornind nu de la
variabile, ci chiar de la anumite subformule mai complicate (pentru care
valorile posibile, finale, sunt tot 0 sau 1). Mai mult (se pot consulta
[KNU], [JUC], [LUC] şi, în special, [CRO], [AHO], [COR], [BÖR]),
trebuie căutaţi algoritmi „rapizi” (eficienţi, tratabili), adică având

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 79

complexitate (timp) mică. Astfel, două dintre măsurile (teoretice,


globale) de complexitate des întrebuinţate sunt complexitatea timp şi
complexitatea spaţiu. Ideea este aceea că un (orice) pas elementar
(instrucţiune) al unui algoritm se execută într-o unitate de timp (pentru
spaţiu, fiecare dată elementară se memorează într-un registru sau
locaţie de memorie, acesta/aceasta ocupând o unitate de spaţiu),
criteriul numindu-se al costurilor uniforme. Există şi criteriul costurilor
logaritmice (pe care însă nu-l vom utiliza aici), în care orice informaţie
de lungime i, se prelucrează (respectiv, se memorează) în numărul de

unităţi de timp (unităţi de spaţiu) egal cu ëlog(i)û + 1 (dacă i = 0, se

convine să luăm log(i) = 0; ënû notează partea întreagă inferioară a

numărului n). Intuitiv, timpul luat de execuţia unui algoritm Alg este dat
de numărul de instrucţiuni (paşi/operaţii elementare) efectuate (să-l
notăm cu tAlg), iar spaţiul (notat cu sAlg) este dat de numărul de locaţii
(elementare) de memorie (internă, a calculatorului) ocupate în cursul
execuţiei. Sigur că totul se raportează la lungimea fiecarei intrări
(adică, în cazul nostru, la lungimea unei formule F ∈ IN ⊆ LP, aceasta
putând fi de exemplu nF = card (prop(F))) şi ne interesează de fapt
sup{tAlg(F) | F ∈ IN şi nF = n ∈ N}, margine superioară pe care o vom
nota cu tAlg(n). Această abordare (în care se caută cazul cel mai
nefavorabil, dacă este desigur posibil), ne permite să fim siguri că
pentru fiecare intrare de lungime n, timpul de execuţie al lui Alg nu va
depăşi tAlg(n). Cum determinarea acelui supremum este de multe ori
destul de dificilă, ne vom mulţumi să studiem aşa-numita comportare

PDF created with pdfFactory Pro trial version www.pdffactory.com


80 Cristian Masalagiu

asimptotică (sau ordinul de creştere) a (al) lui tAlg(n), adică ne vor


interesa doar anumite margini ale sale, cum ar fi marginea sa
superioară. Formal, pentru fiecare f : N → N, notăm

O(f) = {g | g : N → N, există c ∈ R, c > 0 şi există k ∈ N, astfel încât

pentru fiecare n ≥ k avem g(n) ≤ c•f(n)} şi vom spune că fiecare


g ∈ O(f), este de ordinul lui f, ceea ce se mai notează şi cu g = O(f).
Astfel, vom spune că SAT are complexitatea (timp, asimptotică) O(2 n),
sau, pe scurt, complexitate exponenţială, deoarece că există (măcar) un
algoritm Alg care rezolvă problema (cel sugerat în demonstraţia
Teoremei 2.7) şi pentru care tAlg(n) = O(2n). Similar, vom vorbi de
algoritmi polinomiali (tAlg(n) = O(p(n)), unde p(n) desemnează un
polinom în n, de orice grad), sau de algoritmi liniari (p(n) de mai sus
este un polinom de gradul I), adică de probleme având complexitatea
(timp, dar se poate defini ceva asemănător pentru spaţiu) de tipul
precedent. Speranţa de a găsi algoritmi mai performanţi pentru
rezolvarea SAT, se poate baza pe ideea de a restrânge LP la anumite
subclase stricte, particulare de formule ale sale, suficient de largi însă
pentru a exprima convenabil părţi importante ale realităţii. În plus, în
condiţiile utilizării calculatorului, găsirea unor algoritmi de natură
sintactică pentru rezolvarea SAT (în locul celor „semantici”, cum este
şi cel bazat pe folosirea tabelelor de adevăr) este o prioritate (chiar dacă
aceştia nu sunt mai buni din punctul de vedere al teoriei generale a
complexităţii).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 81

§ 6. Formule Horn
Reamintim că o clauză Horn este o disjuncţie de literali care
conţine cel mult un literal pozitiv.

Definiţia 2.8. O formulă Horn este o formulă aflată în FNC, clauzele


componente fiind (toate) clauze Horn. ■

Uneori, vom numi tot formulă Horn şi o formulă care este (tare)
echivalentă cu o formulă de forma considerată în Definiţia 2.8. Se
poate arăta ([MAS1]) că există formule propoziţionale care nu sunt tare
echivalente cu nici o formulă Horn, apariţia a măcar doi literali pozitivi
distincţi într-o clauză fiind decisivă. Formele posibile pentru o formulă
Horn sunt (variabilele propoziţionale care apar sunt elemente ale lui A):

(i) C =  A1 ∨  A2 ∨ …… ∨  Ak, k ≥ 1, k ∈ N şi
(ii) C =  A1 ∨  A2 ∨ …… ∨  Ak ∨ B, k ∈ N.

Observaţie. Înafară de reprezentarea ca mulţimi, clauzele Horn pot fi


reprezentate sub şi sub aşa-numita formă implicaţională. Vom distinge
cazurile (reamintim că 0 şi 1 denotă orice contradicţie respectiv orice
tautologie):
• C = A ∈ A (nici un literal negativ, un literal pozitiv). Acest

lucru se mai poate scrie sub forma C @ 1 → A, ceea ce se

justifică prin aceea că 1 → A @  1 ∨ A ≡ 0 ∨ A ≡ A.

PDF created with pdfFactory Pro trial version www.pdffactory.com


82 Cristian Masalagiu

• C =  A1 ∨  A2 ∨ …… ∨  Ak (nici un literal pozitiv, măcar un


literal negativ). Vom scrie C @ A1 ∧ A2 ∧ A3 …… ∧ Ak → 0

(folosim din nou definiţia implicaţiei şi faptul că 0 ∨ A ≡ A).


• C =  A1 ∨  A2 ∨ …… ∨  Ak ∨ B (exact un literal pozitiv,
măcar un literal negativ). Atunci C@A1 ∧ A2 ∧ A3 … ∧ Ak→B,

direct din definiţia implicaţiei.


• C @ (nici un literal negativ, nici un literal pozitiv). Din

motive tehnice vom folosi şi această clauză vidă (în


reprezentarea clauzelor cu mulţimi vom folosi pentru chiar
Ø). Prin convenţie, este o clauză de orice tip (inclusiv o
clauză Horn), dar nesatisfiabilă. ■

Teorema 2.8. Satisfiabilitatea formulelor Horn este decidabilă în timp


liniar.
Demonstraţie. Să considerăm algoritmul:

Algoritm Horn
Intrare: Orice formulă Horn, F, reprezentată ca mulţime de clauze,
clauzele componente fiind clauze Horn diferite de clauza vidă şi scrise
sub formă implicaţională .
Ieşire: „DA”, în cazul în care formula F este satisfiabilă (furnizându-se
şi o asignare S care este model pentru F) şi „NU” în caz contrar (F nu
este satisfiabilă).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 83

Metodă (de marcare):


Pasul 1. i := 0.
Pasul 2.
Cât_timp ((există în F o clauză C de forma
A1 ∧ A2 ∧ A3 …… ∧ Ak → B, cu A1, A2, A3, ... , Ak marcaţi şi
B nemarcat sau de forma A1 ∧ A2 ∧ A3 …… ∧ Ak → 0, cu A1,
A2, A3, ... , Ak marcaţi) şi (i = 0))
execută
Pasul 3. Alege un asemenea C ca mai sus.
Pasul 4. Dacă ( C = A1 ∧ A2 ∧ A3 …… ∧ Ak → B )
atunci
Pasul 5. Marchează B peste tot în F.
altfel
Pasul 6. i := 1.
Sf_Dacă
Sf_Cât_timp
Pasul 7. Dacă ( i = 0 )
atunci
Pasul 8. Scrie „DA”.
Pasul 9. Scrie S, cu S(A) = 1 dacă şi numai
dacă A apare în F şi este marcată.
altfel
Pasul 10. Scrie „NU”.
Sf_Dacă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


84 Cristian Masalagiu

Arătăm mai întâi că algoritmul se termină pentru fiecare intrare. Să


precizăm că acţiunea de marcare o privim în sens grafic normal,
marcajul care poate fi ataşat unei variabile proziţionale alegându-se
fără criterii speciale (să presupunem că el este *, împreună eventual cu
anumiţi indici prin care să se identifice în care dintre execuţiile
corpului buclei s-a făcut marcarea). Iniţial, toate variabilele se
presupun a fi nemarcate. Dacă F conţine clauze de forma 1 → B (care
se consideră a fi de fapt de forma A1 ∧ A2 ∧ A3 …… ∧ Ak → B, cu A1,
A2, A3, ... , Ak marcaţi şi B nemarcat), se procedează conform
algoritmului, adică se marchează toate apariţiile lui B în F şi se trece la
pasul următor. Mai departe, la fiecare execuţie a corpului buclei (Paşii
3. şi 4.), fie se marchează o variabilă propoziţională nouă (nemarcată
încă), fie se iese din execuţia buclei. Pentru că numărul de variabile
peste care este construită formula F este finit, terminarea algoritmului
este evidentă. Dacă nu există deloc clauze de tipul 1 → B, algoritmul se
termină fără nici o execuţie a corpului buclei, cu răspunsul „DA”
(formula este satisfiabilă) şi cu asignarea S, în care S(A) = 0 pentru
fiecare A (care apare în F).
Arătăm în continuare că algoritmul este corect. Aceasta înseamnă că
ieşirea algoritmului satisface ceea ce am dorit, adică răspunsul „DA”/S
corespunde faptului că formula F furnizată la intrare este satisfiabilă (şi
S ‘ F) iar răspunsul „NU” corespunde faptului că F este nesatisfiabilă.
Vom separa cazurile:
Cazul a). La terminarea execuţiei se obţine „DA” şi F nu conţine
clauze C de tipul 1 → B. După cum am observat, acest lucru înseamnă

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 85

că bucla s-a terminat fără să i se execute vreodată corpul având în plus


i = 0 şi S(A) = 0 pentru fiecare A (care apare în F). Atunci există în F
(la finalul execuţiei) doar clauze de tipul C1=A1 ∧ A2 ∧ A3 … ∧ Ak→B,
sau C2 = A1 ∧ A2 ∧ A3 …… ∧ Ak → 0 (k ≥ 1) , care n-au nici o
variabilă marcată. Avem atunci, pe scurt, S(C1) = S(0•0• ... •0 → 0)= 1,
respectiv S(C2) = 1, de unde găsim S(F) = 1.
Cazul b). La terminare se obţine „DA” iar F conţine şi clauze
C = 1 → B. Atunci bucla se termină după un anumit număr de execuţii
ale corpului său, valoarea lui i este 0 şi F conţine în final clauze C
având marcate anumite variabile. Dacă C = 1 → B (adică
C = B), unde B este marcat (S(B) = 1), avem imediat S(C) = 1. Dacă
C = A1 ∧ A2 ∧ A3 … ∧ Ak → B (k ≥ 1) este posibil ca, fie toate
variabilele din antecedent sunt marcate (dar atunci B este şi el marcat şi
atunci, din nou, S(C) = 1 pentru că semantica lui C este de tipul 1→ 1),
fie există măcar una dintre variabilele Ai de mai sus care este
nemarcată, dar atunci vom avea iarăşi S(C) = 1, pentru că semantica sa
este de tipul 0 → 1 sau 0 → 0. În sfârşit, dacă
C = A1 ∧ A2 ∧ A3 …… ∧ Ak → 0 (k ≥ 1), unde măcar un Ai este
nemarcat, semantica lui C este de forma 0 → 0 şi obţinem din nou
S(C) = 1). Concluzia este că S(C) = 1 pentru fiecare C care apare în F,
adică S(F) = 1.
Cazul c). Algoritmul se termină cu i = 1 şi răspunsul „NU”. Acest lucru
înseamnă că există în F o clauză C = A1 ∧ A2 ∧ A3 …… ∧ Ak → 0 cu
toţi Ai, i ∈ [k] marcaţi (obligatoriu, în F există şi clauze de forma

PDF created with pdfFactory Pro trial version www.pdffactory.com


86 Cristian Masalagiu

1 → B, B marcat), de unde rezultă că semantica lui C în asignarea


furnizată de algoritm este de forma 1 → 0 şi prin urmare S(C) = 0, de
unde S(F) = 0. Acest lucru nu înseamnă însă că F este nesatisfiabilă.
Pentru a trage această concluzie trebuie să arătăm că pentru nici o altă
asignare, ea nu poate fi model pentru F. Să presupunem (RA) că există
o asignare S’ (diferită de S, furnizată de algoritm) astfel încât
S’(F) = 1. Să observăm, pentru început, că toate variabilele care au fost
marcate în algoritm (deci cele care au primit valoarea de adevăr 1 în S),
trebuie să primească valoarea 1 în oricare S’ cu S’(F) = 1. Altfel spus,
asignarea S conţine cel mai mic număr posibil de valori 1 (atribuite
evident variabilelor marcate) astfel încît formula să aibă şanse să fie
satisfiabilă. Într-adevăr, pentru fiecare S’ cu S’(F) = 1, trebuie să avem
S’(C) = 1 pentru fiecare clauză C din F. Să ne ocupăm puţin de
momentul în care se marchează o variabilă B, ordonând clauzele din F
de forma C = A1 ∧ A2 ∧ A3 … ∧ Ak → B (k ≥ 1) după numărul de
variabile din antecedent (chiar în algoritm, selecţia unei clauze „pentru
marcare” se poate face după un asemenea criteriu):
• Clauze C de tipul 1 → B ≡ B (nici o variabilă în antecedent, B
nemarcat). De la acestea începe procesul de marcare. Din faptul
că S’(C) trebuie să fie egal cu 1, este clar că trebuie pus
S’(B) = 1 (B se şi marchează, deci S(B) = 1).
• Clauze C de forma A → B ≡  A ∨ B (o variabilă în
antecedent; A este marcat, B nemarcat). A nu putea fi marcat
decât dacă a apărut deja ca un consecvent într-o clauză de

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 87

tipul anterior, sau în una de acelaşi tip cu aceasta şi care are


antecedentul marcat. Prin urmare, în orice S’ cu S’(C) = 1,
trebuie oricum să avem S’(A) = 1, deci S’( A) = 0 şi atunci
S’(B) = 1 (concecinţa este că B se marchează, deci şi S(B) = 1).
• Continuăm raţionamentul cu C = A1 ∧ A2 → B (două variabile
în antecedent; ambele variabile marcate; B este, încă,
nemarcat), ajungând din nou la concluzia că pentru fiecare S’,
pentru a avea S’(C) = 1, trebuie să avem S’(B) = 1, precum şi
S(B) = 1.
Revenind, am arătat într-adevăr că pentru fiecare S’ astfel încât
S’(F) = 1, trebuie să avem S’(A) = 1 pentru fiecare A marcat de către
algoritm, adică pentru fiecare A care satisface şi S(A) = 1 (procesul
descris mai sus se continuă pentru oricâte variabile prezente în
antecedent, iar numărul acestora este finit). Prin urmare, avem şi
S’(C) = 0, de unde rezultă că S’(F) = 0, ceea ce este absurd.
Să arătăm în final că algoritmul Horn are timp de execuţie liniar.
Faptul că t(n) ∈ O(f(n)), unde f(n) = a•n + b (a, b ∈ N*), rezultă
imediat din faptul că la fiecare execuţie a corpului buclei se marchează
o nouă variabilă. Desigur că pentru a obţine în mod real acest lucru
algoritmul trebuie detaliat, în sensul că, de exemplu, în Paşii de tip 3
(de alegere a unei clauze corespunzătoare C), selecţia variabilei de
marcat trebuie făcută prin parcurgerea de un număr fix de ori
(independent de numărul de execuţii) a listei variabilelor peste care este
construită F. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


88 Cristian Masalagiu

Exemplu. Să aplicăm algoritmul de marcare următoarei formule Horn:


F = ( A ∨  D ) ∧ (  C ∨  A ∨ D ) ∧ (  A ∨  B ) ∧ D ∧  E.
Scriem întâi F ca o mulţime de implicaţii, obţinând
F = {D → A, C ∧ A → D, A ∧ B → 0, 1→ D, E → 0}. Înainte de
prima execuţie a corpului buclei, avem i = 0 şi toate variabilele sunt
nemarcate.
• Prima execuţie. Alegem clauza 1→D (de fapt, nu există altă
posibilitate). Toate apariţiile lui D se marchează cu *1:
D *1 → A, C ∧ A → D *1 , A ∧ B → 0, 1→ D *1 , E → 0.

• A doua execuţie. Alegem D → A (din nou, nu există decât o


unică posibilitate) şi A se marchează peste tot, cu *2 :
D *1 → A *2 , C ∧ A *2 → D *1 , A *2 ∧ B → 0, 1→ D *1 , E → 0.

• A treia execuţie nu mai are loc, deoarece nu mai există clauze


de tipul cerut. Cum valoarea lui i nu s-a modificat (a rămas 0),
răspunsul algoritmului este „DA”.
Prin urmare, F este satisfiabilă şi o structură S, model pentru F, este
definită prin S(A) = 1, S(B) = 0, S(C) = 0, S(D) = 1, S(E) = 0. ■

Am găsit prin urmare o subclasă „convenabilă” (acest lucru este


cumva subiectiv) de formule propoziţionale, si anume clasa formulelor
Horn, pentru care testarea satisfiabilităţii se poate face într-un timp
„rezonabil”. Deşi rezultatele teoretice generale ne spun că nu pot exista
metode sintactice mai bune dacât metoda semantică sugerată de
Algoritmul SAT (dacă ne referim la întrega mulţime LP), existenţa,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 89

dovedită de acum, a unor algoritmi care să nu facă apel explicit la


semantică, pare deja a fi un câştig.

§7. Rezoluţie în LP
Fără a restrânge generalitatea, putem presupune că lucrăm cu
formule din LP aflate în FNC, reprezentate sub formă de mulţimi
(finite) de clauze, iar clauzele ca mulţimi (finite) de literali.

Definiţia 2.9 (rezolvent). Fie clauzele C1, C2 , R. Spunem că R este


rezolventul lui C1, C2 (sau că C1, C2 se rezolvă în R, sau că R se
obţine prin rezoluţie într-un pas din C1, C2), pe scurt,
R = ResL(C1, C2), dacă şi numai dacă există un literal L ∈ C1 astfel
încât L ∈ C2 şi R = (C1 \ {L}) U (C2 \ { L }). ■

Vom putea reprezenta acest lucru şi grafic, prin arborele de rezoluţie:

C1 C2

L L

R
Vom renunţa la scrierea explicită a lui L sau/şi L în momentul în care
nu există cofuzii.

Observaţie. Rezolventul a două clauze este tot o clauză. Mai mult,


rezolventul a două clauze Horn este tot o clauză Horn. Clauza vidă ( )

PDF created with pdfFactory Pro trial version www.pdffactory.com


90 Cristian Masalagiu

poate fi obţinută prin rezoluţie din două clauze de forma C1 = {A} şi


C2 = {A}. În definiţia anterioară putem considera că C1 şi C2 sunt
diferite între ele. Dacă ele ar coincide, atunci C1 = C2 =... ∨L∨ L ∨…≡1,
adică acele clauze sunt tautologii, detectabile sintactic (în acest caz nu
ne mai interesează alte metode formale de studiere a satisfiabilităţii lor).

Exemplu.
Fie formula F = {{A, E,  B}, { A, B, C}, {A, D}, { A,  D,  E}}. Să
găsim câţiva dintre rezolvenţii care se pot obţine (succesiv) pornind de
cele cele patru clauze care compun F, notate respectiv C1, C2, C3, C4:

C1 C2 C1 C2 C1 C4

A A B B A A

{E, B, B, C} {A, E, A, C} {E,B,D,E}


C1 C4
E E
{A, B, A,D}

Aceştia au fost găsiţi apelând de fiecare dată la C1. Şi C2 poate fi sursa


unui întreg ”lanţ” de asemenea rezolvenţi:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 91

C2 C3

A A
{B, C, D} C1

B B

{C, D, A, E}

Mulţi dintre aceşti rezolvenţi „primari” nu sunt interesanţi, fiind


tautologii (datorită faptului că acele clauze alese spre rezolvare conţin
mai mult de un literal de tipul L/ L ). Procesul poate însă continua cu
găsirea de noi rezolvenţi folosindu-i şi pe cei obţinuţi din clauzele
iniţiale (cum este cazul şi mai sus) ş.a.m.d. ■

În acest moment putem să ne punem cel puţin două întrebări:


• Există cazuri în care procesul anterior (de aflare succesivă de
rezolvenţi noi) nu se termină?
• În caz de răspuns negativ şi presupunând că există o legătură
între acest proces sintactic (de obţinere de rezolvenţi) şi
satisfiabilitate, se pot obţine algoritmi (sintactici, eventual
performanţi) de testare a satisfiabilităţii unor formule?

Răspunsul îl vom da în cele ce urmează.

PDF created with pdfFactory Pro trial version www.pdffactory.com


92 Cristian Masalagiu

Teorema 2.9 (lema rezoluţiei). Fie oricare formulă F ∈ LP (aflată în


FNC şi reprezentată ca mulţime de clauze) şi R un rezolvent pentru C1,
C2 ∈ F. Atunci F este tare echivalentă cu F U{R}.
Demonstraţie.
„⇐”. Dacă S satisface F U{R} atunci desigur că S satisface F, conform
definiţiei (o structură satisface o mulţime de formule dacă satisface
fiecare element din mulţime).
„⇒”. Să presupunem că S ‘ F , adică S ‘ C, pentru fiecare C ∈ F. Fie

C1,C2 ∈ F şi R un rezolvent al lor, R = (C1 \ {L}) U (C2 \ { L }), unde


L ∈ C1, L ∈ C2 .
Cazul 1. S(L) = 1. Atunci S — L. Dar ştim că S ‘ C2 . Rezultă că

S ‘ C2 \ { L }, de unde S(R) = 1.

Cazul 2. S(L) = 0. Analog, arătându-se că S ‘ C1 \ {L}. ■

În teorema anterioară am fi putut considera, în loc de F, o mulţime


oarecare de clauze, chiar infinită.

Definiţia 2.10. Fie F o mulţime oarecare de clauze din LP şi C o


clauză. Spunem că lista C’1, C’2 , … , C’m este o demonstraţie prin
rezoluţie (în mai mulţi paşi) a lui C pornind cu F dacă sunt
satisfăcute condiţiile:
(i) Pentru fiecare i ∈ [m], fie C’i ∈ F, fie C’i este obţinut prin rezoluţie
într-un pas din C’j, C’k, cu j, k < i.
(ii) C = C’m. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 93

În condiţiile definiţiei, se mai spune că C este demonstrabilă


prin rezoluţie (pornind cu F, sau, în ipotezele date de F). Mai mult,
pentru a spune acest lucru, este suficient ca F să fie inserată (prezentă)
într-o demonstraţie şi nu să fie neapărat ultimul element al acesteia.
Intuitiv, o demonstraţie prin rezoluţie în mai mulţi paşi înseamnă o
succesiune finită de rezoluţii într-un pas, care poate fi reprezentată şi
grafic, printr-un arbore (a se vedea exemplul care urmează), sau chiar
ca un graf oarecare (dacă nu folosim noduri diferite pentru apariţiile
distincte ale unei aceleiaşi clauze). În particular, dacă C este clauza
vidă, atunci demonstraţia respectivă se numeşte şi respingere.
Numărul de paşi dintr-o demonstraţie este dat de numărul de clauze
obţinute prin rezoluţie într-un pas (din clauze anterioare). Acesta poate
fi considerat ca fiind o măsură a „mărimii” (lungimii) demonstraţiei. O
altă măsură pentru o demonstraţie reprezentată ca text poate fi chiar
lungimea listei (numărul total de clauze, sau chiar numărul total de
clauze distincte). Dacă reprezentăm o demonstraţie ca un arbore, putem
folosi şi măsuri specifice, cum ar fi adâncimea arborelui, numărul de
nivele ([IVA]), etc. Convenim să eliminăm din orice demonstraţie
rezolvenţii care conţin atât L cât şi  L, aceste clauze fiind tautologii şi
deci neinteresante din punctul de vedere al studiului satisfiabilităţii
unei formule aflate în FNC.

Exemplu. Fie F = {{A, B, C}, {A}, {A, B, C}, {A, B}}. O


respingere poate fi descrisă prin arborele:

PDF created with pdfFactory Pro trial version www.pdffactory.com


94 Cristian Masalagiu

{A, B, C} {A, B, C}

C C

{A, B} {A, B}

B B

{A} {A}

A A

Definiţia 2.11 (mulţimea rezolvenţilor unei mulţimi de clauze). Fie F


o mulţime de clauze din LP (nu neapărat finită). Notăm succesiv:
• Res(F) = F U{R | există C1, C2 ∈ F astfel încât R = Res(C1, C2)}.
• Res(n+1)(F) = Res(Res(n)(F)), n ∈ N. Prin Res(0)(F) vom înţelege F şi
atunci vom putea pune şi Res(1)(F) = Res(F).
• Res*(F) = U Res(n) (F).
n∈N

Res(n)(F) se va numi mulţimea rezolvenţilor lui F obţinuţi în cel mult


n paşi, iar Res*(F) mulţimea (tuturor) rezolvenţilor lui F. ■

Observaţie. Direct din definiţie rezultă că:


F = Res(0)(F) ⊆ Res(1)(F) ⊆ ... ⊆ Res(n)(F) ⊆ ... ⊆ Res*(F).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 95

Putem da atunci şi o definiţie structurală a lui Res*(F). Vom nota astfel


cu Resc mulţimea definită prin:
Baza. F ⊆ Resc.
Pas constructiv: Dacă C1, C2 ∈ Resc şi C = Res(C1, C2), atunci
C ∈ Resc. ■

Rămâne să arătăm că cele două definiţii introduc aceeaşi mulţime.

Teorema 2.10. Pentru fiecare F ∈ LP, avem Res*(F) = Resc.


Demonstraţie. Arătăm egalitatea prin dublă incluziune.

„⊆”. Demonstrăm prin inducţie matematică adevărul afirmaţiei din


metalimbaj (∀n)P(n), unde P(n): Res(n)(F) ⊆ Resc.
Baza. n = 0. Trebuie arătat că F = Res(0)(F) ⊆ Resc, ceea ce este
imediat din definiţia lui Resc.
Pas inductiv. Presupunem că Res(n)(F) ⊆ Resc şi arătăm că
Res(n+1)(F) ⊆ Resc, ceea ce este din nou imediat din definiţia lui Resc şi
Definiţia 2.11. În sfârşit, avem Res*(F) ⊆ Resc, direct din Definiţia
2.11 şi observaţia care urmează acesteia.

„⊇”. Procedăm prin inducţie structurală, mai exact arătăm că afirmaţia


din metalimbaj (∀C ∈ Resc)(C ∈ Res*(F)) este adevărată.
Baza. C ∈ F. Adevărat, deoarece F = Res(0)(F) ⊆ Res*(F).

PDF created with pdfFactory Pro trial version www.pdffactory.com


96 Cristian Masalagiu

Pas inductiv. Fie C = Res(C1, C2), C1, C2 ∈ Resc şi resupunem că C1,


C2 ∈ Res*(F). Să arătăm că C ∈ Res*(F). Acest fapt urmează imediat,
conform Definiţiei 2.11. ■

De acum înainte vom folosi ambele notaţii pentru mulţimea


rezolvenţilor unei mulţimi de clauze. Şi în Teorema 10 se putea
considera că F reprezintă o mulţime oarecare de clauze.

Teorema 2.11. Fie F o mulţime de clauze din LP (nu neapărat finită).


O clauză C ∈ LP se poate demonstra prin rezoluţie pornind cu clauzele
lui F dacă şi numai dacă există k ∈ N, asfel încât C ∈ Res(k)(F).
Demonstraţie. Fie F şi C fixate ca în enunţ.

„⇒”. Să presupunem că există o demonstraţie prin rezoluţie a lui C


pornind cu F, C’1, C’2, ... , C’m = C. Este îndeplinită condiţia (i) din
Definiţia 2.10 şi atunci înseamnă că pentru fiecare i ∈ [m], avem
C’i ∈ Resc, care coincide cu Res*(F), conform Teoremei 2.10. Prin
urmare, conform definiţiei lui Res*(F) există k ∈ N, asfel încât
C ∈ Res(k)(F).

„⇐”. Să presupunem că există k ∈ N, asfel încât C ∈ Res(k)(F) (pe k îl


considerăm a fi cel mai mic număr natural care satisface condiţia).
Conform Definiţiei 2.11, avem Res(j)(F) = Res(Res(j-1)(F)) =
Res(j-1)(F) U {R | există C1, C2 ∈ Res(j-1)(F) astfel încât
R = Res(C1, C2)}, pentru fiecare j ∈ [k]. Putem conveni chiar ca în a

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 97

doua mulţime din reuniunea de mai sus să nu punem decât rezolvenţii


noi, care nu apar în Res(j-1)(F). Atunci C apare efectiv în Res(k)(F) dar
nu şi în Res(k-1)(F). Dacă k = 0, am terminat (C ∈ F şi lista formată doar
din C constituie o demonstraţie prin rezoluţie a lui C). În caz contrar,
mai întâi construim algoritmic un graf neorientat în felul următor: la
Pasul 1 punem ca noduri elementele din Res(k)(F), care nu sunt şi în
Res(k-1)(F); la Pasul 2 punem nodurile din Res(k-1)(F) care nu sunt în
Res(k-2)(F), precum şi muchiile corespunzătoare care unesc nodurile
puse deja în graf, conform rezoluţiilor într-un pas din care ele provin,
ş. a. m. d. În cel mult k + 1 paşi, vom plasa în graf şi elementele
(folosite) ale lui F, precum şi toate muchiile corespunzătoare
rezoluţiilor într-un pas cu ajutorul cărora se construieşte Res(k)(F).
Considerăm acum subgraful generat de nodul C şi toate nodurile aflate
pe lanţuri de la C la frunze ([IVA]). Acesta este un arbore cu rădăcina
C, care reprezintă o demonstraţie a lui C pornind cu o submulţime a lui
F, deci şi cu F (desigur că demonstraţia se obţine prin „listarea”
corespunzătoare a nodurilor, ultimul element din listă fiind C). Dacă
subgraful considerat nu este arbore, acest lucru se datorează faptului că
măcar o clauză C’ este utilizată în mai mulţi paşi de rezoluţie. Graful
poate fi uşor transformat în arbore prin multiplicarea nodurilor de tipul
C’ şi a arcelor aferente. ■

După cum probabil s-a putut observa, în cele de mai sus am


folosit în majoritatea cazurilor termenul mulţimea de clauze F şi nu
formula F (aflată în FNC). Deşi pe noi ne interesează doar formulele
(care pot fi privite ca mulţimi finite de clauze în cazul în care ne

PDF created with pdfFactory Pro trial version www.pdffactory.com


98 Cristian Masalagiu

interesează doar satisfiabilitatea lor), aproape toate rezultatele sunt


valabile şi pentru mulţimi infinite (numărabile) de formule (clauze).
Teorema următoare stabileşte o legătură importantă, privind
satisfiabilitatea, între mulţimile infinite şi cele finite de formule
oarecare din LP.

Teorema 2.12 (de compactitate pentru LP). Fie M o mulţime infinită


(numărabilă) de formule din LP. M este satisfiabilă dacă şi numai dacă
fiecare submulţime finită a sa este satisfiabilă.
Demonstraţie.

„⇒”. Dacă există structura S astfel încât S ‘ M, adică S(F) = 1 pentru

fiecare F ∈ M, atunci evident că acelaşi lucru se întâmplă pentru fiecare


submulţime (finită) M’ ⊆ M.

„⇐”. Pentru fiecare n ∈ N, vom nota Mn @ {F ∈ M | subf(F) ∩

A = prop(F) ⊆ An}, adică mulţimea formulelor din M care sunt


construite peste (cel mult) mulţimea de variabile propoziţionale
An = {A1, A2, … , An}. Cum mulţimea funcţiilor booleene de n
n n
variabile (FB(n)) are cardinalul 22 , în Mn există cel mult 22 formule cu
tabele de adevăr distincte. Mai mult, direct din definiţii avem

M1 ⊆ M2 ⊆ … ⊆ Mn ⊆ ... ⊆ M şi M = U M n . Revenind, să
n =1

presupunem că fiecare submulţime finită a lui M este satisfiabilă şi să

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 99

arătăm că M este satisfiabilă. Fie K ⊆ M orice submulţime finită


(satisfiabilă) a lui M. Atunci există n, natural, astfel încât K ⊆ Mn . Fie

M’n = {F1, F2, … , Fk n }, kn ≤ 2 2 , mulţimea elementelor lui Mn care au


n

tabele de adevăr distincte. Pentru fiecare formulă G din K alegem o


formulă şi numai una, Fi, din M’n, astfel încât G ≡ Fi. Fie M "n mulţimea
tuturor acestor formule, pentru care este satisfăcută condiţia: K este
satisfiabilă dacă şi numai dacă M’’n este satisfiabilă. Fie atunci Sn un

model pentru M "n . Avem şi Sn ‘ Mn pentru că pentru fiecare

F ∈ Mn \ M "n , există G ∈ M "n astfel încât Sn(G) = Sn(F). Din ipoteza

noastră (fiecare submulţime finită a lui M este satisfiabilă) rezultă


aşadar că există un şir de structuri care satisfac:
S1 ‘ M1, S2 ‘ M2, … , Sn ‘ Mn , …
Renumerotând dacă este cazul variabilele iniţiale, putem presupune că
fiecare dintre mulţimile de mai sus este nevidă şi că modele sunt
„construite succesiv”, după cum este descris în ceea ce urmează. S1
există şi este indiferent modul său de obţinere. Apoi, pentru fiecare
i ∈ {1, 2, ...}, construim Si+1 pornind de la Si (şi modificând eventual şi
pe Si-1, … , S1), în felul următor: Si+1 „pleacă” cu valorile de adevăr
pentru A1, A2, ... , Ai stabilite de către Si şi „fixează” o valoare pentru

Ai+1, în mod aleator. Dacă nu avem Si+1 ‘ Mi+1, atunci revenim, alegând

o structură Si+1 care să satisfacă Mi+1 (ştim că există), prin schimbarea,


eventual, şi a structurilor anterioare S1, S2, ... , Si (acestea vor fi simple

PDF created with pdfFactory Pro trial version www.pdffactory.com


100 Cristian Masalagiu

restricţii ale lui Si+1, lucrul fiind evident posibil deoarece Mi ⊆ Mi+1).

Ca urmare, putem defini structura S : A → {0,1}, dată prin


S(Ai) = Si(Ai), pentru fiecare i ∈ N*. Faptul că S este funcţie şi model
pentru M este imediat. ■

Teorema 2.13. Fie F ∈ LP, aflată în FNC şi reprezentată ca mulţime


(finită) de clauze. Atunci Res*(F) este finită.
Demonstraţie. Arătăm mai întâi că există un k ∈ N astfel încât
Res(k)(F) = Res(k+1)(F). Fie | prop(F)| = n. Numărul total (m, să spunem)
al clauzelor peste (cel mult) n variabile atomice date este finit (de fapt,
m = 3n). Orice rezoluţie într-un pas „şterge” câte un literal. Prin
urmare, indiferent câte dintre cele m posibile clauze sunt prezente
iniţial în F şi oricâţi paşi de rezoluţie am efectua, cardinalul oricărui
Res(i)(F) nu poate depăşi m. Datorită acestui fapt şi existenţei
incluziunii Res(i)(F) ⊆ Res(i+1)(F) (pentru fiecare i ∈ N), afirmaţia
noastră se deduce imediat. Mai mult, notând cu j pe cel mai mic k cu
proprietatea de mai sus, avem Res(j)(F) = Res(j+l)(F), pentru fiecare l ∈
N (lucru care rezultă printr-o simplă inducţie matematică şi folosind
Definiţia 2.11). De aici conchidem imediat că Res(j)(F) = Res*(F), de
unde card(Res*(F)) ≤ m. ■

Reamintind că vom elimina din orice mulţime de forma Res*(F),


pe măsură ce se obţin, toate clauzele care conţin o subformulă de tipul
A ∨  A, enunţăm cea mai importantă teoremă din acest capitol.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 101

Teorema 2.14 (teorema rezoluţiei pentru calculul propoziţional).


Fie F o mulţime oarecare de clauze din calculul propoziţional. Atunci F
este nesatisfiabilă dacă şi numai dacă ∈ Res*(F).
Demonstraţie. Conform Teoremei de compactitate, ştim că F este
nesatisfiabilă dacă şi numai dacă există o submulţime finită a sa care
este nesatisfiabilă. Din acest motiv, în cele de mai jos vom presupune
că F este o mulţime finită de clauze, sau, alternativ, o formulă
propoziţională aflată în FNC. Fără a restrânge generalitatea, putem
presupune deci că F este o formulă oarecare din LP (Teorema 2.6).

„⇐” (corectitudine). Să presupunem că ∈ Res*(F) şi să arătăm că F


este nesatisfiabilă. Conform Definiţiei 2.11 şi aplicării repetate (de un
număr finit de ori) a Lemei rezoluţiei, avem F ≡ Res(1)(F) ≡ Res(2)(F) ≡
… ≡ Res(n)(F) ≡ … . Dacă ∈ Res*(F) atunci există k ∈ N, astfel încât
∈ Res(k)(F), adică Res(k)(F) este nesatisfiabilă ( este nesatisfiabilă
prin convenţie). Cum F ≡ Res(k)(F), rezultă că F este nesatisfiabilă.

„⇒” (completitudine). Să presupunem că F este nesatisfiabilă şi să


arătăm că ∈ Res*(F). Fie n = card(prop(F)). Procedăm prin inducţie
asupra lui n, adică demonstrăm astfel adevărul metateoremei (∀n ∈ N)
( | prop(F)| = n şi F este nesatisfiabilă ⇒ ∈ Res*(F)).
Baza. n = 0. Aceasta înseamnă că F = { } = Res*(F) şi concluzia este
evidentă.
Pas inductiv. Presupunem afirmaţia adevărată pentru formule
construite peste n variabile propoziţionale şi o demonstrăm pentru

PDF created with pdfFactory Pro trial version www.pdffactory.com


102 Cristian Masalagiu

formule construite peste n+1 formule atomice. Fie F ∈ LP, construită


peste An+1 = {A1, A2, … , An, An+1}. Pornind de la această formulă vom
A An + 1
construi alte două formule, notate F0 n + 1 şi respectiv F1 , în modul
următor:

A
F0 n +1 se formează din F prin eliminarea sintactică a oricărei

apariţii a literalului pozitiv An+1 din orice clauză şi apoi


eliminarea în totalitate a tuturor clauzelor care conţin o apariţie
negativă a literalului An+1.

An + 1
F1 se obţine prin dualizare, adică din F se scot din toate
clauzele apariţiile negative ale lui An+1 şi se elimină apoi toate
clauzele care conţin apariţii pozitive ale aceleiaşi variabile.
A n +1 An + 1
Afirmaţie. Dacă F este nesatisfiabilă, atunci atât F0 cât şi F1

sunt nesatisfiabile. Să presupunem că F este nesatisfiabilă şi nu are


A n +1
clauze care sunt tautologii. Fie F0 şi fie S orice structură corectă

(definită pentru toate variabilele propoziţionale care intervin în


A
formulele considerate). Considerând clauzele C ale lui F0 n + 1 , avem

următoarele posibilităţi :
• C este o clauză din F, nemodificată. Evident că valoarea lui S
pentru această clauză nu se modifică şi astfel nu modifică
A
valoarea de adevăr a lui F0 n + 1 faţă de cea a lui F (dacă luăm în

considerare doar această clauză).


• C provine dintr-o clauză din F, care conţinea în plus o apariţie
a lui An+1. Dacă S(An+1) = 0, atunci S(C U {An+1 }) = S(C), din

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 103

A n +1
nou valoarea de adevăr a lui F0 nemodificându-se faţă de cea

a lui F (relativ la C). Dacă S(An+1) = 1, avem S(C U {An+1}) = 1.


Cum F este nesatisfiabilă, înseamnă că există o altă clauză C’,
C U {An+1} ≠ C’ ∈ F cu S(C’) = 0. Este evident că C’ nu poate
conţine pe An+1 deoarece S(An+1) = 1 şi nici pe  An+1 (în acest
A
caz C nu ar mai fi apărut în F0 n + 1 ). Prin urmare, C’ apare şi în
A n +1 A
F0 , de unde urmează imediat că S( F0 n + 1 ) = 0.

Mai există posibilitatea ca nesatisfiabilitatea lui F să fi provenit din


faptul că S(C) = 0 pentru o clauză C ∈ F care conţine neapărat  An+1,
A n +1
restul clauzelor lui F, ca şi cele ale lui F0 , fiind adevărate în S. Acest

lucru înseamnă că în această structură avem S(An+1) = 1. Să considerăm


structura S’ care coincide cu S, exceptând valoarea lui An+1, care este
pusă pe 0. Conform celor de mai sus, avem imediat S’(F) =1, ceea ce
A n +1
este absurd, F fiind nesatisfiabilă. Rezultă că F0 este nesatisfiabilă.
An + 1
Se procedează similar pentru F1 . (q. e. d.)

A n +1 An +1
În acest moment ştim că formulele F0 şi F1 sunt nesatisfiabile şi,
mai mult, sunt construite peste cel mult n variabile. Aplicând ipoteza
∈ Res*( F0
A n +1
inductivă pentru aceste formule rezultă că ) şi

∈ Res*( F1
An +1
). Conform Teoremelor 2.11 şi 2.13, există o respingere
A n +1
(D0) C1, C2, … , Cl = , pornind cu elementele lui F0 , precum şi o

PDF created with pdfFactory Pro trial version www.pdffactory.com


104 Cristian Masalagiu

An +1
respingere (D1) B1, B2, … Bt = , pornind cu clauzele lui F1 .
Adăugăm acum la fiecare clauză din (D0) pe An+1, peste tot de unde
acesta a fost scos (inclusiv la clauzele rezultate în urma aplicării
rezoluţiei într-un pas), obţinând o demonstraţie prin rezoluţie notată
(D0’) şi, analog, adăugăm la fiecare element din (D1) pe An+1 acolo
unde este necesar, obţinând o altă demonstraţie prin rezoluţie, notată
(D1’) (odată An+1 respectiv An+1 introduse, ele nu vor mai fi şterse).
Sunt posibile următoarele situaţii:
• Ultima clauză a lui (D0’) este C’l = {An+1} şi ultima clauză a lui
(D1’) rămâne B’t = Bt = (sau invers, C’l = Cl = şi B’t = Bt =
{An+1}). Atunci concatenăm cele două liste care reprezintă
demonstraţiile (D0’) şi (D1’), rezultând evident o respingere
pornind cu clauzele lui F.
• Ultima clauză lui (D0’) este C’l = {An+1}şi ultima clauză a lui
(D1’) este B’t = {An+1}. Atunci concatenăm din nou cele două
liste şi apoi mai facem un pas de rezoluţie obţinând clauza finală
C = Res(C’l, B’t) = . Din nou avem o respingere pornind cu
clauzele lui F.
În ambele situaţii, conform Teoremei 2.11, rezultă că ∈ Res*(F). ■

În urma acestui rezultat, putem concluziona că există algoritmi


sintactici pentru a testa nesatisfiabilitatea formulelor din logica
propoziţională, ei rămânând (din păcate, dar nesurprinzător)
exponenţiali ca timp de execuţie. Lucrările [MAS4] şi [MAS5] pot fi
consultate pentru alte detalii legate de complexitatea rezoluţiei. Să

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 105

remarcăm şi faptul că testarea satisfiabilităţii nu implică nimic special


(în acest caz, condiţia de verificat va fi ∉ Res*(F)), ca de altfel nici
testarea validităţii (F este validă dacă şi numai dacă  F este
contradicţie; prin urmare, putem aplica Teorema 2.14 lui  F). A testa
dacă o formulă F este satisfiabilă dar nevalidă impune însă aplicarea
teoremei anterioare atât pentru F (F este satisfiabilă dacă ∉ Res*(F))
cât şi pentru  F ( F este satisfiabilă dacă ∉ Res*( F)). Singura şansă
(oricât de puţin probabilă ar părea) de a găsi algoritmi performanţi
rămâne aceea de a căuta subclase ale lui LP „suficient de interesante
din punct de vedere practic”, pentru care asemenea algoritmi să existe
(avem deja un exemplu: clasa formulelor Horn). Avantajul în acest
moment este că aceste subclase pot fi selecţionate ţinându-se cont
(numai) de motivaţii sintactice.

§8. Rafinări ale rezoluţiei: strategii şi restricţii


Rafinările rezoluţiei sunt metode prin care se urmăreşte
obţinerea clauzei vide (dacă acest lucru este posibil) într-un număr cât
mai mic de paşi de rezoluţie. Pornind cu formula F = {C1, C2, … , Cn}
(aflată în FNC şi scrisă ca o mulţime de clauze, la rândul lor clauzele
fiind scrise ca mulţimi de literali), se poate construi efectiv mulţimea
Res*(F), care poate fi reprezentată (fiind finită), după cum deja ştim, ca
un graf neorientat (nodurile sunt rezolvenţii succesivi, inclusiv clauzele
iniţiale, iar muchiile sunt introduse prin rezoluţiile într-un pas aplicate).
Practic, acest graf ar trebui să cumuleze toate posibilele demonstraţii
prin rezoluţie care pornesc cu clauzele lui F (reamintim că anumiţi

PDF created with pdfFactory Pro trial version www.pdffactory.com


106 Cristian Masalagiu

rezolvenţi sunt totuşi excluşi, deoarece reprezintă tautologii). Teorema


rezoluţiei sugerează crearea mai întâi a acestui graf de rezoluţie total şi
apoi parcurgerea lui pentru a vedea dacă este (eticheta unui) nod în
graf. Teorema 2.11 ne indică faptul că este suficient să găsim o
respingere în loc de a creea şi apoi parcurge întregul graf. Rafinările se
împart în două mari categorii: strategii şi restricţii.
Strategiile nu restrâng, în general, spaţiul de căutare (adică
graful total) dar folosesc anumite informaţii suplimentare despre
clauze, astfel încât să crească şansele pentru selectarea rapidă a unei
demonstraţii căutate, adică a unui „cel mai scurt drum” pornind de la
frunze (elementele lui F), către o rădăcină (clauza vidă). Astfel, cel
puţin la modul ideal, graful total nu se construieşte în întregime, ci
doar acele porţiuni din el (cât mai puţine şi cât mai mici), care este
posibil să „conţină” măcar o respingere. Cel mai cunoscut exemplu
este strategia unitară, în care se recomandă ca la fiecare pas al
rezoluţiei măcar una dintre clauze să conţină un singur literal (dacă
însă nu mai poate fi aleasă nici o asemenea clauză unitară, se continuă
procesul de obţinere de noi rezolvenţi în mod obişnuit). Prin urmare,
strategiile nu distrug completitudinea rezoluţiei (dacă o formulă este
nesatisfiabilă, atunci se poate demonstra acest lucru prin rezoluţie,
găsindu-se o respingere), dar, în cel mai rău caz, este posibil să nu
conducă la nici o economie de timp.
Pe de altă parte, restricţiile distrug în multe situaţii
completitudinea rezoluţiei (există formule nesatisfiabile pentru care nu
se pot găsi respingeri, în situaţia în care paşii de rezoluţie sunt supuşi
unor condiţii prea restrictive), deoarece spaţiul de căutare este practic

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 107

micşorat într-un mod, să-i spunem, abuziv. Astfel, o anumită restricţie


poate interzice total folosirea (într-un pas de rezoluţie) a unor clauze
având o anumită formă sintactică. Restricţiile rămân însă complete
pentru anumite subclase de formule propoziţionale. Există mai multe
exemple importante de restricţii, câteva dintre ele fiind trecute în
continuare în revistă.

Rezoluţia pozitivă (P-rezoluţia). La fiecare pas al rezoluţiei (al unei


demonstraţii prin rezoluţie), măcar una dintre clauze trebuie să fie o
clauză pozitivă.
Rezoluţia negativă (N-rezoluţia). La fiecare pas al rezoluţiei măcar una
dintre clauze se cere să fie negativă.
Rezoluţia liniară bazată pe o clauză iniţială. Fie F ∈ LP,
F = {C1, C2, … , Cn} o mulţime de clauze (numite şi clauze de intrare)
şi o clauză fixată C ∈ F (numită clauză iniţială sau clauză de bază). O
rezoluţie liniară bazată pe C este o (demonstraţie prin) rezoluţie în care
la fiecare pas se aleg spre a fi rezolvate două clauze C1 şi C2, dintre care
C1 este rezolventul pasului anterior, iar C2 (clauza suplimentară,
definită, exactă, precisă, de program) este fie o clauză de intrare, fie un
rezolvent obţinut anterior în demonstraţie. La primul pas, avem C1 = C
şi C2 ∈ F. În particular, se poate introduce în plus o funcţie de selecţie
pentru clauzele definite, adică o modalitate precisă (bazată pe eventuale
informaţii suplimentare, sau pe forma sintactică a clauzelor) de alegere
a clauzelor de tip C2. Obţinem astfel aşa-numita SLD-rezoluţie
(rezoluţie Liniară cu funcţie de Selecţie pentru clauzele Definite).

PDF created with pdfFactory Pro trial version www.pdffactory.com


108 Cristian Masalagiu

SLD-rezoluţia se utilizează cu succes pentru clauzele Horn (alte detalii


sunt în Capitolul 5). În acest caz, ea va fi atât o rezoluţie liniară cât şi
una de intrare (a se vedea mai jos). Astfel, putem considera că F este
partiţionată în F1 = {C’1, C’2, ... , C’m}, care sunt clauze Horn pozitive
(doar acestea numindu-se aici clauze definite, program, etc.) şi
F2 = {N1, N2, ... , Ns}, care sunt clauze Horn negative (numite şi clauze
scop). Pentru a obţine o SLD-rezoluţie, clauza de bază este o clauză
scop, iar clauzele suplimentare trebuie să fie clauze pozitive (practic,
elemente ale lui F1, pentru că toţi rezolvenţii obţinuţi pe parcurs sunt
clauze negative).

Exemplu. Să se găsească o respingere liniară bazată pe C = {A, B} şi


pornind cu F = { {A, B}, { A, B}, { A,  B}}. În cele de mai jos (sunt
reprezentaţi doi arbori de rezoluţie distincţi), în stânga avem ceea ce am
cerut, iar în dreapta o respingere oarecare, aceasta din urmă fiind „mai
scurtă”.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 109

{A,B} {A, B} {A,B} {A,B} {A,B} {A,B}

B B B B B B

{A} {A,B} {A} {A}

A A A A

{B} {A,B}

B B

{A} {A}

A A

Rezoluţia bazată pe o mulţime suport. Se porneşte cu formula F,


precum şi cu mulţimea suport T ⊆ F, singura condiţie fiind că F \ T
trebuie să fie satisfiabilă (desigur că, în principiu, acest lucru trebuie să
fie cunoscut aprioric şi nu după aplicarea unuia dintre algoritmii deja
descrişi, care folosesc tot rezoluţia). O demonstraţie din F folosind
(bazată pe) T satisface cerinţa că în fiecare pas de rezoluţie măcar una
dintre clauze trebuie să nu aparţină lui F \ T (situaţie foarte
convenabilă dacă numărul de elemente din T este mic, preferabil egal

PDF created with pdfFactory Pro trial version www.pdffactory.com


110 Cristian Masalagiu

cu unu). Astfel, se poate modela o situaţie reală în care dispunem de o


anumită bază de cunoştinţe, exprimată printr-o mulţime satisfiabilă de
formule F’ = {F1, F2, ... , Fn}, noi dorind să aflăm dacă o altă afirmaţie,
exprimată, să zicem, prin formula G, este consecinţă semantică din F’.
Conform Teoremei 2.3, acest lucru este echivalent cu a arăta că
F = {F1, F2, ... , Fn,  G} este nesatisfiabilă, ceea ce se poate face
utilizând rezoluţia, după ce toate formulele lui F sunt „aduse” la FNC
(atunci mulţimea suport T va fi constituită din formulele G1, G2, ... , Gk,
adică din reprezentarea formulei  G ca mulţime de clauze).
Rezoluţia de intrare. În orice pas al acestui tip de rezoluţie, măcar una
dintre clauze trebuie să fie o clauză de intrare (adică din mulţimea
iniţială F). Se observă imediat că acest tip de rezoluţie poate fi
considerat şi ca o rezoluţie liniară, bazată pe (oricare) C ∈ F.
Rezoluţia unitară. Într-o demonstraţie de acest tip, orice rezolvent
poate fi obţinut doar dacă (aici este diferenţa faţă de strategia cu
acelaşi nume) măcar una dintre cele două clauze este alcătuită dintr-un
unic literal. Deoarece „lungimea” (numărul de literali ai) unui rezolvent
scade cu o unitate la aplicarea oricărui pas de rezoluţie, şansele de a
obţine „repede” clauza vidă sunt suficient de mari.
Teorema următoare o dăm fără demonstraţie deoarece este
importantă pentru anumite detalii legate de implementările programelor
logice, detalii care nu sunt tratate nici măcar în Capitolul 5.

Teorema 2.16. P-rezoluţia, N-rezoluţia, rezoluţia liniară şi rezoluţia


bazată pe o mulţime suport sunt complete. Rezoluţia unitară, rezoluţia

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 111

de intrare şi SLD-rezoluţia sunt complete doar pentru clasa formulelor


Horn. ■

§9. Recapitulare şi Index


În acest capitol am introdus sintaxa şi semantica formală a
unui limbaj logic, privit în sensul unei mulţimi de formule. Acestea
reprezintă, într-un mod precis, cunoştinţele noastre despre anumite părţi
ale realităţii. Sunt transpuse într-o formă exactă conceptele şi principiile
principale ale logicii aristotelice, printre care bivalenţa/tertium non
datur şi extensionalitatea. Sintactic, mulţimea formulelor logicii
propoziţionale – notată LP – poate fi definită constructiv, pornind de la
o mulţime numărabilă de formule atomice şi utilizând conectorii logici
şi, sau, non, eventual şi implică. O formulă poate fi „recunoscută fără
dubii” (problema apartenenţei unui şir finit de caractere la LP este
decidabilă) şi poate fi reprezentată ca un arbore. Există şi reprezentări
standard ale formulelor, prin forme normale. Semantica unei formule
este o valoare de adevăr (0 – adevărat, 1 – fals), valoare care se
determină tot într-un mod standard. Această valoare este unică, odată
ce este cunoscută o structură corectă, adică o asignare pentru formulele
atomice componente. Definiţia semanticii se bazează şi pe rezultatele
cunoscute despre funcţiile booleene. Am evidenţiat apoi clasele de
formule satisfiabile, valide şi nesatisfiabile, introducându-se şi
studiindu-se alte concepte de natură semantică, cum ar fi cele de
echivalenţă (slabă, tare) sau de consecinţă semantică. Problema cea mai
importantă de care ne-am ocupat a fost problema SAT (a satisfiabilităţii

PDF created with pdfFactory Pro trial version www.pdffactory.com


112 Cristian Masalagiu

formuleleor din LP), despre care am arătat că este decidabilă dar de


complexitate (timp) exponenţială. Primii algoritmi descrişi erau
bazaţi pe semantică. Din punctul de vedere al tratării automate (cu
ajutorul unui calculator) a problemei SAT, sunt mai convenabili
algoritmii de decizie bazaţi pe sintaxă, deşi aceştia nu sunt mai rapizi,
la nivel global. Am prezentat un asemeanea algoritm (Teoremele 2.11,
2.13, 2.14), care foloseşte conceptul de rezoluţie (propoziţională).
Deşi metoda rezoluţiei nu aduce îmbunătăţiri semnificative ale timpului
necesar pentru rezolvarea SAT (în sensul teoriei generale a
complexităţii şi pentru întreaga clasă LP), s-au putut pune în evidenţă
strategii şi restricţii ale rezoluţiei, care măresc şansele găsirii rapide a
răspunsului, precum şi subclase de formule pentru care problema poate
fi rezolvată în timp liniar (cum ar fi clasa formulelor Horn, pentru
care putem aplica atât algoritmul de marcare, cât şi o variantă
convenabilă de implementare a SLD-rezoluţiei). Se poate argumenta
că mulţimea LP este „prea simplă” în privinţa „puterii” de a reprezenta
lumea reală şi în consecinţă nu merită atenţie specială. Este adevărat că
LP poate fi inclusă în mulţimea de formule a calculului cu predicate
de ordinul I (care va constitui obiectul de studiu al următorului
capitol), dar am considerat ca benefică introducerea şi prezentarea ei
separată, din motive didactice. De altfel, deşi destul de restrictivă, LP
este suficient de „bogată” pentru a putea exprima (şi deci, studia
formal) afirmaţii intreresante privind lumea reală. Urmărind exemplul
de mai jos, vom înţelege poate mai uşor/mai exact conţinutul de până în
prezent al cărţii.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 113

Exemplu. Fie următoarea afirmaţie:


Dacă există petrol în Patagonia atunci fie experţii au dreptate, fie
guvernul minte. Nu există petrol în Patagonia sau experţii greşesc,
aşadar guvernul nu minte.
O primă întrebare ar fi: Formulează ea un adevăr?
Logica ne oferă o modalitate de a răpunde la întrebare cât mai exact.
Ideea este de a exprima afirmaţia anterioară, cât mai adecvat, ca o
formulă F din LP şi apoi de a vedea dacă formula respectivă este
satisfiabilă, validă sau contradicţie, pentru a putea trage concluziile de
rigoare. Pentru aceasta, vom izola următoarele propoziţii, pe care le
vom privi drept variabile (elemente din A):
P - Există petrol în Patagonia
E - Experţii au dreptate
G - Guvernul minte
Înainte de a concepe formula, ar trebui ca afirmaţia să fie rescrisă, tot în
limbaj natural, astfel încât să transpară mai clar ceea ce vrea să
exprime. În continuare, 1., 2. şi 3. sintetizeză cunoştinţele prezente în
afirmaţie:
1. Dacă există petrol în Patagonia atunci, sau experţii au
dreptate, sau guvernul minte (F1) şi
2. Nu există petrol în Patagonia sau experţii greşesc (F2),
Înafară de aceste ipoteze, există şi o concluzie:
3. Aşadar guvernul nu minte (F3).
Formula noastră ar putea fi deci:

PDF created with pdfFactory Pro trial version www.pdffactory.com


114 Cristian Masalagiu

F = (F1 ∧ F2) → F3, unde F1 = P → (E ∨ G), F2 =  P ∨  E şi


F3 =  G, adică:
F = ((P → (E ∨ G)) ∧ (  P ∨  E)) →  G.
Să determinăm formal valoarea de adevăr a lui F.
Metoda 1 (încercăm să folosim algoritmul de marcare). Pentru
aceasta, F ar trebui să fie tare echivalentă cu o formulă Horn:
F≡
(definiţia implicaţiei)
≡ ((  P ∨ E ∨ G ) ∧ (  P ∨  E )) ∨  G ≡
(de Morgan)
≡ (  P ∧  E ∧  G ) ∨ (  P ∧   E) ∨  G ≡
(dubla negaţie,
asociativitate)
≡ (P ∧  E ∧  G) ∨ ( (P ∧ E) ∨  G) ≡
(distributivitate)
≡ (P ∧  E ∧  G) ∨ ((P ∨  G) ∧ (E ∨  G)) ≡
(distributivitate,
idempotenţă)
≡ (P ∨  G) ∧ (P ∨ E ∨  G) ∧ (  E ∨ P ∨  G) ∧ ( E ∨ E ∨  G) ∧
∧ ( G ∨ P) ∧ ( G ∨ E) ≡
(legea tautologiei,
idempotenţă,
comutativitate)

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 115

≡ (P ∨  G) ∧ (P ∨  G ∨ E) ∧ (P ∨  G ∨  E) ∧ ( G ∨ E) ≡
(asociativitate,
distributivitate)
≡ (P ∨  G) ∧ ((P ∨  G) ∨ (E ∧  E)) ∧ ( G ∨ E) ≡
(legea contradicţiei,
idempotenţă,
comutativitate)
≡ (P ∨  G) ∧ (E ∨  G).
Prin urmare, F poate fi considerată ca fiind formula Horn
{G → P, G → E} şi, printr-o aplicare imediată a Algoritmului Horn,
obţinem că F este satisfiabilă (asignarea S fiind dată de
S(P) = S(E) = S(G) = 0). Este însă F validă? Pentru aceasta putem
cerceta dacă  F este contradicţie. Obţinem însă imediat (folosind legile
lui de Morgan, distributivitatea şi idempotenţa) că
 F ≡ ( P ∨  E) ∧ ( P ∨ G) ∧ (G ∨  E) ∧ G, adică, în reprezentarea cu
mulţimi găsim că  F = {P ∧ E → 0, P → G, E → G, 1 → G}. Aplicarea
Algoritmului Horn conduce la marcarea doar a lui G şi la răspunsul
că  F este tot satisfiabilă. În concluzie, F este satisfiabilă dar
nevalidă, ceea ce poate apare ca un fapt ciudat dacă ne-am fi luat după
forma iniţială a afirmaţiei în limbaj natural. Dacă am cunoaşte toate
structurile care sunt model pentru F, acest lucru ar deveni poate
explicabil. Aplicarea metodei următoare poate fi o soluţie.
Metoda 2 (a tabelelor de adevăr). Ştim deja că F≡(P ∨ G)∧(E ∨ G),
de aceea nu vom folosi forma iniţială, care este mai complicată. Avem:

PDF created with pdfFactory Pro trial version www.pdffactory.com


116 Cristian Masalagiu

P E G G P∨G E∨G F
0 0 0 1 1 1 1
0 0 1 0 0 0 0
0 1 0 1 1 1 1
0 1 1 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 0 0
1 1 0 1 1 1 1
1 1 1 0 1 1 1

Se observă din nou că formula este satisfiabilă, nevalidă, dar acum


avem şi valorile lui F pentru toate structurile posibile. Penultima linie
de exemplu, se poate rescrie în limbaj natural ca „Afirmaţia Dacă
există petrol în Patagonia, experţii au dreptate şi guvernul nu minte
este adevărată”. Să reţinem însă deosebirea esenţială dintre afirmaţiile
din limbaj natural şi cele din limbajul formal ales (LP). În limbajul
natural afirmaţia „elementară” P (adică, de fapt, Există petrol în
Patagonia) este considerată ad literam, împreună cu semantica sa
(adică se acceptă cumva intuitiv şi implicit, ca fiind un adevăr: în
Patagonia există petrol), pe când în LP, P este un simplu nume
sintactic de variabilă, care semantic poate avea orice valoare de
adevăr.
Metoda 3 (a rezoluţiei). Pornim din nou cu forma mai simplă
F ≡ (P ∨  G) ∧ (E ∨  G) şi dorim să vedem dacă F este nesatisfiabilă,
utilizând rezoluţia. Prin urmare, F = {{P,  G}, {E,  G}} şi practic se

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 117

găseşte imediat că Res*(F) = F, ∉ Res*(F), adică F este satisfiabilă.


Lăsăm pe seama cititorului să arate, folosind tot această metodă, că F
este nevalidă. ■

Nu am avea acelaşi succes dacă am dori să „exprimăm


convenabil” în LP o afirmaţie ca: „O relaţie binară f ⊆ A × B este
funcţie atunci şi numai atunci când pentru fiecare element a ∈ A, dacă
există b1, b2 ∈ B cu f(a) = b1 şi f(a) = b2, rezultă b 1 = b2”. Am putea
încerca ceva de genul (începem tot cu „delimitarea” subformulelor
atomice):
• D: f ⊆ A × B este o relaţie binară.
• E: A’ este o submulţime a lui A formată din toţi a ∈ A pentru
care există măcar două elemente distincte b1, b 2 ∈ B, care
satisfac f(a) = b1 şi f(a) = b 2, sau, pentru care nu există nici un
element b ∈ B castfel încât f(a) = b1.
• H: A’ ⊆ A este vidă, A’ fiind cea de mai sus.
• G: relaţia f ⊆ A × B este funcţie, f fiind cea de mai sus, în altă
notaţie.
Atunci formula F ∈ LP va fi F = (D ∧ E ∧ H) → G şi va exprima
cumva afirmaţia iniţială. Sunt însă numeroase inconveniente, printre
care: variabilele propoziţionale nu prea sunt elementare (indivizibile,
cu valoare clară de adevăr); se amestecă prea mult sintaxa cu
semantica; înafară de valorile 0 şi 1 parcă ar mai trebui ceva, etc.
Soluţia ar fi să putem exprima direct în limbajul formal
cuantificatorii (pentru orice, există), aşa cum de altfel am şi făcut

PDF created with pdfFactory Pro trial version www.pdffactory.com


118 Cristian Masalagiu

până acum, însă doar în metalimbaj. S-ar ajunge atunci la ceva de


forma (presupunând că relaţia iniţială este deja exprimată ca fiind o
mulţime de perechi de tipul <x, f(x)>):
F’ = (∀x)(∃y)(f(x) = y) ∧ (∀x)(∀y)(∀z)(f(x) = y ∧ f(x) = z → y =z),
lucru care ar permite păstrarea tuturor principiilor logicii aristotelice,
iar „puterea de exprimare directă” a limbajului este clar „mai mare”
(F’∉ LP, dar poate aparţine unei supramulţimi alese corespunzător).
Atuci va exista într-adevăr posibilitatea de a lucra cu afirmaţii
elementare cu semnificaţie clară, de a avea o semantică explicită pentru
cuantificatori, de a exprima direct relaţii (cum ar fi relaţia de egalitate),
sau, dacă se doreşte neapărat, relaţia de apartenenţă a unor obiecte la
anumite mulţimi, etc. Capitolul 3 este destinat studiului unei extensii
posibile a lui LP şi anume LP1, logica (calculul) cu predicate de
ordinul I.

Indexul termenilor importanţi:

inferenţe valide, 42
sfera şi conţinutul unei noţiuni, 43
diferenţă specifică, 43
definiţii operaţionale, 43
paradoxuri, 45
silogisme, 47
conectori logici (non, şi, sau, implică, echivalenţă), 48
inferenţe ipotetico-categorice, 49
modus ponens, modus tollens, 50

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 119

formule propoziţionale, 53
variabile propoziţionale, 53
formule atomice, 54
arbore ataşat unei formule, 55
subformulă, 56
problemă de decizie, 57
literali (pozitivi, negativi), 59
clauze, clauze pozitive, clauze negative, 59
clauze Horn, clauze Horn pozitive, 59
asignare, interpretare, structură, 60
structură completă, 62
formule satisfiabile (model), valide (tautologii), 63
formule nesatisfiabile (contradicţii), 63
formule tare şi slab echivalente, 64
consecinţă semantică, 65
forme normale (disjunctive, conjunctive), 71
clauza vidă, 80
forma implicaţională a clauzelor Horn, 80
rezolvent, arbore de rezoluţie, 87
rezoluţie într-un pas, 87
demonstraţie prin rezoluţie, 90
respingere, 91
mulţimea rezolvenţilor unei mulţimi de clauze, 93
rafinări, restricţii şi strategii ale rezoluţiei, 104
strategia unitară, 105
rezoluţia pozitivă, rezoluţia negativă, 106

PDF created with pdfFactory Pro trial version www.pdffactory.com


120 Cristian Masalagiu

rezoluţia liniară bazată pe o clauză iniţială, SLD-rezoluţia, 106


rezoluţia bazată pe o mulţime suport, 108
rezoluţia de intrare, 109

§10. Exerciţii
1. Rezolvaţi Exerciţiul 2.1.
2. Rezolvaţi Exerciţiul 2.2.
3. Rezolvaţi Exerciţiul 2.3.
4. Rezolvaţi Exerciţiul 2.4.
5. Completaţi demonstraţia Teoremei 2.1.
6. Rezolvaţi Exerciţiul 2.5.
7. Arătaţi că în LP există formule satisfiabile (dar nevalide),
formule valide, contradicţii.
8. Arătaţi că sunt adevărate afirmaţiile:
(a) ≡ şi ≡s sunt relaţii de echivalenţă pe LP.
(b) ≡ este compatibilă la dreapta şi la stânga cu ∧, ∨ şi
compatibilă cu .
(c) LP = < LP/≡, ∧, ∨,  > formează o algebră booleană.
(d) Între LP şi B = < B, •, +, ¯ > există măcar un homomorfism
de algebre booleene.
9. Completaţi demonstraţia Teoremei 2.4.
10. Să se aplice Algoritmul Horn formulei:
F = ( B ∨  D) ∧  E ∧  C ∧ B ∧ ( B ∨ D ∧ B).
11. Să se exprime ca formulă în LP şi să se studieze satisfiabilitatea
afirmaţiei: Vom câştiga alegerile în condiţiile în care Popescu

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 121

va fi liderul Partidului. Dacă Popescu nu este ales liderul


Partidului, atunci fie Ionescu fie Rădulescu va părăsi partidul şi
vom pierde alegerile.
12. Se dă formula:
F = ((A1 ∧ A3) → (A2 → A4)) → ((A1 → A2) ∧ (A2 → A4)).
Să se elimine conectorii → care apar în F şi apoi să se elimine
„cât mai multe” paranteze (fără a schimba semantica formulei),
ţinîndu-se cont de priorităţile atribuite operatorilor , ∨, ∧,
precum şi de alte proprietăţi ale acestor operatori.
13. Să se găsească o respingere (dacă există) pornind cu clauzele:
F = {{A,  B, C}, {B, C}, { A, C}, {B,  C}, { C}}.
14. Arătaţi că formula:
F = ( B ∧  C ∧ D) ∨ ( B ∧ D) ∨ (C ∧ D) ∨ B
este tautologie, folosind metoda rezoluţiei.
15. Arătaţi că formula G = (A ∧ B ∧ C) este consecinţă semantică
din mulţimea de formule G = { A ∨ B,  B ∨ C, A ∨  C,
A ∨ B ∨ C} folosind metoda rezoluţiei.
16. Mulţimea infinită de formule M = {A1 ∨ A2,  A2 ∨  A3,
A3 ∨ A4,  A4 ∨  A5, ... } este satisfiabilă?
17. Demonstraţi adevărul sau falsitatea următoarelor afirmaţii
(există şi alte variante, pe care le puteţi deduce singuri):
(a) Dacă F → G este validă şi F este validă, atunci G este validă.
(b) Dacă F → G este satisfiabilă şi F este satisfiabilă, atunci G
este satisfiabilă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


122 Cristian Masalagiu

(c) Dacă F → G este validă şi F este satisfiabilă, atunci G este


satisfiabilă.
18. Folosind cele menţionate despre necesitatea de a utiliza un
limbaj mai complex pentru reprezentarea realităţii prin formule,
găsiţi o formulă F care să conţină un simbol funcţional f de
aritate 1 şi care să exprime faptul că f este funcţie injectivă şi
surjectivă.
19. Fie formula F ∈ LP, F = ( ((A ∨ B) ∧ C)), A, B, C ∈ A. Să se
găsească arborele care descrie formula şi, simultan, o FNC şi o
FND pentru F (conform algoritmului recursiv sugerat de
demonstraţia Teoremei 2.6).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Capitolul 3
Logica (calculul) cu predicate de ordinul I

După cum am punctat în finalul Capitolului 2, suntem nevoiţi


să extindem limbajul (logica) folosit(ă) până în prezent, deşi rezultatele
privind complexitatea (timp) a algoritmilor de testare a satisfiabilităţii
formulelor LP sunt deja descurajatoare. Principalul argument este acela
că lumea reală nu poate fi modelată satisfăcător şi simplu prin
formule logice care utilizează doar variabile propoziţionale şi
conectori. De aceea principala modificare va fi de natură sintactică,
manifestată prin adăugarea cuantificatorilor logici (există şi pentru
orice), împreună cu introducerea variabilelor, constantelor,
simbolurilor funcţionale (de aritate mai mare decât unu) şi a
simbolurilor predicative. Din acest punct de vedere, limbajul logicii cu
predicate de ordinul I va conduce sintactic la o mulţime de formule,
notată LP1, care va include strict clasa LP. Semantica pentru LP1 va fi
mai complexă, având însă la bază acelaşi concept de structură
(asignare, interpretare) şi fiind „consistentă” cu semantica LP. De
altfel, pentru LP1, dacă nu vom folosi concepte prezentate în mod
explicit ca fiind noi, toate notaţiile, noţiunile, rezultatele, etc., vor fi
identice cu cele introduse pentru LP.

§1. Sintaxa logicii cu predicate de ordinul I


Prin urmare, pentru a mări puterea de exprimare, în sensul
informal precizat deja, a logicii folosite până în prezent (LP), vom

PDF created with pdfFactory Pro trial version www.pdffactory.com


124 Cristian Masalagiu

începe cu anumite transformări de natură sintactică. Mai precis,


pentru a construi mulţimea de formule a logicii cu predicate de ordinul
I, LP1, vom porni cu următoarele mulţimi de simboluri:
• X = {x1, x2, …}: o mulţime cel mult numărabilă de variabile
funcţionale, sau, pe scurt, variabile.
• P = {P0, P1, …}: o mulţime cel mult numărabilă de simboluri
predicative (sau predicate, sau relaţii), cu arităţi. La rândul
său, fiecare Pi este o mulţime cel mult numărabilă de predicate
de aritate i (i ∈ N). Elementele lui P0 se mai numesc şi
variabile predicative.
• F = {F0, F1, ...}: o mulţime cel mult numărabilă de simboluri
funcţionale (sau funcţii) cu arităţi, fiecare Fi fiind o mulţime
cel mult numărabilă de funcţii de aritate i (i ∈ N). Elementele
lui F0 se numesc şi constante (funcţionale).
• C1 = {, ∨, ∧}: o mulţime de conectori logici (conective logice),

la care se pot adăuga, opţional, şi alte simboluri cum ar fi →,


↔, etc.
• C2 = {(∀x) | x ∈ X} U {(∃ x) | x ∈ X}: o mulţime de
cuantificatori (cuantori), universali, respectiv existenţiali
((∀x) se citeşte „pentru fiecare x”, sau „pentru oricare (orice)
x”, iar (∃ x) – „există x”, „există măcar un x”, etc.). Pentru
început este suficient să considerăm doar cuantorii universali.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 125

Ca şi în cazul LP, vom porni cu alfabetul total, adică reuniunea


mulţimilor precedente, împreună cu parantezele rotunde şi virgula (pe
scurt, P):
∞ ∞
Alf = X U ( ∪ Pi ) U ( ∪ Fi ) U C1 U C2 U P
i=0 i= 0

∞ ∞
Mulţimile ∪ Pi şi ∪ Fi vor fi notate tot cu P respectiv F, atunci când
i=0 i= 0

nu există confuzii.

Observaţie. Prin „o mulţime cel mult numărabilă” înţelegem o


mulţime numărabilă, finită sau vidă. Intuitiv, variabilele funcţionale
notate x vor fi nume generice pentru elementele dintr-un anumit
domeniu, care va fi fixat ulterior (prin intermediul funcţiei semantice).
Un simbol predicativ P de aritate i reprezintă o relaţie i-ară
neprecizată, adică este un nume generic pentru orice funcţie cu i
argumente peste acelaşi domeniu, codomeniul fiind {a, f}, sau B (într-o
interpretare vom avea P(<a1, a2, ... ai>) = 1 dacă şi numai dacă
elementele a1, a2, ..., ai sunt în relaţia numită P). Similar, un simbol
funcţional f ∈ Fi, este numele generic al oricărei funcţii de i argumente,
peste acelaşi domeniu şi codomeniu. Pentru parantezele utilizate în
scrierea cuantificatorilor ar trebui de fapt folosit un alt font (ca de altfel
şi pentru virgulă). ■

Mulţimea formulelor, LP1Alf (indicele va fi pus în evidenţă doar


atunci când lipsa sa ar putea genera confuzii) va fi definită structural,
analog cu cazul LP (elemente mulţimilor C1, C2, P, exceptând virgula,

PDF created with pdfFactory Pro trial version www.pdffactory.com


126 Cristian Masalagiu

pot fi considerate ca fiind operatori pe şiruri de caractere, de aritate 1


sau 2).

Definiţia 3.1 (sintaxa LP1). Fie Alf alfabetul fixat anterior. Atunci
mulţimea formulelor calculului cu predicate de ordinul I, LP1 Alf,
este dată constructiv prin:
Baza. Se defineşte mulţimea formulelor atomice, notată cu At, prin:

(i) Po ⊆ At (variabilele predicative sunt formule atomice).

(ii) Pentru fiecare n ∈ N*, pentru fiecare P ∈ Pn, pentru fiecare


t1, t2, …, tn ∈ T, avem P(t1, t2, ……, tn) ∈ At.
(iii) Nimic altceva nu mai este formulă atomică.
În cele de mai sus, T denotă mulţimea termilor (funcţionali), care este
la rândul ei definită constructiv astfel:
Baza. X ⊆ T şi Fo ⊆ T (variabilele şi constantele sunt termi).

Pas constructiv. Pentru fiecare n ∈ N*, pentru fiecare f ∈ Fn,


pentru fiecare t1, t2, … , t n ∈ T, avem f(t1, t2, ……, t n) ∈ T.

Concluzionăm această etapă a definiţiei prin a „spune” că At ⊆ LP1


(formulele atomice sunt formule).
Pas constructiv. Continuăm definirea lui LP1Alf cu partea „formule
vechi din formule noi”.
(i) Dacă F ∈ LP1 atunci (  F) ∈ LP1.
(ii) Dacă F1, F2 ∈ LP1 atunci ( F1 ∧ F2 ), ( F1 ∨ F2 ) ∈ LP1 (dacă
dorim, putem introduce şi (F1 → F2), ( F1 ↔ F2 ) ∈ LP1, etc.).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 127

(iii) Dacă F ∈ LP1 atunci (∀x)(F) ∈ LP1 (dacă dorim, punem şi


(∃ x)(F) ∈ LP1), pentru fiecare x ∈ X . ■

Ca şi în cazul LP, se definesc constructiv subf(F), mulţimea


subformulelor formulei F, şi Arb(F), arborele ataşat lui F (cuantorii
sunt operatori de aritate 1). Singura subformulă a unei formule atomice
este ea însăşi şi Arb(F) va fi constituit în acest caz dintr-un simplu nod.
Un term poate fi, la rândul său, privit ca un arbore (ca de altfel şi orice
formulă atomică), astfel încât arborele unei formule poate fi „detaliat”,
dacă înlocuim fiecare nod corespunzător unui term cu arborele ataşat
acestuia (similar pentru o subformulă atomică). În definiţia precedentă
considerăm ca am pus implicit şi (desigur că urmează Nimic altceva nu
mai este formulă);
(iv) Dacă F ∈ LP1 atunci (F) ∈ LP1.

Definiţia 3.2 (arborele ataşat unui term şi unei formule atomice).


Conform definiţiei anterioare, arborele ataşat unui term t ∈ T, notat
Arb(t), poate fi dat constructiv prin:
Baza. Dacă t = c ∈ F0, atunci Arb(t) este: c

Dacă t = x ∈ X, atunci Arb(t) este: x

Pas constructiv. Fie n ∈ N*, f ∈ Fn, t1, t2, … , tn ∈ T, astfel încât


t = f(t1, t2, ……, tn). Să presupunem că ştim arborii ataşaţi termilor
t1, t2, … , tn, adică Arb(t1), Arb(t2), … , Arb(tn). Atunci Arb(t) va fi:

PDF created with pdfFactory Pro trial version www.pdffactory.com


128 Cristian Masalagiu

Arb(t1) Arb(tn)

Ştiind Arb(t) pentru fiecare t ∈ T, putem acum construi Arb(F) pentru

fiecare F ∈ At, după cum urmează.

(i) Dacă P ∈ P0, atunci Arb(P) este: P

(ii) Fie n ∈ N*, Q ∈ Pn, t1, t2, ……, tn ∈ T astfel încât


P = Q(t1, t2, ……, tn) şi să presupunem că sunt cunoscuţi
Arb(t1), Arb(t2), … , Arb(tn). Atunci Arb(P) va fi:

Arb(t1) Arb(tn)

În sfârşit, fie F o formulă oarecare. Ea poate avea una din formele:


(F1), (F1 ∧ F2), (Arb((F1 ∨ F2)) este similar cu cel pentru ∧) (∀x)(F1)
(similar, (∃x)(F1)), sau (F1) (Arb(F1) coincide cu Arb((F1)), lipsind
doar nodul etichetat cu  ), unde F1, F2 sunt tot formule (oarecare).
Arborele ataşat lui F va avea în consecinţă una dintre formele:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 129

() () (∀x)

 ∧ ()

Arb(F1) Arb(F1) Arb(F2) Arb(F1)

Observaţie. Şi arborele pentru implică, echivalent, etc. este similar cu


cel pentru şi. După cum se poate vedea, parantezele folosite la
construcţia termilor şi a formulelor atomice nu apar explicit, la fel cum
parantezele pentru cuantificatori sunt considerate ca făcând parte din
numele acestora. Ideea este că dacă se cunosc arităţile simbolurilor
funcţionale şi predicative şi dacă impunem în plus ca toate mulţimile de
simboluri distincte care apar în Alf să fie disjuncte, atunci putem scrie
Pt1t2...tn în loc de P(t1, t2, ..., tn), adică putem elimina de tot aceste
paranteze (care oricum trebuiau să aibă alt font decât cele din P). Şi în
cazul cuantificatorilor, în loc de (∀x)(F) putem scrie ∀x(F). Astfel,
putem conveni că singurele paranteze care „merită” a fi luate în
considerare atunci când apar într-o formulă sunt cele din P. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


130 Cristian Masalagiu

În cazul lui subf(F), poate este bine să subliniem faptul că


subf((∀x)(F1)) = {(∀x)(F)} U {(F)} U subf(F1), în rest nefiind diferenţe
esenţiale faţă de cazul LP.

Definiţia 3.3 (apariţii libere şi legate ale variabilelor). Fie F ∈ LP1


şi x ∈ X, astfel încât x apare în F, la o poziţie oarecare j (în sens textual,
stânga/dreapta, ca literă într-un cuvânt, apariţia menţionată nefiind
parte a numelui unui cuantificator (∀x) sau (∃x)). Apariţia fixată a lui x
se numeşte legată dacă este într-o parte (subformulă) G a unei (alte)
subformule a lui F de forma G1 = (∀x)(G) (sau (∃x)(G)). În restul
cazurilor, apariţia considerată se numeşte liberă. ■

Să mai punctăm o dată faptul că folosind reprezentarea


formulelor ca arbori (precum şi o definiţie corespunzătoare a noţiunii
de arbore), orice apariţie a unei variabile într-o formulă poate fi definită
formal într-un mod simplu (conform exemplelor şi exerciţiilor). Vom
nota, pentru fiecare F ∈ LP1, cu free(F) - mulţimea variabilelor care au
apariţii libere în F, şi cu leg(F) – mulţimea variabilelor care au apariţii
legate în F. Desigur că pentru fiecare x ∈ X, este posibil ca x să nu
apară în F, să aibă doar apariţii libere, doar apariţii legate, sau şi apariţii
libere şi apariţii legate. Putem nota cu var(F) = free(F) U leg(F). O
situaţie nenaturală din punct de vedere semantic, dar posibilă sintactic,
este aceea în care o variabilă x nu apare de loc în F (în sensul
considerat), dar este prezent ca nume al unui cuantificator. Vom

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 131

conveni să notăm mulţimea acestor variabile cu restvar(F) şi să


includem şi această mulţime în var(F).

Exerciţiul 3.1. Definiţi constructiv leg(F) şi free(F).


Definiţia 3.4 (închideri). O formulă F ∈ LP1 se numeşte închisă dacă
nu conţine apariţii libere de variabile (altfel spus, free(F) = Ø). Pentru
formula F, se numeşte închiderea sa universală formula
(∀x1)((∀x2)( …((∀xk)(F)) ... ) (notată, pentru simplitate şi cu (∀*)(F)
sau chiar (∀F)), unde {x1, x2, … , xk} = free(F). Analog (înlocuind ∀ cu
∃) se defineşte (notează) închiderea existenţială a lui F. Se va numi
matricea lui F (notată F*) acea formulă obţinută din F prin ştergerea
(sintactică, textuală) a tuturor cuantificatorilor (∀x) şi (∃x). O formulă
care nu este închisă, se numeşte deschisă (o formulă în care var(F) = Ø
se consideră a fi închisă). ■

Definiţia 3.5 (substituţii). Prin substituţie vom înţelege o secvenţă


finită de elemente de tipul [x/t] (numite şi substituţii elementare),
unde x ∈ X, t ∈ T. ■

O substituţie va avea astfel forma s = [x1/t1]•[x2/t2]• … •[xn/tn]


fiind practic un cuvânt peste alfabetul S = {[x/t] | x ∈ X, t ∈ T }, adică
un element al lui S* (monoidul liber generat de S). O substituţie s (ca
mai sus) se aplică unei formule F, rezultând o formulă G, notată (F)s,
care se obţine din F prin înlocuirea fiecărei apariţii libere a variabilei
x1 cu termul t1, apoi a fiecărei apariţii libere a variabilei x2 cu t2, etc.

PDF created with pdfFactory Pro trial version www.pdffactory.com


132 Cristian Masalagiu

De obicei, se utilizează doar substituţii permise pentru o formulă


F ∈ LP1 dată. Substituţia elementară [x/t] este permisă pentru F (sau,
F acceptă [x/t]) dacă t nu conţine variabile libere care au apariţii
legate în F (s de mai sus va fi permisă pentru F dacă va fi permisă
pentru fiecare componentă a sa, [xi/ti], i ∈ [n]). Ordinea (fixată deja
prin modul de scriere) aplicării substituţiilor elementare dintr-o
substituţie s este esenţială în majoritatea cazurilor. O substituţie s este
normalizată (pentru F) dacă ordinea de aplicare a substituţiilor
elementare componente nu contează. Mai precis, s este normalizată
dacă avem (F)s = (F)s’, pentru fiecare s’ care este obţinută din s printr-
o permutare a componentelor acesteia. Substituţia vidă (ca element
neutru al lui S*), notată [], nu face desigur nici o transformare în
formula F căreia îi este aplicată, adică avem (F)[] = F.

Exerciţiul 3.2. Arătaţi că pentru fiecare F ∈ LP1 şi fiecare


substituţie s, permisă pentru F, care îndeplineşte condiţia că ea nu
coţine un element de forma [x/t] astfel încât t nu conţine x, există
măcar o substituţie s’, ehivalentă cu s (s’ este echivalentă cu s, pentru
F, dacă (F)s = (F)s’) şi care este normalizată.

După cum am mai precizat, dacă nu este nevoie de o redefinire


explicită, în continuare vom folosi şi alte concepte/notaţii sintactice
introduse în Capitolul 2 pentru LP, cum ar fi: literal (o formulă
atomică sau negaţia acesteia), clauză, clauză Horn, formă normală,
etc. Ca o convenţie, cu litere latine mici de la sfîrşitul alfabetului (x, y,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 133

z, ...) vom nota variabilele. Literele latine mici de la începutul


alfabetului (a, b, c, ...) vor nota constantele. Literele latine mari de la
mijlocul alfabetului (P, Q, R, ...) vor nota simbolurile predicative.
Literele latine mici de la mijlocul alfabetului (f, g, h, ...) vor fi rezervate
pentru desemnarea simbolurilor funcţionale, iar cu F, G, H, … vom
nota formulele. Dacă nu am adopta astfel de convenţii (dorim, totusi, să
avem o anumită libertate de exprimare şi să folosim şi alte nume înafara
celor admise de alfabetul iniţial, aşa cum am folosit şi în cazul LP), am
avea, posibil, cazuri în care, la o primă vedere, nu am putea distinge
între o variabilă şi o constantă. Sintactic, diferenţa dintre un nume de
variabilă (element din X) şi un nume de constantă (element al lui F0)
este clară doar în momentul când numele respectiv apare într-un
cuantificator.

Definiţia 3.6. Un term care nu conţine variabile se numeşte term de


bază. Analog, vom avea formule de bază, substituţii de bază, etc. ■

Ca şi pentru LP, putem renunţa la anumite paranteze (nu uităm,


sunt implicate doar elementele lui P) într-o formulă, bazându-ne pe
aceeaşi idee (priorităţi acordate operatorilor, proprietăţi generale ale
acestora cum ar fi asociativitatea, convenţii, etc). În cazul unui cuantor,
avem nevoie, înafara priorităţii care este maximă (adică 0; standard,
vom admite că  are prioritatea 1, ∧ - 2, ∨ - 3, → - 4, ↔ - 5, etc.; în
cadrul unei secvenţe continue de operatori de aceeaşi prioritate,
parantetizarea se face la dreapta), şi de definirea a ceea ce se numeşte

PDF created with pdfFactory Pro trial version www.pdffactory.com


134 Cristian Masalagiu

domeniul sintactic al cuantificatorului respectiv. Domeniul sintactic


pentru o apariţie a unui cuantor (să spunem că aceasta este (∀x))
într-o formulă F, reprezintă porţiunea continuă de text (care este o
subformulă G alui F), care începe cu primul simbol de după o apariţie a
cuantorului în cauză, identificat mai jos prin subliniere (parcurgem
formula de la stânga la dreapta) şi se termină cu un anumit simbol
ulterior (să-l identificăm tot prin subliniere), conform următoarelor
situaţii:
• F = ... (∀x)(G’) ... . Nu sunt probleme, deoarece parantezele
cerute de sintaxa dată de Definiţia 3.1. nu au fost eliminate. Ca
observaţie, parantezele subliniate de mai sus sunt (se mai
numesc şi) corespondente (definiţia sintactică a unei formule nu
permite existenţa unei paranteze deschise fără ca ea să fie
închisă ulterior, neexistând ambiguităţi nici în privinţa
parantezei închise care corespunde unei anumite paranteze
deschise).
• F = ... (∀x)G. Situaţia evidenţiază faptul că domeniul se extinde
„până la sfârşitul formulei”, dar condiţia suplimentară este
aceea că în G nu există nici o paranteză închisă care să nu aibă
corespondent o paranteză deschisă situată tot în domeniu (nu
uităm că domeniul începe oricum cu primul simbol de după
(∀x)). Nu am mai subliniat simbolurile de început şi sfârşit a
domeniului, deoarece ei sunt primul şi respectiv ultimul simbol
din G.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 135

• F = ... ( ... (∀x) ... ) ... . Este pus în evidenţă cazul în care au fost
eliminate parantezele iniţiale de după cuantificator, dar în
subformula G care urmează după acesta există o paranteză
închisă care are corespondent înainte de apariţia cuantorului al
carui domeniu îl căutăm. Ceea ce am subliniat este prima
paranteză cu această proprietate (practic, simbolul imediat de
dinaintea ei fiind ultimul care aparţine domeniului).
Prioritatea cuantificatorilor fiind maximă, se găsesc mai întâi domeniile
sintactice ale fiecărui cuantificator dintr-o formulă şi apoi se aplică
regulile de prioritate legate de conectori (acestea fiind similare de fapt
cu cele din LP). Intuitiv, dacă privim LP1 ca un limbaj de programare
imperativ (formulele fiind programe), construcţiile de tipul
(○1x1)(○2x2) ... (○nxn), cu ○1, ○2, ... , ○n ∈ {∀, ∃}, reprezintă linia de
definiţie a unei proceduri (în care se specifică drept parametri
variabilele locale). Procedurile n-au însă şi un sfârşit marcat explicit,
astfel încât domeniul sintactic este corpul procedurii, delimitarea lui
clară fiind desigur absolut necesară pentru a cunoaşte porţiunea de
text în care numele unei variabile păstrează o aceeaşi semnificaţie.
Continuând paralela, variabilele libere din domeniul sintactic al unui
cuantificator reprezintă variabilele globale, iar aplicarea unei
substituţii ar fi un apel de procedură (deosebirea faţă de un program
imperativ fiind aceea că valorile parametrilor, adică numele
cuantificatorilor din linia de definiţie, pot fi elemente oarecare sau
anumite din domeniile considerate, conform sematicii). Să mai
precizăm şi faptul ca domeniile sintactice ale diverşilor cuantificatori
pot fi, datorită formei sintactice a formulelor, doar disjuncte, adică de

PDF created with pdfFactory Pro trial version www.pdffactory.com


136 Cristian Masalagiu

tipul ... 1 ... 1 ... 2 ... 2 ... , sau imbricate - ... 1 ... 2 ... 2 ... 1 ... , dar nu
se pot „intersecta”, ca în situaţia ... 1 ... 2 ... 1 ... 2 ... . Dacă o apariţie
a unei variabile x se află în interiorul mai multor domenii imbricate,
desigur că ea aparţine tuturor. Apariţiile diferite ale unui simbol pot
avea semnificaţii (valori) diferite. Astfel, în ... 1 ... 2 ... 3 ... x(1) ... 3 ...
x(2) ... 2 ... 1 ... , apariţia lui x notată x(1) şi cea notată x(2), pot practic fi
considerate ca fiind nume de variabile diferite. În ceea ce priveşte
parantezele adăugate, ele pot fi fie restaurări ale parantezelor şterse,
fie ne folosim de (iv) (Definiţia 3.1, Pas inductiv extins).

Exemplu. Fie formula:


F = Q(x) ∨ (∃x)(∀y)(P(f(x), z) ∧ Q(a) ∨ (∀x)R(x, z, g(x)).
Semnificaţia simbolurilor care apar:
• x, y, z ∈ X . Avem x, y ∈ X deoarece sunt (şi) nume ale unor

cuantificatori, iar z ∈ X conform convenţiilor făcute (e literă de


la sfârşitul alfabetului). Variabila x apare de 4 ori în F (de la
stânga la dreapta: x are o apariţie liberă în Q(x); o apariţie legată
în P(f(x), z), ea fiind în domeniul sintactic al cuantorului (∃x); o
altă apariţie legată, pe prima poziţie din R(x, z, g(x)), aici
apariţia fiind şi în domeniul sintactic al cuantorului (∀x); o a
treia apariţie legată, în acelaşi domeniu sintactic, este în R(x, z,
g(x)), şi anume în g(x)). Variabila y nu apare nici o dată în F,
deşi apare cuantorul (∀y) (ea apare însă în restvar(F)).
Variabila z apare de 2 ori în F, ambele apariţii fiind libere
(prima dată în P(f(x), z) şi a doua oară în R(x, z, g(x))). În

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 137

consecinţă, free(F) = {x, z}, leg(F) = {x}, var(F) = {x,z} (sau


chiar {x, y, z} dacă acceptăm ca restvar(F) să fie introdus în
var(F)).
• a ∈ F0 conform convenţiilor.
• Q ∈ P1, P ∈ P2, R ∈ P3, din scrierea sintactică (nici convenţiile
nu sunt contrazise).
• f, g ∈ F1, din scrierea sintactică (la fel, convenţiile „spun”
acelaşi lucru).
Domeniile sintactice ale cuantorilor. Domeniul sintactic al
cuantorului (∃x) este format din (subformula)
(∀y)(P(f(x), z) ∧ Q(a) ∨ (∀x)R(x, z, g(x)). Apoi, cel al lui (∀y), din
(P(f(x), z) ∧ Q(a) ∨ (∀x)R(x, z, g(x)). În sfârşit, domeniul lui (∀x) este
R(x, z, g(x)). Ţinând cont şi de priorităţile impuse cuantorilor, formula
corectă, total parantetizată (conform Definiţiei 3.1), este de fapt:
F = (Q(x) ∨ (∃x)((∀y)(((P(f(x), z) ∧ Q(a)) ∨ (∀x)(R(x, z, g(x)))))).
Orice amănunte legate de sintaxă ar trebui studiate numai pe această
formă, practic noi neavând definiţii formale pentru cazul unor formule
din care lipsesc anumite paranteze.
Mulţimea subformulelor formulei date.
subf(F) = {Q(x), P(f(x), z), Q(a), R(x, z, g(x)), (∀x)(R(x, z, g(x))),
(R(x, z, g(x))), (P(f(x), z) ∧ Q(a)), ((P(f(x), z) ∧ Q(a)) ∨
(∀x)(R(x, z, g(x))), (∀y)(((P(f(x), z) ∧ Q(a)) ∨ (∀x)(R(x, z, g(x)))),
(((P(f(x), z) ∧ Q(a)) ∨ (∀x)(R(x, z, g(x)))), (∃x)((∀y)(((P(f(x), z) ∧
Q(a)) ∨ (∀x)(R(x, z, g(x))))), ((∀y)(((P(f(x), z) ∧ Q(a)) ∨
(∀x)(R(x, z, g(x))))), F}. Dintre acestea, unele sunt formule atomice:

PDF created with pdfFactory Pro trial version www.pdffactory.com


138 Cristian Masalagiu

Q(x), P(f(x), z), Q(a) şi R(x, z, g(x)). În plus, Q(a) este o formulă de
bază. Să reamintim din nou că avem o definiţie formală pentru subf(F)
doar în cazul în care n-am eliminat paranteze din F şi că subformulă a
lui F este orice subcuvânt al său care aparţine lui LP1.
Termii (funcţionali) care apar în formulă. Ei sunt în ordine: x, f(x),
z, a, g(x) (de fapt, termii x şi z au câte două apariţii, ei fiind şi
variabile).
Mulţimea subformulelor închise ale lui F. Nu avem asemenea
subformule. Totuşi, prin convenţia stabilită, am admis că formulele care
nu conţin deloc variabile (adică formulele de bază) sunt formule
închise. Singura asemenea subformulă în cazul nostru este deci Q(a).
Matricea formulei date. Ea este (am eliminat şi parantezele
corespondente devenite inutile în urma ştergerii cuantificatorilor):
F* = (Q(x) ∨ ((P(f(x), z) ∧ Q(a)) ∨ R(x, z, g(x))).
Închiderea universală a formulei este:
F’ = (∀z)((∀x) (Q(x) ∨ (∃x)((∀y)(((P(f(x), z) ∧ Q(a)) ∨
∨ (∀x)(R(x, z, g(x))))))).
Similar se obţine închiderea existenţială.
Fie acum substituţia s = [x/c]•[z/g(b)]•[y/x]. Dacă o aplicăm formulei
F (iniţiale, nu celei parantetizate complet) găsim succesiv:
(F)s =
(Q(c) ∨ (∃x)(∀y)(P(f(x),z) ∧ Q(a) ∨ (∀x)R(x, z, g(x)))[z/g(b)]•[y/z] =
= (Q(c) ∨ (∃x)(∀y)(P(f(x), g(b)) ∧ Q(a) ∨ (∀x)R(x, g(b), g(x)))[y/x].
Ultima aplicare nu schimbă nimic deoarece y nu apare în F. Conform
definiţiei rezultă că s nu este permisă pentru F (datorită faptului că în

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 139

substituţia elementară [y/x], termul t = x conţine o variabilă care apare


legată în F). Cum însă y este doar numele unui cuantificator, aplicarea
lui s formulei F nu este dăunătoare în acest caz (o substituţie nepermisă
generează de obicei grave anomalii semantice). Tot din acest motiv, s
este şi normalizată.
Arborele ataşat formulei
Q(x) ∨ (∃x)(∀y)(P(f(x), z) ∧ Q(a) ∨ (∀x)R(x, z, g(x)),
este (din nou, trebuia de fapt să considerăm formula corectă, total
parantetizată; oricum, aceasta implică doar adăugarea unor noduri
interne, etichetate cu „()”):

PDF created with pdfFactory Pro trial version www.pdffactory.com


140 Cristian Masalagiu

Q (∃x)

x (∀y)

()

(∀x)

P Q R

f z a
x z g

x
x


Putem acum introduce şi studia elementele de semantică
privitoare la calculul cu predicate de ordinul I.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 141

§2. Semantica logicii cu predicate de ordinul I


Înţelesul (semantica) unei formule F ∈ LP1 va fi, la fel ca în
logica propoziţională, o valoare de adevăr 0, 1 ∈ B, valoare obţinută
într-un mod extensional. Elementul principal în definirea semanticii va
rămâne noţiunea de structură. Deşi definiţia unei structuri şi găsirea
unei valori de adevăr pentru o formulă va depinde practic doar de
simbolurile care intervin în acea formulă, vom prefera să utilizăm în
continuare să ne folosim de funcţiile totale în locul celor parţiale.

Definiţia 3.7. Se numeşte structură un cuplu S = <US, IS> în care US


este o mulţime nevidă numită univers, iar IS este o funcţie (numită şi
interpretare)

IS : X U P U F → US U [US∗ → B] U [US∗ → US],


care satisface condiţiile:
• Dacă x ∈ X, atunci IS (x) ∈ US .

n
• Dacă P ∈ P n, atunci IS (P) : US → B.

n
• Dacă F ∈ F n, atunci IS (F) : US → U S . ■

În cele de mai sus, ca şi în restul materialului, [A → B] desemnează


mulţimea tuturor funcţiilor totale având domeniul A şi codomeniul B,
iar [A* → B] denotă mulţimea tuturor funcţiilor de oricâte argumente
(inclusiv 0) peste A, cu valori în B. Prin urmare, interpretarea
(semantica) unei variabile în structura S este un element din

PDF created with pdfFactory Pro trial version www.pdffactory.com


142 Cristian Masalagiu

univers, interpretarea unui simbol predicativ n-ar este o funcţie de


la USn la {0, 1} (sau, uneori, mulţimea elementelor din US n pentru
care valoarea în cauză este 1), iar semantica unui simbol funcţional
de aritate n este o funcţie de la USn la US. Pentru simplificarea
exprimării, vom renunţa la indici dacă nu există confuzii şi vom nota
pe IS tot cu S. Similar cu cazul logicii propoziţionale, orice structură va
putea fi unic extinsă astfel încât să fie definită pentru toate elementele
lui LP1.

Definiţia 3.8. Pentru fiecare structură S = <US, IS>, vom numi extensia
sa imediată funcţia

S’ : X U P U F U T U LP1 → US U [ US∗ → B] U [ US∗ → US] U B,


dată constructiv în continuare. Pentru început, vom pune
S’(a) = S(a) (= IS (a)), pentru fiecare a ∈ X U P U F, ceea ce înseamnă
că S’ s-a definit, în particular, pentru fiecare term elementar. Fie acum

orice t ∈ T, adică orice n ∈ N*, orice t1, t2, … , tn ∈ T şi orice f ∈ Fn,


astfel încât t = f(t1, t2, …, tn). Atunci
S’(t) = S(f)(S’(t1), S’(t2), ... , S’(tn)) (∈US). Am încheiat astfel procesul
de definire al lui S’ pe X U P U F U T şi rămâne să definim S’ pe
LP1. Vom face acest lucru în mod constructiv.
Baza. Fie F = A ∈ At. În această situaţie avem fie A = P ∈ P 0 fie

A = P(t1, t2, …, tn), n ∈ N*, t1, t2 , ……, tn ∈ T. În primul caz S’ este

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 143

deja definită (S’(P) = S(P) ∈ B), iar în al doilea caz punem desigur

S’ (P) = S(P)(S’ (t1), S’ (t2), ... , S’ (tn)) ∈ B.


Pas constructiv. Vom avea de considerat cazurile:
(i) F = ( F1 ). Atunci S’(F) = S '(F1 ) .
(ii) F = (F1 ∧ F2). Atunci S’(F) = S’(F1) • S’(F2).

(iii) F = (F1 ∨ F2). Atunci S’ (F) = S’(F1) + S’(F2).

(iv) F = (∀x)(G). Atunci S’(F) = 1 dacă şi numai dacă pentru fiecare

u ∈ US avem S’[x/u](G) = 1 unde S’[x/u] este o interpretare care coincide


în totalitate cu S’ exceptând faptul că S’(x) = u.

(v) F = (∃x)(G). Atunci S’(F) = 1 dacă şi numai dacă există (măcar) un

element u ∈ US astfel încât S’[x/u](G) = 1. ■

Vom pune, evident, şi S’(F) = S’((F)), pentru fiecare F ∈ LP1.


De asemenea, de acum înainte nu vom face nici o diferenţă între IS, S,

S’, notând valoarea de adevăr a unei formule F ∈ LP1 într-o structură


dată S prin S(F) sau chiar FS (de fapt, tehnic vorbind, am putea face
acest lucru de-abia după demonstraţia Teoremei 3.1). În mod cu totul
similar vor fi notate interpretările celorlalte simboluri în structura dată:
xS, cS, fS, PS, tS, etc. Putem vorbi acum de noţiuni pe care le cunoaştem
deja, cum ar fi model, formule satisfiabile, valide, nesatisfiabile,
consecinţă semantică, echivalenţă tare şi slabă, etc. Aşa cum am mai
precizat, dată o formulă F şi o structură S, avem nevoie doar de valorile
lui S pe simbolurile care apar în F, adică, la fel ca în cazul logicii

PDF created with pdfFactory Pro trial version www.pdffactory.com


144 Cristian Masalagiu

propoziţionale, vom folosi titulatura de structură corectă pentru o


formulă (sau o mulţime de formule), pentru a denota restricţia unei
structuri la simbolurile din Alf care apar într-o formulă (acesta fiind de
fapt o funcţie parţială pe X U P U F U T U LP1). Pot fi identificate
şi anumite (clase de) structuri speciale atât la nivel sintactic cât şi la
nivel semantic. Sintactic, să nu uităm că mulţimea de formule din
calculul cu predicate de ordinul I depinde de alfabetul iniţial Alf. Vom
presupune astfel că mulţimea de variabile este numărabilă, că în
mulţimea P cel puţin P0, P1, P2 sunt nevide, că mulţimea F conţine
măcar un simbol funcţional (indiferent de aritate), etc. Fără restricţii de
acest tip, există pericolul ca LP1 să fie trivială (de exemplu, mulţimea
vidă), banală (poate coincide cu LP sau chiar cu o subclasă a acesteia)
sau prea particulară (putându-se exprima, de exemplu, doar relaţiile
unare dintre diverse obiecte). Semantic, putem admite existenţa unor
simboluri speciale de predicate sau funcţii care să fie interpretate
identic în orice structură. Un exemplu este relaţia de egalitate, care
poate fi considerată ca fiind reprezentată la nivel sintactic de un simbol
predicativ de aritate 2 (să presupunem că P2 ≠ Ø şi „=” ∈ P2). În
momentul în care considerăm o formulă F care conţine un asemenea
simbol şi ne interesează existenţa unui model, este normal să-l căutăm
doar printre structuri de forma S = <US, IS> în care = S (a, b) este
egal cu 1 atunci şi numai atunci când a coincide cu b în universul dat
(=S : US × US → B). Cu alte cuvinte, în asemenea situaţii, clasa
structurilor/modelelor „admise” este restrânsă în mod forţat, ceea ce nu
are întotdeauna efecte secundare favorabile. Astfel, în situaţia descrisă,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 145

clasa de formule este notată LP1 {=} (pe scurt, LP1=) şi se numeşte
calculul cu predicate de ordinul I cu egalitate (punctăm iar: dacă
F ∈ LP1=, atunci, dacă F conţine simbolul predicativ = ∈ P2, pentru a i
se calcula valoarea de adevăr S(F) se iau în considerare doar structuri S
în care „=” este interpretat doar ca fiind egalitatea pe universul
respectiv). Acestea se vor numi structuri/interpretări standard.
Similar se poate considera LP1 {+}, LP1{=, +}, etc. Vom vedea că
problema satisfiabilităţii pentru LP1 (notată SAT1) este
semidecidabilă, iar problema satisfiabilităţii pentru LP1= este
nedecidabilă. Un rol important în demonstraţii îl au structurile
Herbrand.

Definiţia 3.9 (universuri şi structuri Herbrand). Fie F ∈ LP1. Se


numeşte univers Herbrand (ataşat lui F), mulţimea D(F) definită
prin:
Baza. În D(F) se pun toate elementele din F0 care apar în F. Dacă F nu
conţine nici o constantă, atunci se pune forţat în D(F) un element
oarecare din F0 (numele rezervat standard, de obicei, este a).
Pas constructiv. Fie orice n ∈ N*, orice f ∈ Fn care apare în F şi termii
oarecare t1, t2, ... , tn ∈ D(F). Atunci f(t1, t2, ... , tn) ∈ D(F).
O structură Herbrand (pentru F) este o structură (corectă pentru F)
H = <UH, IH>, în care UH = D(F), iar IH satisface condiţia că
interpretează fiecare term prin el însuşi. Mai exact, H(f(t1, t2, ... , tn)) =

PDF created with pdfFactory Pro trial version www.pdffactory.com


146 Cristian Masalagiu

fH( t1H , t 2H ,K , t nH ) = f( t1H , t 2H ,K , t nH ), pentru fiecare n ∈ N şi fiecare

t = f(t1, t2, ... , tn) ∈ T. ■

Se poate spune că D(F) este mulţimea termilor de bază construiţi cu


simboluri din F. Într-o structură Herbrand, dacă f ∈ F0 atunci H(f) = f şi
în consecinţă dacă t este un term de bază avem şi tH = t. Interpretarea

unei variabile este cea uzuală (xH ∈ D(F) pentru fiecare x ∈ X), la fel ca
şi interpretarea simbolurilor predicative (ele vor fi funcţii oarecare peste
D(F) cu valori în B). A nu se confunda fH( t1H , t H2 ,K , t nH ), care denotă

aplicarea efectivă a funcţiei fH : D(F)n → D(F) n-uplului

< t1H , t 2H ,K , t nH >, cu f( t1H , t H2 ,K , t nH ) (valoarea aplicării anterioare),

care este un term fără variabile aparţinând lui D(F), adică, în


ultimă instanţă, un şir de caractere. Dacă există o structură Herbrand
care este model pentru o formulă F, atunci spunem şi că F admite
model Herbrand.

Exemplu. Fie formula F = (∀x)(P(x, f(x)) ∧ Q(g(b, z)).


(i) Să se găsească o structură S = <US, IS>, corectă pentru F, astfel

încât S ‘ F. Conform Definiţiei 3.8, vom avea S(F) = 1 dacă şi numai

dacă pentru fiecare u ∈ US avem S[x/u](P(x, f(x)) ∧ Q(g(b, z)) = 1, adică

dacă şi numai dacă pentru fiecare u ∈ U S avem S[x/u] ((P(x, f(x))) = 1 şi

S[x/u] (Q(g(b, z))) = 1, adică dacă şi numai dacă pentru fiecare u ∈ US


avem PS[x/u](xS[x/u], fS[x/u](xS[x/u])) = 1 şi QS[x/u] (gS[x/u] (bS[x/u] , zS[x/u])) = 1,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 147

adică dacă şi numai dacă pentru fiecare u ∈ US avem PS(u, fS(u)) = 1 şi


QS(gS(bS, zS)) = 1. În acest moment, pentru obţinerea structurii cerute,
se pune mai întâi problema alegerii unui univers US corespunzător. Ar
trebui să ne gândim măcar la D(F) (a fost recent construit) şi la N, care
este o mulţime cunoscută, având numeroase proprietăţi. Cum ambele
mulţimi au acelaşi cardinal, vom încerca întâi cu US = N. Apoi, într-un

prim pas ar trebui să găsim o relaţie PS : N × N → N şi o funcţie

fS : N → N, astfel încât pentru fiecare u ∈ U S să avem PS(u, fS(u)) = 1.

O relaţie binară pe N, cunoscută, este relaţia de ordine parţială ≤.

Astfel, dacă alegem PS @ ≤, putem lua fS ca fiind funcţia succesor

(fS(n) = n + 1, pentru fiecare n ∈ N) şi atunci avem PS(u, fS(u)) = 1,

pentru fiecare u ∈ US. Structura deja sugerată mai trebuie completată

de alegerea corespunzătoare a relaţiei QS : N → N, a funcţiei

gS : N × N → N şi a valorilor bS ∈ N şi zS ∈ N, astfel încât să avem şi


QS(gS(bS, zS)) = 1. Cum toate acestea sunt elemente precizate, există
numeroase opţiuni convenabile. De exemplu, putem lua bS = 5, zS = 10,

gS(m, n) = m + n pentru fiecare m, n ∈ N (gS este adunarea pe N) şi, în


sfârşit, QS(n) = 1 dacă şi numai dacă n este număr impar. Trecerea la o
structură Herbrand similară este uşoară, dacă ţinem cont de faptul că
există o corespondenţă bijectivă între N (sau o submulţime finită a sa)
şi D(F), oricare ar fi formula F.

PDF created with pdfFactory Pro trial version www.pdffactory.com


148 Cristian Masalagiu

(ii) Să se găsească o structură S = <US, IS>, corectă pentru F, astfel

încât S — F. Procedăm identic cu cazul precedent, doar în final luăm de

exemplu QS(n) = 1 dacă şi numai dacă n este număr par.


(iii) Să se găsească universul Herbrand al lui F. Conform Definiţiei
3.9, începem (Baza) prin a introduce în D(F) constantele care apar în F.
Prin urmare, iniţial (conform convenţiilor deja adoptate), D(F) = {b}.
Rămâne să aplicăm Pasul constructiv cât timp este posibil, „obţinând”
D(F) = {b, f(b), f(f(b)), … } U {g(b, b), g(g(b, b), b), ... } U {f(g(b, b)),
f(f(g(b, b))), …} U {g(f(b), b), … } U ... . Desigur că D(F) este
numărabilă. Într-adevăr, considerând D(F) ca o mulţime de cuvinte

peste alfabetul a = {b, g, f, (, ), ,}, putem defini lungimea, l(w), unui


cuvânt w ∈ a* ca fiind egală cu numărul de caractere care îl compun
(poate chiar exceptând parantezele). Atunci, pentru fiecare n ∈ N,
mulţimea cuvintelor de lungime n va fi finită şi astfel D(F) va fi o
reuniune numărabilă de mulţimi finite, deci numărabilă, adică aflată în
corespondenţă bijectivă cu N. Mai mult, D(F) va fi chiar recursiv
enumerabilă ([ŢIP]), adică există un semialgoritm care, fără a avea
nici o intrare, listează toate elementele din D(F) (de exemplu, în
ordinea crescătoare a lungimii acestora). În acest mod, putem
presupune că a* este total ordonată printr-o relaţie pe care o vom nota
cu ∠ şi definită formal prin: w1 ∠ w2 dacă şi numai dacă w1 este
înaintea lui w2 în lista furnizată ca ieşire de semialgoritmul anterior
(putem chiar să menţinem în această listă o singură apariţie, de exemplu
prima întâlnită în parcurgerea ei de la stânga la dreapta, a oricărui

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 149

cuvânt). În consecinţă, mulţimea D(F) ⊆ a* este şi ea total ordonată


prin restricţia relaţiei ∠. Vom prescurta acest lucru scriind
D(F) = {w1, w2, ... }, ştiind şi că w1 ∠ w2 ∠ ... . Să mai notăm faptul că
D(F) este întotdeauna o mulţime nevidă, ea putând fi finită în cazul în
care F nu conţine simboluri funcţionale de aritate diferită de 0 (în
restul cazurilor D(F) are aspectul de mai sus).
(iv) Să se găsească o structură Herbrand H1 = <UH1, IH1> care să
fie model pentru F şi o alta H2 = <U H2, IH2> care să nu fie model
pentru F. Ţinând cont de punctele anterioare şi de Definiţia 3.9
(structurile Herbrand pentru o formulă F sunt întotdeauna corecte
pentru F), avem D(F) = {w1, w2, ... } şi putem lua PH1 = PH2 = ∠,

fH1(wi) = fH2 (wi) = wi+1 (i ∈ N), bH1 = bH2 = b ∈ D(F) (acest lucru este
obligatoriu conform definiţiei unei structuri Herbrand), zH1 = zH2 = b
(de exemplu) şi gH1(u, v) = gH2(u, v) = uv (aceasta însemnând
concatenarea cuvintelor u şi v). În sfârşit, vom pune QH1(u) = 1 dacă şi
numai dacă l(u) este număr par şi respectiv QH2(u) = 1 dacă şi numai

dacă l(u) este număr impar. Rezultă imediat că H1 ‘ F şi H2 — F. ■

Teorema 3.1 (de extensie). Pentru fiecare structură S = <US, IS>,


extensia sa imediată S’ dată prin Definiţia 3.8 este funcţie şi este unica
funcţie având domeniul X U P U F U T U LP1 şi codomeniul

US U [US∗ → B] U [ US∗ → US] U B, care extinde S şi satisface


condiţiile:

PDF created with pdfFactory Pro trial version www.pdffactory.com


150 Cristian Masalagiu

(i) S’(( F1 )) = S '(F1 ) , pentru fiecare F ∈ LP1.


(ii) S’((F1 ∧ F2)) = S’(F1) • S’(F2), pentru fiecare F1, F2 ∈ LP1.

(iii) S’ ((F1 ∨ F2)) = S’(F1) + S’(F2), pentru fiecare F1, F2 ∈ LP1.


(iv) S’((∀x)(G)) = 1 dacă şi numai dacă pentru fiecare u ∈ US avem
S’[x/u](G) = 1 unde S’[x/u] este o interpretare care coincide cu S’
exceptând faptul că S’(x) = u (pentru fiecare x ∈ X şi fiecare G ∈ LP1).
Mai sus putem adăuga şi
(v) S’((∃x)(G)) = 1 dacă şi numai dacă există (măcar) un element

u ∈ US astfel încât S’[x/u](G) = 1 (pentru fiecare x ∈ X şi fiecare


G ∈ LP1).
Relaţia S’((F)) = S’(F) o putem considera ca fiind adevărată chiar prin
convenţie.
Demonstraţie. Faptul că S’(a) = S(a) pentru fiecare a ∈ X U P U F
(S’ extinde S) este adevărat din definiţie. Pentru a arăta faptul că S’ este
funcţie şi este unică având proprietăţile considerate, procedăm prin
inducţie structurală (analog cu demonstraţia corespunzătoare de la
logica propoziţională). Proprietatea de a fi funcţie a lui S’ se păstrează
succesiv pentru T şi LP1 deoarece S este funcţie, unicitatea rezultând
prin reducere la absurd, folosind direct relaţiile (i) – (v). ■

Exerciţiul 3.3. Fie F o formulă din calculul cu predicate de ordinul


I, cu sau fără egalitate, (∀*)F închiderea sa universală şi (∃*)F

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 151

închiderea sa existenţială. Ce se poate spune despre legătura dintre


aceste formule în privinţa satisfiabilităţii (validităţii)?

În secţiunile/paragrafele următoare din Capitolul 3 vom urma


un drum oarecum similar cu calea parcursă în cazul LP, pentru a ajunge
în situaţia să testăm satisfiabilitatea unei formule din LP1 utilizând
rezoluţia (adaptată pentru noul context). Avem nevoie de câteva
rezultate preliminare.

§3. Forme normale în LP1


Să observăm mai întâi că LP1 poate fi considerată ca o extensie
reală a lui LP, atât la nivel sintactic cât şi la nivel semantic. Orice
formulă de bază din LP1 (formulă care nu conţine variabile) poate fi
interpretată ca o formulă propoziţională (inclusiv elementele lui P0).
Dacă formula în cauză nu conţine nici apariţii de conectori (şi, evident,
nici de cuantori), ea va putea fi considerată drept o variabilă
propoziţională. Conchidem că din punct de vedere sintactic avem
într-adevăr LP ⊆ LP1 (însă este iar nevoie de nişte presupuneri
suplimentare privind cardinalitatea unor mulţimi ca P0,F0, F1 sau P1).
Mai mult, considerând orice structură S ca funcţie semantică în sensul
LP1, ea poate fi considerată ca o extensie a funcţiei corespunzătoare
aplicată pentru formulele care sunt (şi) elemente ale lui LP (iar această
ultimă funcţie, după cum se constată direct din definiţii, reprezintă
exact o structură în sensul LP). Vom vedea că relaţia dintre LP şi LP1
este chiar mai profundă, LP putând fi considerată ca o aproximare alui

PDF created with pdfFactory Pro trial version www.pdffactory.com


152 Cristian Masalagiu

LP1, la fel cum mulţimea numerelor raţionale este o aproximare a


mulţimii numerelor reale. Numele folosite, logică propoziţională
respectiv logică cu predicate de ordinul I, sunt legate de lipsa
cuantificatorilor respectiv de folosirea acestora pentru a „lega” doar
variabilele (nu şi, de exemplu, simbolurile funcţionale sau cele
predicative). Cuvântul calcul, utilizat ca un sinonim pentru logică în
acest context, exprimă faptul că mulţimile (de formule) considerate nu
sunt „amorfe”, ci pot fi „prelucrate” într-un mod „sistematic” (vorbim
despre calculul diferenţial şi integral, de exemplu). O logică (calcul) în
care ar fi permisă şi cuantificarea simbolurilor predicative (eventual şi a
celor funcţionale), ar putea fi numită logică (calcul) cu predicate de
ordinul II (LP2), dacă ţinem cont de faptul observat deja că (măcar)
elementele lui P0 sunt formule atomice pentru LP dar „variabile” în
LP1 (analog, formulele atomice din LP1 ar putea fi „variabile” în
LP2). Fiecare nou tip de logică (LP1, LP2, …), trebuie să fie în
acelaşi timp o extensie şi o aproximare a logicii anterioare (pe scurt, o
generalizare sau o logică de ordin superior). După cum am mai
subliniat de câteva ori, deşi rezultatele privind complexitatea sau
tratabilitatea (algoritmică a) unor probleme importante sunt
descurajatoare chiar pentru logici de ordin inferior, căutarea unor logici
„mai generale” (de ordin superior, dar şi neclasice) este justificată prin
mărirea puterii de exprimare.

Exemplu. Găsiţi o formulă F ∈ LP1 =, care:


• Este satisfiabilă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 153

• Conţine un simbol funcţional binar f ∈ F2 şi un simbol constant


e ∈ F 0.
• Pentru fiecare S ‘ F avem: <US, fS> este grup.

Am fi putut formula cele de mai sus astfel: Să se găsească o formulă


din calculul cu predicate de ordinul I cu egalitate care să exprime
faptul că o anumită relaţie binară (numită f) peste o mulţime nevidă
oarecare, determină pe aceasta o structură de grup (al cărui element
neutru este notat e). În acest caz, ar fi existat întrebări inevitabile, cum
ar fi „Cum se poate defini formal faptul că o formulă exprimă o
anumită cerinţă?” (acest lucru nu este posibil, deoarece măcar unul
dintre elementele implicate nu poate avea o definiţie formală).
Formularea adoptată mai sus are avantajul că este precisă, deoarece toţi
termenii implicaţi au definiţii formale (formulă din LP1=, formulă
satisfiabilă, simbol funcţional binar, structură, grup, etc.). Pentru
rezolvare va trebui să luăm în considerare şi diferitele clase de axiome
(diferite) prin care se identifică un grup. Deoarece formula căutată
F este din LP1= şi elementul neutru este precizat explicit, putem folosi
axiomele „standard” (vom reveni la acest tip de problemă şi în
Capitolul 4):
1. f este lege de compoziţie internă, binară, pe orice mulţime nevidă
considerată:
F1: (∀x)(∀y)(∃z)(f(x, y) = z) ∧ (∀x)(∀y)(∀u)(∀v)(f(x, y) = u ∧
f(x, y) = v → u = v).
2. f este asociativă:
F2: (∀x)(∀y)(∀z)(f(x, f(y, z)) = f(f(x, y), z)).

PDF created with pdfFactory Pro trial version www.pdffactory.com


154 Cristian Masalagiu

3. f admite element neutru (notat e):


F3: (∃e)(∀x)(f(x, e) = f(e, x) ∧ f(x, e) = x)).
4. Fiecare element x este simetrizabil în raport cu f:
F4: (∀x)(∃x’)(f(x, x’) = f(x’, x) ∧ f(x, x’) = e)).
Cerinţele sunt astfel imediat satisfăcute dacă luăm
F = F1 ∧ F2 ∧ F3 ∧ F4. ■

Exerciţiul 3.4. Considerând exemplul anterior, puteţi găsi o


formulă F care să satisfacă aceleaşi cerinţe, exceptând folosirea
explicită a lui e? Dar dacă am interzice şi folosirea explicită a
simbolului de egalitate?
Exerciţiul 3.5. Să se găsească o formulă care să conţină un simbol
predicativ binar P şi care să exprime faptul că P este o relaţie (binară)
antisimetrică.

Teorema 3.2 (de substituţie). Fie H ∈ LP1, oarecare. Fie orice


F, G ∈ LP1 astfel încît F este o subformulă a lui H şi G este tare
echivalentă cu F. Fie H’ formula obţinută din H prin înlocuirea (unei
apariţii fixate a) lui F cu G. atunci H ≡ H’.
Demonstraţie. Se procedează prin inducţie structurală, într-un mod
identic cu cazul LP. Situaţia în care sunt utilizaţi cuantificatorii trebuie
tratat suplimentar. Reamintim astfel că afirmaţia de demonstrat este
(∀H ∈ LP1)P(H), unde
P(H): (∀F, G, H’ ∈ LP1)(((F ∈ subf(H)) şi
(H’ se obţine din H înlocuind o apariţie fixată a lui F cu G) şi

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 155

(F ≡ G)) ⇒ H ≡ H’).
În Pasul inductiv singurul caz netratat anterior, în Teorema 2.5
(pentru H = (∃x)H1 se procedează similar) este:
(iv) H = (∀x)H1. Fie orice F ∈ subf(H) = {H} U subf(H1). Dacă F = H,
nu mai avem ce demonstra, la fel ca în cazul Baza. Să presupunem că
F ∈ subf(H1) şi fie H1’ formula care se obţine din H1 înlocuind o
apariţie a lui F cu un G (nu uităm că F ≡ G). Ştiind, conform ipotezei
inductive, că H1 ≡ H1’, faptul că H’ = (∀x)H1’ este tare echivalentă cu
H rezultă acum direct din definiţii. ■

Echivalenţele deja cunoscute (Teorema 2.4) pot fi completate


cu altele, care se referă la cuantori.

Teorema 3.3. Pentru fiecare F, G ∈ LP1 şi fiecare x, y ∈ X, sunt


adevărate următoarele echivalenţe:
1.  (∀x)F ≡ (∃x)( F)
 (∃x)F ≡ (∀x)( F)
2. Dacă x nu apare liber în G, atunci:
(∀x)(F ∧ G) ≡ (∀x)(F) ∧ G
(∀x)(F ∨ G) ≡ (∀x)(F) ∨ G
(∃x)(F ∧ G) ≡ (∃x)(F) ∧ G
(∃x)(F ∨ G) ≡ (∃x)(F) ∨ G
3. (∀x)(F) ∧ (∀x)(G) ≡ (∀x)(F ∧ G)
(∃x)(F) ∨ (∃x)(G) ≡ (∃x)(F ∨ G)
4. (∀x)(∀y)F ≡ (∀y)(∀x)F

PDF created with pdfFactory Pro trial version www.pdffactory.com


156 Cristian Masalagiu

(∃x)(∃y)F ≡ (∃y)(∃x)F
5. Dacă x nu apare liber în F, atunci:
(∀x)F ≡ F
(∃x)F ≡ F.
Demonstraţie. Începem cu prima echivalenţă din 5. Fie astfel orice
structură (corectă) S = <US, IS> astfel încât S ‘ (∀x)F. Aceasta

înseamnă că S((∀x)F) = 1, adică pentru fiecare u ∈ US avem


S[x/u](F) = 1. Dar S[x/u] coincide cu S, exceptând faptul că S[x/u] (x) = u şi
aceasta pentru fiecare apariţie (liberă) a lui x în F. Prin urmare, pentru
că x nu are apariţii libere în F, S[x/u] (F) = S(F) (q. e. d.). A doua
echivalenţă din 5. rezultă similar, iar 4. reprezintă o consecinţă imediată
din definiţii. Mai demonstrăm doar prima echivalenţă din 2., restul
lăsându-le pe seama cititorului. Fie din nou orice structură S = <US, IS>
corectă pentru formulele care intervin. Avem succesiv:
S((∀x)(F) ∧ G) = 1 dacă şi numai dacă
pentru fiecare u ∈ US, S[x/u] (F) şi S (G) = 1 dacă şi numai dacă (folosim
5., pentru G)
pentru fiecare u ∈ US, S[x/u] (F) = 1 şi S[x/u] (G) = 1 dacă şi numai dacă

pentru fiecare u ∈ US, S[x/u] (F G) = 1 dacă şi numai dacă

S((x)(F ∧ G)) = 1. ■

Observaţie. Ca o consecinţă a teoremei anterioare rezultă că sunt


adevărate şi echivalenţele (∀x)(∀x)F ≡ (∀x)F şi (∃x)(∃x)F ≡ (∃x)F
(chiar şi variantele (∃x)(∀x)F ≡ (∀x)F, respectiv (∀x)(∃x)F ≡ (∃x)F),

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 157

care se pot generaliza pentru oricâte apariţii ale cuantorilor (F ar putea


conţine la rândul ei cuantificatori). Se poate arăta însă că nu sunt
adevărate echivalenţele (mai exact, există x ∈ X, există F, G ∈ LP1
astfel încât, mai jos, formulele din membrul stâng nu sunt echivalente
cu cele corespunzătoare din membrul drept):
(∀x)F ∨ (∀x)G ≡ (∀x)(F ∨ G)
(∃x)F ∧ (∃x)G ≡ (∃x)(F ∧ G)
Să considerăm de exemplu prima relaţie. Chiar la nivel intuitiv cei doi
membri nu exprimă acelaşi lucru deoarece faptul că F sau G este
satisfăcută pentru o (aceeaşi) valoare a lui x nu înseamnă că fie F, fie G,
sunt satisfăcute pentru (alte) valori ale lui x, eventual diferite. Astfel,
putem lua drept contraexemplu:
• F = P(x).
• G = Q(x).
• S = <US, IS>, US = N, PS(n) = 1 dacă şi numai dacă n este
număr par, QS(n) = 1 dacă şi numai dacă n este număr impar
(interpretarea lui x în S nu contează, toate apariţiile sale fiind în
acest caz legate).
Nici echivalenţa (∀x)(∃y)F ≡ (∃y)(∀x)F nu este adevărată pentru
fiecare formulă F. ■

Putem trage şi concluzia că scrierea succesivă a unui aceluiaşi


cuantor este inutilă, la fel fiind şi o nouă cuantificare a unei apariţii deja
cuantificate (interpretarea unei variabile care nu are apariţii libere într-o
formulă neavând efect în stabilirea valorii de adevăr a acelei formule,

PDF created with pdfFactory Pro trial version www.pdffactory.com


158 Cristian Masalagiu

indiferent de structura considerată). Deoarece echivalenţele anterioare


pot fi interpretate şi ca modalităţi de transformare a formulelor care
păstrează validitatea („mutând cuantificatorii în faţă”), putem
considera că am făcut un prim pas spre obţinerea formelor normale
pentru formulele din LP1. Deşi nu este imediat util, am preferat să
începem cu rezultatul următor datorită importanţei sale în justificarea
unor afirmaţii şi caracterului didactic al demonstraţiei. Intuitiv, teorema
afirmă că pentru a găsi semantica unei formule F (cu ajutorul unei
structuri S), formulă în care am substituit apariţiile libere ale unei
variabile x cu un term de bază t, putem afla mai întâi semantica lui t în
structura considerată şi apoi să găsim semantica lui F în noua
structură S[x/S(t)].

Teorema 3.4 (lema de translaţie). Fie F ∈ LP1, x ∈ X , t ∈ T un term


de bază şi S orice structură corectă pentru formulele care apar. Atunci:
S ((F)[x/t]) = S[x/S(t)] (F)
Demonstraţie. Arătăm prin inducţie structurală adevărul metaformulei
(∀F)P(F), unde:
P(F): (pentru orice x ∈ X )(pentru orice t ∈ T , term de bază)
(pentru orice structură S)(S((F)[x/t]) = S[x/S(t)] (F)).

Baza. F ∈ At.

(i) F = P ∈ P0. Neexistând variabile, afirmaţia este imediată.


(ii) Fie n ∈ N*, t1, t2, … , tn ∈ T , P ∈ Pn astfel încât F = P(t1, t2, …, tn ).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 159

Dacă x nu apare (liber) în F, afirmaţia este din nou evidentă. În caz


contrar, este suficient să demonstrăm rezultatul pentru cazul în care
există o (singură) apariţie (liberă) a lui x în F. Putem presupune, fără a
restrânge generalitatea, că x apare la poziţia i (de la stânga la dreapta)
în t1. În acest caz, este clar că t1 are forma f(K , x ,K ) , sau poate chiar
i

coincide cu x. Atunci:
S((F)[x/t]) = S((P(t1, t2 , …, tn ))[x/t]) =
= S(P((t1)[x/t], t2 , …, tn )) =
= S((P(f(… , x, …)))[x/t], t2, …, tn ) =
= S(P(f(… , t, …)), t2, …, tn ) =
= S(PS(fS(… , tS, …)), S(t2), …, S (tn)) =
= S [x/S(t)] (F), direct din definiţii, în contextul teoremei.
Pas inductiv.
(i) F = ( G). Atunci S((F)[x/t]) = S(( G)[x/t]) = S(((G)[x/t])) =
S((G)[x/t]).
Aplicând acum ipoteza inductivă pentru G, obţinem în continuare:
S((G)[x/t]) = S[x/S(t)] (G) = S[x/S(t)] ( G) = S [x/S(t)] (F).
Să mai observăm că egalităţile anterioare sunt triviale dacă x nu are nici
o apariţie liberă în F.
(ii) F = (G ○ H), ○∈ {∧, ∨}. Se demonstrează analog cu cazul
precedent, folosindu-se ipoteza inductivă pentru G şi H, regulile
semantice corespunzătoare pentru ∨ şi ∧, precum şi faptul că t nu
conţine variabile (este term de bază).

PDF created with pdfFactory Pro trial version www.pdffactory.com


160 Cristian Masalagiu

(iii) F = (∀y)G (cazul F = (∃y)G poate fi demonstrat similar). Dacă


y = x şi x nu apare liber în G, suntem într-un caz similar cu cel tratat în
Baza. Presupunem că y ≠ x şi x apare liber în G (deci şi în F) măcar
odată. Ca urmare, rezultă S((F)[x/t]) = S(((∀y)G)[x/t]) =

S((∀y )((G)[x/t])). Atunci:


S((∀y)((G)[x/t])) = 1 dacă şi numai dacă pentru fiecare u ∈ US avem
S[y/u] ((G)[x/t])) = 1 dacă şi numai dacă (aplicăm ipoteza inductivă
pentru G şi S[y/u])

S[y/u][x/S(t)] (G) = 1 dacă şi numai dacă (tS, u ∈ US, şi y ≠ x)


S[x/S(t)][y/u] (G) = 1 dacă şi numai dacă
S[x/S(t)] ((y)G) = 1 dacă şi numai dacă
S[x/S(t)] (F) = 1. ■

Cu următorul rezultat se „începe construcţia” formelor normale.

Teorema 3.5 (lema de redenumire a variabilelor legate). Fie


F = (○x)G , ○ ∈ {∀, ∃}, o formulă oarecare din LP1. Fie y o variabilă
nouă (în sensul că ea nu apare în G). Atunci :
F ≡ (○y)(G[x/y]).
Demonstraţie. Imediată, prin inducţie structurală. ■

În cele de mai sus era suficient să presupunem că y, variabila nouă, nu


apare liber în G.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 161

Definiţia 3.10 (forma normala rectificată). O formulă F ∈ LP1 se


numeşte rectificată (sau, se află în formă normală rectificată, pe scurt
FNR) dacă nu conţine variabile care apar atât libere cât şi legate şi nu
are cuantificatori care să lege aceeaşi variabilă, dar pe poziţii diferite în
formulă (indiferent dacă este vorba de cuantificatori existenţiali sau
universali). ■

Teorema 3.6. Pentru orice formulă din F ∈ LP1, există o formulă


rectificată F’ ∈ LP1, astfel încât F’≡ F.
Demonstraţie. Se aplică de un număr finit de ori Lema de redenumire
formulei iniţiale F (implicit, se aplică şi Teorema 3.3 şi Teorema de
substituţie). ■

Definiţia 3.11 (forma normală prenex). O formulă F ∈ LP1 este în


formă normală prenex (FNP, pe scurt) dacă F = (○1 y1) …(○n yn)G, unde
n ∈ N, ○i ∈ {∃, ∀} (i ∈ [n]), iar y1, … , yn sunt toate variabilele
distincte care apar (liber) în G. În plus, G nu mai conţine cuantificatori.

În cele de mai sus, cazul n = 0 se referă la absenţa cuantificatorilor


([0] = Ø).

Teorema 3.7. Pentru fiecare formulă F ∈ LP1, există o formulă


F’ ∈ LP1, care este în FNP şi este tare echivalentă cu F.

PDF created with pdfFactory Pro trial version www.pdffactory.com


162 Cristian Masalagiu

Demonstraţie. Fără a restrânge generalitatea, putem presupune că toate


formulele care intervin sunt rectificate. Procedăm prin inducţie
structurală, (meta)afirmaţia de demonstrat fiind evidentă.
Baza. F ∈ At. Aceasta este deja în FNP, având numărul de
cuantificatori egal cu zero.
Pas inductiv.
(i) F = ( F1). Presupunem că F1 este în FNP şi arătăm că F este în
FNP. Conform ipotezei inductive pentru F1, există G1 aflată în FNP
rectificată astfel încât G1 ≡ F1. Aceasta are aspectul
G1 = (○1 y1) …(○nyn)G, unde ○1, ○2, ..., ○n ∈{∃, ∀} şi G nu mai conţine
cuantificatori. Atunci:
F = ( F1) ≡ (○1 y1) …(○n yn)G ≡ ( d'1 y1 ) …( d'n yn )( G), unde d 'i =∃

dacă ○i = ∀ şi reciproc, pentru fiecare i∈[n]. Ultima formulă este în


FNP.
(ii) F = (F1 o F2), o ∈ {∧, ∨}. Conform ipotezei inductive, rezultă că
există formulele
G1 = (○1x1 ) …(○ m xm ) G1' , ○i ∈ {∀, ∃}, i ∈ [m] şi

G2 = ( d'1 y1 ) …( d'k yk ) G '2 , d' i ∈ {∀, ∃}, i ∈ [k], G1 şi G2 fiind în

FNPR (formă normală prenex rectificată) şi echivalente respectiv cu F1


şi F2 . Atunci F ≡ G1 ○ G2 = (○1 y1)…(○ mym) G1' ○

( d'1 z1 ) …( d'k zk ) G '2 ≡ ( d'1 z1 ) …( d'k zk )(○1y1) …(○mym)( G1' ○ G '2 ).

În cele de mai sus, am aplicat de un număr finit de ori Lema de


redenumire, Teorema 3.3 şi Teorema de substituţie.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 163

(iii) F = (ox)G, o ∈ {∀, ∃}. Conform ipotezei inductive, există o


formulă tare echivalentă cu G, aflată în FNPR,
G = (○1 y1) … (○n yn)G’, ○i ∈ {∀, ∃}, i ∈ [n]. Dacă x ∈{y1, y2, … , yn},
atunci aplicăm mai întâi Lema de redenumire. Să presupunem acum
că x ∉ {y1, y2, … , yn}. Atunci F ≡ (○x)(○1 y1) … (○n yn)G’, formulă
care se află în forma necesară. ■

Observaţie. Am arătat că pentru fiecare formulă din LP1, există o altă


formulă din LP1, care este tare echivalentă cu ea şi care este în FNP
rectificată (pe scurt, FNPR). Conform Teoremei 3.3, putem presupune
şi că nu există în această formulă cuantificatori care să lege variabile
care nu apar în ea şi nici cuantificatori (relativ la o aceeaşi variabilă) cu
apariţii multiple. Cu alte cuvinte, din punctul de vedere al
satisfiabilităţii, ne putem limita la studiul formulelor din LP1 de forma
F = (○1 y1) … (○k yk)F’, unde free(F’) = {y1, y2, … , yk}, iar F’ este chiar
matricea lui F, nemaiconţinând alţi cuantori (○1, ○2, …, ○k ∈ {∀, ∃}).
Prin urmare, folosind şi Exerciţiul 3.3 (o formulă este satisfiabilă dacă
şi numai dacă închiderea sa existenţială este satisfiabilă), putem spune
că pentru testarea satisfiabilităţii unei formule din LP1, putem să ne
limităm la clasa de formule având aspectul sintactic
F = (○1 y1)(○2 y2) … (○k yk)F*, unde F* este matricea lui F iar
leg(F) = var(F) = free(F*) = {y1, y2, … yk}. Prin urmare, această
formulă este şi închisă, neconţinând apariţii libere de variabile. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


164 Cristian Masalagiu

Vom arăta în continuare că dacă există cuantificatori existenţiali


în forma anterioară pentru o formulă, aceştia pot fi eliminaţi, fără a se
afecta satisfiabilitatea. Testul de satisfiabilitate pentru formulele din
LP1 poate fi redus astfel la un test de satisfiabilitate pentru formule de
forma F = (∀y1) … (∀yn)F*, unde {y1, y2, …, yk} = free(F*), F*
neconţinând cuantificatori.

Definiţia 3.12 (forma normală Skolem). O formulă F ∈ LP1 este în


formă normală Skolem (FNS, pe scurt), dacă are aspectul
F = (∀x1) … (∀xk)G unde G nu mai conţine cuantificatori (este
matricea lui F), iar x1, x2, … , xk sunt variabile distincte şi reprezintă
exact variabilele care apar în G (free(G) = {x1, x2, … , xk}). F este în
formă normală Skolem clauzală (FNSC, pe scurt), dacă este în FNS
şi matricea sa este în FNC (forma normală conjuctivă) într-un sens
similar cu LP (literalii reprezentând acum formule atomice din LP1 sau
negaţii ale lor). ■

Teorema 3.8. Pentru fiecare formulă F din LP1, există o altă formulă
F’∈ LP1, care este în FNSC şi care este slab echivalentă cu ea.
Demonstraţie. Vom prezenta un algoritm prin care formula F’ va fi
construită efectiv din formula F.

Algoritm Skolem
Intrare: F ∈ LP1. Fără a restrânge generalitatea, putem presupune că F
este în FNPR, închisă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 165

Ieşire: F’ ∈ LP1, aflată în FNS (şi închisă), slab echivalentă cu F.


Metodă:
Pasul 1. F’ : = F.
Pasul 2. Cât_timp (există cuantificatori existenţiali în F’)
execută
2.1. Alege un asemenea cuantificator şi elimină-l.
2.2. Transformă formula F’.
Sf_Cât_timp.

Comentarii. Orice formulă intermediară prelucrată de algoritm are


forma F’ = (∀y1) … (∀yn)(∃z)G, unde G poate să conţină şi alţi
cuantificatori (am pus în evidenţă primul cuantificator existenţial,
alegerea fiind acum deterministă dacă ne gândim că parcurgem formula
simbol cu simbol, de la stânga la dreapta). Atunci, în urma Paşilor 2.1
şi 2.2, F’ va căpăta forma F’ = (∀y1) …(∀yn)((G)[z/f(y1, … , yn)]) unde
f este un simbol funcţional nou (în sensul că el nu mai apare în
formulele considerate), f ∈ Fn. Să notăm H @ (∀y1) … (∀yk)(∃z)G,

formula de tip F’ existentă înainte de execuţia unui pas al algoritmului


precedent şi cu H’ = (∀y1) … (∀yk)(G)[z/f (y1, y2, … yk)] formula
rezultată după execuţie. ■

Arătăm acum că H este slab echivalentă cu H’.

PDF created with pdfFactory Pro trial version www.pdffactory.com


166 Cristian Masalagiu

Presupunem întâi că H’ este satisfiabilă. Există atunci o structură


corectă S = <U S, IS>, astfel încât S ‘ H’. Ca urmare, pentru fiecare

u1, u2, … , uk ∈ US avem

S [y1/u1 ][y2/u 2 ]...[yk /u k ] ((G)[z/f(y1, y2, … , yk]) = 1.


Pentru că variabilele y1, y2, … yk sunt distincte şi apar liber în
(G)[z/f(y1, y2, … , yk)] şi pentru că structura S’ (adică

S [y1/u1 ][y2/u 2 ]...[yk /u k ] ) coincide cu S, exceptând valorile lui y1, y2, … yk


care sunt „puse” pe u1, u2, ... , uk, semantica LP1 ne permite să
înlocuim în formula G’= (G)[z/f(y1, y2, … , yk ] pe y1, y2, … yk respectiv
cu nişte constante noi (nu apar nicăieri în formulele care intervin),
distincte, a1, a2, … , ak şi să extindem structurile S şi S’ prin

a iS = a iS' = ui , pentru fiecare i ∈ [k]. În acest moment, interpretarea

termului t = f(y1, y2, … , yk) în structurile considerate va coincide cu


cea a lui f(a1, a2, … , ak). Putem astfel chiar înlocui pe t cu
f(a1, a2, … , ak), astfel încât el nu va conţine variabile. Avem deci
S’(f(y1, y2, … , yk)) = S’(f(a1, a2, … , ak)) = fS’(<S’(a1), … , S’(ak)>) =
fS(<u1, … , uk>). Atunci S’((G)[z/t]) = 1 şi t nu conţine variabile, astfel
încât putem aplica Lema de translaţie, găsind S’[z/S’ (t)](G) = 1, adică
S’ [z/S(t)](G) = 1. Sintetizând, putem spune că pentru fiecare
u1, … , uk ∈ US = US’, există v ∈ US (v = tS = fS(<u 1, … , uk>)) astfel
încât S’ [z/v](G) = 1. Prin urmare, S este model (şi) pentru H, adică H este
satisfiabilă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 167

Invers, să presupunem că H este satisfiabilă. Fie orice S = <US, IS>,


structură corectă pentru H (atenţie, S nu este definită pentru simbolul f),

astfel încât S ‘ H. Conform definiţiei, pentru fiecare u 1, … , uk ∈ US

există măcar un v ∈ US astfel încât S [y1/u1 ][y2/u 2 ]...[yk /u k ][z/v] (G)=1.


Extindem pe S la S’, corectă şi pentru H’, punând (în rest, S’ coincide
cu S ): f S’ (<u
1, … , uk>) = v. Prin urmare, pentru fiecare

′ 1/u1 ][y2/u 2 ]...[yk /u k ][z/f(u1 ,...,u k )] (G) = 1.


u1, … , uk ∈ US = US’, avem S [y

Luăm acum din nou termul t, t = f(y1, … , yk ) şi folosind aceeaşi


argumentaţie ca mai sus, putem aplica „invers” Lema de translaţie,

obţinând S [y′ 1/u1 ][y2/u 2 ]...[yk /u k ] ((G)[z/f(y1 ,..., y k )]) = 1 , ceea ce înseamnă

că S’ satisface H’, adică H’ este satisfiabilă.

Prin urmare, orice execuţie a corpului buclei din Algoritmul Skolem


elimină un cuantor existenţial, transformările făcute neschimbând
caracterul formulei (de a fi sau nu satisfiabilă). Deci fiecare formulă
intermediară de tipul F’ este în FNS şi este slab echivalentă cu F. În
sfârşit, pentru a aduce (F’)* la forma clauzală, putem aplica orice
algoritm cunoscut pentru cazul LP (renotând literalii pozitivi din F’
prin nume de variabile propoziţionale distincte din A). ■

Putem sintetiza rezultatele obţinute până în prezent în:

PDF created with pdfFactory Pro trial version www.pdffactory.com


168 Cristian Masalagiu

Teorema 3.9. Pentru fiecare formulă F ∈ LP1, există o formulă


F’ ∈ LP1 astfel încât F’ ≡s F, F’ fiind în FNSC închisă
(F’ = (∀y1) … (∀yn)F*, {y1, … , yn} = free(F*), F*, matricea lui F,
fiind în formă normală conjunctivă). ■

Exemplul următor ne va sugera şi un algoritm pentru aflarea (unei)


FNSC (de acum încolo vom presupune că orice formulă aflată în FNSC
este şi închisă).

Exemplu. Fie
F = (∀x)(∃y)(P(x, g(y), z)) ∨ ( (∀x)(Q(x)) ∧ (∀z)(∃x) R(f(x, z), z))).
Să se găsească o formulă F’, aflată în FNSC, slab echivalentă cu F.
Forma rectificată. Folosim Lema de redenumire, în principal
(folosirea Teoremei de substituţie este implicită, iar echivalenţele
exprimate prin Teorema 3.3 trebuie utilizate imediat ce este posibil de
a fi aplicate; ordinea de aplicare a acestora nu este esenţială). Găsim
(prin redenumire z, redenumire x în două poziţii diferite şi aplicare
Teorema 3.3, punctul 1.):
F ≡ (∀x)(∃y)((P(x, g(y), z))) ∨ ((∃x)(Q(x)) ∧ (∀z)(∃x) R(f (x, z), z))≡
≡ (∀x)(∃y)(P(x, g(y), z)) ∨ ((∃u)( Q(u)) ∧ (∀t)(∃v) R(f(v, t), t)).
Forma normală prenex rectificată. ∧ este prioritar faţă de ∨ (puteam
deci să ne fi dispensat de nişte paranteze) şi u nu apare liber în
(∀t)(∃v) R(f(v, t), t)). De aceea, (∃u)( Q(u)) ∧ (∀t)(∃v) R(f(v, t), t) ≡
(∃u)(  Q(u) ∧ (∀t)(∃v) R(f(v, t), t)). În continuare, t şi v nu apar liber
în  Q(u) şi atunci (∃u)(Q(u)) ∧ (∀t)(∃v) R(f(v, t), t)) ≡ (∃u)(∀t)(∃v)

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 169

( Q(u) ∧  R(f(v, t), t)). Revenind, x şi y nu apar (liber) în


(∃u)(∀t)(∃v)( Q(u) ∧  R(f(v, t), t)) şi atunci F ≡ (∀x)(∃y)(P(x, g(y), z)
∨ (∃u)(∀t)(∃v)( Q(u) ∧  R(f(v, t), t))). Acum u, t, v nu apar liber în
P(x, g(y), z) şi atunci:
F ≡ (∀x)(∃y)(∃u)(∀t)(∃v)(P(x, g(y), z) ∨  Q(u) ∧  R(f(v, t), t)).
Forma normală Skolem. Trebuie să eliminăm întâi cuantificatorii
existenţiali, nu înainte de a porni cu o formulă închisă. Singura
variabilă cu apariţii libere în ultima formulă este z şi obţinem imediat:
F ≡s (∃z)(∀x)(∃y)(∃u)(∀t)(∃v)(P(x, g(y), z) ∨  Q(u) ∧  R(f(v, t), t)).
Aplicăm acum formulei din dreapta Algoritmul Skolem, adică
efectuăm un număr de 4 execuţii a corpului buclei, în scopul de a
elimina cei 4 cuantificatori existenţali.
I. F ≡s (∀x)(∃y)(∃u)(∀t)(∃v)(P(x, g(y), b) ∨  Q(u) ∧  R(f(v, t), t)),
unde b ∈ F0.
II. F ≡s (∀x)(∃u)(∀t)(∃v)(P(x, g(h(x)), b) ∨  Q(u) ∧  R(f(v, t), t)),
unde h ∈F1.
III. F ≡ s (∀x)(∀t)(∃v)(P(x, g(h(x)), b) ∨  Q(i(x)) ∧  R(f(v, t), t)), unde
i∈F1.
IV. F ≡s (∀x)(∀t)(P(x, g(h(x)), b) ∨  Q(i(x)) ∧  R(f(j(x, t), t), t)), unde
j ∈F2.
Forma normală Skolem clauzală. Pornim cu:
F* = P(x, g(h(x)), b) ∨  Q(i(x)) ∧  R(f(j(x, t), t), t).
Notăm P(x, g(h(x)), b) cu A1, Q(i(x)) cu A2 şi R(f(j(x, t), t), t) cu A3.
Atunci F* devine F* = A1 ∨  A2 ∧  A3 = A1 ∨ ( A2 ∧  A3) ≡

PDF created with pdfFactory Pro trial version www.pdffactory.com


170 Cristian Masalagiu

(A1 ∨  A2) ∧ (A1 ∨  A3). Prin urmare obţinem în final că formula


noastră F este slab echivalentă (relaţiile ≡ şi ≡s sunt tranzitive; de
asemenea, dacă G ≡ H atunci G ≡s H) cu F’, unde:
F’ = (∀x)(∀t)((P(x, g(h(x)), b) ∨  Q(i(x))) ∧
(P(x, g(h(x)), b) ∨  R(f(j(x, t), t), t))). ■

Existenţa formelor normale, precum şi a altor rezultate


importante, ne permite un studiu sufient de detaliat al problemei
satisfiabilităţii pentru calculul cu predicate de ordinul I, cu sau fără
egalitate.

§4. Decidabilitate în LP1 (LP1=)


Vom începe direct cu un rezultat cumva aşteptat.

Teorema 3.10. Fie F o formulă din calculul cu predicate de ordinul I


fără egalitate, închisă şi aflată în FNS. Atunci F este satisfiabilă dacă şi
numai dacă F admite un model Herbrand.
Demonstraţie.
Presupunem că F admite model Herbrand. Dacă F admite model
Herbrand, ea este satisfiabilă prin definiţie.
Presupunem că F este satisfiabilă. Atunci există o structură
S = <US, IS> corectă pentru formula dată astfel încât S ‘ F. Arătăm că
în acest caz F admite şi un model Herbrand, notat HS = <UH, IH > (pe
scurt, modelul va fi notat H). Ţinînd cont de definiţia unei structuri
Herbrand (orice term de bază este interpretat prin el însuşi), rămâne să

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 171

interpretăm simbolurile predicative care intervin în formulă. Astfel,


pentru fiecare n ∈ N, pentru fiecare P ∈ Pn care apare în F şi pentru
fiecare t1, t2, ... , tn ∈ UH = D(F), vom pune:
(*) PH(<t1 , t2 , … t n>) = 1 dacă şi numai dacă PS(<tS1 , tS2 , … tSn>) = 1.

Dacă F nu conţine constante, alegem o constantă arbitrară a ∈ F0,


căreia îi dăm de asemenea o interpretare arbitară aS ∈ US. Pentru a

arăta că H ‘ F, demonstrăm o afirmaţie mai tare:

Fie G orice formulă din LP1 aflată în FNP, fără cuantori existenţiali,
închisă şi conţinând simboluri funcţionale şi predicative care apar doar
în F. Atunci, pentru fiecare structură S = <US, IS> corectă care este
model pentru G, structura H construită ca mai sus este de asemenea
model pentru G.
Demonstraţia afirmaţiei. Procedăm prin inducţie asupra numărului n
de cuantificatori universali care apar în G.
Baza. n = 0. Atunci G nu conţine cuantificatori şi este închisă. Acest
lucru înseamnă că G nu are variabile şi vom arăta că S (G) = H(G).
Procedăm acum prin inducţie structurală asupra submulţimii lui LP1
alcătuită din formulele de tipul G de mai sus.
Baza 1. G este formulă atomică fără variabile, deci
G = P(t1, t2, ... , tn), n ∈ N, P ∈ Pn şi apare în F, iar t1, t2, ... , tn ∈
UH . Egalitatea S(G) = H(G) urmează atunci direct din (*).
Pas inductiv 1. Fie G1, G2 formule fără variabile (şi închise şi
fără cuantificatori), având simbolurile funcţionale şi predicative
din F, pentru care S(G1) = H(G1) şi S(G2) = H(G2). Trebuie să

PDF created with pdfFactory Pro trial version www.pdffactory.com


172 Cristian Masalagiu

arătăm că avem S(G) = H(G) pentru fiecare G de una din


formele: G = (G1 ∧ G2), G = (G1 ∨ G2) şi G = (G1) (formula
fiind închisă, nu mai trebuie considerate cazurile (∀x)(G1) sau
(∃x)(G1)). Şi acest lucru rezultă imediat din (*) şi definiţia
semanticii unei formule din LP1.
Pas inductiv. Să presupunem că afirmaţia noastră este adevărată pentru
formule G de tipul considerat şi conţinând n – 1 cuantificatori. Fie
acum G o formulă având cel mult n cuantificatori, închisă, aflată în
FNP, neavând cuantori existenţiali şi fiind construită peste simboluri
funcţionale şi predicative din F. Fie S o structură corectă pentru G,

astfel încât S ‘ G şi H structura Herbrand dată prin (*). Arătăm că

H ‘ G. Conform ipotezelor, G = (∀x)G’, unde G’ conţine cel mult


n – 1 universali şi x apare liber în G’ (în caz contrar, ajungem până la
urmă din nou în situaţia din Baza). Astfel, deşi G’ are restul
proprietăţilor cerute pentru a putea aplica ipoteza inductivă, ea nu este
formulă închisă. Dar, din S (G) = 1 rezultă S((∀x)G’) = 1, de unde

găsim că pentru fiecare u ∈ US avem S [x/u](G’)=1. Această relaţie este

adevărată şi pentru acei u din US care au proprietatea că sunt imagini


prin structura S ai oricăror termi t fără variabile construiţi peste
simboluri din F, u = tS ∈ D(G) ⊆ D(F). Aplicând Lema de translaţie
obţinem: 1 = S [x/u](G’) = S[x/t](G’) = S((G’)[x/t]). În acest moment
dispunem de formula G’([x/t]) care este închisă (t este term de bază),
este în FNP, conţine cel mult n – 1 cuantificatori universali şi este

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 173

construită peste simboluri din F. Putem în sfârşit aplica ipoteza


inductivă, deoarece relaţia anterioară ne spune şi că S ‘ (G’)[x/t].

Atunci H ‘ (G’)[x/t] şi putem din nou aplica (în ultima relaţie) Lema

de translaţie pentru a găsi (HS)[x/t](G’) = 1 pentru fiecare t din D(G),

adică H((∀x)G’) = 1, ceea ce înseamnă de fapt că H(G) = 1, adică H


este model pentru G. Cu aceasta, afirmaţia este demonstrată (q. e. d.).
Pentru a încheia demonstraţia teoremei, aplicăm direct rezultatul
precedent pentru G = F. ■

Observaţie. Tot ceea ce am afirmat sau demonstrat până la teorema


anterioară este aplicabil şi în cazul calculului cu predicate de ordinul I
cu egalitate. Teorema 3.10 nu este însă adevărată şi pentru LP1= ,
după cum se poate intui chiar urmărind demonstraţia, pentru succesul
căreia relaţia (*) este esenţială. Astfel, în cazul în care P este chiar
egalitatea, ea trebuie interpretată standard în orice structură. Prin
urmare, considerând b şi c două constante distincte, putem găsi uşor
structuri S în care bS = cS, dar b ≠ c în orice structură Herbrand.
Desigur că acest lucru nu înseamnă că n-am putea găsi o altă
demonstraţie a rezultatului anterior, aplicabil pentru LP1 =. Din păcate,
faptul nu este posibil, conform rezultatelor care urmează (nu toate
demonstrate). ■

Teorema 3.11 (Löwenheim – Skolem). Fiecare formulă satisfiabilă


din LP1 admite model cel mult numărabil.

PDF created with pdfFactory Pro trial version www.pdffactory.com


174 Cristian Masalagiu

Demonstraţie. Se aplică direct Teorema 3.10. ■

Definiţia 3.13 (extensia Herbrand). Pentru fiecare formulă F închisă,


aflată în FNS, F = (∀y1) … (∀yn)F*, {y1, … , yn} = free(F*), F* fiind
matricea lui F, extensia sa Herbrand este mulţimea
E(F) = {(F*)[y1/t1]•[y2/t2]• … •[yn/tn] | t1, t2, …, tn ∈ D(F)}.
Dacă F este în FNSC (F are forma de mai sus, în plus F* fiind în FNC,
F* = C1 ∧ C2 ∧ …… ∧ C k, C1, C2, ... , Ck reprezentând clauze, adică
literali din LP1), mulţimea
k
E ′( F ) = U E ( C i )
i =1

se numeşte extensia Herbrand generalizată. ■

Extensia Herbrand generalizată a unei formule este obţinută practic prin


considerarea tuturor instanţelor clauzelor care compun matricea sa
(formula fiind deja în FNSC şi considerată în reprezentarea cu
mulţimi), instanţe obţinute prin aplicarea tuturor substituţiilor posibile
cu termi de bază din D(F).

Teorema 3.12 (Church). Problema validităţii pentru logica cu


predicate de ordinul I (fără egalitate) este nedecidabilă, dar
semidecidabilă.
Demonstraţie. Conform, de exemplu, [MAS1]. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 175

Observaţie. Ţinând cont de legătura dintre F şi  F, se deduce imediat


că problema SAT1 este nedecidabilă, ca de altfel şi problema
nesatisfiabilităţii (validităţii). Pe de altă parte, în cazul LP1 aceste
probleme sunt totuşi semidecidabile. ■

Teorema 3.13 (Gödel-Herbrand-Skolem). O formulă F ∈ LP1 este


satisfiabilă dacă şi numai dacă E(F) este satisfiabilă.
Demonstraţie. Fără a restrânge generalitatea, putem presupune că F
este în FNS închisă. Conform Teoremei 3.10, F este satisfiabilă dacă şi
numai dacă admite model Herbrand H. Ca de obicei, putem considera

că F = (∀y1) … (∀yn)F* şi atunci, din H(F) = 1 rezultă că pentru fiecare

t1, t2, … , tn ∈ D(F) avem H [y1/t1 ][y2 /t 2 ]...[yn /t n ] (F ) = 1 . Deoarece termii în


*

cauză sunt termi de bază, putem aplica Lema de translaţie de n ori,


rezultând că H((F*)[y1/t1]•[y2/t2]•...•[yn/tn]) = 1, pentru fiecare
t1, t2,… , tn ∈ D(F). Prin urmare, am arătat că F este satisfiabilă dacă şi
numai dacă H ‘ G pentru fiecare G ∈ E(F) adică dacă şi numai dacă

extensia Herbrand a lui F este satisfiabilă. ■

În Teorema 3.13 putem lua E’(F) în loc de E(F) şi, mai mult,
aşa cum de altfel am mai punctat, elementele lui E’(F) pot fi privite
drept clauze în sensul logicii propoziţionale, deoarece literalii din
LP1 care le compun nu conţin variabile (astfel, interpretarea lor, 0 sau
1, în orice structură S, depinde practic doar de interpretarea singurului

PDF created with pdfFactory Pro trial version www.pdffactory.com


176 Cristian Masalagiu

simbol predicativ care apare, ceea ce se reduce la interpretarea unei


variabile propoziţionale în sensul LP). Atunci are loc:

Teorema 3.14 (teorema lui Herbrand; teorema de compactitate


pentru LP1). O formulă F ∈ LP1 este nesatisfiabilă dacă şi numai
dacă există o submulţime finită a lui E’(F) care să fie nesatisfiabilă.
Demonstraţie. Direct din Teorema 3.13 şi Teorema de compactitate
pentru LP. ■

În acest moment putem spune că procedura următoare (intitulată


chiar în întregime „Procedura lui Gilmore”) poate fi folosită pentru
testarea nesatisfiabilităţii oricărei formule din LP1. Pasul 1 este un
algoritm în sine (a se vedea şi exemplul care urmează imediat
Teoremei 3.9), formula găsită la sfârşitul execuţiei sale fiind slab
echivalentă cu formula iniţială şi având aspectul F = (∀*)F*, unde
F* = C1 ∧ C2 ∧ … ∧ Ck. Extensia Herbrand generalizată E’(F)
„rezultată” în urma aplicării Pasului 2 trebuie interpretată ca fiind o
listă de clauze din LP. Datorită faptului că E’(F) nu este recursivă ci
doar recursiv enumerabilă, Pasul 2 reprezintă doar un semialgoritm.
După cum se observă, nici n-ar fi nevoie de obţinerea acestei liste
dintr-o dată. Este nevoie doar de a putea selecta câte un nou element
din ea „atunci când este necesar”, conform Pasului 3.3.2, care ar putea
fi reformulat prin Obţine un nou element din E’(F). Practic, pornind de
la ordinea pe D(F) deja sugerată (bazată pe lungimea termilor), se poate
defini o ordine totală şi pe E’(F) (acest lucru nu ar implica decât o

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 177

simplă extensie a unei relaţii de ordine definită pe o mulţime „suport”


la un produs cartezian al acelei mulţimi cu ea însăşi, de oricâte ori).
Pasul 3, şi numai el, este de fapt semialgoritmul cunoscut în literatura
de specialitate ca Procedura lui Gilmore (Procedura rezoluţiei de
bază). Aceasta nu se termină în cazul în care F este satisfiabilă şi
conţine măcar un simbol funcţional de aritate cel puţin 1.

Semialgoritmul lui Gilmore


(Procedura rezoluţiei de bază)
Intrare: Orice formulă F ∈ LP1.
Ieşire: „DA”, doar dacă F este nesatisfiabilă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


178 Cristian Masalagiu

Metodă:
Pasul 1. Se transformă F într-o formulă aflată în FNSC
(închisă), succesiv, prin rectificare (redenumire), găsirea FNP
(FNPR), obţinerea închiderii existenţiale, obţinerea FNS şi apoi
FNSC, formula rezultat notându-se, pentru simplitate, tot cu F.
Pasul 2. Se „obţine” E’(F) = {G1, G2, ... , Gn, ... }.
Pasul 3.
3.1. M := Ø.
3.2. i := 0.
3.3. Repetă
3.3.1. i := i + 1.
3.3.2. Alege Gi ∈ E’(F).
3.3.3. M := M U {Gi}.
3.3.4. M’ := Res*(M).
Până_când ( ∈ M’).
Pasul 4. Tipăreşte „DA”.

Trebuie însă să arătăm că (semi)algoritmul precedent „face ceea ce


dorim”. Să precizăm de la bun început că vom lua în considerare doar
formule F ∈ LP1 pentru care E’(F) este infinită. În caz contrar,
rezultatele obţinute până în prezent ne „spun” că F poate fi privită ca o
formulă din LP, nemaifiind necesară o tratare a acesteia în noul
context.

Teorema 3.15. Procedura rezoluţiei de bază pentru LP1 este corectă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 179

Demonstraţie. Trebuie de fapt să arătăm că pentru fiecare F ∈ LP1


având E’(F) infinită, semialgoritmul anterior se opreşte dacă şi numai
dacă F este nesatisfiabilă. Acest lucru rezultă imediat din faptul că
E’(F) este recursiv enumerabilă, din Teorema lui Herbrand şi din
Teorema rezoluţiei pentru LP. ■

Putem acum justifica de ce logica propoziţională poate fi


considerată ca o aproximare a logicii cu predicate de ordinul I.
Semnificaţia este aceea că E(F) (sau E’(F)) aproximează pe F,
deoarece testul de nesatisfiabilitate pentru F poate fi făcut testând
de nesatisfiabilitate submulţimile finite ale lui E(F) (E’(F)). Pentru
detalii privind noţiunile de număr cardinal şi ordinal, funcţie (mulţime)
recursivă (recursiv enumerabilă), alte amănunte privind
calculabilitatea, complexitatea, tratabilitatea, pot fi consultate: [ŢIP],
[CAZ2], [COR], [AHO], [BÖR], [RIC], etc.

Exemplu. Fie formula


F = (∀x)(∀y)((P(x) ∨ P(f(c)) ∨ Q(y)) ∧ P(y) ∧ (P(g(b, x)) ∨  Q(b))).
Să se decidă dacă formula este nesatisfiabilă (satisfiabilă, validă),
folosind Procedura rezoluţiei de bază (sau, altfel spus, folosind
rezoluţia din calculul propoziţional). Să obesrvăm că F este deja în
FNSC. Avem şi free(F*) = {x, y}, iar F* = {C1, C2, C3}, unde:
C1 =  P(x) ∨  P(f(c)) ∨ Q(y)
C2 = P(y)
C3 =  P(g(b, x)) ∨  Q(b),

PDF created with pdfFactory Pro trial version www.pdffactory.com


180 Cristian Masalagiu

care la rândul lor se pot scrie ca mulţimi de literali din LP1. Putem
trece astfel direct la Pasul 2 al Semialgoritmului lui Gilmore, adică la
aflarea mulţimii (listei) E’(F). O metodă generală amintită deja se
bazează întâi pe enumerarea lui D(F), termii de bază fiind ordonaţi
crescător, în ordinea lungimii lor (să precizăm şi că b precede pe c, f
precede pe g, etc., şi abia apoi folosim indicaţia referitoare la lungime).
Găsim, succesiv, ceva de genul:
D(F) = {b, c, f(b), f(f(b)), ... , f(n)(b), ... , f(c), f(f(c)), ... , f(m)(c), ... ,
, g(b, b), g(b, c), g(c, b), g(c,c), g(b, f(b)), ... ,
, g(b, g(b, b)), ... }
E(C1) = {(C1)[x/t1]•[y/t2 ] | t1, t2 ∈ D(F)} = { P(b) ∨  P(f(c)) ∨ Q(b),
 P(b) ∨  P(f(c)) ∨ Q(c),  P(c) ∨  P(f(c)) ∨ Q(b),
 P(c) ∨  P(f(c)) ∨ Q(c),  P(b) ∨  P(f(c)) ∨ Q(f(b)), ... } =
{{ P(b),  P(f(c)), Q(b)}, { P(b),  P(f(c)), Q(b)},
{ P(b),  P(f(c)), Q(b)}, ... }
E(C2) = {{P(b)}, {P(c)}, {P(f(b))}, {P(f(f(b)))}, {P(f(n)(b))}, … }
E(C3) = { P(g(b, b)) ∨  Q(b),  P(g(b, c)) ∨  Q(b),
 P(g(b, f(b))) ∨  Q(b),  P(g(b, f(f(b)))) ∨  Q(b),
 P(g(b, f(n)(b))) ∨  Q(b), ... } = {{ P(g(b, b)),  Q(b)},
{ P(g(b, c)),  Q(b)}, { P(g(b, f(b))),  Q(b)},
{ P(g(b, f(f(b)))) ∨  Q(b)}, {P(g(b, f(n)(b))),  Q(b)}, ... }
E’(F) = E(C1) U E(C2) U E(C3).
Aplicarea Pasului 3 ad literam este foarte anevoioasă, deoarece ar
implica (ar trebui să amintim şi de faptul că ar fi mai simplu să denotăm
întâi formulele atomice de bază distincte de mai sus prin variabile

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 181

propoziţionale distincte) un calcul succesiv nu numai de rezolvenţi ci


chiar de Res-uri, care, cel puţin teoretic, sunt (alte) mulţimi infinite
recursiv enumerabile. Este însă suficient (pentru a trage concluzia că
F este nesatisfiabilă) să găsim o demonstraţie prin rezoluţie a
clauzei vide pornind cu o submulţime (finită) de clauze ale lui
E’(F). Mai întâi găsim:

{ P(g(b, c)),  Q(b)} {P(g(b, c))}

 P(g(b, c)) P(g(b, c))

{ Q(b)}
Cele două clauze care intervin provin din C3 (prin substituţia [x/c]) şi
respectiv C2 (prin substituţia [y/g(b, c)]). Conform definiţiei, termii
respectivi sunt elemente din D(F). Acum continuăm cu:

{ P(f(c),  P(f(c)), Q(b)} {P(f(c)}

P(f(c) P(f(c)

{Q(b)}

Deşi la ultimul pas este incorectă scrierea de două ori a elementului


P(f(c), am făcut-o pentru a se identifica mai uşor clauza de
provenienţă, care este C1 (substituţia fiind [x/f(c)]•[y/b]). Pentru a doua
clauză, ea este C2 , cu substituţia [y/f(c)]. În final, din {Q(b)} şi {Q(b)}
obţinem . ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


182 Cristian Masalagiu

Bazându-ne pe exemplul anterior, putem enunţa explicit


rezultatul:

Teorema 3.16 (a rezoluţiei de bază). Fie F ∈ LP1 şi E’(F’) extensia


Herbrand generalizată a unei formule F’, slab echivalente cu F şi aflată
în FNSC (închisă). Atunci F este nesatisfiabilă dacă şi numai dacă
există o demonstraţie prin rezoluţie (în sensul logicii propoziţionale) a
lui , pornind cu (o parte finită din) elementele lui E’(F’) .
Demonstraţie. Imediată, din Teorema lui Herbrand, Teorema 3.15 şi
ţinând cont de legătura care există în LP între Res*(F) şi demonstraţiile
prin rezoluţie. ■

Ca urmare, folosind Teorema 3.16, Pasul 3 al Procedurii


rezoluţiei de bază poate fi uşor modificat. Pentru simplificarea
înţelegerii, îi prezentăm doar execuţia pentru cazul ultimului exemplu
considerat:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 183

{ P(x),  P(f(a)), Q(y)} {P(y)} { P(g(b,x)),  Q(b)}

[x/f(a)] [y/f(a)] [y/g(b,a)] [x/a]


[y/b]

{ P(f(a)),Q(b)} {P(f(a))} {P(g(b,a))} { P(g(b,a)), Q(b)}

{Q(b)} { Q(b)}

Conchidem că aspectul LP1 este următorul (subclasele indicate


fiind nevide şi disjuncte):
Formule satisfiabile,
nevalide, având doar model
Formule Formule
infinit
valide nesatisfiabile
Formule satisfiabile,
nevalide, având model finit

Prin urmare, oricâte eforturi am depune, într-un limbaj suficient de


bogat tot vor exista formule satisfiabile, nevalide şi având doar model
infinit (numărabil), care nu va putea fi găsit algoritmic, într-un timp
finit. Totuşi, posibilitatea utilizării unei rezoluţii proprii lui LP1, prin
care să se evite măcar „scufundarea” în LP dacă nu şi aducerea
formulelor la diferite forme normale, pare a fi o perspectivă benefică.

PDF created with pdfFactory Pro trial version www.pdffactory.com


184 Cristian Masalagiu

§5. Rezoluţie în LP1


Rezoluţia specifică (numită şi pură) pentru LP1, deşi diferită
de rezoluţia de bază, păstrează ideea principală a rezoluţiei din LP şi
anume că la fiecare pas de rezoluţie se aleg două clauze şi se obţine
o altă clauză (rezolvent), eliminând anumiţi literali prin „reducere”
cu negaţiile lor. Eliminările devin mai complicate, iar „esenţa” lor este
(sub)procedura de unificare. A unifica două sau mai multe formule
atomice din LP1 înseamnă a găsi o substituţie pentru variabilele care
intervin în acele formule (substituţia nefiind elementară sau de bază)
astfel încât în urma aplicării substituţiei formulele atomice respective să
coincidă (textual, ca şiruri de caractere). Obţinerea unui rezolvent nu va
însemna numai simplă reducere a unui A cu un A, ci şi o unificare
prealabilă a unor literali, prin care se „desemnează cine este A”. Nu
vom intra în prea multe detalii, pentru amănunte suplimentare
putându-se consulta [MAS1], [CAZ1], etc.
Din motive legate de spaţiul tipografic, nu vom trata în această
carte nici problematica legată de aplicarea rezoluţiei pure pentru cazul
formulelor Horn şi nici situaţia rafinărilor rezoluţiei pure (Capitolul 5
va conţine totuşi o scurtă introducere).

Exemplu. Vom relua formula din ultimul exemplu, despre care am


arătat deja că este nesatisfiabilă utilizând rezoluţia de bază. Vom arăta
că ea este nesatisfiabilă folosind rezoluţia pură din LP1. Să precizăm şi
faptul că vom păstra toate notaţiile pe care le-am introdus pentru LP

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 185

(cum ar fi Res, Res*, etc.) deşi semnificaţiile exacte sunt de multe ori
schimbate. După cum deja ştim, avem:
F = (∀x)(∀y)((P(x) ∨ P(f(c)) ∨ Q(y)) ∧ P(y) ∧ (P(g(b, x)) ∨  Q(b))),
C1 =  P(x) ∨  P(f(c)) ∨ Q(y),
C2 = P(y),
C3 =  P(g(b, x)) ∨  Q(b),
F* = {C1, C2, C3} =
{{ P(x),  P(f(c)), Q(y)}, {P(y)}, { P(g(b, x)),  Q(b)}}.
Considerăm pe rând următoarele cupluri de clauze:
• C1 şi C2. Din motive tehnice, nu trebuie să existe variabile
comune în clauzele considerate în momentul în care încercăm să
aplicăm un pas al rezoluţiei pure. De aceea facem mai întâi
substituţia de redenumire [y/z] în C2, găsind C’2 = {P(z)}. Apoi,
prin [x/z], unificăm mulţimea {P(x), P(z)} (acest din urmă
literal fiind complementarul celui conţinut de C’2), găsind
Res(C1, C’2) = { P(f(c)), Q(y)} = C4.
• C4 şi C2. Facem aceeşi redenumire în C2 şi lucrăm tot cu C’2.
Aplicând [z/f(c)], vom unifica mulţimea { P(f(c)),  P(z)},
găsind Res(C4, C’2) = {Q(y)} = C5.
• C3 şi C2. Nu mai avem nevoie de redenumiri, putând unifica
{ P(g(b, x)), P(y)}, prin [y/g(b, x)]. Găsim Res(C3, C2) =
{ Q(b))}= C6.
• C5 şi C6. Nu avem nevoie de redenumiri, unificăm
{Q(y),  Q(b)} prin [y/b] şi obţinem în final Res(C5, C6) = .

PDF created with pdfFactory Pro trial version www.pdffactory.com


186 Cristian Masalagiu

Astfel, am găsit o respingere utilizând rezoluţia pură, adică


demonstraţia: C1, C2, C4, C5, C3, C6, . ■

Deşi multe dintre rezultatele corespunzătoare pentru LP nu sunt


adevărate în cazul LP1 (dacă înlocuim rezoluţia LP, sau rezoluţia de
bază pentru LP1 cu rezoluţia pură), Teorema rezoluţiei (pure) are un
enunţ similar cu Teorema rezoluţiei pentru LP şi în demonstraţia
acesteia se foloseşte în mod esenţial Teorema rezoluţiei de bază. În
acest mod, găsirea unei respingeri de tipul anterior este suficientă
pentru a trage concluzia că formula în cauză este nesatisfiabilă.
Nu putem încheia acest capitol fără a sublinia încă o dată faptul
că situaţia în LP1= este şi mai neplăcută, cel puţin din punct de
vedere teoretic. Se ştie astfel că, dacă limbajul iniţial este suficient de
bogat, problema SAT1 pentru LP1 = este chiar nedecidabilă „total”,
adică nu este nici măcar semidecidabilă (conform Teoremei lui
Church), ca în cazul LP1. Astfel, este suficient ca el să conţină
([MAS1]), înafara simbolului care reprezintă egalitatea, un simbol
funcţional constant (de aritate 0), două simboluri funcţionale de aritate
unu şi un simbol predicativ de aritate doi (∧,  şi ∃ sunt de asemenea
necesari, ca şi existenţa în X a cel puţin două variabile distincte). Pentru
ca SAT1 pentru LP1 = să fie (măcar) semidecidabilă, este evident că ar
trebui să putem arăta (măcar) că: Orice formulă satisfiabilă din LP1=
admite model cel mult numărabil. Acest lucru nu poate fi, din păcate,
adevărat, după cum se poate intui şi din enunţul teoremelor următoare
(demonstraţiile pot fi găsite de asemenea în [MAS1]):

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 187

Teorema 3.17. Fie F ∈ LP1, satisfiabilă, care admite un model finit


S = <US, IS> şi să presupunem că | US | = n ∈ N*. Atunci, pentru
fiecare m ≥ n, există un model Sm pentru F, cu cardinalul universului
egal cu m. Mai mult, F are şi un model numărabil, care poate fi obţinut
şi ca o „aproximare” a modelelor finite anterioare. ■

Teorema 3.18. Există o formulă închisă, satisfiabilă F ∈ LP1, astfel


încât pentru fiecare model S = <US, IS> al lui F avem | US | ≥ 3. ■

Teorema 3.19. Există o formulă satisfiabilă F ∈ LP1=, astfel încât


pentru fiecare model S = <US, IS> al lui F avem | US | ≤ 2. ■

Inconvenientul practic al diferenţei dintre LP1 şi LP1= poate fi


reparat parţial (după cum am mai precizat, exemplificând chiar acest
lucru în Capitolul 5) prin „ascunderea” simbolului „=” într-un simbol
predicativ de aritate superioară.

§6. Recapitulare şi Index


Deşi teoria este foarte dezamăgitoare în privinţa rezultatelor
pozitive (chiar dacă ne referim doar la calculul propoziţional, unde
decidabilitatea SAT este „atenuată” de netratabilitate), necesitatea
exprimării simple a situaţiilor reale a condus la acceptarea introducerii
unor limbaje mai complexe (calculul cu predicate de ordinul I fără
egalitate, calculul cu predicate de ordinul I cu egalitate, logicile cu
predicate de ordinul II şi mai mare, etc.). Desigur că din punct de

PDF created with pdfFactory Pro trial version www.pdffactory.com


188 Cristian Masalagiu

vedere formal rezultatele vor fi şi mai descurajante. Există însă câteva


argumente solide care fac ca utilizarea logicii să constituie într-
adevăr o modalitate interesantă de a interpreta programarea (vom
analiza acest lucru şi în Capitolul 5). Pe parcursul Capitolului 4, am
arătat că din punct de vedere formal atât sintaxa cât şi semantica
logicii cu predicate de ordinul I constituie o extensie simplă şi
naturală a LP, că logica propoziţională este chiar o aproximare a LP1
(în cel mai pur sens matematic), că noţiunile deja folosite şi înţelese
pentru LP pot fi extinse la LP1 sau LP1= (rezultatele generale fiind şi
ele similare). Este vorba tot despre exprimarea realităţii prin formule
atomice şi literali, despre obţinerea de formule compuse din formule
elementare (variabilele, simbolurile funcţionale şi predicative şi
cuantificatorii fac diferenţa, dar la nivel intuitiv ele reprezintă chiar o
necesitate de limbaj), despre forme normale şi despre posibilităţi
efective de a testa satisfiabilitatea unei formule (de natură sintactică
sau semantică). Problema SAT1 pentru LP1= este nedecidabilă, iar
pentru LP1 este semidecidabilă. Utilizarea rezoluţiei de bază ne arată o
legătură mai profundă între LP1 şi LP. Posibilitatea folosirii unui tip
specific de rezoluţie - rezoluţia pură - pentru LP1, a unor clase
particulare de formule (cum ar fi clasa formulelor Horn), adaptarea
strategiilor şi restricţiilor rezoluţiei pentru cazul prezenţei
variabilelor, „scufundarea” realităţii în alte tipuri de logici, rămân
alternative viabile în programarea logică.

Pentru Index, vom aminti:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 189

calculul cu predicate de ordinul I fără egalitate, 122


constantă funcţională, 123
simbol funcţional de aritate i, 123
variabilă predicativă, 123
simbol predicativ de aritate i, 123
variabilă (funcţională), 123
cuantificator (cuantor) existenţial (universal), 123
termi (funcţionali), 125
formule atomice, 125
formule (subformule, arbori), 125
apariţii libere şi legate ale variabilelor, 129
free(F), var(F), leg(F), restvar(F), 129
formule închise, 130
închiderea universală (existenţială) a unei formule, 130
matricea unei formule, 130
substituţii, substituţii elementare, substituţii permise, 130
substituţii normalizate, substituţia vidă, substituţii echivalente, 131
termi (formule, substituţii) de bază, 132
domeniul sintactic al (apariţiei) unui cuantor, 132
structuri şi interpretări, 139
extensie imediată, 140
calculul cu predicate de ordinul I cu egalitate, 142
univers şi structuri Herbrand, 143
mulţime recursiv enumerabilă, 146
logica cu predicate de ordinul II, 150
logici nestandard şi de ordin superior, 150

PDF created with pdfFactory Pro trial version www.pdffactory.com


190 Cristian Masalagiu

formulă rectificată, 158


formă normală prenex, 159
formă normală prenex rectificată, 160
formă normală Skolem, 161
formă normală Skolem clauzală, 161
extensie Herbrand, extensie Herbrand generalizată, 171
rezoluţie de bază (procedura lui Gilmore), 174
unificare, 181
rezoluţie pură, 181

§7. Exerciţii
1. Definiţi constructiv free(F), F ∈ LP1.
2. Determinaţi subf(F) pentru
F = (∀x)(((P(x, g(a)) ∧ Q(z)) ∨ R(u, f(v)))).
3. Rezolvaţi Exerciţiul 3.1.
4. Rezolvaţi Exerciţiul 3.2.
5. Să se aplice substituţia: s = [y/h(z)]•[z/h(x)]•[x/g(f(y))] formulei
F = (∀x)(P(x, f(x)) ∧ Q(g(a, z)).
6. Rezolvaţi Exerciţiul 3.3.
7. Fie formula F = (∀x)(∃y)P(x, y, f(z)). Să se decidă dacă formula
este satisfiabilă, validă, sau contradicţie.
8. Găsiţi o formulă F ∈ LP1 care să conţină un simbol predicativ
P ∈ P2 şi care să exprime faptul că P este o relaţie antisimetrică.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 191

9. Găsiţi o formulă F ∈ LP1= care să conţină un simbol predicativ


P ∈ P2 şi care să exprime faptul că P este o relaţie de
echivalenţă.
10. Fie formula
F = (∃x)(∃y)(∃z)(P(x, y) ∧ P(z, y) ∧ P(x, z) ∧  P(z, x)) şi
structurile S = <US, IS> date prin:

• US = N, PS = {<m, n> | m, n ∈ N, m < n}.


• US = N, PS = {< m, m+1> | m ∈ N}.
• US = 2N, PS = {<A, B> | A, B ⊆ N, A ⊆ B}.
Să se decidă care dintre aceste structuri sunt modele pentru F.
11. Arătaţi că pentru fiecare formulă din LP1:
• F este validă dacă şi numai dacă închiderea sa universală
este validă.
• F este satisfiabilă dacă şi numai dacă închiderea sa
existenţială este satisfiabilă.
12. Demonstraţi în detaliu Teorema 3.1.
13. Rezolvaţi Exerciţiul 3.4.
14. Rezolvaţi Exerciţiul 3.5.
15. Completaţi demonstraţia Teoremei 3.2.
16. Demonstraţi în detaliu Teorema 3.5.
17. Găsiţi o formulă F’ din LP1, aflată în FNSC şi slab echivalentă
cu formula:
F=(∀x)(∃y)((P(x,g(y), z) ∨ (∀x)Q(x)) ∧ (∀z)(∃x)R(f(x, z),z)).
18. Arătaţi că în LP1 există formule satisfiabile dar care nu admit
nici un model finit.

PDF created with pdfFactory Pro trial version www.pdffactory.com


192 Cristian Masalagiu

19. Arătaţi că:


(∃x)P(x) → P(y) ≡ (∀x)(P(x) → P(y)).

PDF created with pdfFactory Pro trial version www.pdffactory.com


Capitolul 4
Teorii logice şi sisteme deductive

Această parte a logicii formale, alcătuită din teoriile logice şi


sistemele deductive (de demonstraţie, inferenţiale) este una dintre cele
mai răspândite modalităţi de exprimare exactă a noilor descoperiri
utilizată de către comunitatea ştiinţifică. Trecând de la un studiu naiv al
realităţii la un studiu semi-fundamentat, este absolut necesar ca
obiectele, conceptele, relaţiile manipulate să admită definiţii
precise, ca anumite proprietăţi să fie demonstrate într-un cadru
clar specificat, ca totul să poată fi făcut constructiv. Într-un limbaj
mai mult sau mai puţin apropiat de limbajul natural, orice ştiinţă
foloseşte afirmaţii reprezentate prin formule, un concept de adevăr
asociat acestora, un mediu de natură sintactică, organizat, pentru
demonstrarea adevărului unei formule. În logică, sistemele
deductive oferă mediul de demonstrare „mecanică” iar teoriile logice
posibilitatea definirii adevărului la un nivel global. În plus, între
aceste meta-concepte există o legătură clar subliniată. Ele sunt utilizate,
aşa după cum tocmai am amintit, atât în procesul de formalizare a
(conţinutului) altor ştiinţe dar şi în studiile logice de bază, ceea ce poate
genera din nou dificultăţi de înţelegere provenite din dualitatea limbaj
de bază – metalimbaj.
Să trecem întâi în revistă conceptele de sistem deductiv şi teorie
logică precum şi legătura dintre ele, la un nivel informal. După cum
deja cunoaştem, indiferent de tipul de logică (LP, LP1, LP1=, LP2,

PDF created with pdfFactory Pro trial version www.pdffactory.com


194 Cristian Masalagiu

etc.), din punct de vedere sintactic se porneşte cu un alfabet şi se


construiesc formule peste acel alfabet. Sunt apoi identificate subclase
„importante”, cum ar fi clasa formulelor Horn sau clasa formulelor
aflate în FNSC. O asemenea subclasă de formule, dar şi de obiecte mai
complexe (pe care le vom numi metaformule), poate fi descrisă finitar
cu ajutorul unui sistem deductiv. Un sistem deductiv se bazează concret
pe o definiţie constructivă, care apelează la noţiunile de axiomă şi de
regulă de inferenţă. Axiomele sunt formulele plasate iniţial (prin Baza
definiţiei) în subclasa corespunzătoare, iar regulile de inferenţă (de
deducţie, de demonstraţie) reprezintă modalităţile prin care se obţin
formule noi (numite şi teoreme) din formule vechi (Pasul inductiv). Cu
ajutorul acestora se defineşte în mod formal, la nivel global, conceptul
de raţionament (demonstraţie). Un exemplu imediat de sistem deductiv
este cel bazat pe rezoluţie. Astfel, în LP pornim cu o mulţime de clauze
F (formulă aflată în FNC, generatoare de axiome) şi putem găsi
Res*(F) utilizând rezoluţia într-un pas ca (unică schemă de) regulă de
inferenţă (orice element din Res*(F) este „demonstrabil prin rezoluţie”
pornind cu „axiomele” din F). O teorie logică este o (sub)clasă de
formule închisă la consecinţă semantică. Cu alte cuvinte, o mulţime T
de formule este teorie logică dacă pentru fiecare submulţime S ⊆ T şi
fiecare (altă) formulă G care este consecinţă semantică din S, avem şi
G ∈ T. Exemple imediate de teorii logice sunt constituite din clasele
formulelor valide (din LP, LP1, LP1 =, etc.). Cu ajutorul acestora se
defineşte formal, la nivel global, conceptul de „adevăr” (elemente lui
T de mai înainte fiind receptate ca nişte formule „adevărate”). Legătura
dintre teoriile logice şi sistemele de demonstraţie se exprimă prin

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 195

teoreme de corectitudine şi completitudine, adică teoreme de tipul: Tot


ceea ce este „adevărat” este demonstrabil (completitudine) şi tot ceea
ce este demonstrabil este „adevărat” (corectitudine). Mai precis, se
poate porni cu o teorie logică şi se poate încerca „axiomatizarea” ei
(adică găsirea unui sistem deductiv prin care se „generează”, sintactic,
aceeaşi clasă de formule), cu scopul ca mulţimea teoremelor să coincidă
cu mulţimea formulelor „adevărate” (cele care formează teoria). Se
poate şi invers, adică putem pleca cu un sistem deductiv pentru care
putem afla „imediat” clasa teoremelor (clasa formulelor generate prin
raţionamente specifice regulilor sale de inferenţă) şi punându-se apoi
problema ca această clasă să formeze o teorie logică (sau măcar o
„parte” a unei asemenea teorii), constituită din formule „adevărate”
(„valide”, „satisfiabile”, „nesatisfiabile”, etc.).
În realitate lucrurile nu stau chiar aşa de simplu cum au fost
prezentate mai sus (din cauza lipsei de spaţiu tratarea noastră fiind
departe de a fi exhaustivă). Astfel, subiectul general al teoriilor logice
este foarte vast, vorbindu-se de teorii degenerate, de teorii
inconsistente, de teorii recursive şi/sau recursiv enemerabile, etc. Mai
mult, orice teorie logică (în sens clasic) trebuie să conţină toate
formulele valide (sau doar acele formule valide care au o formă
sintactică specificată), pentru că orice formulă validă este consecinţă
semantică din orice altă clasă de formule. Dacă o teorie logică conţine
o contradicţie, atunci acea teorie coincide cu întreaga clasă precizată de
formule (LP, LP1, LP1 =, etc.), lucru care rezultă direct din definiţii.
Nici în cazul sistemelor deductive nu dispunem de un context uşor de
manipulat. Utilizarea unui număr finit de (scheme de) axiome şi reguli

PDF created with pdfFactory Pro trial version www.pdffactory.com


196 Cristian Masalagiu

de inferenţă pentru „prezentarea” unor teorii logice poate fi imposibilă,


existând şi un număr impresionant de tipuri generale de asemenea
sisteme. De asemenea, forma în care sunt exprimate teoremele de
corectitudine şi completitudine poate depinde în mod esenţial de
sistemul deductiv sau de teoria aleasă (ba uneori chiar şi de alfabetul
peste care este construită mulţimea de formule). Să reţinem faptul
important că sistemele deductive pot fi utilizate „pentru ele însele”, ca
mecanisme formale (simple alternative pentru definiţiile constructive).
Cu ajutorul lor se pot astfel defini sintactic mulţimi care nu au
întotdeauna o caracterizare semantică legată de o noţiune precisă de
„adevăr”. Paragrafele următoare, în care detaliem câteva dintre
aspectele menţionate, adoptă în mare linia sugerată de [CAZ1],
concepţia generală fiind însă originală. De altfel, definiţiile noţiunilor
de sistem de demonstraţie şi teorie logică diferă uşor faţă de cele
întâlnite în literatura de specialitate, datorită atât bagajului insuficient
de cunoştinţe presupus a fi fost acumulat anterior parcurgerii acestui
material de către cititor, cât şi datorită nevoii autorului de
sistematizare şi generalizare a conţinutului.

§1. Sisteme deductive


Vom nota cu numele generic FORM clasa de metaformule în
care ne vom plasa. Termenul ales se explică prin faptul că o
metaformulă va denota nu numai un element din LP, LP1, LP1=, sau
dintr-o subclasă fixată a acestora, ci şi o listă de asemenea elemente,
sau, ieşind din sfera logicii, obiecte cu mult mai complicate decât

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 197

formulele „clasice”. Mulţimea FORM va fi precizată în mod explicit


doar atunci când va fi necesar, singura cerinţă permanentă fiind ca
aceasta să fie definită constructiv.

Definiţia 4.1 (sistem deductiv). Se numeşte sistem deductiv (de


demonstraţie, inferenţial, axiomatic) în FORM un cuplu
SD = <A, R> unde A ⊆ FORM este o mulţime de axiome iar
R ⊆ FORM+ × C o mulţime de reguli de inferenţă (de deducţie, de
demonstraţie). ■

În cele de mai sus, FORM+ denotă mulţimea relaţiilor de oricâte


argumente (cel puţin unul) peste FORM, iar C reprezintă o mulţime de
condiţii de aplicabilitate. Fiecare regulă de inferenţă r ∈ R, are astfel
aspectul r = < < G1, G2, … , Gn, G>, c>, unde n ∈ N,
G1, G2, … , Gn ∈ FORM şi c ∈ C.. G1, G2, … , Gn sunt ipotezele
(premizele) regulii, G reprezintă concluzia (consecinţa) iar c
desemnează cazurile (modalităţile) în care regula poate fi aplicată.
Vom scrie chiar r = < < {G1, G2, … , Gn}, G>, c> deoarece ordinea
ipotezelor nu este esenţială. Mulţimea C nu a fost specificată formal
(putem spune totuşi că elementele sale sunt metapredicate) din cauza
generalităţii ei şi pentru a nu complica inutil expunerea. Similar cu
situaţia rezoluţiei, regulile vor fi folosite pentru a construi demonstraţii
în paşi succesivi, la un pas aplicându-se o regulă. Există însă
posibilitatea ca înafara restricţiilor sintactice „locale”, date de forma
formulelor implicate (ceea ce face ca regulile să fie, de obicei, scheme

PDF created with pdfFactory Pro trial version www.pdffactory.com


198 Cristian Masalagiu

de reguli) să se interzică aplicarea regulii (schemei) pe considerente


semantice „globale” (forma demonstraţiei, apariţia în demonstraţie a
unei formule nedorite la acel pas, păstrarea completitudinii unei teorii,
etc.). Astfel încât dacă c este ataşată unei reguli r (atenţie, c poate lipsi,
mai exact ea poate fi „condiţia adevărată indiferent de context”)
înseamnă că în orice demonstraţie, r va putea fi aplicată la un moment
dat doar dacă c este adevărată la momentul respectiv. O regulă
r = < < {G1, G2, … , Gn}, G>, c>, va fi scrisă şi ca:
G1, G 2 , … , G n
,c
G
În cazul în care n = 0 şi c lipseşte, r poate fi identificată ca fiind o
axiomă, după cum rezultă din definiţia care urmează. Câteodată, alături
de c, sunt explicitate separat şi restricţiile sintactice locale asupra
(formei) metaformulelor.

Definiţia 4.2 (demonstraţie). Fie SD = <A, R> un sistem deductiv în


FORM. Se numeşte demonstraţie (pentru Fm, pornind cu F1) în SD o
listă de metaformule D = F1, F2, … , Fm astfel încât pentru fiecare
i ∈ [m], fie Fi ∈ A, fie Fi este obţinut din Fj1 , Fj2 , ... , Fjk folosind o

regulă r = < < { Fj1 , Fj2 , … , Fjk }, Fi>, c> ∈ R, unde j1, j2, ... , jk < i. ■

Prin urmare, fiecare element al listei D este fie o axiomă, fie


este concluzia unei reguli de inferenţă ale cărei ipoteze sunt elemente
anterioare din listă. Analogia cu cele deja fixate în Capitolul 2 despre
demonstraţiile prin rezoluţie (Definiţia 2.10 este un caz particular al

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 199

definiţiei precedente) este clară şi aceasta poate fi continuată prin


definirea numărului de paşi ai unei demonstraţii, reprezentarea unei
demonstraţii printr-un arbore, etc. O demonstraţie se va mai numi şi
deducţie (sintactică) sau chiar raţionament. După cum am precizat,
putem defini D de mai sus, constructiv, ca fiind un arbore cu
rădăcina Fm, în care frunzele (Baza) sunt axiome şi fiecare nod nou
(concluzie) se obţine din noduri vechi (ipoteze), în timpul aplicării
Pasului inductiv, folosindu-se câte o regulă de inferenţă posibil de a fi
aplicată (conform c). Este posibil ca pentru anumite sisteme (a se vedea
sistemul SD0, §3 din acest capitol), care nu au axiome sau pentru care
condiţiile c o impun, arborele să aibă o definiţie directă mai simplă,
sau, alternativ, noţiunea de consecinţă sintactică să fie definită cu
ajutorul arborelui (necoincizând cu el).

Definiţia 4.3 (teoreme). Fie SD = <A, R> un sistem deductiv în


FORM. Mulţimea teoremelor lui SD este mulţimea metaformulelor
care admit demonstraţii în SD, adică:

Th(SD) = {F ∈ FORM | există o demonstraţie D pentru F în SD }. ■

Este imediat faptul că şi Th(SD) admite o definiţie constructivă


(similar cu Teorema 2.11, din cazul rezoluţiei, se arată că Th(SD)
coincide cu mulţimea dată mai jos):
Baza. A ⊆ Th(SD).

PDF created with pdfFactory Pro trial version www.pdffactory.com


200 Cristian Masalagiu

Pas constructiv. Dacă r = < < {G1, G2, … , Gn}, G>, c> ∈ R şi
G1, G2, … , Gn ∈ Th(SD) atunci G ∈ Th(SD).

Faptul că există o demonstraţie pentru F în SD va mai fi notat prin

•SD F (renunţând şi la indice în cazul în care nu există confuzii). Din

motive tehnice, legate în general de demonstraţiile teoremelor de


corectitudine şi completitudine, este posibil ca în anumite situaţii să
lucrăm, pe lângă axiome, cu o mulţime suplimentară de metaformule,
notată I, şi să vorbim despre demonstraţii folosind I (notat I •SD F, în

cazul în care este vorba despre o formulă F; se mai spune că F este


consecinţă sintactică din I sau teoremă în ipotezele I ). Practic, deşi
din punctul de vedere al noţiunii de „adevăr”, sensul semantic al celor
două mulţimi(A şi I) nu coincide întotdeauna, folosirea mulţimii de
ipoteze suplimentare I nu înseamnă altceva decât să lucrăm exact ca
mai înainte, dar în sistemul SD’ = <A’, R>, unde A’ = A U I.
Teoremele vor apare astfel ca fiind consecinţe sintactice din mulţimea
vidă de ipoteze.
Pentru că exemplele care urmează sunt suficient de
individualizate, deşi au substrat comun, le vom numerota în acelaşi
mod ca pe definiţii (de altfel, unele vor fi reluate ulterior).

Exemplul 4.1 (metoda rezoluţiei). Metoda rezoluţiei, atât în cazul LP


cât şi în cazul LP1, poate fi privită ca reprezentând un sistem de
demonstraţie. Vom trata doar cazul LP şi trebuie spus că vom construi

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 201

sisteme de demonstraţie dedicate, câte unul pentru fiecare formulă F


aflată în FNC şi reprezentată ca o mulţime finită de clauze (conform
teoremei de compactitate, F poate fi şi infinită). Sistemele dedicate pot
fi caracterizate de faptul că nu generează, în general, clasa formulelor
valide (nici măcar o submulţime a acesteia), de aceea teoremele de
corectitudine şi completitudine au şi ele o formă „nestandard” (vom
reveni la acest lucru în §2 din acest capitol, după tratarea unor aspecte
formale legate de teoriile logice (conform Exemplului 4.2, reluat).
Pentru a justifica această afirmaţie, trebuie să specificăm pe rând:
• Clasa metaformulelor: FORM = LP. Formulele care ne
interesează sunt însă doar clauzele din LP. Notăm mulţimea
tuturor clauzelor din LP cu Cl .

• Mulţimea de axiome: AF = Ø. Am putea considera drept


axiome chiar mulţimea F. Nu facem acest lucru din considerente
conceptuale, încă netransparente. Diferenţa la nivel sintactic
dintre axiome şi ipotezele suplimentare nu există deocamdată,
iar în ceea ce priveşte demonstraţiile vom lucra (practic) cu
sisteme de tipul SD’.
• Mulţimea de reguli de inferenţă:
RF = {<<{C1, C2}, Res(C1, C2)>, true> | C1, C2 ∈ Cl şi
C1 ≠ C2 şi există măcar un literal L astfel încât
L ∈ C1 şi L ∈ C2}.

În acest moment, sistemul SDF = <AF, RF> este pe deplin precizat (true
denotă condiţia mereu adevărată, adică regulile, dacă respectă cerinţele

PDF created with pdfFactory Pro trial version www.pdffactory.com


202 Cristian Masalagiu

sintactice fixate şi anume faptul că sunt clauze din LP, pot fi aplicate
fără restricţii pe parcursul demonstraţiilor), exceptând faptul deja
amintit că vom pune (renunţăm la indici şi la faptul că ar trebui folosită
notaţia SD’ în loc de SD)

Th(SD) = {G ∈ Cl | F •SD G },
adică vom considera demonstraţiile plecând de la mulţimea de axiome
A’ = A U F (considerăm I = F). Este imediat faptul că pentru fiecare
asemenea SD, avem Th(SD) = Res*(F). ■

Sistemele anterioare („de rezoluţie”) au caracteristic şi faptul că


pot fi finit specificate, adică atât mulţimea de axiome (şi/sau mulţimea
de ipoteze suplimentare) cât şi mulţimea de reguli de inferenţă sunt fie
finite (cazul lui F), fie reprezintă un număr finit de scheme (cazul
regulilor, lucru evident din specificarea mulţimii respective). Clasa
regulilor poate fi însă descrisă finitar şi astfel:
Pentru fiecare C1, C2 ∈ Cl, dacă C1 ≠ C2 şi există măcar un

literal L astfel încât L ∈ C1 şi L ∈ C2, atunci:


C1 , C 2
r: .
Res(C1 , C 2 )
În acest mod, spunem că pentru descrierea regulilor am folosit o
singură schemă. ■

Exerciţiul 4.1. Arătaţi că metoda rezoluţiei de bază pentru LP1


poate fi privită ca sistem de demonstraţie.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 203

Exemplul 4.2 (sistemul SD3). Este un sistem deductiv standard, finit


specificat, care generează, după cum vom vedea (Teorema 4.1),
întreaga clasă (şi numai pe aceasta) a formulelor valide din LP1
(sistemul a fost introdus pentru prima dată de către A. Church în 1954).
• Axiome (ASD3). Condiţiile sintactice sunt: F, G, H ∈ LP1,
x ∈ X, t ∈ T, oarecare. Suplimentar, în 4., x trebuie să nu apară
liber în F iar în 5., substituţia s = [x/t] trebuie să fie permisă
pentru F (reamintim, t nu conţine nume de variabile care să
apară legate în F):
1. F → (G → F).
2. (F → (G → H)) → ((F → G) → (F → H)).
3. ( F →  G) → ((  F → G) → F).
4. (∀x)(F → G) → (F → (∀x)G).
5. (∀x)F → (F)[x/t].
Să remarcăm faptul că LP1 trebuie considerată ca fiind
construită peste alfabetul care conţine drept conectori doar pe 
şi →, iar unicul cuantificator acceptat este ∀. Dacă dorim să
utilizăm şi ceilalţi conectori (sau cuantori), putem face acest
lucru doar utilizându-i ca notaţii (de exemplu, A ∨ B va
reprezenta  A → B, etc.).
• Reguli de inferenţă (RSD3). Există doar restricţii de natură
sintactică (lipsind condiţiile de aplicabilitate):
F, G ∈ LP1, x ∈ X sunt oarecare, dar în 2., x trebuie să nu apară
liber în F. Prima schemă de regulă este deja amintită, şi anume

PDF created with pdfFactory Pro trial version www.pdffactory.com


204 Cristian Masalagiu

modus ponens (pe scurt, (MP)) iar a doua este aşa-numita


regulă a generalizării (RG).
F → G, F
1I. .
G
F
2I. .
(∀x )F
Să arătăm, de exemplu, că în SD3 se poate genera teorema
T = (A → A) (în cele ce urmează vom mai renunţa pe parcurs la unele
paranteze, dacă înţelegerea nu este afectată, deşi formal acest lucru nu
este admis). Astfel, folosim întâi instanţa axiomei (schemei) 1., obţinută
dacă luăm F = A şi G = (A → A). Primul element al listei care
reprezintă demonstraţia va fi: E1 = A → ((A → A) → A). Folosim acum
axioma 2., punând F = A, G = (A → A) şi H = A. Obţinem:
E2 = (A → ((A → A) → A)) → ((A → (A → A)) → (A → A)).
Aplicăm acum (MP) pentru E2 = F → G şi E1 = F (se observă imediat
că G = (A → (A → A)) → (A → A)) şi găsim:
E3 = (A → (A → A)) → (A → A).
Punem acum F = A şi G = A, în axioma 1., rezultând:
E4 = A → (A → A).
În sfârşit, putem folosi (MP) pentru E3 şi E4 (luând F = A → (A → A)
şi G = (A → A)), pentru a obţine ceea ce doream, adică:
E5 = T = (A → A).
Prin urmare, am găsit în SD3 demonstraţia D : E1, E2, E3, E4, E5 = T şi
putem spune că (A → A) ∈ Th(SD3) sau că T este consecinţă sintactică
din mulţimea vidă de formule suplimentare. În plus, aceasta este

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 205

evident o formulă validă. Cum şi T este de fapt o schemă, rezultă şi că


( A →  A) este teoremă, etc.
Profităm de exemplul în curs pentru a schiţa linia generală de
demonstrare a teoremelor de corectitudine (pentru cazul standard al
sistemelor care generează toate formulele valide).
I. Se arată că axiomele sunt formule valide. Conform Capitolului 2,
vom folosi tabelele de adevăr pentru prima axiomă:
F G G→F F → (G → F)
0 0 1 1
0 1 0 1
1 0 1 1
1 1 1 1

II. Se arată că regulile de inferenţă sunt corecte (termenul


corespunzător în engleză este sound, adică „sănătos”). Acest lucru
înseamnă: presupunem că ipotezele G1, G2, ... Gk sunt formule valide şi
arătăm că şi concluzia G este formulă validă (atenţie, nu este nimic
contractoriu în ceea ce spunem, chiar dacă nu este adevărat că
formulele folosite în axiome sunt în toate cazurile formule valide).
Pentru aceasta este suficient să arătăm că G1 ∧ G2 ∧ ... ∧ Gk → G este
validă. De exemplu, (MP) este corectă, deoarece avem:

PDF created with pdfFactory Pro trial version www.pdffactory.com


206 Cristian Masalagiu

F G F→G (F → G) ∧ F ((F → G) ∧ F) → G
0 0 1 0 1
0 1 1 0 1
1 0 0 0 1
1 1 1 1 1

Concluzia că teoremele sunt formule valide rezultă imediat din


definiţia constructivă a lui Th(SD3) (formal, este vorba de o
demonstraţie prin inducţie structurală, de altfel foarte simplă). ■

Exerciţiul 4.2. Arătaţi că axiomele 2. – 5. sunt formule valide şi că


(RG) este o regulă corectă.

Despre sistemele deductive se pot spune multe alte lucruri, la


nivel general. Astfel, o proprietate gobală, deseori cerută, este cea de
consistenţă. Astfel, o mulţime de metaformule J este consistentă într-
un sistem deductiv, dacă nu există nici o metaformulă F astfel încât să
avem atât J • F cât şi J – F (J – F notează faptul că nu este adevărat că

J • F). Prin extensie, un sistem deductiv este consistent


(necontradictoriu) dacă nu există nici o metaformulă F astfel încât să

avem atât • F cât şi – F. O altă proprietate importantă este cea a

minimalităţii (independenţei). Astfel, în anumite situaţii este

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 207

important ca un sistem să conţină cât mai puţine axiome şi reguli de


inferenţă, deşi acest lucru s-ar putea să conducă la existenţa unor
demonstraţii mai lungi şi mai alambicate. Înafara sensului strict de
minimalitate (lucru care depinde şi de alfabetul peste care este
construită FORM), dintr-un sistem dat se pot elimina acele axiome care
sunt consecinţe semantice din altele (în cazul considerării unei noţiuni
suport de adevăr) precum şi aşa- numitele reguli de inferenţă derivate.
Astfel, considerând orice prefix al oricărei demonstraţii (privită textual)
D dintr-un sistem SD, acesta poate fi considerat ca o nouă regulă de
inferenţă („derivată” din cele iniţiale): concluzia noii reguli este ultima
formulă din demonstraţia respectivă, iar ipotezele sunt reprezentate de
restul formulelor care apar. Eliminările de reguli derivate se „aprobă”
doar dacă se menţine echivalenţa din sistemul iniţial şi cel rezultat
(după efectuarea eliminărilor). Două sisteme SD şi SD1 sunt
echivalente dacă pentru fiecare mulţime de metaformule J şi fiecare

metaformulă F avem: J •SD F dacă şi numai dacă J •SD1 F. Nu vom

detalia nici acest subiect. Vom reveni totuşi asupra câtorva aspecte
suplimentare atât în §2. şi §3. din acest capitol. Este absolut necesar să
tratăm mai întâi câteva aspecte formale legate de teoriile logice.

§2. Teorii logice


Sistemele deductive sunt folosite în principal (în mod standard)
ca element ajutător în construirea sau manipularea eficientă a unei
teorii logice. Există mai multe accepţiuni ale ultimului termen chiar
printre logicieni. Vom accepta definiţia care urmează din

PDF created with pdfFactory Pro trial version www.pdffactory.com


208 Cristian Masalagiu

considerente legate de programarea logică. Astfel, există numeroase


lumi (părţi ale realităţii, colecţie de cunoştinţe, etc.) care sunt cunoscute
pur şi simplu, dar fiind foarte complexe este greu de spus dacă anumite
cunoştinţe nou asimilate fac parte din aceeaşi lume, sau chiar dacă
anumite cunoştinţe vechi nu sunt cumva contradictorii. Dorind să ne
menţinem în cadrul general folosit până în prezent, introducerea unei
noţiuni de adevăr (deocamdată, în sens clasic, adică binar, etc.) în
legătură cu o metaformulă este acum obligatorie. Să presupunem că
orice clasă de metaformule FORM are ataşată şi o clasă de structuri
admisibile de adevăr, notată Str, o structură fiind o funcţie

S : FORM → B. Dacă FORM admite o definiţie structurală, aşa cum


de altfel am şi convenit de la bun început (prin Baza se plasează în
FORM metaformulele „atomice”; cu ajutorul unor operatori, cum ar fi
conectorii, cuantorii, etc., se introduc metaformule noi folosindu-se
metaformule vechi, prin Pasul constructiv), atunci admitem şi că
fiecare S este unica extensie homomorfă a unei structuri definite
iniţial pe mulţimea metaformulelor atomice. În acest mod, se pot păstra
toate definiţiile (conceptele) semantice folosite până în prezent, fără
modificări de esenţă (inclusiv conceptul de consecinţă semantică).

Definiţia 4.4 (teorii logice). Se numeşte teorie (logică) orice subclasă


TE a lui FORM închisă la consecinţă semantică. ■

În modul sugerat trebuie înţeleasă reprezentarea prin


metaformule a unei baze de cunoştinţe. Din păcate, după cum deja

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 209

cunoaştem, nu există metode semantice efective (algoritmice)


convenabile pentru a testa dacă o mulţime dată de metaformule este sau
nu închisă la consecinţă semantică (sau dacă o anumită metaformulă
este satisfiabilă sau validă). Alternativa este de a folosi metode
sintactice, care au avantajul că pot fi uşor automatizate. În cazul de faţă,
se pune problema axiomatizării teoriilor logice, cu ajutorul sistemelor
de demonstraţie. Acest lucru înseamnă că având dată o teorie
TE ⊆ FORM, trebuie să găsim o submulţime A’ = A U I ⊆ TE, de
„axiome” şi/sau ipoteze suplimentare, precum şi o mulţime de
reguli de inferenţă R (adică un sistem de demonstraţie
SD’ = <A’, R>) astfel încât TE = Th(SD’ ). În acest caz, se impune de
obicei ca A’ să fie măcar o mulţime satisfiabilă (există măcar o structură
S astfel încât pentru fiecare F ∈ A’ avem S(F) = 1), sau chiar ca ea să fie
alcătuită numai din metaformule valide (după cum am mai observat,
dacă A’ conţine o contradicţie, orice metaformulă este consecinţă
semantică din A’ ). Forma generală a lui A’ se explică tocmai prin aceea
că am presupus că A conţine formulele valide iar I pe cele satisfiabile).
Mai general, să presupunem că pornim cu o mulţime de metaformule
A’ ⊆ FORM, de cunoştinţe primare, unanim acceptate ca fiind
„adevărate”, adică despre care ştim (nu ne interesează deocamdată prin
ce metodă am aflat acest lucru) că reprezintă formule valide/satisfiabile
în contextul descris mai sus. În concluzie, pentru a axiomatiza teoria
noastră, trebuie să mai găsim şi o mulţime de reguli de inferenţă R
astfel încât să avem Cs (A’) = Th(SD’) (am notat cu Cs(A’) mulţimea

PDF created with pdfFactory Pro trial version www.pdffactory.com


210 Cristian Masalagiu

tuturor consecinţelor semantice din A’, în raport cu noţiunea de adevăr


adoptată, şi cu SD’ sistemul compus din A’ şi R). După cum am mai
amintit, putem lua în considerare şi situaţia inversă, în care avem dat un
sistem SD’ = <A’, R> şi dorim să vedem dacă Th(SD’ ) este într-
adevăr o teorie logică, sau, mai mult, dacă Cs(A’ ) = Th(SD’ ).

Definiţia 4.5. Un sistem de demonstraţie SD’ = <A’, R> se numeşte


corect şi complet pentru o teorie TE dacă TE = Th(SD’ ) = Cs(A’ ) şi

A’ ⊆ TE. O teorie TE este axiomatizabilă dacă există un sistem


deductiv SD’ = <A’, R> corect şi complet pentru ea, adică satisfăcând
condiţiile anterioare. Dacă SD’ este finit specificabil (axiomatizabil),
atunci teoria corespunzătoare se numeşte finit axiomatizabilă. ■

În cele de mai sus, dacă I este mulţimea vidă atunci TE este


alcătuită doar din metaformule valide. În cazul teoriilor „reale”, I
cuprinde în general cunoştinţele primare ale lumii respective, iar A
axiomele „logice” (de genul celor „puse” în SD3). Din păcate, în
această ultimă situaţie, A conţine în marea majoritate a cazurilor şi
axiomele egalităţii, astfel încât aceste teorii sunt în general nedecidabile
(a se vedea SAT1 pentru LP1=). Alte tipuri de teorii se obţin prin
„translarea” proprietăţilor sistemului deductiv ataşat, dacă acesta există
(de exemplu, putem vorbi de teorii consistente, teorii decidabile sau
semidecidabile, etc.). Importante sunt teoriile nedegenerate. O teorie
logică se numeşte degenerată dacă coincide cu mulţimea vidă sau

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 211

coincide cu întreaga clasa de metaformule în care se lucrează, FORM


(de exemplu, dacă teoria conţine o contradicţie ea este degenerată;
teoriile inconsistente sunt de asemenea degenerate). Nici axiomatizările
„banale” nu sunt interesante (este clar că, la modul general, toate
teoriile sunt axiomatizabile, dacă luăm A’ = TE şi R = Ø). Înainte de a
prezenta câteva exemple, să tragem concluzia necesară asupra formei
generale a unei teoreme de corectitudine şi completitudine în noul
context.

TEOREMĂ DE CORECTITUDINE ŞI COMPLETITUDINE. Fie


o clasă de metaformule FORM, o clasă de structuri admisibile Str
pentru FORM, un sistem deductiv SD’ = <A’, R> în FORM, unde
A’ = A U I (A fiind alcătuită din formule valide şi I din formule

satisfiabile) şi o teorie logică TE ⊆ FORM, astfel încât TE = Cs(A’ ).


Atunci Th(SD’ ) = Cs(A’ ). ■

Observaţie. A demonstra corectitudinea înseamnă a arăta că


Th(SD’ ) ⊆ Cs(A’ ) iar completitudinea, că Th(SD’ ) ⊇ Cs(A’). Teorema
se mai poate enunţa şi sub una din formele echivalente, destul de des
întâlnite:
• Teoria TE admite un sistem deductiv corect şi complet.
• În condiţiile precizate, avem, pentru fiecare metaformulă
F∈ FORM: I •SD F dacă şi numai dacă I ‘ F.

• Teoria TE este (eventual, finit) axiomatizabilă.

PDF created with pdfFactory Pro trial version www.pdffactory.com


212 Cristian Masalagiu

În cazul în care este vorba de o teorie formată doar din formule valide
(atunci va lipsi I), teorema capătă forma simplificată:

• Pentru fiecare F∈ FORM, avem: •SD F dacă şi numai dacă ‘F.■

În cele de mai sus am folosit notaţia ‘SD F pentru faptul că F∈Th(SD),

unde SD = <A, R>, sau, în momentul în care SD este implicit sau

liseşte, ‘F poate nota doar faptul că F este o formulă validă. Din punct

de vedere practic, teoriile finit axiomatizabile sunt cele mai utile.

Nu vom intra în detalii nici în privinţa numeroaselor rezultate


(importante şi interesante) care pot fi demonstrate în acest moment. Se
poate consulta [CAZ1] pentru completări, iar noi ne limităm la a
prezenta fără demonstraţie (de fapt, metateorema este sigur adevărată în
cazul LP1 şi sistemului SD0):

Teorema deducţiei (pe scurt, TD). Pentru fiecare A, B ∈FORM şi


fiecare I ⊆ FORM, dacă I, A • B atunci I • A → B. ■

Exemplul 4.2 (reluat). Avem FORM = LP1, Str este clasa fixată a
structurilor (conform Capitolului 3), TE = Val(LP1) (clasa formulelor

valide din LP1), SD = SD3, I ⊆ LP1 o mulţime oarecare de formule


închise, satisfiabile şi F ∈ LP1 o formulă oarecare. Atunci:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 213

Teorema 4.1 (teorema de completitudine a lui K. Gödel,


1930). I •SD3 F dacă şi numai dacă I ‘ F.

Demonstraţie. Corectitudinea (I •SD3 F implică I ‘ F), a fost

deja demonstrată. Completitudinea (I ‘ F implică I •SD3 F)

este mult prea laborioasă pentru a o putea reda în lucrarea de


faţă. De fapt ([CAZ1]), ea se demonstreză indirect, folosind
sistemul echivalent SD0, al deducţiei naturale (conform
Exemplului 4.4). Faptul că I este satisfiabilă nu este esenţial,
deoarece dacă I este nesatisfiabilă atunci (meta)teorema este
imediat adevărată (deşi...neinteresantă în acest caz). (q. e. d.)

Prin urmare, teoria Val(LP1) este chiar finit axiomatizabilă şi


putem testa validitatea unei formule încercând să-i găsim o
demonstraţie. Val(LP1) nu este decidabilă, dar este semidecidabilă
(putem „enumera” toate demonstraţiile posibile şi alege apoi pe cea
dorită). Teoria este şi consistentă (necontradictorie). Mai mult,
axiomele lui SD3 sunt independente şi R nu conţine reguli derivate. Cu
toate aceste calităţi, am văzut că nici demonstraţiile în SD3 nu sunt
chiar simple, ca să nu vorbim de găsirea unor algoritmi eficienţi de
„enumerare” a acestora. ■

Exemplul 4.1 (reluat). În această situaţie nestandard, avem de-a face


cu FORM = LP1 (de fapt, cu FORM = Cl). Apoi, fiecărei mulţimi
(eventual finite) de clauze din LP1, notată F (fiecare clauză fiind la

PDF created with pdfFactory Pro trial version www.pdffactory.com


214 Cristian Masalagiu

rândul ei o mulţime finită de literali), îi putem asocia mulţimea Res*(F)


care desigur nu este o teorie logică în acest caz. De altfel, nici F nu este
(întotdeauna) o mulţime satisfiabilă (de ipoteze suplimentare). În plus,
nici nu ne interesează „adevărul” ci „neadevărul”. Metoda rezoluţiei
este de altfel o exemplificare perfectă a unei situaţii despre care am
amintit deja: sistemul deductiv (aici, SDF) este folosit ca definiţie
constructivă, pentru generarea unei mulţimi (Res*(F)), care nu este, şi
nici nu vrem să fie, o teorie logică. Putem admite că această mulţime
are totuşi o caracterizare semantică (în sensul că o submulţime a sa, F,
este sau nu satisfiabilă). Teorema de corectitudine şi completitudine
există dar are o formă mai specială, apropiată însă de forma clasică (în
sensul că se caracterizează „neadevărul” în mod sintactic). ■

Exemplul 4.3 (teoria grupurilor). O altă clasă generală de exemple,


situată undeva între cele prezentate anterior (standard, nestandard), este
cel al aşa-numitor teorii (matematice) formale ([CAZ1]). Şi aici se
începe cu un sistem deductiv „de bază”, conţinând, de obicei, ca
axiome, axiomele logice, adică cele ale oricărui sistem corect şi
complet pentru Val (LP1), cum ar fi SD3, la care se adaugă axiomele
egalităţii, împreună cu nişte „axiome” specifice (acestea din urmă
constituind de fapt mulţimea suplimentară de ipoteze). Mulţimea
teoremelor pentru sistemul amintit (de tip SD’ ) nu va coincide însă cu
Val(LP1), nici cu o subclasă a sa, ci cu o clasă de formule valide „în
sens restrâns” (care formează o teorie logică „în sens restrâns”).
Termenul „în sens restrâns” se referă la faptul că universurile pentru

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 215

structurile semantice admise pot fi doar anumite mulţimi (de exemplu,


cum ar fi cele care constituie o structură de grup împreună cu o operaţie
dată). Structurile admise conţin în plus şi simboluri cu interpretări
standard, cum ar fi egalitatea, totul fiind similar cu ceea ce am făcut în
cazul „trecerii” de la LP1 la LP1=. Cadrul standard prezetat anterior se
păstrează, inclusiv enunţul teoremei de corectitudine şi completitudine
(care, de fapt, este imediat adevărată, în general admiţându-se prin
convenţie faptul că „teoria” în cauză este tocmai mulţimea toremelor
din sistemul deductiv ales). Sensul noţiunilor de formulă „satisfiabilă”,
„validă”, etc., este relativ la clasa restrânsă de structuri considerată.
Vom exemplifica cu TG, teoria formală grupurilor. Ne
plasăm în FORM = LP1{=, •, 1, ~}, simbolurile specificate în mulţimea
din indice reprezentând egalitatea (simbol predicativ binar), operaţia
de grup (simbol funcţional binar), elementul neutru (constantă
funcţională), respectiv operaţia de simetrizare (simbol funcţional
unar). Deja putem spune care este clasa Str, a structurilor admisibile
S = <US, IS>: US va fi orice mulţime D dotată cu o lege de compoziţie
internă ○ astfel încât <D, ○> formează grup; în oricare asemenea S , =
va fi interpretat ca egalitatea pe D, • ca legea ○, 1 ca elementul neutru
al legii ○, iar dacă un anumit term t va avea interpretarea d în D atunci
termul ~t va avea ca interpretare simetricul lui d faţă de legea •.
Sistemul SDTG va fi dat astfel de:

Axiome (A). Mulţimea lor este reuniunea celor două mulţimi descrise
mai jos. Să punctăm faptul că de multe ori axiomele egalităţii sunt

PDF created with pdfFactory Pro trial version www.pdffactory.com


216 Cristian Masalagiu

incluse printre axiomele logice şi că uneori sunt utilizate variante ale


acestora (în funcţie de scopul pentru care sunt introduse). Nu toate
axiomele egalităţii amintite sunt folosite în mod direct în TG
(asemenea axiome particulare există şi printre axiomele grupului).
• Axiomele logice: Sunt cele ale sistemului SD3 (1. – 5.).
• Axiomele egalităţii:
6. (∀x)(x = x).
7. (∀x)(∀y)(x = y → y = x).
8. (∀x)(∀y)(∀z)(x = y ∧ y = z → x = z).
9. (∀*)(x1 = y1 ∧ x2 = y2 ∧ ... ∧ xn = yn →
f(x1, x2, ... , xn) = f(y1, y2, ... , yn)),
pentru fiecare n ∈ N* şi fiecare f ∈Fn.
10. (∀*)(x1 = y1 ∧ x2 = y2 ∧ ... ∧ xn = yn →
P(x1, x2, ... , xn) = P(y1, y2, ... , yn)),
pentru fiecare n ∈ N* şi fiecare P ∈Pn.
Axiomele grupului (sunt de fapt I, ipotezele suplimentare; câteodată
axiomele egalităţii sunt plasate tot aici):
11. (∀x)(∀y)(~x = ~y).
12. (∀x)(∀y)(∀z)(x = y → x•z = y•z ∧ z•x = z•y).
13. (∀x)(∀y)(∀z)(x•(y•z) = (x•y)•z).
14. (∀x)(1•x = x).
15. (∀x)((~x)•x = 1).
Reguli de inferenţă: (MP) şi (RG) de la SD3.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 217

Vom reveni cu un exemplu de demonstraţie în teoria grupurilor după ce


vom introduce sistemul SD0, echivalent cu SD3 (Exerciţiul 4.5).
Datorită acestui ultim fapt, vom putea folosi şi deducţia naturală în
cazul teoriei grupurilor. ■

În finalul acestui capitol prezentăm alte câteva (tipuri de)


sisteme deductive, având o largă utilizare atât din punct de vedere
teoretic cât şi practic.

§3. Clasificarea sistemelor deductive


Începem cu o trecere în revistă a unor posibilităţi de clasificare
([CAZ1]) a sistemelor deductive, din care se pot trage concluzii utile cu
privire la calităţile şi defectele unor asemenea sisteme. Clasificările
prezentate (care nu sunt singurele acceptate) se referă în principal la
sistemele standard (în sensul descris anterior). Sistemele deductive se
pot astfel împărţi:
• În funcţie de conectivele logice alese. Există sisteme boolean
complete sau boolean incomplete. Ştim că în interpretarea
conectorilor logici prin structuri aceştia devin funcţii booleene.
Termenul de (in)completitudine se referă la faptul că mulţimea
interpretărilor conectorilor aleşi în alfabetul de bază peste care
este construit sistemul formează (sau nu) o mulţime completă de
funcţii (în sensul Capitolului 2). Sistemul SD3 este boolean
complet, în timp ce un sistem care, de exemplu, foloseşte drept

PDF created with pdfFactory Pro trial version www.pdffactory.com


218 Cristian Masalagiu

conector doar → (rezultând aşa-numitul calcul implicaţional),


va fi boolean incomplet.
• În funcţie de relaţia avută cu o anumită teorie logică.
Sistemele pot fi corecte sau nu, complete sau nu pentru o teorie
dată. Toate sistemele implicate într-o teoremă de tip Gödel sunt
corecte şi complete, conform definiţiei noastre. După cum am
mai precizat, completitudinea este mai greu de atins
(demonstrat) şi de aceea este de multe ori doar adoptată prin
convenţie. Corectitudinea este de obicei impusă, deşi poate avea
şi nişte forme mai deosebite (vezi sistemele nestandard, cum ar
fi rezoluţia).
• În funcţie de importanţa acordată axiomelor sau regulilor de
inferenţă. Din acest punct de vedere, se poate acorda o atenţie
deosebită regulilor (adică modului de raţionament, de obţinere
de cunoştinţe noi) în dauna axiomelor (cunoştinţelor primare).
Acest tip de sisteme se numesc Gentzen-Jaskowski. Un
asemenea sistem va fi SD0 (deducţia naturală), care este
echivalent cu SD3 şi va fi prezentat în acest capitol. În cazul în
care balanţa este inversată (există „mult mai multe” axiome
decât reguli de inferenţă, ca în cazul SD3), sistemele sunt
cunoscute sub numele de sisteme Hilbert.
• După clasa FORM aleasă. De exemplu (pentru logica clasică),
putem avea sisteme propoziţionale sau sisteme predicative.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 219

Să considerăm un sistem de tip Gentzen, foarte cunoscut în literatura de


specialitate (introdus pentru prima oară de G. Gentzen şi S. Jaskowski
în 1934).

Exemplu (deducţia naturală, sistemul SD0). Clasa FORM este LP1.


Alfabetul conţine în acest caz doar conectorii , ∧ şi cuantificatorul ∀.
După cum am precizat, într-un asemenea sistem regulile de inferenţă
sunt „mai importante” decât axiomele, sistemul SD0 neavând chiar
nici o axiomă. Pentru a simplifica înţelegerea, vom defini direct o
demonstraţie în sensul de deducţiei naturale ca fiind un anumit
arbore (vezi mai jos), fără a folosi definiţia generală. Un arbore de
deducţie naturală are pe nivelul 0 (în frunze) formule oarecare (ipoteze
ale unor reguli de inferenţă din sistem, inclusiv elemente din eventuala
mulţime suplimentară I), iar nivelele următoare se obţin constructiv,
conform definiţiei generale (rădăcina fiind „rezultatul final”).
Caracteristic acestui sistem este faptul că acele condiţii c de
aplicabilitate ale regulilor, dacă există, sunt de tipul „se anulează
ipoteza F” (aici termenul ipoteză nu se referă la ipotezele regulii
respective, ci la toate formulele F prezente în frunzele arborelui
curent). Pentru ca anularea să nu fie efectivă (având drept consecinţă
ştergerea unui nod din graf, ceea ce conduce întotdeauna la anumite
complicaţii tehnice), vom adopta soluţia de a marca ipotezele anulate
(cu cifre, de exemplu). Dacă se doreşte, pentru evitarea confuziilor,
mărcile pot fi diferite, în cazul în care regulile aplicate sunt diferite
şi/sau dacă sunt aplicate la momente diferite. Tot pentru evitarea

PDF created with pdfFactory Pro trial version www.pdffactory.com


220 Cristian Masalagiu

confuziilor, aceeaşi marcă se va asocia şi nodului care constituie


concluzia regulii care, aplicată, a cauzat anularea. Ipotezele anulate
modifică însă clasa de demonstraţii acceptate într-un asemenea sistem:
avem I •SD0 G (G este consecinţă sintactică în SD0 utilizând mulţimea

suplimentară de formule I; sau, există o demonstraţie pentru G în SD0


utilizând I; sau, există o deducţie naturală pentru G în SD0) dacă
există un arbore de deducţie naturală având rădăcina G şi cu toate
ipotezele neanulate aparţinând lui I. Grafic:
....... ....... ....... ....... ...... ....... .......
ipoteze, anulate
sau neanulate

A1 A2 ...... An

B rădăcina
rădăc

În acest mod, vom avea desigur •SD0 G doar dacă va exista un

arbore de deducţie naturală cu rădăcina G, având toate ipotezele


anulate.
Pentru a prezenta concret sistemul, rămâne să dăm regulile de
inferenţă din care este alcătuit, care vor primi şi un nume înafara
numărului de secvenţă. Vom avea câte o (schemă de) regulă pentru
fiecare A, B ∈ LP1, fiecare x ∈ X şi fiecare t ∈ T. În 5., este necesar ca

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 221

substituţia [x/t] să fie permisă pentru A, iar în 6., ca x să nu apară liber


în nici o ipoteză neanulată. Schemele 3. şi 4. au variante datorită
necesităţii de a se „prinde” comutativitatea conjuncţiei la nivel sintactic
(ne vom referi la ele ca 3’., respectiv 4’.). Deoarece substituţia [x/x]
este permisă pentru orice formulă, regula 5. are şi forma particulară
<<{(∀x)A}, A>, true> (care va fi notată 5’.). Să remarcăm şi faptul că
regula 6. nu are nevoie de nici o restricţie sintactică în momentul în
care se lucrează cu formule închise. Mnemonicele provin de la
următoarele cuvinte: E – eliminare; I – introducere; N – negaţie;
C – conjuncţie.
B,  B
1. (EN) , c: se anulează ipoteza  A.
A
B,  B
2. (IN) , c: se anulează ipoteza A.
A
A∧B A∧B
3. (EC) şi .
A B
A, B A, B
4. (IC) şi .
A∧B B∧ A
(∀x )A
5. (E∀) .
A[x/t]
A
6. (I∀) .
(∀x )A

Demonstraţia teoremelor următoare poate fi găsită în [CAZ1].

PDF created with pdfFactory Pro trial version www.pdffactory.com


222 Cristian Masalagiu

Teorema 4.2. Sistemul SD0 este corect şi complet pentru Val (LP1). ■

Teorema 4.3. Sistemele SD0 şi SD3 sunt echivalente, adică pentru


fiecare mulţime de formule închise J ⊆ LP1 şi fiecare formulă

F ∈ LP1, avem: I •SD0 F dacă şi numai dacă I •SD3 F. ■

În plus, putem spune că SD0 este un sistem predicativ (de tip


Gentzen, standard), finit specificat şi boolean complet. Dacă
introducem ∨, →, ↔ şi ∃ în alfabetul de bază, putem folosi şi
următoarele reguli derivate:
A ∨ B,  A A ∨ B,  B
7. (ED) şi .
B A
A A
8. (ID) şi .
A∨ B B∨ A

A, A → B
9. (EI) .
B
B
10. (II) , c: se anulează ipoteza A.
A→ B
A⇔B A⇔B
11. (EE) şi .
A→B B→ A

A → B, B → A
12. (IE) .
A⇔B
(∃x)A, B
13. (E∃) , c: se anulează ipoteza A din subarborele
B
având rădăcina acest B.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 223

A[x/t]
14. (I∃) .
(∃x)A

A  A
15. (DN) şi .
 A A
Analog cu precizările deja făcute pentru regulile de bază, şi schemele
de mai sus sunt valabile pentru fiecare A, B ∈ LP1, fiecare x ∈ X şi

fiecare t ∈ T. În 13., condiţia sintactică este dată de faptul că x nu


trebuie să aibă apariţii libere în ipotezele neanulate, diferite de A şi
prezente în subarborele având rădăcina exact acel B pentru care se
aplică regula respectivă. De asemenea, în 14., condiţia sintactică este ca
substituţia [x/t] să fie permisă pentru A. Mnemonicul E de pe a doua
poziţie (din 11. şi 12.) nu mai provine din cuvântul „eliminare”, ci de la
echivalenţă; mnemonicul I, de pe a doua poziţie din 9., 10., provine de
la implicaţie, iar D – de la disjuncţie (D de pe prima poziţie în 15.
provine de la dublă). Reamintim că în regulile având variante cea de a
doua schemă va fi referită prin acelaşi număr (nume), urmat de un
apostrof. Extinderea alfabetului şi folosirea regulilor derivate, pot
simplifica mult unele demonstraţii, care sunt – poate chiar mai mult
decât la sistemul SD3 – suficient de sofisticate pentru un începător.

Exemplu. Să se arate că avem


 (   A ∧  C),  (   B ∧  C),  (  A ∧  B) • C, în SD0.

Într-adevăr, putem construi arborele de deducţie:

PDF created with pdfFactory Pro trial version www.pdffactory.com


224 Cristian Masalagiu

1 A 2 B

C
C 3
3

(i) (iii)

A∧C B∧C

 (  A ∧  C)  (  B ∧  C)
(iv)

(ii)
1 A B 2

(v)
 ( A ∧  B)
A∧B

(vi)

C 3

Observaţie. În arborele de mai sus, cifrele denotă, aşa cum am mai


precizat, o marcă aplicată ipotezelor care trebuie anulate în momentul
aplicării unei anumite reguli. Paşii de aplicare i-am notat distinct, prin
((i) – (vi)), ca de altfel şi mărcile. De exemplu, la primul pas de
deducţie (notat (i)), se folosesc drept ipoteze formulele oarecare   A şi
 C, pentru a aplica o instanţă a regulii (IC) (în definiţia generală cele

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 225

două formule sunt denotate prin A, respectiv B). Această regulă nu are
ataşată nici o condiţie de aplicare. Apoi, la pasul (ii), se continuă
construcţia demonstraţiei (arborelui) prin aplicarea regulii (IN), care are
ca ipoteze formulele   A ∧  C şi  (   A ∧  C) (în descrierea
generală ele sunt notate B, respectiv  B) şi drept concluzie formula A,
având şi condiţia de aplicare c = se anulează ipoteza A. Marca 1 a fost
aplicată, conform celor stabilite, nodului concluzie al aplicării regulii
şi ... lui   A, în loc de A! Acest lucru nu este permis, tehnic vorbind
(de fapt, pentru a fi foarte exacţi, suntem în culpă şi cu utilizarea strictă
a parantezelor; soluţia aici este simplă, introducându-se de la bun
început şi variante „cu paranteze” pentru toate regulile). Pentru a aplica
corect teoria, ne putem folosi de instanţe ale regulii derivate (DN)
(deducem   A din A, înainte de efectuarea primului pas (i) şi astfel
putem anula în (ii) ceea ce trebuie, adică pe A). Pe parcursul
construcţiei arborelui se mai întâlnesc asemenea cazuri şi devine
evidentă necesitatea de a avea la dispoziţie o „bibliotecă” de reguli
derivate, pentru a lucra simplu cu un asemenea tip de deducţie naturală.
Acestea trebuie însă demonstrate în prealabil, lucru care nu este chiar
uşor (totuşi, se pare că este mai uşor de conceput un „mecanism
automat de raţionament” pentru SD0 decât pentru SD3). O alternativă,
bazată de fapt pe aceeaşi idee (utilizarea unor reguli derivate), este să
folosim formulele din I sub o formă echivalentă, de exemplu
I = {A → C, B → C, A ∨ B}. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


226 Cristian Masalagiu

Exerciţiul 4.3 ([CAZ1]). Fie A → C, B → C, A ∨ B şi C formule


oarecare din LP1 şi I ⊆ LP1. Să presupunem că I •SD0 A → C,

B → C, A ∨ B (adică fiecare dintre formulele din membrul drept este


consecinţă sintactică din I în SD0). Arătaţi că I •SD0 C (aceasta se

numeşte în logică metoda de demonstraţie prin disjuncţia cazurilor).

Exemplu (calculul cu secvenţe, sistemul SD1). Pornim iniţial cu LP1,


construit peste un alfabet care conţine toţi conectorii şi cuantificatorii
cunoscuţi (desigur că unii dintre ei pot fi adoptaţi prin notaţie, dar îi
vom folosi fără restricţie): , ∧, →, ↔, ∀, ∃. Se numeşte secvenţă orice
formulă care are forma: A1 ∧ A2 ∧ … ∧ Am → B1 ∨ B2 ∨ …∨ Bn, unde
n, m ∈ N, A1, A2, … , Am, B1, B2, … , Bn ∈ LP1 (m, n pot fi şi egali cu
0, dar nu simultan). Prin urmare, vom lucra practic cu clauze, dar
notaţia pe care o vom adopta ne conduce la ideea că secvenţele sunt de
mai degrabă metaformule (alt tip de obiect, oricum mai complex) decât
formulele cu care am fost familiarizaţi în capitolele anterioare. Astfel,
vom scrie o secvenţă sub forma (desigur că în cele ce urmează ⇒ nu
are sensul de metaimplicaţie):
A1, A2, … , Am ⇒ B1, B2, …… , Bn.
Mai mult, vom considera cei doi membri ai relaţiei de mai sus ca fiind
mulţimi (atunci când ordinea elementelor va fi esenţială, vom specifica
explicit acest lucru). Prin urmare, o secvenţă va fi de forma U ⇒ V
(U şi V pot fi şi mulţimea vidă, dar nu simultan) şi vom putea scrie
U’ = U, A în loc de U’ = U U {A}, în ideea că, din anumite motive,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 227

elementul A din U’ trebuie pus în evidenţă. Vom extinde notaţia la


submulţimi oarecare, adică vom putea scrie (de exemplu) V, W în loc de
V U W şi V, A, B în loc de V U {A} U {B}. Astfel, punem
FORM = {U | U este secvenţă în LP1}. Sistemul SD1, după cum vom
vedea, deşi atribuit în principal lui Gentzen (1934) şi având o singură
schemă de axiome (este drept, foarte generală), se apropie (în privinţa
modalităţii de utilizare) mai mult de un sistem de tip Hilbert. Sistemele
deductive bazate pe secvenţe au şi o răspândită utilizare în situaţii
nestandard (legate numai de definirea constructivă a unor mulţimi „în
mod axiomatic”, fără referire la „adevăr”). Mai concret, SD1 este un
sistem predicativ finit specificat şi boolean complet, având:

Axiome. Pentru fiecare U, V ∈ FORM şi pentru fiecare A ∈ LP1:


U, A ⇒ V, A.
Reguli de inferenţă. Schemele de mai jos (care, din nou, sunt
numerotate dar au ataşat şi un nume mnemonic care nu mai necesită
explicaţii - exceptând poate (RT) care înseamnă regula tăieturii) sunt
valabile pentru fiecare U, V ∈ FORM, fiecare A, B ∈ LP1, fiecare
x ∈ X şi fiecare t ∈ T . În regula 5., substituţia [x/t] trebuie să fie
permisă pentru A, iar în 6., x nu trebuie să apară liber în nici o formulă
din U sau V. În momentul în care vor exista mai multe premize într-o
regulă, vom folosi pentru separarea lor „;”. Atenţie la faptul că regulile
5. şi 7. au o infinitate de premize (de exemplu, U, (A)[x/t] ⇒ V din
(∀⇒) trebuie înţeles ca reprezentând U, (A)[x/t1] ⇒ V;
U, (A)[x/t2] ⇒ V; ... , adică se iau în considerare toate elementele t din

PDF created with pdfFactory Pro trial version www.pdffactory.com


228 Cristian Masalagiu

T, pentru care [x/t] este permisă pentru A; rolul lui A în (RT) este
similar, instanţele unei scheme referindu-se la celelalte elemente având
statutul de a fi „oarecare”.
U ⇒ V ,A
1. (  ⇒) .
U , A ⇒ V
U , A, B ⇒ V
2. (∧ ⇒) .
U, A ∧ B ⇒ V
U,A ⇒ V
3. (⇒  ) .
U ⇒ V , A
U ⇒ V , A;U ⇒ V , B
4. (⇒ ∧) .
U ⇒ V,A ∧ B
U , (A)[x/t] ⇒ V
5. (∀ ⇒) .
U , (∀x)Α ⇒ V
U ⇒ V, A
6. (⇒ ∀) .
U ⇒ V , (∀x)Α
U , A ⇒ V ;U ⇒ V , A
7. (RT) .
U ⇒V
Conform cadrului general fixat, o metaformulă (aici, o secvenţă)
U ⇒ V este teoremă în SD1 dacă există un arbore (care reprezintă o
demonstraţie a lui U ⇒ V) având în rădăcină pe U ⇒ V şi axiome în
frunze (în acest sens însă, sistemul doar generează constructiv
mulţimea teoremelor). Dacă vrem să legăm SD1 de Val (LP1) şi să
enunţăm o teoremă de corectitudine şi completitudine, trebuie să
interpretăm relaţia de consecinţă sintactică I • F (I ⊆ LP1,

F ∈ LP1) prin: există G1, G2, ... , Gn ∈ I astfel încât

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 229

G1, G2, ... , Gn ⇒ F ∈ Th(SD1). În particular, •SD1 F în seamnă că

metaformula ⇒ F (adică Ø ⇒ F) este teoremă în SD1. Deşi se poate


enunţa o teoremă de corectitudine şi completitudine mai generală
(oricum sistemul este corect; demonstrarea completitudinii este mai
dificilă datorită regulilor cu un număr infinit de premize; pe de altă
parte, se poate arăta că putem renunţa la (RT), fără a se reduce puterea
deductivă a sistemului, demonstraţiile fiind în schimb mai lungi), ne
limităm la a aminti că avem:

Teorema 4.4. Fie orice F ∈ LP1. Atunci:


‘F dacă şi numai dacă •SD1 F. ■

Sistemul SD1 are avantajul, faţă de SD3 şi SD0, că putem


deriva imediat un „procedeu automat” ([CAZ1]) de construire a unei
demonstraţii (arbore). Să presupunem astfel că avem de demonstrat
secvenţa U ⇒ V în SD1. Alegem un nod, care este frunză (iniţial,
acesta nu va putea fi decât rădăcina, adică nodul care conţine U ⇒ V),
şi anume secvenţa care se află plasată în el, o formulă din secvenţă şi
operaţia logică principală a formulei (conectorul sau cuantorul care
furnizează o primă împărţire a formulei în subformule). Se aplică
acum una dintre regulile 1. – 7., obţinându-se unul sau (maxim) două
noi noduri, apoi se reia alegerea unei frunze. Procedeul se opreşte
atunci când frunzele conţin doar axiome (acestea se pot numi noduri
terminale; ideea este să alegem spre aplicare acele reguli care
generează noi noduri, care sunt fie terminale, fie conţin secvenţe având

PDF created with pdfFactory Pro trial version www.pdffactory.com


230 Cristian Masalagiu

mai puţine operaţii logice). Desigur că ceea ce am descris mai sus nu


este încă un algoritm, care să poată prelucra întrega clasă de secvenţe
(nu este nici măcar un semialgoritm), datorită numărului infinit de
premize din 5. şi 7. Vom ilustra totuşi procedeul printr-un exemplu,
imediat după ce dăm şi câteva reguli de inferenţă derivate (presupunem
că U, V ∈ FORM, A, B ∈ LP1, x ∈ X, t ∈ T sunt elemente oarecare;
că în 14., x nu apare liber în nici o formulă din U sau V; că în 15. nu
mai avem o infinitate de premize ca în 5., valoarea concretă a lui t
furnizând doar o instanţă a regulii în ansamblu; totuşi, în 15.,
substituţia [x/t] trebuie să fie permisă pentru A).
Reguli de inferenţă derivate pentru SD1:
U , A ⇒ V; U , B ⇒ V
8. (∨ →) .
U,A ∨ B⇒ V
U ⇒ V , A, B
9. (→ ∨) .
U ⇒ V ,A ∨ B
U ⇒ V , A; U , B ⇒ V
10. (→ ⇒) .
U,A → B⇒V
U,A ⇒ V,B
11. (⇒ →) .
U ⇒ V,A → B
U , A, B ⇒ V ;U ⇒ V , A, B
12. (↔ ⇒) .
U,A ↔ B⇒ V
U , A ⇒ V , B;U , B ⇒ V , A
13. (⇒ ↔) .
U ⇒V,A ↔ B
U, A ⇒ V
14. (∃ ⇒) .
U ,(∃x ) A ⇒ V

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 231

U ⇒ V , A[x/t]
15. (⇒ ∃) .
U ⇒ (∃x)A,V

Exemplu. Regula (↔⇒) se poate obţine pe baza deducţiei


(metaformulele U, B ⇒ V, B şi U, A ⇒ V, A sunt axiome):

U , A, B ⇒ V U, B ⇒ V , B U, A ⇒ V , A U ⇒ V , A, B

U , A → B, B ⇒ V U, A → B ⇒ V, A

U , A → B, B → A ⇒ V

U , ( A → B) ∧ ( B → A) ⇒ V

Exerciţiul 4. 4 ([CAZ1]). Arătaţi că formula


(A ∨ C) ∧ (A → B) ∧ (C → D) → (B ∨ D) ∈ LP1
este demonstrabilă în SD1.
Exerciţiul 4.5 ([CAZ1]). Se consideră teoria grupurilor TG şi
sistemul deductiv asociat, SDTG. Fie u, v ∈ T, termi oarecare. Să se
arate că u = v → v = u este teoremă în TG, folosind deducţia
naturală.

PDF created with pdfFactory Pro trial version www.pdffactory.com


232 Cristian Masalagiu

Încheiem acest paragraf precizând faptul că sistemul SD2 (pe


care nu îl vom trata detaliat), atribuit lui A. Schwichtenberg (1977),
este un sistem asemănător cu SD1, dar se referă la formulele LP1 în
care negaţia poate fi plasată doar imediat în faţa unei formule
atomice. Pentru acesta, se poate demonstra mai uşor posibilitatea
eliminării unei reguli de tipul (RT).

§4. Recapitulare şi Index


Subiectul capitolului curent este vast şi de un deosebit interes,
atât pentru filozofi, matematicieni şi logicieni, cât şi pentru cercetătorii
din alte domenii ştiinţifice, inclusiv informaticienii. Prin conceptul de
teorie logică, noţiunea de adevăr este tratată la nivel global, ca
reflectare a unei părţi coerente a realităţii. O bază iniţială de cunoştinţe,
alcătuită din afirmaţii presupuse a fi adevărate (într-un sens bine
precizat), şi prezentată sintactic ca o mulţime de (meta)formule, poate
fi ulterior completată cu noi afirmaţii (cunoştinţe), despre care nu se
poate şti aprioric că „reflectă aceeaşi realitate”. Utilizând un procedeu
standard (obţinerea de consecinţe semantice), se pot afla chiar toate
afirmaţiile „adevărate” în contextul respectiv. Din punct de vedere
algoritmic, problema aflării tuturor consecinţelor semantice dintr-o
mulţime dată de formule şi chiar problema de decizie mai simplă Este
formula F o consecinţă semantică din mulţimea G ?, sunt de cele mai
multe ori nedecidabile (sau cel mult semidecidabile). Chiar în cazul
unor probleme de acest tip decidabile, rezultatele privind complexitatea
(algoritmilor care le rezolvă) sunt de obicei descurajatoare (algoritmii

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 233

fiind, în cazurile nebanale, exponenţiali ca timp de execuţie, urmează că


problema este în fapt netratabilă). Abordările sintactice ale rezolvării
problemelor au cel puţin două avantaje deloc de neglijat. Astfel, se pot
selecta din start subclase de formule interesante, cu o formă
convenabilă, pentru care rezolvarea problemei este „mai simplă”. Apoi,
algoritmii generali bazaţi pe sintaxă (deşi nu neapărat mai eficienţi),
sunt mai flexibili, mai uşor de tranformat şi adaptat, mai uşor de extins
şi de a fi aplicaţi şi în alte situaţii/contexte. Sistemele deductive
formalizează cele de mai sus, apelând la concepte cum ar fi axiomă,
regulă de inferenţă, teoremă, consecinţă sintactică. Legătura dintre
cele două noţiuni generale se stabileşte în mod concret prin teoreme de
corectitudine şi completitudine. Chiar dacă uneori suntem nevoiţi să
renunţăm la demonstrarea completitudinii sau chiar la ataşarea unui
concept de „adevăr” formulelor, sistemele de demonstraţie pot fi
importante prin ele însele. Astfel, înafara exemplelor considerate,
standard sau nestandard (SD0, SD1, SD3, etc.), mai poate fi amintit şi
aşa-numitul calcul cu tabele ([OHL]), folositor înafara contextului
teoriilor logice.

A Teoriile logice şi sistemele de demonstraţie constituie prin urmare


cadrul formal prin care pot fi studiate într-un mod foarte precis părţi ale
realităţii prin prisma oricărei ştiinţe (vezi de exemplu teoriile
matematice formale), conceptele menţionate în primele capitole
nemaifiind ambigue. Pentru logicieni subiectul este inepuizabil şi
foarte atrăgător, obţinându-se şi astăzi noi rezultate surprinzătoare.
Informaticii îi revine sarcina de „ţine pasul” cu noile descoperiri în

PDF created with pdfFactory Pro trial version www.pdffactory.com


234 Cristian Masalagiu

domeniu, de a adapta algoritmii existenţi şi conceptele legate de


programarea logică, urmărindu-se eficientizarea acesteia şi apropierea
de idealurile Inteligenţei artificiale.

Atenţionăm asupra faptului că termenii pe care i-am selectat în


Indexul care urmează este posibil să nu fie chiar cei mai importanţi, iar
paginile indicate s-ar putea să nu fie chiar primele în care apare
cuvântul respectiv (aceasta datorită generalităţii subiectului):

teorie logică, 191


sistem deductiv (de demonstraţie), 191
axiomă, 191
regulă de inferenţă (reguli corecte sau sound), 191
demonstraţie (consecinţă sintactică; deducţie; raţionament), 191
metaformulă, 193
sistem deductiv standard, 200
regulă de inferenţă derivată, 204
axiomatizarea unei teorii logice, 207
teorie logică nedegenerată, consistentă, finit axiomatizabilă, 207
teoremă de corectitudine şi completitudine, 208
sistem deductiv corect şi complet, 208
sistem deductiv necontradictoriu (consistent), 210
sistem deductiv independent şi minimal, 210
sistem deductiv boolean complet, 214-215
sistem deductiv propoziţional sau predicativ, 214-215
sistem deductiv de tip Hilbert, 215

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 235

sistem deductiv de tip Gentzen, 215


deducţie naturală, 215
sisteme deductive echivalente, 218
sistem deductiv finit specificat, 219
calculul cu secvenţe, 223

§5. Exerciţii
1. Să se demonstreze în sistemul SD3 următoarele formule
([CAZ1]):
(i) (A → B) → ((B → C) → (A → C)).
(ii) (A → (B → C)) → (B → (A → C)).
(iii)   A → A.
2. Rezolvaţi Exerciţiul 4.1.
3. Rezolvaţi Exerciţiul 4.2.
4. Rezolvaţi Exerciţiul 4.3.
5. Rezolvaţi Exerciţiul 4.4.
6. Rezolvaţi Exerciţiul 4.5.
7. Fie sistemul deductiv SIN1 ([CAZ1]), dat prin axiomele şi
regulile de mai jos.

Axiome. Pentru fiecare A, B, C, D ∈ LP, avem:


Ax1. A → (B → A)
Ax2. (C → (A → B)) → ((C → A) → (C → B))
Ax3. A ∧ B → A
Ax4. A ∧ B → B

PDF created with pdfFactory Pro trial version www.pdffactory.com


236 Cristian Masalagiu

Ax5. A → (B → A ∧ B)
Ax6. A → A ∨ B
Ax7. B → A ∨ B
Ax8. (A → D) → ((B → D) → (A ∨ B → D))
Ax9. (A ↔ B) → (A → B)
Ax10. (A ↔ B) → (B → A)
Ax11. (A → B) → ((B → A) → (A ↔ B))
Ax12. (A →  A) →  A
Ax13.  A → (A → B)
Reguli de inferenţă. Acestea sunt (MP) şi regula substituţiei,
(RS). Schema este valabilă pentru fiecare F, G1, G2, ... , Gn ∈
LP. În cele de mai jos, F(A1, A2, ... , An) denotă faptul că F este
construită peste (exact) mulţimea de variabile propoziţionale
{A1, A2, ... , An}, iar F(G1, G2, ... , Gn) denotă o formulă F în
care fiecare apariţie a lui A1 se în locuieşte cu G1, fiecare
apariţie a lui A2, cu G2, ş. a. m. d. , fiecare apariţie a lui An, se
înlocuieşte cu Gn, simultan:
F(A1 , A 2 ,..., A n )
(RS)
F(G1 , G 2 ,..., G n )

Acesta este un sistem deductiv propoziţional standard, de tip


Hilbert, construit peste LP care are toţi conectorii standard.
Sistemul este boolean complet, dar incomplet din punctul de
vedere al Val (LP). Astfel, se poate arăta că formule valide

cunoscute, cum ar fi   A → A (legea negării negaţiei) sau

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 237

A ∨  A (legea terţiului exclus) nu sunt teoreme în SIN1. Ca


observaţie suplimentară, să spunem că dacă păstrăm doar
Ax1. – Ax.11. (împreună cu (MP) şi (RS)), sistemul mai poartă
numele de calculul propoziţional pozitiv (datorat lui Hilbert).
Acesta este desigur tot incomplet faţă de Val (LP), dar are
avantajul că în el putem demonstra tot ceea ce avem nevoie, în
ipoteza că nu vrem să folosim negaţia.
Arătaţi că:
(i) Sistemul este corect faţă de Val (LP).
(ii) (A → B) → ((A →  B) →  A), legea reducerii la absurd,
este teoremă în SIN1.
8. Daţi o axiomatizare a teoriei formale a grupurilor, fără a folosi
simbolurile care desemnează elementul neutru şi operaţia de
simetrizare.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Capitolul 5
Programare logică

Să punctăm încă o dată faptul că realitatea (sumumul


cunoştinţelor noastre despre o parte a lumii reale, la un moment dat)
poate fi modelată prin afirmaţii, care, la rândul lor, pot fi reprezentate
în logica formală clasică, sintactic, prin formule (metaformule).
Afirmaţiile au asociată o semantică, adică o valoare de adevăr. Clasei
de formule alese, FORM, i se ataşează astfel şi o clasă de structuri, Str,
prin care valoarea de adevăr (unică în contextul precizat) a oricărei
formule poate fi efectiv calculată (pentru fiecare F ∈ FORM şi fiecare
S ∈ Str, obţinem S(F) ∈ B). Problemele principale privind modelarea
în modul descris a părţii de realtate alese sunt legate de posibilitatea
de a decide pe de o parte dacă formulele corespunzătoare nu sunt
cumva contradicţii (sau contradictorii ca mulţime) şi pe de altă parte
dacă alte formule (reprezentând noi cunoştinţe) reflectă sau nu
realitatea existentă (altfel spus, sunt sau nu consecinţe semantice din
formulele iniţiale). Totul se reduce în final la decidabilitatea şi
tratabilitatea unor probleme de tip SAT, SAT1, etc. Deşi rezultatele
teoretice, fie privind direct structura FORM şi a unor sisteme deductive
pentru FORM (de exemplu, nedecidabilitatea SAT1 sau netratabilitatea
SAT), fie privind legătura dintre asemenea sisteme deductive şi
Val(FORM) (lipsa unor teoreme de completitudine în special) sunt mai
degrabă negative, există şi câteva concluzii optimiste: (semi)algoritmii

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 239

sintactici pentru rezolvarea SAT, SAT1 sunt mai uşor de înţeles


(pentru „calculator”, în mod sigur) şi de manipulat decât cei bazaţi pe
semantică; ei sunt tratabili măcar pentru anumite subclase interesante
de formule; chiar în lipsa unor asemenea (semi)algoritmi, se pot
imagina anumite proceduri implementabile, de tip interactiv (dialog în
timp real cu utilizatorul), care pot furniza, dacă nu răspunsuri
complete, măcar răspunsuri parţiale, sau indicaţii utile despre cum (şi
în ce situaţii) s-ar putea obţine un răspuns convenabil. Prin urmare,
tot ceea ce rămâne de făcut este să se găsească asemenea algoritmi,
semialgoritmi, proceduri automate, etc., pentru clase convenabile de
(meta)formule, având ataşată o noţiune corespunzătoare de adevăr.
Din punctul de vedere al unui utilizator, alternativa propusă de
Programarea logică este atrăgătoare. Astfel, în loc să se utilizeze
(pentru reprezentarea informaţiei şi prelucrarea acesteia) un
limbaj de programare clasic (imperativ, orientat obiect, etc.) poate
fi preferat un limbaj creat special pentru reprezentarea de
(meta)formule şi în care un (semi)algoritm (sau chiar procedură
interactivă) pentru rezolvarea SAT(1) şi bazat, de exemplu, pe
rezoluţie, este implementat direct în compilatorul (interpreterul)
asociat. Asemenea limbaje sunt cunoscute şi sub numele de limbaje
de tip PROLOG. Limbajul PROLOG într-o primă formă
implementabilă a fost conceput de către un grup de cercetători în
Inteligenţa artificială, la începutul deceniului al optulea al secolului
trecut, la Universitatea din Marsilia, Franţa ([ROU]), căpătând însă
ulterior extensii, transformări şi utilizări nebănuite la stadiul iniţial.
Este un limbaj declarativ, dedicat reprezentării şi prelucrării

PDF created with pdfFactory Pro trial version www.pdffactory.com


240 Cristian Masalagiu

relaţiilor (predicatelor, afirmaţiilor). Esenţa sa este exprimată prin


paradigma de programare, datorată lui R. Kowalski ([KOW]):
Algoritm = Logică + Control. În sensul celor spuse anterior, prin
Logică se înţelege totalitatea cunoştinţelor de care dispunem în
privinţa unei „lumi” (parte a realităţii), cunoştinţe exprimate prin
formule (aparţinând, în general, unui fragment al LP1=), iar prin
Control, strategia (algoritmul) prin care se manipulează o clasă de
asemenea formule, în vederea obţinerii unui anumit răspuns
(aceasta implementând, în general, un anumit tip de rezoluţie). În
cele ce urmează, vom face doar o scurtă introducere în această
tematică, bazându-ne în principal pe [MAS1], [MAS2] (şi, desigur,
bibliografia indicată în acea lucrare).

§1. Exemple de programe logice pure


Ţinând cont că scopul principal al acestui capitol este doar unul
introductiv pentru un domeniu vast, ne vom baza în principal pe
exemple (cu caracter didactic) şi nu pe enumerarea unor concepte sau
rezultate formale. Deoarece este posibil ca exemplele să fie reluate şi
dezvoltate, vom proceda din nou la numerotarea lor în secvenţă.

Exemplul 5.1 (lumea lui Adam şi Eva). Se cunosc următoarele fapte


şi afirmaţii mai complexe din/despre această lume:

Evei îi plac merele.


Evei îi plac vinurile.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 241

Lui Adam îi place orice persoană căreia îi plac vinurile.

În condiţiile de mai sus, am dori să ştim dacă:

Există o persoană pe care să o placă Adam?

Desigur că în cazul unui răspuns pozitiv, am dori să ştim şi care anume


ar fi persoana (persoanele) respectivă (respective).
Primul pas în scrierea unui program de tip PROLOG, pur, este să
formalizăm afirmaţiile anterioare (inclusiv interogarea) prin formule
din LP1. Pentru aceasta, să identificăm mai întâi elementele importante
din lumea considerată. Vom distinge astfel:
Obiecte. Eva, mere, vinuri şi Adam sunt singurele obiecte care pot fi
identificate ca atare în această lume simplă (nu este neapărată nevoie să
facem distincţie între, de exemplu, lucruri, fiinţe/vieţuitoare,
oameni/persoane, etc.; adică, într-un limbaj de specialitate, nu este
nevoie de tipizare). Ele vor interpretate drept (simboluri de) constante
funcţionale, adică elemente ale lui F0, pe care le vom nota prin Eva,
Mere, Vinuri, Adam (faptul că începem cu litere mari în scrierea
constantelor nu este întâmplător).
Nume generice pentru obiecte. Avem nevoie de acest lucru deoarece
există exprimarea Lui Adam îi place orice persoană ... . Vom nota
cu X mulţimea tuturor acestor nume (care vor fi desigur nume de

variabile) şi vom pune, ca şi până acum de altfel, x, y, … ∈ X.

PDF created with pdfFactory Pro trial version www.pdffactory.com


242 Cristian Masalagiu

Relaţii (legături) între (mulţimi de) obiecte. Singura relaţie


identificabilă este a place. Aceasta va fi reprezentată formal printr-un
simbol predicativ, notat place ∈ P2 (nici aici modalitatea de scriere nu
este întâmplătoare).
Transformări între (mulţimi de) obiecte. Acestea s-ar reprezenta prin
simboluri funcţionale de aritate mai mare ca 0. În cazul nostru, nu
există nici o asemenea transformare care să poată fi identificată.
Afirmaţii. În acest moment, putem traduce cunoştinţele existente în
formule. Avem:

G1: place(Eva, Mere) traduce faptul Evei îi plac merele.


G2: place(Eva, Vinuri) traduce faptul Evei îi plac vinurile.

A treia frază iniţială exprimă ceva puţin mai complex despre lumea în
cauză şi este natural să ne gândim la o formulă compusă. Putem
reformula fraza mai întâi prin Dacă există cineva căruia îi plac
vinurile, atunci de aceea (acela) îi place lui Adam (oricine ar fi acel
cineva) şi apoi prin Dacă lui x îi plac vinurile, atunci lui Adam îi
place de x, pentru fiecare x ∈ X, adică obţinem:

G3: (∀x)(place(x, Vinuri) → place(Adam, x)).

Interogarea (întrebarea). Ea se traduce imediat prin Există y astfel


încât lui Adam îi place de y? (alegerea unui nume diferit de x pentru

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 243

variabila corespunzătoare nu este întâmplătoare), adică dispunem şi de


formula din LP1:

G: (∃y)place(Adam, y).

Pentru a efectua şi al doilea pas (suntem deja într-un cadru formal


cunoscut), să observăm că a răspunde la întrebare înseamnă a vedea
dacă G este (sau nu) consecinţă semantică din {G1, G2, G3}, ceea ce,
conform Teoremei 2.3, punctul (iii), este echivalent cu a arăta că
F = G1 ∧ G2 ∧ G3 ∧  G este contradicţie. Desigur că prin transformări
succesive, aducem uşor (nici măcar nu este nevoie de skolemizare) pe F
la FNSC şi apoi obţinem reprezentarea lui F* ca mulţime de mulţimi de
literali:

F ≡ place(Eva, Mere) ∧ place(Eva, Vinuri) ∧


(∀x)( place(x, Vinuri) ∨ place(Adam, x)) ∧ (∀y)place(Adam, y) ≡
(∀y)(∀x)(place(Adam, y) ∧ place(Eva, Mere) ∧
place(Eva, Vinuri) ∧ ( place(x, Vinuri) ∨ place(Adam, x))).
F* =  place(Adam, y) ∧ place(Eva, Mere) ∧ place(Eva, Vinuri) ∧
( place(x, Vinuri) ∨ place(Adam, x)),
adică, în scrierea cu mulţimi:
F* = {{place(Adam, y)}, {place(Eva, Mere)},
{place(Eva, Vinuri)},{ place(x, Vinuri), place(Adam, x)}}.
Pentru a simplifica unele raţionamente, vom nota:
C1 = { place(Adam, y)},

PDF created with pdfFactory Pro trial version www.pdffactory.com


244 Cristian Masalagiu

C2 = {place(Eva, Mere)},
C3 = {place(Eva, Vinuri)},
C4 = { place(x, Vinuri), place(Adam, x)}.

Al treilea pas constă în a găsi o respingere în LP1, pornind cu clauzele


lui F*, folosind rezoluţia de bază, adică singura metodă cunoscută de
noi până în prezent. Prin urmare, calculăm mai întâi D(F) şi apoi E(F)
(sau/şi E’(F)). Neexistând constante de aritate mai mare ca 1 în F*,
găsim imediat:
D(F) = {Eva, Mere, Vinuri, Adam}.
E’(F) = E(C1) U E(C2) U E(C3) U E(C4) (nu o explicităm mai mult
deoarece este foarte simplă).
Găsim o demonstraţie (scurtă) prin rezoluţie în LP a clauzei vide,
pornind cu elementele lui E’(F), dacă notăm mai întâi cu C1' clauza

obţinută din C1 prin aplicarea substituţiei de bază [y/Eva] şi cu C '4

clauza obţinută din C4 aplicând [x/Eva] (atât C1' cât şi C '4 aparţin

desigur lui E’(F)). Astfel, avem Res( C1' , C '4 ) = { place(Eva, Vinuri)}

(pe care o notăm cu C’). În sfârşit, Res(C’, C3) = { }. ■

Prin urmare, am satisfăcut parţial cerinţele enunţate deoarece


am găsit un răspuns corect la interogarea noastră. Din păcate, nu am
aflat şi care este (sunt) acel (acele) obiect(e) pe care îl (le) place
Adam. Este adevărat că acest (unic, în cazul de faţă) obiect (Eva) ar
putea fi cumva dedus din substituţiile făcute pentru „a avea succes"

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 245

(obţinere ). Practic însă, am avea astfel nevoie de un alt tip de


rezoluţie, care, aplicată unei mulţimi date de clauze din LP1 să
producă în mod explicit (măcar ca un efect secundar) asemenea
substituţii (pe care le vom numi substituţii de succes). Deocamdată,
putem totuşi trage o concluzie privind aspectul general al unui
program, în accepţiunea programării logice (program PROLOG pur).
El conţine:
• Fapte (afirmaţii simple, modelate prin formule atomice de bază
din LP1), care sunt „formule elementare de program”.
• Alte formule de program (formule compuse din LP1, mai exact
formule Horn închise, probabil pozitive).
• O formulă de interogare (formulă compusă din LP1, având şi
ea o formă mai specială, negaţia ei fiind probabil o formulă
Horn închisă, negativă).
Generalizând, concluzionăm că formulele program (să spunem
G1, G2, ... , Gn) sunt formule din LP1 aflate în FNSC, clauzele fiind
clauze Horn având exact un literal pozitiv (sunt clauze Horn pozitive).
Formula de interogare G (numită şi scop), apare tot ca o formulă
închisă, însă cuantificată existenţial. Deşi în exemplul considerat există
doar un literal (pozitiv), se admite prezenţa mai multor asemenea
literali, formula scop fiind de fapt o conjuncţie de literali pozitivi,
închisă, aflată în FNPR, cuantificată doar existenţial. După cum am
mai sugerat, programul interogat va fi reprezentat de formula
F = G1 ∧ G2 ∧ ... ∧ Gn ∧  G (se poate considera şi reprezentarea sa ca
mulţime de mulţimi de literali, F fiind în FNSC şi clauzele fiind

PDF created with pdfFactory Pro trial version www.pdffactory.com


246 Cristian Masalagiu

clauze Horn). Înainte de a furniza detalii suplimentare, considerăm


utilă prezentarea unui alt exemplu, pentru a vedea că limbajul sugerat
este la fel de puternic ca orice alt limbaj de programare de nivel înalt,
putându-se efectua în acesta, de exemplu, calcule aritmetice uzuale
(deşi, desigur, nu aceasta este utilitatea principală a PROLOG-ului).

Exemplul 5.2 (adunarea în N). Să descriem lumea adunării pe


mulţimea numerelor naturale şi apoi să calculăm 3 + 2 folosind un
program logic interogat. Cazul considerat reprezintă deja o parte a unei
realităţi având o descriere formală, matematică. Astfel, putem porni de
la definiţia lui Peano pentru N, adică de la definiţia constructivă deja
folosită:

Baza. 0 ∈ N.
Pas constructiv. Dacă n ∈ N atunci s(n) ∈ N.

Reamintim că ideea în definiţia de mai sus este aceea că obiectul notat


0 este număr natural şi dacă un obiect numit n este considerat număr
natural atunci şi succesorul său, notat s(n) este tot număr natural.
Acum putem da o definiţie constructivă a adunării, ca operaţie binară
pe N, bazându-ne pe reprezentarea a doar două proprietăţi ale acesteia
(suficiente pentru a calcula 3 + 2 în cadrul lumii descrise).

Baza: x + 0 = 0, pentru fiecare număr natural notat x.


Pas constructiv: s(x + y) = x + s(y), oricare ar fi numerele naturale
notate x, y.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 247

Ultima definiţie „spune” că adunarea lui 0 la orice număr natural nu are


nici un efect (numărul respectiv fiind lăsat neschimbat) şi că dacă
adunăm la numărul x pe succesorul numărului y, se obţine acelaşi lucru
ca şi în cazul în care l-am aduna pe y la x şi apoi am lua succesorul
numărului rezultat. Nu vom transforma încă ceea ce cunoaştem în
formule, pentru că este evident că ne-am plasa în LP1=, pentru care
SAT1 este nedecidabilă. Există posibilitatea ca printr-un anumit truc de
natură tehnică să „ascundem” simbolul de egalitate (simbol predicativ
de aritate 2) într-un simbol predicativ de aritate mai mare. În cazul
nostru, ne este de ajuns un simbol predicativ de aritate 3, notat A.
Intuitiv, am avea A(a, b, c) = 1 dacă şi numai dacă a + b = c. Cu
ajutorul unui asemenea simbol predicativ, cele două egalităţi din
definiţia adunării se traduc prin A(x, 0, x) respectiv prin dacă
A(x, y, z) atunci A(x, s(y), s(z)). Traducerea celei de-a doua egalităţi
nu respectă în totalitate semnificaţia intuitivă iniţială (ea „spune” acum
că dacă z este suma dintre x şi y, atunci succesorul lui z reprezintă suma
dintre x şi succesorul lui y). Din nou, această exprimare este suficientă
pentru a ne atinge scopul, care poate fi reformulat în cadrul logic
propus prin întrebarea: Există vreun număr natural care să
reprezinte suma dintre numerele 2 şi 3 (şi, eventual, care este/sunt
acesta/acestea)? Să parcurgem cei trei paşi descrişi în exemplul
anterior, necesari pentru a forma un program logic interogat.

Primul pas.
• Obiecte: 0.

PDF created with pdfFactory Pro trial version www.pdffactory.com


248 Cristian Masalagiu

• Nume generice pentru obiecte (variabile): x, y, z, u, ... ∈ X.

• Relaţii între obiecte: A ∈ P3.


• Transformări între obiecte: s ∈ F1.
• Afirmaţii (formule program):
G1 = (∀x)A(x, 0, x ). (fapt)
G2 = (∀x)(∀y)(∀z)(A(x, y, z) → A(x, s(y), s(z))).
• Interogarea (scopul). Ţinând cont de definiţia adoptată pentru
N, numărul 1 va fi desemnat de termul de bază s(0), 2, de
s(s(0)), etc. Datorită cerinţei tehnice ca în formula scop să
apară nume de variabile distincte de cele deja folosite pentru
formulele program, vom pune:
G = (∃u)A(s(s(s(0))), s(s(0)), u).

Al doilea pas. Programul logic interogat va fi dat de formula:


F = G1 ∧ G2 ∧  G =
{{A(x,0,x)},{A(x, y, z), A(x, s(y), s(z)},{A(s(s(s(0))), s(s(0)), u)}}.

Al treilea pas. Urmărim obţinerea unei respingeri pornind cu F şi,


eventual, „deducerea” unei valori, care ar fi desigur s(s(s(s(s(0))))),
adică 5, pentru suma dintre 3 şi 2, valoare care apare „pe undeva” în
cursul procesului de aplicare a rezoluţiei de bază (prin intermediul
substituţiilor). Lăsăm aplicarea efectivă a rezoluţiei de bază pe seama
cititorului (a se vedea şi exerciţiile din finalul capitolului), nu înainte de
a observa că D(F) este, la fel ca în exemplul anterior, suficient de
simplu, şi anume: D(F) = {0, s(0), s(s(0)), …} = {s (n)(0) | n ∈ N}. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 249

Putem trage concluzia generală că un program logic, spre


deosebire de alte limbaje comerciale de nivel înalt, efectuează calcule
simbolice, numerele (de exemplu) fiind şiruri de caractere şi operaţiile
cunoscute cu numere având corespondent în anumite transformări
asupra şirurilor de caractere. Din acest motiv timpul real necesar
pentru efectuarea unor asemenea calcule este foarte mare şi nu este de
aceea indicat să apelăm la programarea logică pentru a efectua calcule
numerice. Este însă adevărat că implementările comerciale ale unui
limbaj logic (de tip PROLOG, [MAS1]), oferă facilităţi „nestandard”
pentru efectuarea rapidă a unor asemenea calcule (există şi maşini
PROLOG dedicate).
Vom descrie în continuare, tot pe scurt, un alt tip de rezoluţie în
LP1, „echivalent” cu rezoluţia de bază şi cunoscut sub numele de
rezoluţie pură (specifică). Acesta va furniza, în cazul obţinerii unei
respingeri, ca efect secundar, şi o substituţie de succes (din care se
pot/poate „extrage” simplu numele obiectelor/obiectului care satisfac(e)
interogarea).

§2. Sintaxa programelor logice


Un program logic (clasic, standard) este format dintr-o
mulţime finită de formule program, alcătuită din fapte şi o mulţime de
formule suplimentare. Un program logic interogat este un cuplu
format dintr-un program logic şi o formulă scop. Toate formulele
implicate sunt formule Horn, aflate în FNSC şi cuantificate universal
(clauza scop, doar în urma negării ei).

PDF created with pdfFactory Pro trial version www.pdffactory.com


250 Cristian Masalagiu

Definiţia 5.1 (program logic interogat; program PROLOG pur).


• Program logic. Acesta conţine:
o Fapte, având forma:

P.

unde P este un literal pozitiv din LP1. Un asemenea


literal pozitiv poate avea şi variabile, presupuse a fi
implicit cuantificate universal, deşi în general el
reprezintă o formulă de bază. Formula reprezentată este
deci (∀*)(1 → P) sau (∀*)P, care poate fi citită „Sigur
P”. Notăm cu G1 = {G1, G2, … , Gp} mulţimea (finită a)
faptelor programului notat F.
o Clauze definite (suplimentare). Aspectul lor este:

P ÷ Q1, Q2, … , Qn.

unde P şi Qi, i ∈ [n] sunt literali pozitivi din LP1


(simbolul ÷ este uneori înlocuit prin :-, ca şi în clauza
scop). Formula reprezentată este
(∀*)(Q1 ∧ Q2 ∧ … ∧ Qn → P) sau
(∀*)(P ∨  Q1 ∨  Q2 ∨ … ∨  Qn). Se citeşte „P, în
caz că Q1 şi Q2 şi ... şi Qn”. Notăm cu
G2 = {Gp+1, G p+2, … , G p+q} mulţimea (finită a)

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 251

clauzelor definite ale programului F şi cu G = G1 U G2.


(uneori, chiar acest G este considerat a fi mulţimea
clauzelor suplimentare sau de program). Mai sus,
p, q ∈ N, dar nu pot fi simultan egali cu 0.
• Interogarea. Clauza scop este scrisă:

o G = ? ÷ R1, R2, … , Rk.

Din nou, R1, R2, … , Rk sunt literali pozitivi din LP1,


de această dată variabilele care apar fiind presupuse a fi
cuantificate existenţial. Mai exact, clauza scop
reprezintă transcrierea unei formule Horn de tipul
(∃*)(R1 ∧ R2 ∧ … ∧ R k), citit „Există elemente în
domeniul considerat astfel încât condiţiile
R1, R2, … , Rk să fie îndeplinite?”, ceea ce prin negare
furnizează formula
G = (∀*)( R1 ∨  R2 ∨ … ∨  Rk). Vom lua acum
F = <G, G>. ■

Observaţie. După cum am putut deduce din exemple, execuţia unui


program logic înseamnă testarea nesatisfiabilităţii formulei
p+q
∧ G i ∧  G, pe care o vom nota tot cu F. F este în FNSC închisă
i =1

(eventual, după ce se redenumesc anumite variabile, acest lucru


provenind din necesităţi tehnice, nu din nevoia de a aduce formula la

PDF created with pdfFactory Pro trial version www.pdffactory.com


252 Cristian Masalagiu

FNR), clauzele fiind clauze Horn (eventual, reprezentate ca mulţimi).


Implementarea foloseşte o strategie SLD. În fiecare pas se efectuează o
rezoluţie pură, una dintre clauzele implicate fiind întotdeauna clauza
scop curentă (iniţial, ea este formula de interogare G), cealaltă
clauză fiind una dintre fapte sau clauzele definite aparţinând
programului (pe scurt, o clauză program). Ţinând cont de forma
formulelor care intervin şi de definiţia rezoluţiei pure, există o schemă
simplă care completează strategia SLD (prin precizarea acelei funcţii de
selecţie). Astfel, se alege un literal (negativ) din clauza scop curentă
(de obicei, acesta este primul intâlnit, ca scriere) şi capul (membrul
stâng al) unei formule program, care este un literal pozitiv. Dacă este
posibil, ei se unifică, obţinându-se o nouă clauză scop. Procedeul
continuă şi, deşi nu avem garanţia terminării lui, este tot ceea ce putem
spera în acest stadiu de cunoaştere. ■

Reluăm mai în detaliu câteva concepte amintite pe scurt în


Capitolul 3.

Definiţia 5.2 (unificare). Fie L = {L1, L2, ... , Lk} o mulţime (finită),
nevidă, de literali din LP1. Ea se numeşte unificabilă dacă există o
substituţie s astfel încât card((L)s) = 1. În acest caz, s se numeşte
unificator pentru L . O substituţie s se numeşte cel mai general
unificator (m.g.u., pe scurt) pentru o mulţime unificabilă L dacă orice
alt unificator s’ se „obţine” din s, adică pentru fiecare unificator s’
există o substituţie sub astfel încât s’ = s•sub. ■

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 253

Să presupunem acum că avem două clauze (distincte) din LP1


(care nu sunt neapărat clauze Horn, conţinând şi variabile). Ideea
rezoluţiei pure se bazează pe faptul că putem unifica (identifica textual)
„cât mai mulţi” literali din cele două clauze cu ajutorul unei substituţii
convenabile şi apoi îi putem elimina pe aceştia (rezultând o nouă
clauză, în final), similar cu cazul rezoluţei propoziţionale.

Definiţia 5.3 (rezoluţia pură/specifică într-un pas, în LP1). Fie C1,


C2 şi R clauze în LP1, C1 ≠ C2. R se numeşte rezolvent (pur) pentru
C1 şi C2, obţinut într-un pas, dacă sunt îndeplinite condiţiile:
(i) Există substituţiile „de redenumire” s1 şi s 2 astfel încât (C1)s1 şi
(C2)s2 nu au variabile comune.
(ii) Există literalii L1, L2, ... , Lm ∈ (C1)s1 şi L'1 , L' 2 , ... , L' n ∈ (C2)s2

astfel încât mulţimea


L = { L1 , L 2 , ... , L m , L'1 , L'2 , ... , L'n }
este unificabilă. Fie sub un cel mai general unificator pentru L.

(iii) R = (((C1)s 1 \ {L1, L2, ... , Lm}) U ((C2)s 2 \ { L'1 , L' 2 , ... , L' n }))sub.

Deoarece nu există pericol de confuzii, vom folosi aceleaşi


notaţii pentru rezoluţia pură identice cu cele adoptate pentru rezoluţia
propoziţională (ceea ce se schimbă este practic doar definiţia
rezolvenţilor obţinuţi într-un pas). Teoremele următoare le prezentăm
făra demonstraţie (se poate consulta [MAS1]).

PDF created with pdfFactory Pro trial version www.pdffactory.com


254 Cristian Masalagiu

Teorema 5.1 (Julia Robinson). Orice mulţime finită, nevidă,


unificabilă, de literali din LP1, admite un cel mai general unificator.
Problema testării faptului că o mulţime de literali este unificabilă este
decidabilă. De asemenea, găsirea unui cel mai general unificator pentru
o mulţime unificabilă se poate face algoritmic. ■

Există o metodă relativ simplă (algoritm) pentru unificarea unei


mulţimi date de literali. Fără a intra în amănunte, tot ceea ce trebuie să
înţelegem este că trebuie să identificăm porţiuni de text, având (în
cazul de faţă) un format special. Acest lucru nu se admite a fi făcut
decât prin intermediul variabilelor, folosind substituţiile. În plus,
„apelurile recursive”, de genul „în substituţia s, variabila x este
înlocuită cu termul t, care conţine x”, sunt interzise.

Teorema 5.2 (a rezoluţiei pure pentru LP1). Fie F ∈ LP1 o formulă


închisă, aflată în FNSC, F = (∀*)F* (F poate fi, în particular, un
program PROLOG pur). Atunci, F este nesatisfiabilă dacă şi numai
dacă ∈ Res*(F*), adică dacă şi numai dacă există o demonstraţie prin
rezoluţie pură a clauzei vide (o respingere), pornind cu clauzele lui F.

Teorema 5.3 (completitudinea SLD-rezoluţiei). Dacă F este o


mulţime de clauze Horn din LP1, atunci, dacă F este nesatisfiabilă,
există o respingere pornind cu F şi care utilizează SLD-rezoluţia pură.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 255

Desigur că SLD-rezoluţia este şi corectă. Din păcate însă,


problema este netratabilă relativ la complexitatea timp generală. Mai
mult, nevoia de a aborda simplu situaţiile reale precum şi anumite
cerinţe legate de implementare conduce deseori la pierderea
completitudinii rezoluţiei (necesitatea de a manipula şi formule care să
nu fie clauze Horn, cum ar fi cele care rezultă prin apariţia în clauza
scop a unor literali negaţi sau a disjuncţiei în loc de conjuncţie;
folosirea unor structuri de date „apropiate” de programarea imperativă,
ca de exemplu liste, stive, arbori; utilizarea unei strategii de construcţie
a arborelui de rezoluţie de tip DFS în loc de BFS, conform [CRO],
[MAS1], [MAS4], [MAS5]). Pentru a evita acest lucru, se pot utiliza
metode interactive, în care programatorul este „invitat” să ia decizii în
timp real, pentru a avea posibilitatea obţinerii unui succes în execuţia
unui program PROLOG („dirijând” el însuşi execuţia spre un posibil
succes).

Exemplul 5.1 (reluat). Vom arăta cum putem găsi şi o substituţie


finală de succes (pe post de cel mai general unificator pentru o anumită
mulţime de literali), ca efect secundar al aplicării rezoluţiei pure. În
acest mod, obţinem nu numai răspunsul de tip „DA/NU” la interogare,
ci şi obiectele (obiectul) care o satisfac(e). Mai jos avem reprezentat
arborele de rezoluţie pură (avâd doar doi paşi necesari a fi aplicaţi) care
descrie o respingere:

PDF created with pdfFactory Pro trial version www.pdffactory.com


256 Cristian Masalagiu

{ place(Adam, y)} {place(Adam, x),  place(x, Vinuri)}

[x/y]

{ place(y, Vinuri)} {place(Eva, Vinuri)}

[y/Eva]

Reamintindu-ne că clauza scop era G = ? ÷ (∃y)place(Adam, y)., să


constatăm că „execuţia” programului interogat „oferă” un răspuns
pozitiv, dedus în urma existenţei respingerii anterioare (el fiind „DA”,
adică este adevărat că G este consecinţă semantică din clauzele
program considerate, adică în lumea dată există într-adevăr „ceva” care
îi place lui Adam). În plus, în graful de mai sus sunt prezente două
substituţii elementare. Prima este [x/y] şi ea reprezintă
m.g.u.-ul care unifică mulţimea de literali {place(Adam, y),
place(Adam, x)} (după algoritmul dedus din Teorema lui J.
Robinson; de fapt, se putea la fel de bine obţine [y/x]). A doua
substituţie ([y/Eva]) unifică, similar, mulţimea L = {place(y, Vinuri),

place(Eva, Vinuri)}. Ca urmare, pentru a obţine am folosit


substituţia „totală” s = [x/y]•[y/Eva] care ne „dezvăluie” unul dintre
obiectele căutate şi anume Eva (dacă un asemenea obiect este sau nu

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 257

unic, este o altă problemă care poate fi rezolvată de către un interpretor


PROLOG). ■

Exemplul 5.2 (reluat). În mod cu totul similar ca mai înainte, fără a


construi întreg arborele de rezoluţie pură posibil, obţinem respingerea:

(scopul iniţial) A {A(x, s(y), s(z)),  A(x, y, z)}

(clauză suplimentară)
a

(scop nou, derivat) B {A(x, s(y), s(z)),  A(x, y, z)}

(clauză suplimentară)
b

(scop nou) C {A(x, 0, x)}

(clauză suplimentară)
c

(clauza
vidă,
scop
final)

PDF created with pdfFactory Pro trial version www.pdffactory.com


258 Cristian Masalagiu

Respingerea anterioară ne „spune” că răspunsul la întrebarea „există


vreun număr natural care să fie suma dintre 2 şi 3 ?” este pozitiv. Să
precizăm şi că în graful de mai sus notaţiile reprezintă:
A = { A(s(s (s (0)))), s (s (0)), u)}
a = sub1=[x/ s (s (s (0)))]•[y/ s (0)]•[u/ s (z)]
B = { A(s (s (s (0)))), s (0), z)}
b = sub 2 = [x/s(s(s(0)))]g[y/ 0]g[z/s(z′)]

(în cauza suplimentară facem mai întâi substituţia [z/z’], din motive
tehnice, netransparente în acest moment fără anumite informaţii
suplimentare)
C = { A(s (s (s (0)))), 0, z’)},
c = sub3 =[x/ s (s (s (0)))][z’/ s (s (s (0)))].
Substituţia finală este sub = sub1•sub2•sub3. Din inspectarea atentă a
acesteia (a se urmări valoarea finală a variabilei u, obţinută succesiv
prin aplicarea substituţiilor elementare care compun sub), rezultă că
răspunsul dorit este: suma dintre 2 şi 3 este 5. ■

§3. Rezumare şi Index


Programarea logică reprezintă o alternativă viabilă pentru
programarea clasică, în momentul în care realitatea este reprezentată
şi studiată într-un mod declarativ. Datorită unor rezultate teoretice
negative, numărul de clase de formule care pot fi prelucrate convenabil
este destul de restrâns. Mulţimea clauzelor Horn din LP1 este însă una
dintre ele. Chiar în cadrul restrâns considerat (pentru a nu mai aminti de
programarea în logici de ordin superior sau neclasice), adoptarea

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 259

presupunerii lumii închise, modul de a trata negaţia, utilizarea


disjuncţiei în interogări, precum şi implementarea unui dialog
interactiv cu utilizatorul (prin care să se dirijeze „din exterior” execuţia
unui program), înseamnă extensii importante pentru programarea logică
([MAS1], [AND]) şi justifică orientarea unor grupuri semnificative de
programatori într-o asemenea direcţie.
Nici rezultatele teoretice, nici inovaţiile de implementare, nici
ariile de aplicabilitate ale Programării logice nu sunt de altfel epuizate,
astfel încât acest domeniu, cu toată complexitatea sa, nu este încă unul
fără viitor. Pentru informaţii suplimentare, de actualitate, se pot
consulta pe INTERNET site-urile: http://www.amzi.com/,
http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/
contents.html,
http://www.cs.cmu.edu/Web/Groups/AI/html/faqs/lang/prolog/prg/
top.html, http://www.lpa.co.uk/, sau http://kti.ms.mff.cuni.cz/
~bartak/prolog/.

Indexul care urmează este şi în acest capitol neexhaustiv (unii termeni


se pot repeta, datorită revenirii la anumite aspecte tratate în capitolele
anterioare):

programare logică, 236


limbaje de tip PROLOG, 236
algoritm = logică + control, 237
fapte, 237
program logic interogat, 242

PDF created with pdfFactory Pro trial version www.pdffactory.com


260 Cristian Masalagiu

clauze program (definite), 246


formulă de interogare (scop), 246
substituţie de succes, 246
formule (clauze) program, 248
unificare, 248
cel mai general unificator, 249
rezoluţie pură, 250
tratarea negaţiei, 255
ipoteza lumii închise, 255

§4. Exerciţii
1. Găsiţi respingerea bazată pe rezoluţia de bază cerută în
Exemplul 5.2.
2. Considerăm ([COT]) următorul program PROLOG notat F şi
format din clauzele program (în toate exerciţiile care urmează
adoptăm convenţia că variabilele se notează prin litere latine
mari, iar constantele, simbolurile funcţionale şi predicative,
folosind litere mici; de asemenea, simbolul ÷ este uneori
înlocuit şi de ←):
CP1: p(X, Z) ÷ q(X, Y), p(Y, Z).
CP2: p(X, X) .
CP3: q(c, b).
Găsiţi o SLD-respingere pentru scopul G = ? ÷ p(U, b). Se cere
şi rezultatul execuţiei programului interogat P = <F, G>.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 261

3. Aritmetica ([COT]). Conform Exemplului 5.2, mulţimea


numerelor naturale poate fi definită prin următorul program
PROLOG:
numar_natural(0).
numar_natural(s(X)) :- numar_natural(X).,
unde predicatul numar_natural(X) „afirmă” că X este un
număr natural. Adunarea poate fi dată şi de către predicatul
plus1(X, Y, Z):
plus1(0, X, X).
plus1(s(X), Y, Z) :- plus1(X, s(Y), Z).
Predicatul plus2 este similar cu cel dat deja de noi în Exemplul
5.2 (şi notat acolo cu A):
plus2(0, X, X).
plus2(s(X), Y, s(Z)) :- plus2(X, Y, Z).
Găsiţi definiţii PROLOG ale predicatelor minus(a, b, c),
inmultire(a, b, c) şi exp(a, b, c), utilizând plus1, plus2.
Intuitiv, predicatele cerute trebuie să fie adevărate dacă şi numai
dacă sunt respectiv îndeplinite condiţiile a - b = c, a × b = c şi
c = b a.
4. Fie baza de cunoştinţe ([COT]) exprimată prin faptele:
barbat(paul).
barbat(andrei).
femeie(maria).
femeie(eliza).
femeie(emilia).
parinti(emilia, maria, paul).

PDF created with pdfFactory Pro trial version www.pdffactory.com


262 Cristian Masalagiu

parinti(andrei, maria, paul).


parinti(eliza, maria, paul).,
unde semnificaţia predicatelor implicate este evidentă. De
exemplu, parinti(E, M, T) este adevărat dacă şi numai dacă M şi
T sunt părinţii lui E, M fiind mama, iar T fiind tatăl. Putem
atunci defini relaţia sora_lui, în conformitate cu definiţiile de
mai sus, prin (sora_lui(X, Y) este adevărat dacă şi numai dacă
X este sora lui Y):
sora_lui(X, Y):- femeie(X), parinti(X, M, T), parinti(Y, M, T).
Aceasta va fi (singura) clauză suplimentară a programului.
Se cere să se răspundă la interogarea:
? :- sora_lui(eliza, andrei).
5. Arbori de căutare şi arbori de demonstrare ([COT]). Fiind
dat un program PROLOG, un scop iniţial şi regula standard de
selecţie a subscopurilor (literalii din clauza scop curentă, dacă
sunt mai mulţi, sunt selectaţi în ordinea scrierii lor textuale, în
vederea unificării cu capul unei clauze program, care va fi
aleasă ulterior), căutarea tututror alternativelor posibile se poate
reprezenta printr-un arbore, numit arbore de căutare (de
evaluare sau arbore OR). În acest arbore, rădăcina este scopul
iniţial. Orice nod neterminal este etichetat cu o conjuncţie de
subscopuri, derivată din nodul tată într-un singur pas de
rezoluţie. Descendenţii imediaţi ai unui nod sunt scopuri
alternative derivate din scopul prezent în acel nod. Căutarea se
termină când toate nodurile sunt terminale. Orice nod terminal
este etichetat cu „◊” în caz de terminare reuşită (cu succes) şi cu

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 263

„♦” în cazul terminării cu eşec (scopul nu poate fi satisfăcut).


Orice drum în arbore (o secvenţă de noduri de la rădăcină la un
nod terminal) reprezintă un calcul posibil. Pot exista şi drumuri
infinite. Să considerăm următoarele clauze „generice”:
a :- b, c. /*clauza1*/
a :- d. /*clauza2*/
b :- e. /*clauza3*/
d. /*clauza4*/
e. /*clauza5*/
şi scopul iniţial
? :- a.
Arborele de căutare corespunzător programului interogat
anterior este: a
1 2
b,c d

3 4
e,c ¸

PDF created with pdfFactory Pro trial version www.pdffactory.com


264 Cristian Masalagiu

După cum am precizat, am urmat regula standard de selecţie a


subscopurilor (în graf este subliniat literalul selectat; arcele sunt
notate cu numerele clauzelor corespunzătoare).
Fie acum, din nou, un program, un scop iniţial, dar şi regula
standard de selectare a clauzelor program (al căror cap s-ar
putea unifica cu subscopul curent ales deja). Atunci
subscopurile pot forma un aşa numit arbore de demonstrare (de
derivare, arbore AND). În acest arbore, orice nod este un
(sub)scop. Rădăcina are în calitate de descendenţi imediaţi
subscopurile scopului iniţial. Fiecare dintre acestea au în calitate
de descendenţi imediaţi subscopurile clauzei selectate. Nodurile
terminale sunt notate, ca şi mai înainte, prin „◊” şi „♦”.
Mulţimea de noduri care preced imediat nodurile terminale
reprezintă subscopurile, conjuncţia cărora formează scopul
complex ce corespunde arborilor de demonstrare:
a a

d b c

◊ e ♦

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 265

Ne-am plasat în contextul aceluiaşi program şi, conform celor


spuse, pentru scopul iniţial avem doi arbori de demonstrare (cei
de mai sus) care corespund, respectiv, selecţiei clauzei1 şi
respectiv selecţiei clauzei2. Arborii sunt reprezentaţi în figura
anterioară. Acum putem „cumula” arborii anteriori în:

b,c d

b c ◊

e ♦


Mai exact, cele două tipuri de informaţii, furnizate de
arborele/arborii de demonstrare (AND) şi arborele de căutare
(OR) pot fi efectiv reprezentate printr-un singur arbore (cel de
mai înainte), numit arbore AND-OR (sau arbore complet de
calcul). Arborele AND-OR descrie practic „spaţiul total de
calcul” care poate fi obţinut din mulţimea de clauze ale
programului interogat. Acesta este în fapt o reprezentare
unitară a tuturor tipurilor de nedeterminism care apar, în mod
implicit, în momentul execuţiei programelor logice ([MAS1]).

PDF created with pdfFactory Pro trial version www.pdffactory.com


266 Cristian Masalagiu

Să considerăm acum următorul program interogat:


bunic(X, Y):-tata(X, Z), tata(Z, Y).
bunic(X, Y):-tata(X, Z), mama(Z, Y).
mama(maria, paul).
mama(I, J):-mama(I, K), frate(K, J).
tata(ion, maria).
frate(paul, petru).,
scopul fiind ? :- bunic(ion, petru).
Găsiţi arborele AND-OR corespunzător.
6. Arătaţi că următoarea mulţime de literali din LP1 este
unificabilă şi găsiţi un (cel mai general) unificator:
L = {P(x, y), P(f(b), g(x)), P(f(z), g(f(z)))}.
7. Exprimaţi următoarele afirmaţii prin formule din LP1:
• Fiecare dragon este fericit dacă toţi copiii săi pot zbura.
• Dragonii verzi pot zbura.
• Un dragon este verde dacă este copilul a cel puţin unui
dragon verde.
Arătaţi că afirmaţia Toţi dragonii verzi sunt fericiţi este
consecinţă semantică din afirmaţiile anterioare. Putem modela
problema anterioară ca un program PROLOG interogat? Pentru
„consistenţa” lumii modelate ar mai fi utile şi alte afirmaţii?

PDF created with pdfFactory Pro trial version www.pdffactory.com


Anexă
Rezolvarea exerciţiilor şi exerciţii propuse

După cum se va observa, unele rezolvări nu sunt complete, fiind


suficiente câteodată doar unele indicaţii sau chiar doar unele comentarii
asupra modului de rezolvare.

§1. Rezolvări Capitolul 1


V.1.1. Chiar fără a utiliza principiul dualităţii, demonstraţiile nu
prezintă dificultăţi majore.
V.1.2. Toate relaţiile corespunzătoare se regăsesc demonstrate într-un
manual de algebră de clasa a IX-a ([DID]). Egalitatea de mulţimi se
defineşte ca o dublă incluziune.
V.1.3. Folosirea tabelelor de adevăr nu credem că prezintă dificultăţi.
Presupunând acum că am demonstrat deja x + x = 1 şi x•1 = x (se pot
utiliza tabelele de adevăr în cel mai rău caz), precum şi dualele lor, vom
construi un raţionament pentru a deduce doar relaţia:
8) x • x = x.
Astfel, găsim imediat:
x = x•1 = x•(x + x ) = distributivitate
= x•x +x• x = x•x + 0 = x•x.
V.1.4. Fie două mulţimi oarecare, finite, nevide, A1 şi A2, având
|A1 | = n şi |A2 | = m, n ∈ N*. Direct din definiţii, se deduce că
|A1 × A2| = m•n. Mai mult, se ştie că ([DID]) numărul total de funcţii de
la A1 la A2 este mn (de altfel demonstraţia este foarte simplă dacă se

PDF created with pdfFactory Pro trial version www.pdffactory.com


268 Cristian Masalagiu

face prin inducţie după n). Cum |B| = 2 şi |Bn| = 2 n, trebuie să mai
calculăm numărul total de funcţii de la A1 = Bn la A2 = B, ceea ce este
imediat.
V.1.5. Faptul că g este bijectivă este o consecinţă imediată a definiţiei
unui termen peste mulţimea X = {x1, x2, ... , xn}. Să arătăm că un n-uplu
e = <e1, e2, ... , en> în care, pentru fiecare i ∈ [n], avem ei∈{0, 1, 2},
poate fi interpretat într-un mod unic ca o funcţie fe : [n] → {0, 1, 2}.
Astfel, definim fe(i) = ei, pentru fiecare i ∈ [n]. Se aplică apoi un
raţionament similar cu cel din exerciţiul precedent.
V.1.6. Presupunem că X = {x, y, z}, în această ordine. Se aplică direct
Teorema 1.3 şi respectiv 1.4, găsind, următoarea FNDP:
f(x, y, z) = x • y •z + x •y• z + x• y • z + x• y •z + x•y•z .
V.1.7. Fiecare dintre mulţimile considerate conţin pe E, care este o
mulţime infinită (acest lucru rezultând uşor din definiţiile respective).
Pentru a arăta că T0 este o mulţime închisă, este suficient să arătăm
(Teorema 1.5) că T0 conţine E şi că este închisă la superpoziţie.
Într-adevăr, după cum deja am observat, E ⊆ T0 pentru că
i np (0, 0,K , 0,K , 0) = 0 indiferent de valorile lui n ∈ N* şi p ∈ [n]. Fie
p

acum n ∈ N*, t ∈ N, f, h1, h2, ... , ht ∈ FB(n), g ∈ FB(t), astfel încât


f = SUP(g, h1, h2, ... , ht) şi g, h1, h2, ... , ht ∈ T0. Rămâne să arătăm că
f ∈ T0, adică f(0, 0, ... 0) = 0. Dar, ştim că pentru fiecare
x = <x1, x2, ... , xn> avem f(x) = g(h1(x), h2(x), ... , ht(x)), de unde, luând
x = <0, 0, ... , 0>, găsim f(0, 0, ... 0) = g(h1(0, 0, ... ,0), h2(0, 0, ..., 0), ...

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 269

, ht(0, 0, ... , 0)) = g(0, 0, ... , 0) = 0, folosind exact faptul că h1, h2, ..., ht
şi g sunt elemente din T0.
V.1.8. Fie ([CAZ1]) M mulţimea considerată. Trebuie să arătăm că
M = FB, adică să arătăm că orice funcţie booleană este fie o funcţie
elementară, fie o funcţie din M, fie se obţine printr-un număr finit de
superpoziţii din funcţiile elementare şi/sau elementele lui M. Desigur că
ne vor fi de folos teoremele de reprezentare ale funcţiilor booleene.
Pentru a simplifica notaţiile, vom desemna prin n, s şi p funcţiile din M
( ¯, + şi respectiv •, acestea neavând o notaţie prefixată). Considerăm
funcţiile:
(i) f pα , α ∈ B, date prin f pα (x1, ... , x p, ... , xm) = x αp (oricare ar fi

numărul de argumente m ∈ N* şi p ∈ [m]). Avem f p1 = i mp şi cum

f p0 (x1, x2, ... , xm) = i mp (x 1 ,..., x m ) , oricare ar fi elementele

x1, x2, ... , xm ∈ B, putem scrie şi f p0 = SUP(n, i mp ).

(ii) Fie acum funcţiile p k, date prin pk(x 1, x2, ... , x m) = x1•x 2• ... •x k,
oricare ar fi m ∈ N* şi k ∈ [m]. Observăm acum că p1 = i1m ,

p2 = SUP(p, i1m , i m2 ), ş. a. m. d., adică pentru fiecare k > 2 găsim

pk = SUP(p, pk – 1, i mk ).
(iii) Considerăm în continuare funcţiile sr, date prin
sr(x1, x2, ... , xm) = x1 + x2 + ... + xr ( pentru fiecare m ∈ N* şi r ∈ [m]),
despre care se arată în modul recursiv similar cazului precedent că sunt
elemente din M , (s1 = i1m , s2 = SUP(s, i1m , i m2 ) şi, pentru fiecare r > 2,

sr = SUP(s, sr – 1, i mr )).

PDF created with pdfFactory Pro trial version www.pdffactory.com


270 Cristian Masalagiu

(iv) Putem trage acum concluzia că şi funcţiile de forma


g(x1, x2, ... , x m) = x 1α1 • x α2 2 • ... • x αmm (m ∈ N*, α1, α2, ... αm ∈ B) sunt în

M , deoarece g = SUP(pm, f 1α1 , f 2α2 , ... , f mαm ).


(v) Fie, în sfârşit, orice funcţie booleană f ∈ FB(m), m ∈ N*.
• Dacă f(x1, x2, ... , xm) = 0, pentru fiecare x1, x2, ... , xm ∈ B,
atunci f = SUP(p, f10 , f11 ).

• În caz contrar, conform Teoremei 1.3, f admite o reprezentare


unică în FNDP, fiind o sumă de r ∈ N* maxtermeni, adică de
funcţii g1, g2, ... , gr de tipul dat în cazul (iv), adică
f = SUP(sr, g1, g2, ... gr).
V.1.9. Avem B × B = {<0, 0>, <0, 1>, <1, 0>, <1, 1>}, valorile
corespunzătoare ale funcţiei + (pentru perechile de argumente de mai
sus) fiind respectiv 0, 1, 1, 1. Pentru că am pus 0 ≤ 1 (ştim deja că
0 ≠ 1) şi extensia acestei relaţii la produsul cartezian este pe
componente, putem spune că doar elementele <0, 1> şi <1, 0> sunt
incomparabile, celelalte fiind în relaţie, după cum este indicat în figura
de mai jos prin săgeată continuă (astfel, <0, 1> ≤ <1, 1>, <1, 0> ≤
<1, 1>, etc.). Se observă imediat că valorile funcţiei păstrează relaţia de
ordine dintre (perechile de) argumente:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 271

1+1
<1,1>
1

1+0
<1,0>
<0,1> 1
1
0+1

<0,0>
0
0+0

V.1.10. Conform [DID], cunoscându-se şi tabelele de definiţie ale


operaţiilor implicate, nu este nici o dificultate de a se arăta ceea ce se
cere (dacă B şi Z2 se identifică, atunci izomorfismul este dat chiar de
funcţia identică).
V.1.11. Să arătăm că funcţia specificată nu este liniară (conform celor
arătate în lucrare şi exerciţiului precedent, există o unicitate a
reprezentării funcţiei ca polinom):
x• y + y• z =

conform a + b = a gb

= x g y g yg z =

conform a gb = (a ⊕ 1)•(b ⊕ 1)⊕ 1


= (x• y ⊕ 1)•(y• z ⊕ 1) ⊕ 1 =

PDF created with pdfFactory Pro trial version www.pdffactory.com


272 Cristian Masalagiu

conform a = a ⊕ 1
= (x•(y ⊕ 1) ⊕ 1)•(y•(z ⊕ 1) ⊕ 1) ⊕ 1 =
distributivitate, asociativitate
= (x•y ⊕ x ⊕1)•(y•z ⊕ y ⊕ 1) ⊕ 1 =
distributivitate, a•a = a
x•y•z ⊕ x•y ⊕ x•y ⊕ x•y•z ⊕ x•y ⊕ x ⊕ y•z ⊕ y ⊕ 1 ⊕ 1 =
comutativitate, a ⊕ a = 0, a ⊕ 0 = a
= x•y ⊕ y•z ⊕ x ⊕ y.
Evident, aceasta nu este o reprezentare liniară.

§2. Rezolvări Capitolul 2


V.2.1. Teorema directă (TD) are forma ipoteze implică concluzii, adică
TD: p → q (sau p ⇒ q dacă este vorba chiar de un raţionament
sintactic). Atunci avem: TR (teorema reciprocă) este q ⇒ p; TCD
(contrara directei) este  p ⇒  q , iar TCR (contrara reciprocei) este
 q ⇒  p. Se poate arăta că p ⇒ q este logic echivalentă (în
metalimbaj) cu  q ⇒  p (adică teorema directă este echivalentă cu
contrara reciprocei, de unde se deduce metoda reducerii la absurd, ca
metodă generală de demonstraţie). Se schimbă ceva în cele de mai sus
dacă avem mai multe ipoteze sau/şi mai multe concluzii (p şi q pot fi
formule compuse, între ipotezele sau/şi concluziile elementare putând
exista conectori de tipul ∧ sau ∨)? O echivalenţă sintactică p ⇔ q se
mai exprimă sub forma „Pentru a avea q adevărată este necesar şi
suficient să avem p adevărată”. În această exprimare, p ⇒ q este
condiţia suficientă şi q ⇒ p este condiţia necesară. Grafic:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 273

Obiecte
care
satisfac q
Obiecte
care
satisfac p

Cu alte cuvinte, pentru a avea q adevărată este suficient ca p să fie


adevărată, iar pentru a avea p adevărată, este necesar mai întâi ca
formula q să fie adevărată. Ceea ce este reprezentat mai sus sunt sferele
noţiunilor caracterizate prin condiţiile p şi q, echivalenţa logică (fie ea
de natură semantică, fie sintactică) „spunând” că cele două sfere
coincid.
V.2.2. Avem lim a n = a ∈ R dacă şi numai dacă (scrierea este conform
n →∞

manualelor din liceu):


(∀ε > 0)(∃n ∈ N)(∀m ∈ N)(m > n ⇒ |am - a| < ε)
Negaţia formulei anterioare (nu este adevărat că şirul (an)n∈N converge
la a ∈ R; ceea ce nu înseamnă că (an)n∈N nu ar fi convergent) este:
(∃ε > 0)(∀n ∈ N)(∃m ∈ N)( (m > n ⇒ |am - a| < ε)) ≡
≡ (∃ε > 0)(∀n ∈ N)(∃m ∈ N)(m > n ∧ |am - a| ≥ ε)
În cele de mai sus s-a folosit faptul că p → q ≡ p ∨ q şi  ( p ∨ q) ≡
p ∧  q.

PDF created with pdfFactory Pro trial version www.pdffactory.com


274 Cristian Masalagiu

V.2.3. Notăm de exemplu p: Mi-e sete şi q: Beau apă. Avem p → q ≡


 p ∨ q şi  ( p → q) ≡   p ∧  q ≡ p ∧  q. Prin urmare, propoziţia în
limbaj natural: „Mi-e sete şi nu beau apă” exprimă acelaşi lucru cu „Nu
este adevărat că dacă mi-e sete beau apă” (care este negaţia lui „Dacă
mi-e sete, beau apă”).
V.2.4. Fie F = (( A) ∨ (B ∧ C)). Atunci Arb(F), etichetat (adică,
arborele orientat, ordonat care reprezintă F), este:

( ) 0

∨ 00

000
() () 001

0000
∧ 0010

A
B C
00000
00100 00101

Dacă am fi considerat că notaţiile tuturor operatorilor care intervin sunt


prefixate (nu infixate, cum sunt cele pentru ∧ şi ∨), parantezele ar fi
devenit uşor un accesoriu direct al oricărui operator (aşa cum de altfel
mai sugerat). Arborele, în acest caz, ar putea fi uşor simplificat:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 275

∨∨() 0

00
 () ∧ () 01

000
A
B C

010 011
Cu ajutorul unei astfel de structuri de informaţie s-ar putea defini
simplu, formal (structural), noţiuni cum ar fi: apariţia unui simbol într-o
formulă F, pe poziţia i; subformula lui F care începe la poziţia i, etc.
V.2.5. Din demonstraţia Teoremei 2.1 au mai rămas cazurile
F = (F1 ∨ F2) şi F = (F1 ∧ F2). Sugerăm cititorului, datorită simplităţii
calculelor, să trateze simultan aceste cazuri, folosind acelaşi simbol atât
pentru ∧ şi ∨, cât şi, similar , pentru + şi •.
V.2.6. Procedăm prin inducţie structurală.
Baza. F = A ∈ A. Atunci prop(F) = {A}.
Pas inductiv.
(i) F = ( F1). Evident, prop(F) = prop(F1). Acelaşi lucru se întâmplă şi
atunci când F = (F1).
(ii) F = (F1 ○ F2), ○ ∈ {∧ , ∨}. Atunci prop(F) = prop (F1) U prop (F2).
Folosind o definiţie formală a unei formule considerate ca un arbore
binar etichetat (V.2.4.), puteţi defini formal şi numărul de apariţii ale
unei variabile, împreună cu poziţia la care există aceste apariţii?

PDF created with pdfFactory Pro trial version www.pdffactory.com


276 Cristian Masalagiu

V.2.7. Se verifică uşor că orice A ∈ A este o formulă satisfiabilă, dar


nevalidă, că F = A ∨  A este o formulă validă şi că F = A ∧  A este o
contradicţie.
V.2.8.
(a) Faptul că relaţiile implicate sunt reflexive, simetrice şi tranzitive
rezultă imediat, deoarece acestea sunt definite cu ajutorul relaţiei de
egalitate.
(b) Mai trebuie arătat că:
• Dacă F1 ≡ F2, atunci  F1 ≡  F2, pentru fiecare F1, F2 ∈ LP
(compatibilitatea lui ≡ faţă de ), şi că
• Dacă F1 ≡ F2, atunci F1∨ F ≡ F2 ∨ F , pentru fiecare F, F1, F2 ∈
LP (analog pentru ∧; F poate fi „adăugată” şi la stânga), ceea ce
exprimă compatibilitatea la dreapta (respectiv la stânga) a lui ≡
faţă de ∨ (sau ∧).
Să arătăm de exemplu că dacă F1, F2 ∈ LP sunt formule oarecare, astfel
încât F1 ≡ F2, atunci pentru oricare F ∈ LP avem: F ∨ F1 ≡ F ∨ F2. Fie S
o structură oarecare, corectă pentru F, F1, F2. Avem succesiv:
S(F ∨ F1) = S(F) + S(F1) = S(F) + S(F2) = S(F ∨ F2).
(c) Deoarece ≡ ⊆ LP × LP este o echivalenţă şi ≡ este compatibilă cu
∧, ∨ şi , rezultă că pe mulţimea cât LP/≡ = {[F] | F ∈ LP}, unde
[F] = {F’∈ LP | F’ ≡ F}, se pot defini noile operaţii ∧, ∨,  (preferăm să
nu folosim simboluri mult diferite pentru LP/≡):
([F1] ∧ [F2]) = [(F1 ∧ F2)]
([F1] ∨ [F2]) = [(F1 ∨ F2)]

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 277

( [F1]) = [( F1)].


Operaţiile (considerate la nivel semantic) sunt într-adevăr funcţii
tocmai datorită compatibilităţii lor cu echivalenţa.
(d) Axiomele unei algebre booleene se arată simplu. 0 reprezintă clasa
tuturor tautologiilor, iar 1 este clasa contradicţiilor. Nu există doar un
singur homomorfism între mulţimile considerate, ci o infinitate. Astfel,
pentru fiecare S : LP → B, putem lua h : LP/≡ → B, dat prin

h([F]) = S(F).
V.2.9. Se pot folosi şi tabelele de adevăr, nu doar definiţia.
V.2.10. Avem succesiv:
F≡
prioritate operatori, distributivitate
≡ ( B ∨  D) ∧ E ∧ C ∧ B ∧ ( B ∨ D) ∧ ( B ∨ B) ≡
conform  B ∨ B ≡ 1 şi A ∧ 1 ≡ 1
≡ ( B ∨  D) ∧  E ∧ C ∧ B ∧ ( B ∨ D).
Aplicăm acum Algoritmul Horn formulei anterioare, găsind:
{B*1 ∧ D*2 → 0, E → 0, C → 0, 1 → B*1, B*1 → D*2}.
Formula este prin urmare nesatisfiabilă. Vă sugerăm să aplicaţi şi altă
metodă de testare a satisfiabilităţii unei formule.
V.2.11. Putem considera următoarele variabile propoziţionale:
D: Vom câştiga alegerile.
E: Popescu va fi ales liderul partidului.
G: Ionescu părăseşte partidul.
H: Rădulescu părăseşte partidul.

PDF created with pdfFactory Pro trial version www.pdffactory.com


278 Cristian Masalagiu

Atunci, prima parte a afirmaţiei ar putea fi exprimată prin E → D, iar


doua prin  E → (G ∨ H) ∧  D. Întreaga afirmaţie ar putea fi conjuncţia
afirmaţiilor precedente sau, mai degrabă, disjuncţia exclusivă a lor.
După cum ştim, acest operator logic are de fapt acelaşi tabel de adevăr
ca şi suma modulo 2 şi va fi notat la fel (tot cu ⊕). Deci,
F = (E → D) ⊕ ( E → (G ∨ H) ∧  D). Lăsăm pe seama cititorului
finalizarea exerciţiului.
V.2.12. Avem succesiv, fără a mai indica explicit toate proprietăţile
utilizate:
F ≡ (( A1 ∨  A2) ∨ (A2 → A4)) → (( A1 ∨ A2) ∧ (A2 ∨ A4)) ≡
≡ (( A1∨  A2) ∧ ( A2 ∨ A4)) → ((A1 ∨ A2) ∧ ( A2 ∨ A4)) ≡
≡ (A1 ∧ A1 ∧  A4) ∨ (( A1 ∨ A2) ∧ ( A2 ∨ A4)) ≡
≡ (A1 ∧ A2 ∧  A4) ∨ (( A1 ∨ A2) ∧  A2 ∨ ( A1 ∨ A2) ∧ A4) ≡
≡ (A1 ∧ A2 ∧  A4) ∨ (( A1 ∧  A2) ∨ (A2 ∧  A2) ∨ ( A1 ∧ A4) ∨
(A2 ∧ A4) ) ≡
≡ A1 ∧ A2 ∧ A4 ∨  A1 ∧  A2 ∨  A1 ∧ A4 ∨ A2 ∧ A4.
În cele de mai sus, am ţinut cont de faptul că  are prioritatea 0, ∧ - 1 şi
∨ - 2. În cadrul unei aceleaşi priorităţi, gruparea am făcut-o însă „la
stânga”.
V.2.13. Deşi nu am mai precizat literalii care „se reduc” din fiecare
clauză, sperăm ca ei să fie uşor de identificat:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 279

{B, C} {B,  C} { A, C} { C}

{B}
{ A} {A, B, C }

{ B, C}

{C} { C}

V.2.14. O formulă F este tautologie dacă şi numai dacă  F este


contradicţie. Ca urmare, avem:  F ≡ (B ∨ C ∨  D) ∧ (B ∨ D) ∧
( C ∨  D) ∧  B, care, în reprezentarea cu mulţimi, înseamnă

PDF created with pdfFactory Pro trial version www.pdffactory.com


280 Cristian Masalagiu

{{B, C,  D}, {B, D}, { C,  D}, {B}}. O respingere ar putea fi:

{B, C,  D} { C,  D}

{B,  D } { B}

{ D} {B, D}

{B} { B}

V.2.15. Ştim că G ╞ G dacă şi numai dacă (Teorema 2.3)


n
( ∧ Gi ) ∧ G este nesatisfiabilă. O respingere poate fi descrisă mai
i =1

pe scurt şi prin graful:

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 281

( A ∨ B) ∧ ( B ∨ C) ∧ (A ∨  C) ∧ (A ∨ B ∨ C) ∧ ( A ∨ B∨  C)

{A, B}
{ C}

{B} {A, C}

{A}

{  B}

De fapt, în cele de mai sus, obţinerea lui { C} trebuia făcută altfel,


clauzele alese, {A, B} şi { A,  B,  C} având practic două posibilităţi
de rezolvare (ceea ce este incorect datorită convenţiilor făcute, printre
care şi aceea de a nu lua în considerare tautologiile găsite prin
rezoluţie). Astfel, putem lua { A, B} cu {A,  C} rezultând {B,  C}.
Ultima se rezolvă cu { A,  B,  C} şi rezultă { A,  C}. În sfârşit,
aceasta se rezolvă cu {A,  C}.

1, k = 2i + 1, i ∈ N
V.2.16. Se observă că definind S ( Ak ) =  , avem
0, k = 2i, i ∈ N
*

S╞ M. Într-adevăr, mulţimile M’ = {A1∨A2, A3 ∨A4,…,A2n+1∨ A2n+2,...}


şi M’’ = { A2 ∨  A3,  A4 ∨  A5, …, A2n+2 ∨ A2n+3, …} formează o
partiţie a lui M. S este model pentru M’, pentru că avem

PDF created with pdfFactory Pro trial version www.pdffactory.com


282 Cristian Masalagiu

S(A2n+1 ∨ A2n+2) = 1 pentru fiecare n ∈ N (deoarece S(A2n+1) = 1).


Analog, S(A2n+2 ∨ A2n+3) = S (A2 n+ 2 ) + S (A2 n+3 ) = 0 + 1 = 1 , pentru

fiecare n ∈ N, adică S ‘ M’’.

V.2.17. Demonstrăm doar punctul (b), afirmaţia corespunzătoare


nefiind adevărată. Vom căuta astfel să găsim un contraexemplu.
Presupunem astfel că F → G este satisfiabilă şi F este satisfiabilă. Este
posibil ca G să nu fie satisfiabilă, după cum se observă din următoarea
tabelă de adevăr (F = A ∈ A, G = B ∧  B, B ∈ A):
A=F B B∧B=G F→G
0 0 0 1
0 1 0 1
1 0 0 0
1 1 0 0

V.2.18. Informaţiile avute sunt suficiente pentru ca cititorul să rezolve


singur exerciţiul.
V.2.19. Din nou, cititorul este invitat „să-şi încerce singur puterile”,
rezolvarea neprezentând nici un „truc”.

§3. Rezolvări Capitolul 3


V.3.1. Pentru formule atomice F avem:
(i) Dacă F = P ∈ P0 atunci free(P) = Ø.

(ii) Dacă F = P(t1, t2,..., tn), unde n ∈ N*, t1, t2,..., tn ∈ T, P ∈ Pn, atunci

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 283

n
free(P(t1, t2,..., tn)) = U free(t i ) .
i =1

Prin urmare, este necesar să definim acum structural free(t), oricare ar fi


t ∈T.

Baza. Dacă t = c ∈ F0, atunci free(t) = Ø, iar dacă t = x ∈ X, atunci


free(t) = {x}.
Pas inductiv. Să presupunem acum că t = f(t1, t2,..., tn), unde n ∈ N*,
n
t1, t2,..., tn ∈ T, f ∈ Fn. Atunci free(t) = U free(t i ) .
i =1

În sfârşit, putem trece la formule:


Baza. Acest pas a fost descris mai sus (F este formulă atomică).
Pas constructiv.
(i) Dacă F = ( F1), atunci free(F) = free(F1). La fel, pentru F = (F1).
(ii) Dacă F = (F1 ∧ F2), atunci free(F) = free(F1) U free(F2).
(iii) Dacă F = (F1 ∨ F2), atunci free(F) = free(F1) U free(F2).
(iv) Dacă F = (∀x)(F1) sau F = (∃x)(F1), atunci free(F) = free(F1) \ {x},
doar dacă x ∈ free(F1). Altfel, free(F) = free(F1) (desigur că puteam
lăsa aceeaşi mulţime de mai sus).
V.3.2. subf(F) = {R(u, f(v)), Q(z), P(x, g(a)), (P(x, g(a)) ∧ Q(z)),
((P(x, g(a)) ∧ Q(z)) ∨ R(u, f(v))), (((P(x, g(a)) ∧Q(z)) ∨ R(u, f(v)))), F}.
Puteţi deduce un algoritm imperativ pentru a calcula sub(F), din cel
recursiv sugerat de definiţie?
V.3.3. Definirea constructivă a mulţimii leg(F), F ∈ LP1, urmează
aceiaşi paşi ca la definirea mulţimii free(F). Lăsăm în seama cititorului
analiza diferenţelor care intervin.

PDF created with pdfFactory Pro trial version www.pdffactory.com


284 Cristian Masalagiu

V.3.4. Să presupunem că avem o substituţie s = [x1/t1]•[x2/t2]•...•[xn/tn],


n ≥ 2, nenormalizată. Ideea este ca, pentru fiecare i ∈ [n – 1], termii ti+1,
ti+2, ... , tn să nu mai conţină pe xi. Atunci putem transforma pe s în felul
următor: toate apariţiile variabilei xn în t1, t2, ... , tn-1 se înlocuiesc cu tn,
apoi toate apariţiile lui xn-1 în (noii) t1, t2, ... , tn-2 se înlocuiesc cu (noul)
tn-1, ş. a. m. d.
V.3.5. (F)s = (∀x)(P(x, f(x)) ∧ Q(g(a, h(x)))). Să remarcăm însă că
substituţia în cauză, s, nu este permisă pentru F.
V.3.6. A se vedea V.3.11.
V.3.7. Formula F este satisfiabilă dar nevalidă. Considerând orice
structură S = <US, IS>, corectă pentru F, avem FS = 1 dacă şi numai
dacă S[x/u][y/v](P(x, y, f(z))) = 1, adică dacă şi numai dacă pentru fiecare

u ∈ US, există v ∈ US, astfel încât


S[x/u][y/v] S[x/u][y/v] S[x/u][y/v] S[x/u][y/v] S[x/u][y/v]
P (x , y , f (z ))) = 1.

Acest lucru are loc dacă şi numai dacă pentru fiecare u ∈ US, există

v ∈ US, astfel încât PS (u, v, fS(zS )) = 1. Continuarea (şi finalizarea)


exerciţiului este de acum simplă.
V.3.8. F = (∀x)(∀y)(P(x, y) →  P(y, x)). Dar dacă P ar fi şi reflexivă şi
formula ar aparţine lui LP1 = ?
V.3.9. F = (∀x)(∀y)(∀z)(P(x, x) ∧ (P(x, y) → P(y, x)) ∧
((P(x, y) ∧ P(y, z)) → P(x, z)).
V.3.10. FS = 1 dacă şi numai dacă există u, v, w ∈ US astfel încât
avem

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 285

S [x/u][y/v][z/w] S [x/u][y/v][z/w] S [x/u][y/v][z/w]


P (x, y) = 1 şi P (z, y) = 1 şi P (x, z) = 1
S [x/u][y/v][z/w]
şi P (z, x) = 0, adică dacă şi numai dacă există u, v, w ∈ US
astfel încât:
PS(u, v) = 1 şi PS(w, v) = 1 şi PS(u, v) = 1 şi PS(w, u) = 0.
Finalizarea rezolvării exerciţiului este lăsată pe seama cititorului.
V.3.11. Afirmaţiile se demonstrează a fi adevărate prin aplicarea directă
a definiţiilor notiunilor care sunt implicate.
V.3.12. Cu acest exerciţiu vă puteţi verifica singuri abilitatea de a
manipula definiţiile constructive.
V.3.13. Se cunoaşte faptul că un grup poate fi definit şi în alte moduri,
folosind relaţii în care nu apare explicit simbolul elementului neutru, e
(a se vedea, de exemplu, [DID]). Putem „construi” formula F, pornind
de la aceste relaţii. În acest fel, nu vom mai avea apariţii ale
elementului neutru (simbolului de constantă) e. Absenţa simbolului de
egalitate poate provoca alte inconveniente. A se vedea şi Capitolul 4.
V.3.14. A se vedea V.3.8.
V.3.15. Rezolvarea nu poate prezenta dificultăţi dacă materia anterioară
a fost receptată corect.
V.3.16. Aceeaşi indicaţie ca la exerciţiul precedent.
V.3.17. Procedăm algoritmic după cum urmează:
(i) Pasul 1. Obţinere FNPR.
F ≡ (∀u)(∃y)((P(u, g(y), z) ∨  (∀x)Q(x)) ∧(∀z)(∃x) R(f(x, z), z))
≡ (∀u)(∃y)((P(u, g(y), z) ∨  (∀x)Q(x)) ∧(∀w)(∃x) R(f(x, w), w))
≡ (∀u)(∃y)((P(u, g(y), z) ∨  (∀v)Q(v)) ∧(∀w)(∃x) R(f(x, w), w))

PDF created with pdfFactory Pro trial version www.pdffactory.com


286 Cristian Masalagiu

≡ (∀u)(∃y)((P(u, g(y), z) ∨ (∃v)Q(v)) ∧(∀w)(∃x) R(f(x, w), w))


≡ (∀u)(∃y)(∃v)(∀w)(∃x)((P(u, g(y), z) ∨  Q(v)) ∧  R(f(x, w), w)).
(ii) Pasul 2. Cum z este unica variabilă cu apariţii libere, putem
obţine uşor o FNPR închisă, slab echivalentă cu F:
F≡s(∃z)(∀u)(∃y)(∃v)(∀w)(∃x)((P(u, g(y), z) ∨ Q(v)) ∧ R(f(x, w), w)).
(iii) Pasul 3. Aplicăm Algoritmul Skolem ultimei forme a lui F, pentru
a obţine o FNS (închisă). Separând execuţiile corpului buclei, obţinem
succesiv:
• Alege „b” constantă şi elimină (∃z):
F≡s(∀u)(∃y)(∃v)(∀w)(∃x)((P(u,g(y),b)∨ Q(v)) ∧ R(f(x,w),w)).
• Alege h, un simbol funcţional de aritate 1 şi elimină (∃y):
F≡s(∀u)(∃v)(∀w)(∃x)((P(u,g(h(u)),b) ∨Q(v)) ∧ R(f(x, w), w)).
• Alege t, un simbol funcţional de aritate 1 şi elimină (∃v):
F≡s(∀u)(∀w)(∃x) ((P(u, g(h(u)), b) ∨ Q(t(u)) ∧ R(f(x, w), w)).
• Alege s, un simbol funcţional de aritate 2 şi elimină (∃x):
F≡s(∀u)(∀w)((P(u,g(h(u)),b) ∨ Q(t(u))) ∧ R(f(s(u,w), w), w)).
(iv) Pasul 4. Formula este deja în FNSC (închisă).
V.3.18. Fie formula:
F = (∀x)(P(x, f(x))) ∧ (∀y)( P(y, y)) ∧ (∀u)(∀v)(∀w)((P(u, v) ∧
P(v, w)) → P(u, w)).
F „ne spune” că P este o relaţie binară, tranzitivă şi nereflexivă, având o
proprietate suplimentară, exprimată prin subformula
F1=(∀x)(P(x, f(x))). Arătăm că, deşi F este satisfiabilă, ea nu admite
nici un model finit.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 287

(i) F este satisfiabilă. Fie structura S = <U S, IS>, unde US = N,


PS = {<m, n>| m, n ∈ N cu m<n}, fS : U S → US, dată prin fS(n) = n + 1.
Pentru că formula nu conţine nici constante şi nici variabile libere,
structura este corectă şi avem imediat că S ‘ F.

(ii) F nu poate avea model finit. Folosind metoda reducerii la absurd,


să presupunem că există S = <US, IS> corectă, finită (card(US) < χo) şi

S ‘ F. Deoarece orice univers este presupus a fi nevid, să fixăm un

element oarecare u ∈ US. Putem acum considera următoarea secvenţă,


infinită, de elemente din US, u0, u1, u2, … unde:
u0 = u
(1)  S
ui +1 = f (ui ), pentru orice i ∈ N

Cum US este finită, nu toate elementele din secvenţă pot fi distincte.

Prin urmare, trebuie să existe i, j ∈ N, i < j astfel încât ui = uj. Din


S ‘ F, subformula F1 trebuie să fie adevărată şi de aici rezultă că trebuie
să avem:
<u0, u1> ∈ PS ,
<u1, u2> ∈ PS,
………………
<ui-1, ui> ∈ PS,

<ui, u i+1> ∈ PS,


………………
<uj-1, uj> ∈ PS,
………………

PDF created with pdfFactory Pro trial version www.pdffactory.com


288 Cristian Masalagiu

Considerând subformula lui F,


F3 = (∀u)(∀v)(∀w)((P(u,v) ∧ P(v, w)) → P(u, w))
şi ea trebuie să fie adevărată în structura dată. Rezultă că PS trebuie să
fie o relaţie tranzitivă pe domeniul în cauză şi deci trebuie să avem
<ui, uj> ∈ PS. Dar ui = uj şi atunci <ui, ui> ∈ PS. Prin urmare, există
măcar un element – şi anume ui – în US astfel încât <ui, ui> ∈ PS şi asta

înseamnă că subformula lui F, F2 = (∀y)( P(y, y)) este falsă în structura


dată. Deducem că F este falsă în S (contradicţie).
V.3.19. Lăsăm rezolvarea pe seama cititorului.

§4. Rezolvări Capitolul 4


V.4.1. Avem succesiv, pentru (i), (ii), (iii) (cifrele din secvenţă sunt
locale rezolvării punctelor respective):
Pentru (i):
1. A→B, A • A→B, A evident

2. A→B, A • B 1., (MP)

3. A→B, B→C, A • B, B→C 2., de două ori

4. A→B, B→C, A • C 3., (MP)

5. A→B, B→C • A→C 4., (TD)

6. A→B • (B→C) →(A→C) 5., (TD)

7. • (A→B)→ ((B→C) →(A→C)) 6., (TD).

Pentru (ii):

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 289

1. A→(B→C), A • A→(B→C), A evident

2. A→(B→C), A • B→C 1., (MP)

3. A→(B→C), A, B • B, B→C 2.

4. A→(B→C), A, B • C 3., (MP)

5. A→(B→C), B • A→C 4., (TD)

6. A→(B→C) • B→(A→C) 5., (TD)

7. • (A→(B→C))→ (B→(A→C)) 6., (TD).

Pentru (iii):
1. • ( A →   A)→(( A → A) →A) axioma 3. din SD3

2. • A→ A am arătat deja

3. • ( A →  A)→(( A →  A) →A) 1., (ii), (MP)

4. • ( A →   A)→A 2., 3., (MP)

5. •  A → ( A→  A) axioma 1. din SD3

6. •  A → A 4., 5., (i), (MP).

V.4.2. Similar cu rezoluţia propoziţională, vom avea câte un sistem


pentru fiecare F ∈ LP1, schimbându-se doar mulţimea de formule
suplimentare, care este sugerată de E’(F).
V.4.3. Lăsăm rezolvarea pe seama cititorului, ea neimplicând nici un
„truc”.
V.4.4. Avem succesiv:

PDF created with pdfFactory Pro trial version www.pdffactory.com


290 Cristian Masalagiu

1. I • A→B evident

2. I, A • A, A→B 1.

3. I, A • B 2., (EI)

4. I, A,  B • B,  B 3.

5. I,  B •  A 4., (IN)

6. I •  B →  A 5., (TD), (II).

Apoi:
1. I •  B→ A evident

2. I,  B •  B,  B→ A 1.

3. I •  B→ A 2. (EI)

4. I, A,  B • A,  A 3.

5. I, A • B 4., (EN)

6. I • A → B 5., (TD), (II).

În sfârşit:
1. I • A∨B, A→C, B→C evident

2. I • A∨B,  C→ A, B→C 1., Ax3

3. I • A∨B,  C→ A,  C→ B 2., Ax3

4. I,  C • A∨B,  C,  C→ A,  C→ B 3.

5. I,  C •  A, A∨B,  C,  C→ B 4., (EI)

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 291

6. I,  C •  B,  C,  C→ B 5., (ED)

7. I,  C • B,  B 6., (EI)

8. I • C 7., (EN).

V.4.5.
A ∨ C , B ⇒ B, D , C A ⇒ B ∨ D, A, C C ⇒ B ∨ D, A, C

A ∨ C , B ⇒ B ∨ D, C A ∨ C ⇒ B ∨ D, A, C

( A ∨ C ) ∧ ( A → B ), D ⇒ B, D A ∨ C , A → B ⇒ B ∨ D, C

( A ∨ C ) ∧ ( A → B), D ⇒ B ∨ D ( A ∨ C ) ∧ ( A → B ) ⇒ B ∨ D, C

( A ∨ C ) ∧ ( A → B), C → D ⇒ B ∨ D

( A ∨ C ) ∧ ( A → B ) ∧ (C → D) ⇒ B ∨ D

⇒ ( A ∨ C ) ∧ ( A → B ) ∧ (C → D ) → ( B ∨ D )
V.4.6. Avem succesiv:
1. (∀x)(∀y)(x = y → y = x) conform 7. (din enunţ)
2. (∀y)(∀z)(z = y → y = z) 1., (E∀)

PDF created with pdfFactory Pro trial version www.pdffactory.com


292 Cristian Masalagiu

3. (∀z)(∀v)(z=v → v=z) 2., (E∀)


4. (∀z)(∀v)(z=v → v=z) 3., (I∀)
5. (∀u)(∀v)(u=v → v=u) 4., (E∀).
V.4.7. Lăsăm rezolvarea pe seama cititorului (din nou, nu există
„trucuri”, deşi rezolvarea este cumva plictisitoare prin lungimea ei).
V.4.8. Conform Exemplului 4.3, trebuie să adăugăm:
(∀x)(∀y)(∀z)((x•y)•z = x•(y•z)) şi
(∀y)(∃x)(x•y = y) ∧ (∀x)(∃y)(x•y = x).

§5. Rezolvări Capitolul 5


V.5.1. Putem nota clauzele cu C1 = {A(x, 0, x)}, C2 = { A(x, y, z),
A(x, s(y), s(z)}, C3 = { A(s(s(s(0))), s(s(0)), u)}. Găsim uşor E’(F)
după ce s-a calculat D(F). O respingere folosind rezoluţia de bază este
descrisă prin:
• Substituind x = s(s(s(0))), y = s(0), z = s(s(s(s(0)))),
u = s(s(s(s(s(0))))) în C2 şi C3, rezolvăm C2 cu C3 pentru a
obţine C4 = { A(s(s(s(0))), s(0), s(s(s(s(0)))))}.
• Substituind x = s(s(s(0))), y = 0, z = s(s(s(0))) în C2, rezolvăm
C4 cu C2 pentru a obţine C5 = { A(s(s(s(0))), 0, s(s(s(0))))}.
• În sfârşit, substituind x = s(s(s(0))), obţinem prin rezolvarea
lui C5 cu C1.
V.5.2. Substituţia finală va fi s = [X/U]•[Z/b]•[U/c]•[Y/b]•[X/b]. Ca o
concluzie, (∃U)p(U, b) este consecinţă semantică din CP1∧CP2 ∧CP3,
valoarea cerută a lui U fiind c. În arborele de mai jos, nodurile
suplimentare (care se rezolvă cu clauza scop curentă, precedată şi de

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 293

simbolul ←) sunt chiar clauzele de program, nu doar capul acestora


(pentru a ne familiariza şi cu alte notaţii folosite în literatura de
specialitate). Numele unor variabile sunt de asemenea schimbate (aşa
cum am mai amintit, sunt necesare cunoştinţe suplimentare pentru a ne
convinge de ce anumite redenumiri nu pot fi evitate pe parcurs).

← p(X,b) p(X 1,Z1) ← q(X1,Y1), p(Y1,Z1)


[X1/X]•[Z1/b]

← q(X,Y1), p(Y1,b) q(a,b) ←


[X/a]•[Y1/b]

← p(b,b) p(X3 ,X3) ←


[X3/b]

V.5.3. Posibile definiţii sunt (semnificaţia intuitivă a predicatelor


folosite a fost deja sugerată; de exemplu, faptele din minus1 şi minus2
ne „spun” că X – 0 = X şi respectiv X – X = 0):
minus1a(X, Y, Z):- plus(Y, Z, X).
minus1b(X, Y, Z):- plus(Z, Y, X).
minus2a(X, Y, Z):- plus(Y, Z, X).
minus2b(X, Y, Z):- plus(Z, Y, X).

PDF created with pdfFactory Pro trial version www.pdffactory.com


294 Cristian Masalagiu

Am putea lua în considerare şi o definiţie recursivă directă de genul


minus1(X, 0, X).
minus1(s(X), s(Y), Z):-minus1(X, Y, Z).,
sau
minus2(X, X, 0).
minus2(X, Y, s(Z)):-minus2(X, s(Y), Z).
Înmulţirea poate fi reprezentată de predicatul:
inmulţire(0, X, 0).
inmulţire(s(X), Y, Z):-inmulţire(X, Y, W), plus1(W, Y, Z).
La rândul său, ridicarea la putere se defineşte sub forma unei înmulţiri
repetate (să precizăm încă o dată că predicatul exp(N,X,Y) este
adevărat dacă si numai dacă Y = XN):
exp(U, 0, 0).
exp(0, V, s(0)).
exp(s(N), X, Y):-exp(N, X, Z), inmulţire(Z, X, Y).
V.5.4. Execuţia programului începe cu scopul curent, dat de interogarea
iniţială. Aceasta conţine un singur literal, sora_lui(eliza, andrei). Există
o singură clauză program cu al cărui cap literalul ales se poate unifica,
şi anume clauza suplimentară (ceea ce se află în dreapta simbolului se
mai numeşte şi corpul regulii). Substituţia de unificare este
[X/eliza]•[Y/andrei], rezultând noul scop curent (scopul derivat)
? :- femeie(eliza), parinti(eliza, M, T), parinti(andrei, M, T), care are
trei subscopuri. Primul este femeie(eliza), care se unifică cu faptul
corespunzător, rezultând ? :- parinti(eliza, M, T), parinti(andrei, M, T).
Subscopul parinti(eliza, M, T) nu se poate unifica decât cu faptul
parinti(eliza, maria, paul), unde M este instanţiat de valoarea „maria”,

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 295

iar T, de valoarea „paul” (un cel mai general unificator fiind evident dat
de [M/maria]•[T/paul]. Astfel, scopul curent devine
? :- parinti(andrei, maria, paul). Acesta se unifică cu faptul
corespunzător din baza de date. Prin urmare, PROLOG-ul a reuşit să
obţină o respingere, răspunzând „DA” şi găsind valorile cerute (chiar
dacă nu explicit).
V.5.5. Arborele AND-OR este reprezentat în figura de mai jos. Pe arce
nu am mai trecut clauze, ci substituţiile corespunzătoare:

PDF created with pdfFactory Pro trial version www.pdffactory.com


296 Cristian Masalagiu

bunic(ion, petru)

[X/ion] [Y/petru] [X/ion][ Y/petru]

tata(ion,Z), tata(Z,petru) tata(ion,Z), mama(Z,petru)

tata(ion,Z) tata(Z, petru) tata(ion,Z) mama(Z,petru)

[Z/maria] [Z/mari]a [I/Z][ J/petru]

◊ ♦
◊ mama(maria,K), frate(K,petru)

mama(maria,K) frate(K,petru)

[K/pau l]

◊ ◊

V.5.6. L = {P(x,y), P(f(b), g(x)), P(f(z), g(f(z)))}. Începem cu:


sub0 = [], (L)sub0 = L. Alegem pentru o primă posibilă unificare
literalii:
P(x, y) şi
P(f(b), g(x)).

Găsim sub 1 = [x/f(b)] şi

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 297

(L)sub1 = {P(f(b), y), P(f(b), g(f(b))), P(f(z), g(f(z)))}.


Acum pot fi aleşi tot primii doi literali:
P(f(b), y)
P(f(b), g(f(b))).

Găsim sub 2 = [y/g(f(b))] şi


(L)sub1•sub2 = {P(f(b), g(f(b))), P(f(z), g(f(z)))}.
Nu putem alege acum decât singurii literali rămaşi în mulţime:
P(f(b), g(f(b)))
P(f(z), g(f(z))).

Punând sub 3 = [z/b], găsim în final


(L)sub1•sub2•sub3 = {P(f(b), g(f(b)))}, substituţia cerută (finală) fiind
evident sub = sub 1•sub2•sub3.
V.5.7. Putem considera următoarele relaţii (predicate):
P(X): X este un dragon.
Q(X): X este fericit.
R(X): X este verde.
S(X): X poate zbura.
T(X,Y): X este copilul lui Y.
Lumea în cauza se poate reprezenta prin formulele:
• F1= (∀Y)((P(Y) ∧ (∀X)((T(X,Y) ∧ P(X) → S(X))) → Q(Y)).
• F2= (∀Y)((P(Y) ∧ R(Y)) → S(Y)).
• F3= (∀X)((P(X) ∧ (∃Y)(T(X,Y) ∧ P(Y) ∧ R(Y))) → R(X)).
Trebuie demonstrat că formula:

PDF created with pdfFactory Pro trial version www.pdffactory.com


298 Cristian Masalagiu

G= (∀Y)((P(Y) ∧ R(Y)) → Q(Y))


este o consecinţă semantică din {F1, F2, F3}, utilizând rezoluţia. Urmăm
paşii cunoscuţi:
(i) Găsim mai întâi o formulă F’ (aflată în FNS închisă şi cu matricea
în FNC), slab echivalentă cu  F =  (F1 ∧ F2 ∧ F3 → G). Obţinem
reprezentarea clauzală sub formă de mulţimi a lui F’ ca fiind:
F’ = {{ P(Y), Q(Y), T(f(Y,Y))}, { P(Y), Q(Y), P(f(Y))},
{ P(Y), Q(Y),  S(f(Y))}, { P(Y),  R(Y), S(Y)},
{ P(X),  T(X,Y),  P(Y),  R(Y), R(X)}, {P(b)}, {R(b)}, { Q(b)}}.
În cele de mai sus, primele trei clauze sunt din F1, cea de-a patra este
din F2, cea de-a cincea din F3, iar ultimele sunt din  G. Le putem atunci
denota prin C1, ..., C8, în această ordine. Mai mult, din procesul de
Skolemizare, rezultă două (noi) simboluri funcţionale, f – de aritate 1 şi
b – de aritate 0.
(ii) O posibilă respingere este:

(1) C1 C2

L = ({ P(y),
 P(a)})[y/a]

C 1' = { Q(a), T(f(a), a)) }

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 299

(2) C2 C6
L = ({ P(y),
 P(a)})[y/a]

C '2 = {Q(a), P(f(a))}

(3) C3 C6

L = ({ P(y),
 P(a)})[y/a]

C '3 = {Q(a),  S(f(a))}

(4) C1' C8

C1" = {T(f(a), a)}

PDF created with pdfFactory Pro trial version www.pdffactory.com


300 Cristian Masalagiu

(5) C '2 C8

C "2 = {P(f(a))}

(6) C '3 C8

C "3 = { S(f(a))}

(7) C1 C5

(redenumire în C1: [y/z])


L = ({T(f(z),z), T(x, y)})
[x/f(z)][y/z]
C 9 = { P(z), Q(z),  P(f(z)),  T(f(z), z),  R(z), R(f(z))}

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 301

(8) C9 C1"

L = ({T(f(z),z),
T(f(a),a)})
[z/a]

{ P(a), Q(a),  P(f(a)),  R(a), R(f(a))}} C 2"

{ P(a), Q(a),  R(a), R(f(a))} C8

{ P(a),  R(a), R(f(a))} C7

{ P(a), R(f(a))} C6

C10 = {R(f(a))}

PDF created with pdfFactory Pro trial version www.pdffactory.com


302 Cristian Masalagiu

(9) C4 C "3

L = ({ S(y),  S(f(a))})


[y/f(a)]

{ P(f(a)),  R(f(a))}} C10

{ P(f(a))} C "2

Puteţi folosi ca alternativă rezoluţia de bază ? Raspundeţi singuri la


celelalte întrebări din enunţ.

§6. Exerciţii propuse


Exerciţiile propuse în acest ultim modul sunt destinate unei
autoevaluari pentru fiecare cititor şi nu sunt şi rezolvate în lucrare
(exceptând unele indicaţii care sunt furnizate „pe loc”), pentru a nu
exista tentaţia de copiere a rezolvărilor (fie şi parţial). Se urmăreşte
astfel atât o trecere finală în revistă a cantităţii/calităţii informaţiilor
asimilate, precum şi testarea capacităţii de a lucra la nivel global cu
aceste cunoştinţe. Dacă fiecare rezolvare ar fi apreciată cu un punctaj

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 303

de la 1 la 10, realizarea a 75 de puncte este o cerinţă minimală pentru


a şti că pregătirea este cât de cât satisfăcătoare.

V.F.1. Determinaţi toate funcţiile autoduale având (minim 1 şi) maxim


4 argumente.
V.F.2. Aduceţi la FNC(D)(P) şi FNC(D)M următoarele funcţii
booleene (am renunţat la introducerea explicită a simbolului •,
presupunând în acelaşi timp că acesta este prioritar faţă de +):
f(x, y, z) = x + x y + x y
f(x, y, z) = (x + y) (x + y )( x + z )( x + z)
f(u, x, y, z) = u x + y z
f(u, x, y, z) = ux + yz.
V.F.3. Se ştie că intersecţia a două mulţimi închise de funcţii booleene
este închisă. Ce se poate spune despre reuniune?
V.F.4 ([OHL]). Definiţi structural (întâi pentru termi şi pentru formule
atomice, apoi pentru formule) următoarele funcţii recursive
(calculabile prin algoritmi):
• ND : T U At U LP1 → N. Pentru fiecare F ∈ LP1 (t ∈ T,

A ∈ At), considerăm toate variabilele şi constantele care apar.


Pentru fiecare asemenea element, se poate evident determina
„gradul său de imbricare”, adică numărul total de simboluri
disticte (funcţionale, predicative, cuantificatori) în domeniul
(sintactic al) cărora se află acel element. Valoarea lui ND va fi
dată de gradul maxim găsit. De exemplu, ND(x) = 0,
ND(f(x, y)) = 1, ND((∀x)(P(f(x) ∧ Q(x))) = 4, etc.

PDF created with pdfFactory Pro trial version www.pdffactory.com


304 Cristian Masalagiu

• NS : T U At U LP1 → N, unde NS(e) = numărul de simboluri


din Alf, distincte de paranteze şi virgule, peste care este
construit elementul respectiv (e ∈ T U At U LP1). De exemplu,
NS((∀x)P(f(x, x))) = 6.
Demonstraţi apoi prin inducţie structurală că NS(F) ≥ ND(F), pentru
fiecare F ∈ LP1. Ce se modifică în cele de mai sus dacă termii,
formulele atomice şi formulele se reprezintă ca arbori?
V.F.5. Ne plasăm în LP. Fie F → G o tautologie, astfel încât F şi G nu
au formule atomice în comun. Arătaţi că fie F este nesatisfiabilă, fie G
este tautologie (neexclusiv). Argumentaţi faptul că presupunerea „nu
există variabile comune” este esenţială.
V.F.6. Exprimaţi următoarele afirmaţii din matematică sub forma unor
formule din LP1 sau LP1=. Comentaţi (ne)satisfiabilitatea acestora în
diverse structuri.
• x divide y.
• x este număr prim.
• x este cel mai mare divizor comun pentru y şi z.
• x este cel mai mic multiplu comun pentru y şi z.
• Şirul numerelor prime este infinit.
• Mulţimea X are 2 elemente.
• Mulţimea X are n ≥ 2, n ∈ N elemente.
• Mulţimea X este parţial ordonată.
• Mulţimea X este bine ordonată.
• Mulţimea {x, y, z} formează un triunghi.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 305

• Mulţimea {x, y, z} formează un triunghi isoscel.


• Dacă două puncte ale unei drepte aparţin unui plan, atunci
dreapta aparţine planului.
V.F.7. Ne plasăm în LP1. Construiţi o formă normală Skolem, notată
C, pentru formula B = (∀x)(∃y)Q(x, y) şi arătaţi că formulele B şi C nu
sunt tare echivalente.
V.F.8. Ne plasăm din nou în LP1. Arătaţi că formula
F = (∀x)(∀y)(∀z)((Q(x, x)) ∧ ((Q(x, y) ∧ Q(y, z)) → Q(x, z)) ∧
((Q(x, y) ∨ Q(y, x)) → (∃y)(∀x)Q(y, x))
este satisfiabilă dar nevalidă. Mai mult, arătaţi că ea este adevărată în
orice univers finit.
V.F.9. Demonstraţi, folosind deducţia naturală, că:
• (∀x)(A) → (∃x)A.

• A → (∀x)A, dacă x nu apare (intră) liber în A.

• (∃x)(A) → A, dacă x nu apare liber în A.

• (∀x)(B → A) ↔ ((∃x)(B) → A), dacă x nu apare liber în A.

V.F.10. Arătaţi că următoarea mulţime de literali L din LP1 este


unificabilă şi găsiţi un cel mai general unificator:
L = { P(f(z, g(a, y)), h(z)),  P(f(f(u, v), w), h(f(a, b)))}.
Ca o indicaţie, luând doar câte doi literali la fiecare pas de unificare,
Algoritmul lui J. Robinson se termină după patru paşi, cu un posibil
m.g.u. de forma sub = [z/f(u, v)]•[w/g(a,y)]•[u/a]•[v/b].

PDF created with pdfFactory Pro trial version www.pdffactory.com


306 Cristian Masalagiu

V.F.11 ([OHL]). Problema reacţiei în lanţ a lui Schubert. Lupii,


vulpile, păsările, omizile şi melcii sunt animale, şi există măcar câte un
asemenea animal. Există, de asemenea şi cereale, cerealele fiind plante.
Despre fiecare animal ştim că fie îi place să mănânce toate plantele, fie
îi place să mănânce toate animalele mult mai mici ca el însuşi, animale
cărora, în plus, le place să mănânce anumite plante. Omizile şi melcii
sunt mult mai mici decât păsările, care sunt mult mai mici decât vulpile,
care la rândul lor sunt mult mai mici decât lupii. Lupilor nu le place să
mănânce vulpi sau cereale, în timp ce păsărilor le place să mănânce
omizi dar nu şi melci. Omizilor şi melcilor le place să mănânce anumite
plante. Putem trage concluzia că există (cel puţin) un animal căruia îi
place să mănânce un (alt) animal, acestuia din urmă plăcându-i să
mănânce cereale?
V.F.12 ([OHL]). Să ne imaginăm o logică propoziţională multivaluată
(de fapt, trivalentă), notată, să spunem, cu LP3. Mai precis, luăm
LP3 = LP, sintaxa nemodificându-se. Prin urmare, mulţimea de
formule rămâne aceeaşi, cu observaţia că admitem şi prezenţa explicită
a tuturor conectorilor logici mai des întâlniţi, adică a lui non, şi, sau,
implică şi echivalent (aceştia vor căpăta însă, pentru evitarea unor
confuzii, indicele inferior 3). Notând B’ = B U {u}, o asignare
(structură) va fi orice funcţie S : A → B’, iar conectorii amintiţi vor fi
interpretaţi semantic ca funcţii de arităţi corespunzătoare peste B’,
funcţii definite prin următoarele tabele de adevăr generalizate:
x 3
0 1

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 307

1 0
u u

x y x ∨3 y x ∧3 y x →3 y x ↔3 y
0 0 0 0 1 1
0 1 1 0 1 0
1 0 1 0 0 0
1 1 1 1 1 1
u 0 u 0 0 0

u 1 1 u 1 0

0 u u 0 1 0

1 u 1 u u 0

u u u u 1 1

Se observă imediat că dacă restricţionăm pe  3, ∨3, ∧3, →3 şi ↔3 la B


(le notăm la fel), atunci acestea coincid cu funcţiile corespunzătoare din
semantica logicii propoziţionale clasice ( 3(x) = x , x ∨3 y = x + y,
x ∧3 y = x•y, x →3 y = x + y respectiv x ↔3 y = ( x + y)•( y + x)).

Valoarea u (nedefinit, undefined) nu trebuie înţeleasă ca fiind fie


adevărat, fie fals, dar nu ştim exact care dintre ele, ci mai degrabă în
sensul: „cineva care are 2.00 metri este cu siguranţă înalt - 1; cineva
care are 1.50 metri este cu siguranţă mic de statură – 0; cineva care
are 1.75 este...u”. Se observă uşor şi alte lucruri, cum ar fi faptul că
există o unică extensie la LP3 (notată ulterior la fel), care păstrează

PDF created with pdfFactory Pro trial version www.pdffactory.com


308 Cristian Masalagiu

operaţiile, pentru fiecare asignare S, adică LP3 este extensional. Dar,


oare, câte/care dintre lucrurile definite/demonstrate pentru LP se
păstrează în LP3? Verificaţi astfel dacă afirmaţia pentru fiecare
structură S, fiecare F,G ∈ LP3, avem S(F →3 G) = S (( 3 F) ∨3 G),
este adevărată. În caz contrar, găsiţi un contraexemplu, sau, modificaţi
corespunzător tabela lui →3.
V.F.13 ([OHL]). Alice în ţara minunilor. Când Alice a intrat în
pădurea uitării, ea nu a uitat chiar totul, ci doar anumite lucruri. De
exemplu, îşi uita destul de des propriul său nume. Totuşi, în cea mai
mare parte a timpului, ea uita în care anume zi din săptămână se găseşte
în momentul respectiv. Leul şi inorogul erau şi ei vizitatori destul de
frecvenţi ai pădurii uitării. În plus, ei erau fiinţe destul de ciudate.
Astfel, leul minţea întotdeauna lunea, marţea şi miercurea, în timp ce în
restul zilelor spunea adevărul. Inorogul minţea joia, vinerea şi sâmbăta
şi spunea adevărul în celelalte zile. Odată, Alice a întâlnit în pădure leul
şi inorogul, care se odihneau sub un copac. Ei au făcut următoarele
afirmaţii:
• Leul: Ieri a fost una dintre acele zile în care eu spun minciuni.
• Inorogul: Şi pentru mine ieri a fost una dintre zilele în care eu
spun minciuni.
Folosind aceste informaţii, Alice, care era o fată deşteaptă, a putut să
determine în ce zi din săptămână se afla atunci. Puteţi afla şi
dumneavoastră?
V.F.14 ([OHL]). Fie formulele din LP1 =:
F = (∀y)(∃x)P(x, f(x, y))

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 309

G = (∀x)((x = b) → (∃ y)(g(y, y) = x))


H = (∀x)(P(x, b) → (∃y)(g(y, y) = x)).
Arătaţi că aceste formule sunt satisfiabile dar nevalide, folosind
structurile Herbrand.
V.F.15 ([OHL]). Similar cu cazul prezentat în V.F.12, să considerăm o
logică propoziţională 4-valuată, construită cu ajutorul conectorilor ∨4,
∧4,  4, definiţi semantic respectiv prin tabelele:

∨4 1 b n 0

1 1 1 1 1
b 1 b b b
n 1 b n 0

0 1 b 0 0

∧4 1 b n 0

1 1 b n 0

b b b n 0

n n n n n
0 0 0 n 0

şi

PDF created with pdfFactory Pro trial version www.pdffactory.com


310 Cristian Masalagiu

4
1 0
b b
n n
0 1

După cum se poate observa, pentru simplitate, am schimbat uneori


modalitatea de reprezentare a unui tabel în cele de mai sus (sperând că
nu există dificultăţi de înţelegere). Intuitiv, această logică se poate
interpreta după cum urmează: Să presupunem că cineva trimite nişte
chestionare unui anumit număr de persoane, cerându-le sa răspundă
prin „DA” sau „NU” la o întrebare Q. Rezultatul acestei activităţi este
notat cu 1 dacă la toate chestionarele s-a răspuns prin „DA” şi cu 0
dacă la toate s-a răspuns „NU”. Dacă s-au returnat toate
chestionarele dar există atât răspunsuri „DA” cât şi răspunsuri „NU”,
sau dacă nu s-au returnat toate chestionarele (ci doar o parte,
indiferent de răspunsuri), atunci activitatea va fi apreciată cu b. Dacă
nici un chestionar nu este returnat, rezultatul activităţii va fi notat cu
n. În situaţia descrisă,  4 ar putea fi interpretat ca un rezultat al
răspunsurilor la întrebarea non(Q), iar ∨4 respectiv ∧4 ar putea fi
interpretaţi ca fiind rezultatul răspunsurilor la nişte întrebări de genul
Q = Q1 sau Q2 respectiv Q = Q1 şi Q2 (de exemplu, dacă rezultatul

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 311

pentru Q1 este b şi rezultatul pentru Q2 este n, atunci rezultatul pentru

Q1 ∧4 Q2 este, natural, tot n).


Demonstraţi, de exemplu, că atât ∧4 cât şi ∨4 sunt operaţii comutative
pe B’’ = B U {b, n}. Ce alte lucruri interesante mai puteţi deduce
pentru această logică?

PDF created with pdfFactory Pro trial version www.pdffactory.com


Bibliografie

[AHO] Aho, A., V., Hopcroft, J., E., Ullman, J., D. – The
Design and Analysis of Computer Algorithms,
Addison-Wesley Publishing Company, Reading,
Massachusetts, S. U. A., 1976.
[AND] Andrews, J., H. – Logic Programming: operational
Semantics and Proof Theory, Cambridge Unversity
Press, Anglia, 1992.
[BIE] Bieltz, P., Gheorghiu, D. – Logica, Manual pentru
clasa a IX-a licee şi clasa a XI-a şcoli normale,
Editura Didactică şi Pedagogică, Bucureşti, România,
1996.
[BIR] Birkhoff, G. – Latice Theory, A.M.S. Colloquium
Publications, Vol. 25, Providence, Rhode Island,
S. U. A., retipărit în 1984.
[BOL] Bolc, L., Borowik, P. – Many-Valued Logics, 1,
Theoretical Foundations, Springer Verlag, Berlin,
Germania, 1992.
[BÖR] Börger, E. – Computability, Complexity, Logic,
North Holland, Amsterdam, Olanda, 1989.
[CAZ1] Cazacu, C., Slabu, V. – Logică matematică, Editura
Stefan Lupaşcu, Iaşi, România, 1999.
[CAZ2] Cazacu, C. – Teoria calculabilităţii efective, Editura
Universităţii „Al. I. Cuza”, Iaşi, România, 1996.
[COR] Cormen, T., H., Leiserson, C., E.,
Rivest, R., R. – Introducere în algoritmi, Editura
Computer Libris Agora, Cluj, România, 2000
(copywright după: Introduction to Algorithms, M. I. T.
Press, Massachusetts, S. U. A., 1990).
[COT] Cotelea, V. – Programarea în logică, Editura
NESTOR, Chişinău, Republica Moldova, 2000.
[CRO] Croitoru, C. – Tehnici de bază în optimizarea
combinatorie, Editura Universităţii „Al. I. Cuza”, Iaşi,
România, 1992.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 313

[DEX] Dicţionarul explicativ al limbii române, Editura


Univers Enciclopedic, Bucureşti, România, 1998.
[DID] Manualele de Algebră clasele a X-a, a XI-a, a XII-a,
Analiză, clasele IX-XI, Editura Didactică şi
Pedagogică, Bucureşti, România, 2003.
[DIJ] Dijkstra, E. W. – A Discipline of Programming,
Prentice Hall, Englewood Clifs, S. U. A., 1976.
[GIR] Girard, J. J. – Linear Logic, Theoretical Computer
Science, Vol. 50, No. 1, North-Holland, Amsterdam,
Olanda, 1987.
[HAR] Harel, D. – First-Order Dynamic Logic, Springer
Verlag, Berlin, Germania, 1979.
[HEY] Heyting, A. – Intuitionism. An Introduction,
North-Holland, Amsterdam, Olanda, 1956.
[IVA] Ivaşc, C., Prună, M. – Bazele informaticii, Editura
PETRION, Bucureşti, România, 1995.
[JUC] Jucan, T., Andrei, Ş. – Limbaje formale şi teoria
automatelor, Editura Universităţii „Al. I. Cuza”, Iaşi,
România, 2002.
[KNU] Knuth, D. E. – Tratat de programare a
calculatoarelor. Sortare şi căutare, Editura Tehnică,
Bucureşti, România, 1976.
[KOW] Kowalski, R. – Algorithm = Logic + Control,
Research Report, Department of Computing and
Control, Imperial College, Londra, Anglia, 1976.
[LUC] Lucanu, D., Jucan, T. – Programarea
calculatoarelor. Ediţia PASCAL, Editura Universităţii
„Al. I. Cuza”, Iaşi, România, 2002.
[MAN] Manna, Z., Pnueli, A. – Verification of Concurrent
Programs: the Temporal Framework, International
Summer School on Theoretical Foundations of
Programming Methodology, München, Germania,
1981.
[MAS1] Masalagiu, C. – Introducere în programarea logică
şi limbajele de programare logică, Editura
Universităţii „Al. I. Cuza”, Iaşi, România, 1996.

PDF created with pdfFactory Pro trial version www.pdffactory.com


314 Cristian Masalagiu

[MAS2] Masalagiu, C., Ibănescu, L., Andrei, Ş. – Practica


programării în TURBO PROLOG, Editura
Universităţii „Al. I. Cuza”, Iaşi, România, 1998.
[MAS3] Masalagiu, C. – Logica pentru informaticieni,
Editura Universităţii „Al. I. Cuza”, Iaşi, România,
2003.
[MAS4] Masalagiu, C., Andrei, Ş. – Duality in Resolution,
Analele Ştiinţifice ale Universităţii Bucureşti, Secţia
Matematică-Informatică, Vol. XLIX, p.96-102,
Bucureşti, România, 2000.
[MAS5] Masalagiu, C., Andrei, Ş., Kudlek, M.,
Grigoraş, G. – On the Complexity of Propositional
Calculus Formulae, Analele Ştiinţifice ale
Universităţii „Al. I. Cuza”, Iaşi, Tom XII, Secţia
Informatică (Serie nouă), Iaşi, România, va apare
2004.
[OHL] Ohlbach, H., J. – Introductory Logic Course. Draft
Manuscript, Imperial College, Department of
Computing, University of London, Londra, Anglia,
1997.
[RIC] Richman, F. (Ed.) – Constructive Mathematics
(Proceedings, New Mexico, 1980), Lecture Notes in
Mathematics, No.873, Springer Verlag, Berlin,
Germania, 1981.
[ROU] Roussel, P. – PROLOG, Manuel de référence et
d’utilisation, Groupe de I. A., Université d’Aix,
Marsilia, Franţa, 1975.
[SCH] Schöning, U. – Logic for Computer Scientists,
Birkhäuser, Berlin, Germania, 1989.
[SEG] Segerberg, K. – A Completeness Theorem in the
Modal Logic of Programs, Preliminary Report,
Notices of the A. M. S., Vol. 24, No. 6, A-552, S.U.A.
[SOR] Sorin, T. – Tehnici de programare, Editura TEORA,
Bucureşti, România, 1994.
[ŢIP] Ţiplea, F. L. – Introducere în teoria mulţimilor,
Editura Universităţii „Al. I. Cuza”, Iaşi, România,
1998.

PDF created with pdfFactory Pro trial version www.pdffactory.com


Fundamentele logice ale Informaticii 315

[WIN] Winskel, G. – The Formal Semantics of


Programming Languages. An Introduction, M. I. T.
Press, Massachusetts, S. U. A., 1990.

PDF created with pdfFactory Pro trial version www.pdffactory.com

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