vii
Cuprins
Prefaţă
şi
Capitolul 1
Introducere
1
Funcţii booleene
8
§1. Algebre booleene . . . . . . . . . . . . . . . . . . .
14
§2. Teoreme de reprezentare şi forme normale pentru
Capitolul 2
funcţiile booleene . . . . . . . . . . . . . . . . . .
22
§3. Clase speciale de funcţii booleene . . . . .
32
§4. Recapitulare şi Index . . . . . . . . . . . . . . .
39
§5. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . .
41
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:
Capitolul 3
strategii şi restricţii . . . . . . . . . . . . . . . .
105
§9. Recapitulare şi Index . . . . . . . . . . . . . . .
111
§10. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . .
120
Logica (calculul) cu predicate de ordinul I
123
§1. Sintaxa logicii cu predicate de ordinul I . . . . . . . . . . . . . . . . . . . . . .
123
§2. Semantica logicii cu predicate
Capitolul 4
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
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 . . . . . . . . . . . . . . . . . . . . . . . . .
PDF created with pdfFactory Pro trial version www.pdffactory.com
235
Cuprins Capitolul 5
ix Programare logică
238
§1. Exemple de programe logice pure . . . .
240
§2. Sintaxa programelor logice . . . . . . . . . .
249
§3. Recapitulare şi Index . . . . . . . . . . . . . . . 258 §4. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . .
Anexă
260
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
PDF created with pdfFactory Pro trial version www.pdffactory.com
312
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 (
) execută Sf_Cât_timp) şi a celei de asignare ( < =׃valoare>), în descrierea algoritmilor imperativi vom mai folosi selecţia (Dacă () atunci altfel Sf_Dacă) şi instrucţiunea de ciclare cu un număr cunoscut de paşi (Pentru = , , execută Sf_Pentru). Câteodată vom întrebuinţa şi varianta Repetă Până_când () 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
13
Fundamentele logice ale Informaticii
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 bineordonată; î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 (0) FB = B 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
15
Fundamentele logice ale Informaticii
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
0
0
0
0
... 1
...
xn
f(x1, x2, ... , x n)
0
f(0, 0, ... , 0)
...
1
f(0, 0, ... , 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.
Întrebare. Puteţi justifica egalitatea card (FBn) = 2
2n
? ■
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
17
Fundamentele logice ale Informaticii
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 = , 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
21
Fundamentele logice ale Informaticii
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 = 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 = , î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
23
Fundamentele logice ale Informaticii
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
x1, x2, ..., xn ∈ B)
fi n
≥
2
şi
oricare
ar
fi
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
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
fi
(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
27
Fundamentele logice ale Informaticii
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 ) =
∑
α1 ,α 2 ,...,α k ∈B
x 1α1 ⋅ x α2 2 ⋅ ... ⋅ x αk k ⋅ f(α1 , α 2 ,..., α k , x k+1 ,..., x n )
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
∑
α 1 ,α 2 ,...,α k ∈ B
α
α
α
a 1 1 ⋅ a 2 2 ⋅ ... ⋅ a k k ⋅ f(α 1 , α 2 , ..., α k , a k+1 , ..., a n ) α
α
α
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 α
α
1
2
de
produs αk
t = x i 1 ⋅ x i 2 ⋅ ... ⋅ x i
k
este
omis,
sau
supradimensionat)
, unde 0 ≤ k ≤ n, α1, α2, ... , αk ∈ B şi
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) = , 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
29
Fundamentele logice ale Informaticii
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 fiind identice. Vor exista astfel C
k 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 ) =
∑
α1 ,α2 ,...,αn ∈B
x1α1 ⋅ xα2 2 ⋅ ... ⋅ xαn n ⋅ f(α1, α2 ,..., αn )
oricare ar fi valorile lui x1, x2, ... , xn din B şi prin urmare avem:
f(x 1 , x 2 , ... , x n ) =
∑
α 1 ,α 2 ,...,α n ∈ B
x 1α 1 ⋅ x α2 2 ⋅ ... ⋅ x αn n ,
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 ) =
∏
α 1 ,α 2 ,...,α n ∈B
(x 1α 1 + x α2 2 + ... + x αn n ) ,
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 nn
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 = 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
35
Fundamentele logice ale Informaticii
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 = este un inel comutativ cu unitatea 1, izomorf cu inelul claselor de resturi modulo 2 (cele două mulţimi
suport
şi
operaţiile
„corespondente”
PDF created with pdfFactory Pro trial version www.pdffactory.com
se
pot
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
37
Fundamentele logice ale Informaticii
= 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 întradevă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
41
Fundamentele logice ale Informaticii
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) = , 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 = este un inel comutativ cu unitatea 1 şi că el este izomorf cu R = , 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 B
modus ponendo-ponens (pe scurt, modus ponens)
sau
PDF created with pdfFactory Pro trial version www.pdffactory.com
Fundamentele logice ale Informaticii
51
A→B B A
modus tollendo-tollens (pe scurt, modus tollens)
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
•
∧
i=1
Fi este o prescurtare pentru F1 ∧ F2 ∧ ... ∧ Fn.
n
•
∨
i=1
Fi este prescurtarea lui F1 ∨ F2 ∨ ... ∨ Fn .
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
65
Fundamentele logice ale Informaticii
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 F
Formule satisfiabile dar nevalide F
( F)
Contradicţii ( 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 = , 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) (
∧
i=1
Gi ) → G este tautologie.
n
(iii) ( ∧ Gi ) ∧ G este contradicţie. i=1
PDF created with pdfFactory Pro trial version www.pdffactory.com
67
Fundamentele logice ale Informaticii
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
i=1
i =1
presupunem că deşi ( ∧ Gi) → G este tautologie, ( ∧ Gi) ∧ G nu 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
i=1
i=1
rezultă S(( ∧ Gi )) • S( G) = 1, adică S(( ∧ Gi )) = 1 şi
S(G) = 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(( ∧
i =1
n
S(( ∧
i=1
n
Gi)) = 1 şi S(G) = 1. Cum S(( ∧
i=1
Gi)) = 1 şi S(G) = 0, adică n
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
(f) F ≡ F
(legea
69
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
i= 1
j =1
j=1
F = ∧ ( ∨ L i,j ) (notăm Ci = ∨ Li,j , i ∈ [m] ).
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
73
Fundamentele logice ale Informaticii
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
i= 1
j =1
i= 1
j =1
( ∧ ( ∨ L i,j )) ≡ ( ∨ ( ∧ ( L i,j ))) .
Î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
i=1
j =1
G1 = ( ∧ ( ∨ L i,j )) 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
L i,j )) H1 = ( i=∧1 ( ∨ j= 1 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
75
Fundamentele logice ale Informaticii
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 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
……
……
……
……
……
1
1
……
1
vm
2
n
=m
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 Ø). Prin convenţie,
chiar
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
83
Fundamentele logice ale Informaticii
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
85
Fundamentele logice ale Informaticii
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
89
Fundamentele logice ale Informaticii
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
A
A
B
{E, B, B, C} C1
C2 B
{A, E, A, C}
C1
C4 A
A
{E,B,D,E}
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
91
Fundamentele logice ale Informaticii
C2
C3 A
A {B, C, D} B
C1 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
101
Fundamentele logice ale Informaticii
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 An + 1
A
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
Afirmaţie. Dacă F este nesatisfiabilă, atunci atât F0
An + 1
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
103
Fundamentele logice ale Informaticii 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
F0
A
, 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 An + 1
Se procedează similar pentru F1
este nesatisfiabilă.
. (q. e. d.)
A n +1
În acest moment ştim că formulele F0
An +1
şi F1
sunt nesatisfiabile şi,
mai mult, sunt construite peste cel mult n variabile. Aplicând ipoteza inductivă pentru aceste formule rezultă că ∈ Res*( F1
An +1
∈ Res*( F0
A n +1
) şi
). Conform Teoremelor 2.11 şi 2.13, există o respingere
(D0) C1, C2, … , Cl =
A n +1
, pornind cu elementele lui F0
PDF created with pdfFactory Pro trial version www.pdffactory.com
, precum şi o
104
Cristian Masalagiu
respingere (D1) B1, B2, … Bt =
An +1
, 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
105
Fundamentele logice ale Informaticii
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ă cât şi pentru F ( F este satisfiabilă dacă
∉ Res*(F))
∉ 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
109
Fundamentele logice ale Informaticii
{A,B}
{A, B} {A,B} B
B
{A}
{A,B} {A,B} B
B
{A,B}
{A}
A
A
B
B
{A} A
{B}
{A,B}
A
{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
115
Fundamentele logice ale Informaticii
≡ (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
117
Fundamentele logice ale Informaticii
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 ): 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
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
119
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): ∞
∞
i=0
i= 0
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 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() = 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
127
Fundamentele logice ale Informaticii
(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
f
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: Q
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
129
Fundamentele logice ale Informaticii
()
()
(∀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
131
Fundamentele logice ale Informaticii
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 printro 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
135
Fundamentele logice ale Informaticii
•
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
137
Fundamentele logice ale Informaticii
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 cuantorului
sintactice (∃x)
ale
cuantorilor.
este
Domeniul
format
din
sintactic
al
(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
∨ (∃x)
Q
x
(∀y)
()
∨ (∀x)
∧
P
f
Q
z
R
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
141
Fundamentele logice ale Informaticii
§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 = î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 .
•
Dacă P ∈ P n, atunci IS (P) : US → B.
•
Dacă F ∈ F n, atunci IS (F) : US → U S . ■
n
n
Î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 = , 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 = î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
145
Fundamentele logice ale Informaticii
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{=, problema
satisfiabilităţii
pentru
+},
LP1
etc. Vom vedea că
(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 = , î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 = , 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 = , 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 cuvânt w ∈
a = {b, g, f, (, ), ,}, putem defini lungimea, l(w), unui
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
149
Fundamentele logice ale Informaticii
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 = care să fie model pentru F şi o alta H2 = 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 = , 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 (i) S’(( F1 )) =
Cristian Masalagiu
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: 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 = 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 = 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 = 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
159
Fundamentele logice ale Informaticii
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
163
Fundamentele logice ale Informaticii
(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 = , 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’() = fS(). 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’
S’
[z/S(t)](G)
(t)](G)
= 1, adică
= 1. Sintetizând, putem spune că pentru fiecare
u1, … , uk ∈ US = US’, există v ∈ US (v = tS = fS()) 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
167
Fundamentele logice ale Informaticii
Invers, să presupunem că H este satisfiabilă. Fie orice S = , 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’ (
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 = corectă pentru formula dată astfel încât S ‘ F. Arătăm că în acest caz F admite şi un model Herbrand, notat HS = (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() = 1 dacă şi numai dacă PS() = 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 = 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
179
Fundamentele logice ale Informaticii
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
181
Fundamentele logice ale Informaticii
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
183
Fundamentele logice ale Informaticii
{ P(g(b,x)), Q(b)}
{ P(x), P(f(a)), Q(y)} {P(y)} [x/f(a)] [y/b]
[y/f(a)]
[y/g(b,a)]
{ P(f(a)),Q(b)} {P(f(a))} {P(g(b,a))}
{Q(b)}
[x/a]
{ P(g(b,a)), Q(b)}
{ Q(b)}
Conchidem că aspectul LP1 este următorul (subclasele indicate fiind nevide şi disjuncte): Formule satisfiabile, Formule valide
nevalide, având doar model infinit
Formule 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 = ş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 = al lui F avem | US | ≥ 3. ■ Teorema 3.19. Există o formulă satisfiabilă F ∈ LP1=, astfel încât pentru fiecare model S = 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 întradevă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
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
189
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 = date prin: •
US = N, PS = { | m, n ∈ N, m < n}.
•
US = N, PS = {< m, m+1> | m ∈ N}.
•
US = 2N, PS = { | 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
197
Fundamentele logice ale Informaticii
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 = 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 = 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 = 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’
= , 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 = 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: r:
C1 , C 2 . 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
203
Fundamentele logice ale Informaticii
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). 1I.
F → G, F . G
2I.
F . (∀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
205
Fundamentele logice ale Informaticii
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ă întrun 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’ = ) 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’ = şi dorim să vedem dacă Th(SD’ ) este întradevăr o teorie logică, sau, mai mult, dacă Cs(A’ ) = Th(SD’ ). Definiţia 4.5. Un sistem de demonstraţie SD’ = 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’ = 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’ = î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 = , 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
215
Fundamentele logice ale Informaticii
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 va fi orice mulţime D dotată cu o lege de compoziţie internă ○ astfel încât 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: ....... .......
A1
....... .......
......
A2
....... .......
......
B
ipoteze, anulate sau neanulate
An
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. 1. (EN)
B, B , c: se anulează ipoteza A. A
2. (IN)
B, B , c: se anulează ipoteza A. A
3. (EC)
A∧B A∧B şi . A B
4. (IC)
A, B A, B şi . A∧B B∧ A
5. (E∀)
(∀x )A . A[x/t]
6. (I∀)
A . (∀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: 7. (ED)
A ∨ B, A A ∨ B, B şi . B A
8. (ID)
A A şi . A∨ B B∨ A
9. (EI)
A, A → B . B
10. (II)
B , c: se anulează ipoteza A. A→ B
11. (EE)
A⇔B A⇔B şi . A→B B→ A
12. (IE)
A → B, B → A . A⇔B
13. (E∃)
(∃x)A, B , B
c: se anulează ipoteza A din subarborele
având rădăcina acest B.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Fundamentele logice ale Informaticii
14. (I∃)
15. (DN)
223
A[x/t] . (∃x)A A A ş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
A
1
2 C
B C
3
(i)
3
(iii)
B∧C
A∧C ( A ∧ C)
( B ∧ C) (iv)
(ii)
A
1
B
(v)
A∧B
2
( 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
227
Fundamentele logice ale Informaticii
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”. 1. ( ⇒)
U ⇒ V ,A . U , A ⇒ V
2. (∧ ⇒)
U , A, B ⇒ V . U, A ∧ B ⇒ V
3. (⇒ )
U,A ⇒ V . U ⇒ V , A
4. (⇒ ∧)
U ⇒ V , A;U ⇒ V , B . U ⇒ V,A ∧ B
5. (∀ ⇒)
U , (A)[x/t] ⇒ V . U , (∀x)Α ⇒ V
6. (⇒ ∀)
U ⇒ V, A . U ⇒ V , (∀x)Α
7. (RT)
U , A ⇒ V ;U ⇒ V , A . 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: 8. (∨ →)
U , A ⇒ V; U , B ⇒ V . U,A ∨ B⇒ V
9. (→ ∨)
U ⇒ V , A, B . U ⇒ V ,A ∨ B
10. (→ ⇒)
U ⇒ V , A; U , B ⇒ V . U,A → B⇒V
11. (⇒ →)
U,A ⇒ V,B . U ⇒ V,A → B
12. (↔ ⇒)
U , A, B ⇒ V ;U ⇒ V , A, B . U,A ↔ B⇒ V
13. (⇒ ↔)
U , A ⇒ V , B;U , B ⇒ V , A . U ⇒V,A ↔ B
14. (∃ ⇒)
U, A ⇒ V . U ,(∃x ) A ⇒ V
PDF created with pdfFactory Pro trial version www.pdffactory.com
231
Fundamentele logice ale Informaticii
U ⇒ V , A[x/t] . U ⇒ (∃x)A,V
15. (⇒ ∃)
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 , A → B, B ⇒ V
U ⇒ V , A, B
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: (RS)
F(A1 , A 2 ,..., A n ) 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
239
Fundamentele logice ale Informaticii
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
241
Fundamentele logice ale Informaticii
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
243
Fundamentele logice ale Informaticii
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,
{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
Mere)},
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
(obţinere
245
). 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
G2 = {Gp+1, G
Q2 şi p+2,
şi Qn”.
...
… , G
p+q}
PDF created with pdfFactory Pro trial version www.pdffactory.com
Notăm
cu
mulţimea (finită a)
251
Fundamentele logice ale Informaticii
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 = . ■
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, x), place(x, Vinuri)}
{ place(Adam, y)}
[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
257
Fundamentele logice ale Informaticii
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
259
Fundamentele logice ale Informaticii
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 = .
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
263
Fundamentele logice ale Informaticii
„♦” î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 a
anterior este: 1 b,c 3
2 d 4
e,c
¸
5 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
265
Fundamentele logice ale Informaticii
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: a
b,c
b
e
d
c
◊
♦
◊ 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 = î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 = 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
269
Fundamentele logice ale Informaticii
, 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
271
Fundamentele logice ale Informaticii
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
Obiecte care satisfac p
273
Obiecte care satisfac q
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 () 0000
A 00000
()
001
∧
0010
B 00100
C 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
275
Fundamentele logice ale Informaticii
∨∨()
0
00 ()
∧ ()
01
000 A
B 010
C 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
279
Fundamentele logice ale Informaticii {B, C}
{B, C}
{B}
{ A, C}
{ A}
{ C}
{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
(
∧
i =1
Gi ) ∧ G este nesatisfiabilă. O respingere poate fi descrisă mai
pe scurt şi prin graful:
PDF created with pdfFactory Pro trial version www.pdffactory.com
281
Fundamentele logice ale Informaticii
( 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 ) =
* 0, k = 2i, i ∈ N
, avem
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
283
Fundamentele logice ale Informaticii 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 = , 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
P
S[x/u][y/v]
(x
S[x/u][y/v]
, y
S[x/u][y/v]
, f
S[x/u][y/v]
(z
S[x/u][y/v]
))) = 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
285
Fundamentele logice ale Informaticii
P
S [x/u][y/v][z/w]
şi P
(x, y) = 1 şi P
S [x/u][y/v][z/w]
S [x/u][y/v][z/w]
(z, y) = 1 şi P
S [x/u][y/v][z/w]
(x, z) = 1
(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 = , unde US = N, PS = {| m, n ∈ N cu m 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: (1)
u0 = u 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: ∈ PS , ∈ PS, ……………… ∈ PS, ∈ PS, ……………… ∈ 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 ∈ PS. Dar ui = uj şi atunci ∈ PS. Prin urmare, există măcar un element – şi anume ui – în US astfel încât ∈ 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
289
Fundamentele logice ale Informaticii
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
291
Fundamentele logice ale Informaticii
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
A ∨ C , B ⇒ B ∨ D, C
( A ∨ C ) ∧ ( A → B ), D ⇒ B, D
( A ∨ C ) ∧ ( A → B), D ⇒ B ∨ D
C ⇒ B ∨ D, A, C
A ∨ C ⇒ B ∨ D, A, C
A ∨ C , A → B ⇒ B ∨ D, C
( 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
293
Fundamentele logice ale Informaticii
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)
← q(X,Y1), p(Y1,b)
← p(b,b)
p(X 1,Z1) ← q(X1,Y1), p(Y1,Z1) [X1/X]•[Z1/b]
q(a,b) ← [X/a]•[Y1/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
295
Fundamentele logice ale Informaticii
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)
tata(ion,Z), mama(Z,petru)
tata(Z, petru)
[Z/maria]
mama(Z,petru)
tata(ion,Z)
[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
(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
299
300
Cristian Masalagiu
(5)
C8
C '2
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
301
Fundamentele logice ale Informaticii
(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))}}
{ P(a), Q(a), R(a), R(f(a))}
{ P(a), R(a), R(f(a))}
{ P(a), R(f(a))}
C8
C7
C6
C10 = {R(f(a))}
PDF created with pdfFactory Pro trial version www.pdffactory.com
C 2"
302
(9)
Cristian Masalagiu
C4
C "3
L = ({ S(y), S(f(a))}) [y/f(a)] { P(f(a)), R(f(a))}}
{ P(f(a))}
C10
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
303
Fundamentele logice ale Informaticii
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
307
Fundamentele logice ale Informaticii
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
309
Fundamentele logice ale Informaticii
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]
[AND]
[BIE]
[BIR]
[BOL]
[BÖR] [CAZ1] [CAZ2] [COR]
[COT] [CRO]
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. Andrews, J., H. – Logic Programming: operational Semantics and Proof Theory, Cambridge Unversity Press, Anglia, 1992. 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. Birkhoff, G. – Latice Theory, A.M.S. Colloquium Publications, Vol. 25, Providence, Rhode Island, S. U. A., retipărit în 1984. Bolc, L., Borowik, P. – Many-Valued Logics, 1, Theoretical Foundations, Springer Verlag, Berlin, Germania, 1992. Börger, E. – Computability, Complexity, Logic, North Holland, Amsterdam, Olanda, 1989. Cazacu, C., Slabu, V. – Logică matematică, Editura Stefan Lupaşcu, Iaşi, România, 1999. Cazacu, C. – Teoria calculabilităţii efective, Editura Universităţii „Al. I. Cuza”, Iaşi, România, 1996. 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). Cotelea, V. – Programarea în logică, Editura NESTOR, Chişinău, Republica Moldova, 2000. 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
Dicţionarul explicativ al limbii române, Editura Univers Enciclopedic, Bucureşti, România, 1998. Manualele de Algebră clasele a X-a, a XI-a, a XII-a, [DID] Analiză, clasele IX-XI, Editura Didactică şi Pedagogică, Bucureşti, România, 2003. Dijkstra, E. W. – A Discipline of Programming, [DIJ] Prentice Hall, Englewood Clifs, S. U. A., 1976. Girard, J. J. – Linear Logic, Theoretical Computer [GIR] 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şc, C., Prună, M. – Bazele informaticii, Editura [IVA] PETRION, Bucureşti, România, 1995. Jucan, T., Andrei, Ş. – Limbaje formale şi teoria [JUC] 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. Lucanu, D., Jucan, T. – Programarea [LUC] 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. [DEX]
PDF created with pdfFactory Pro trial version www.pdffactory.com
313
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. Richman, F. (Ed.) – Constructive Mathematics [RIC] (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öning, U. – Logic for Computer Scientists, [SCH] Birkhäuser, Berlin, Germania, 1989. Segerberg, K. – A Completeness Theorem in the [SEG] Modal Logic of Programs, Preliminary Report, Notices of the A. M. S., Vol. 24, No. 6, A-552, S.U.A. Sorin, T. – Tehnici de programare, Editura TEORA, [SOR] Bucureşti, România, 1994. Ţiplea, F. L. – Introducere în teoria mulţimilor, [ŢIP] 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
[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
315