vii
viii
Cuprins
Prefaţă
Cuprins §8. Rafinări ale rezoluţiei:
şi
Capitolul 1
Introducere
1
Funcţii booleene
8
§1. Algebre booleene . . . . . . . . . . . . . . . . . . .
14
Capitolul 3
105
§9. Recapitulare şi Index . . . . . . . . . . . . . . .
111
§10. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . .
120
Logica (calculul) cu predicate de ordinul I
123
§1. Sintaxa logicii cu predicate
§2. Teoreme de reprezentare şi
de ordinul I . . . . . . . . . . . . . . . . . . . . . .
forme normale pentru
Capitolul 2
strategii şi restricţii . . . . . . . . . . . . . . . .
funcţiile booleene . . . . . . . . . . . . . . . . . .
22
§3. Clase speciale de funcţii booleene . . . . .
32
§4. Recapitulare şi Index . . . . . . . . . . . . . . .
39
§5. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . .
41
§2. Semantica logicii cu predicate
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
123
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 . . . . . . . . . . . . . . . . . . . . . . . . .
235
Cuprins Capitolul 5
ix Programare logică
238
§1. Exemple de programe logice pure . . . .
240
§2. Sintaxa programelor logice . . . . . . . . . .
249
Capitolul 1 Funcţii booleene
§3. Recapitulare şi Index . . . . . . . . . . . . . . . 258 §4. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . .
260
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
Anexă
codomeniu) aparent simple, au proprietăţi locale şi globale foarte utile.
Rezolvarea exerciţiilor şi exerciţii propuse
267
Teoria dezvoltată pentru ele constituie de fapt baza conceptuală şi
§1. Rezolvări Capitolul 1 . . . . . . . . . . . . . .
267
concretă a semanticii logicii propoziţionale în sens clasic (şi nu numai).
§2. Rezolvări Capitolul 2 . . . . . . . . . . . . . .
272
§3. Rezolvări Capitolul 3 . . . . . . . . . . . . . .
282
§4. Rezolvări Capitolul 4 . . . . . . . . . . . . . .
288
adunarea modulo 2) şi opus, în disjuncţie, respectiv negaţie (ca
§5. Rezolvări Capitolul 5 . . . . . . . . . . . . . .
292
operaţii cu valori de adevăr), etc., multe rezultate din logică pot fi
§6. Exerciţii propuse . . . . . . . . . . . . . . . . . .
302
ulterior deduse printr-o simplă „traducere”. Anumite noţiuni şi
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
proprietăţi specifice funcţiilor booleene nu sunt direct şi neapărat Bibliografie
312
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.
Fundamentele logice ale Informaticii
9
10
Cristian Masalagiu
Prin specificarea unei proprietăţi caracteristice. A = {x R |
Soluţia adoptată pentru această a treia cale de descriere a unei
| x2 + 9x – 8 = 0}, este mulţimea rădăcinilor reale ale unei
mulţimi are avantajul de a avea şi o caracteristică de natură
ecuaţii polinomiale de gradul al II-lea.
(semi)algoritmică. Acceptăm astfel paradigma imperativă propusă de
Mai există o modalitate de specificare, care, fără a fi fost tratată în mod
D. Knuth ([KNU]), Algoritm = Date + Operaţii. Mai exact, un
explicit, a fost totuşi suficient de des utilizată (în ideea constructivistă,
algoritm (imperativ) reprezintă o secvenţă finită de paşi (instrucţiuni),
[CAZ2], [RIC]). Aceasta poate fi descrisă pe scurt astfel: A este cea
care descriu operaţii precise asupra unor informaţii (date) iniţiale (de
mai mică mulţime care conţine elementele ... şi care este închisă la
intrare) sau intermediare (de lucru, temporare), în vederea obţinerii
operaţiile ... . De exemplu, dacă notăm cu 0 cel mai mic (primul) număr
unor informaţii (rezultate) finale (de ieşire). Paşii se execută (operaţiile
natural şi, pentru fiecare n, număr natural, cu s(n) succesorul său
se efectuează în mod concret) în ordinea scrierii lor în secvenţă. Un
imediat, mulţimea N poate fi definită (în ideea de mai sus) constructiv
algoritm calculează o funcţie sau rezolvă o problemă ([CRO],
sau structural (ea este de fapt o mulţimebine-ordonată, [ŢIP]), astfel:
[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
Baza. 0 N (zero este număr natural).
care îşi are originea problema pe care vrem să o rezolvăm), iar datele de
Pas constructiv (structural). Dacă n N, atunci s(n) N (dacă n
ieşire sunt elemente din codomeniul funcţiei (respectiv, soluţiile
este număr natural, atunci succesorul său imediat este număr natural).
problemei). Un algoritm se termină pentru toate intrările admise, prin
Nimic altceva nu mai este număr natural.
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
Prin urmare, N este o mulţime care conţine (iniţial) elementul numit 0.
lua uneori în considerare şi algoritmi care nu se termină pentru toate
Se introduc apoi elemente noi folosind elemente „vechi” (deja existente
intrările, pe care-i vom numi semialgoritmi (proceduri). Un
în mulţime) şi simbolul (operatorial) s. Procesul continuă cât timp este
(semi)algoritm poate fi descris sub mai multe forme, printre care se
posibil (în cazul de mai sus, el continuă „la infinit”). Pentru ca N să fie
numără şi pseudocodul (limbaj intermediar între limbajul natural şi un
într-adevăr cea mai mică mulţime construită în felul descris, am
limbaj de programare comercial). Astfel, definiţia constructivă a lui N
adăugat, în plus faţă de Bază şi Pasul constructiv, condiţia nimic
poate deveni, în limbaj algoritmic (pseudocod, [IVA]):
altceva nu mai este număr natural (în cele ce urmează, ultimul text va fi implicit presupus a fi prezent.
Fundamentele logice ale Informaticii
11
12
Cristian Masalagiu
[LUC]). Revenind la definiţiile constructive – care „ascund” şi ideea de Intrare: -.
recursivitate în programare - ele au şi alte avantaje. Un prim avantaj
Ieşire: N.
este acela că se poate folosi aceeaşi metodă pentru a introduce alte
Metodă:
definiţii, care sunt legate de mulţimea respectivă în totalitatea ei. Putem
Pas 1: N = {0}.
da astfel o definiţie constructivă (recursivă) a adunării numerelor
Pas 2: Cât_timp (este posibil) execută
naturale, pe care o vom folosi de altfel în Capitolul 5, după cum
Pas 3: Alege n N.
urmează.
Pas 4: N = N U {s(n)}. Sf_Cât_timp.
Baza: x + 0 = x, pentru fiecare x N (a aduna 0 la orice număr natural înseamnă a-l lăsa neschimbat).
Desigur că în cele de mai sus 0 putea fi introdus „din exterior”, adică în
Pas constructiv: x + s(y) = s(x + y), pentru fiecare x, y N (dacă ştim
Intrare. Înafara instrucţiunii de ciclare cu un număr necunoscut de
să calculăm x + y şi cunoaştem succesorul imediat al numărului natural
paşi (Cât_timp (
) execută Sf_Cât_timp) şi a
y, atunci ştim să calculăm şi suma x + s(y); mai exact, aceasta coincide
celei de asignare ( = ), în descrierea algoritmilor
cu succesorul imediat al numărului care reprezintă suma x + y).
imperativi vom mai folosi selecţia (Dacă () atunci altfel Sf_Dacă) şi instrucţiunea de ciclare cu un număr
Un al doilea – şi cel mai important – avantaj este posibilitatea folosirii
cunoscut de paşi (Pentru = , ,
în demonstraţii a principiului inducţiei structurale:
execută Sf_Pentru). Câteodată vom întrebuinţa şi varianta Repetă Până_când ()
Fie A o mulţime definită constructiv, A’ ⊆ A mulţimea elementelor
Sf_Repetă pentru o instrucţiune de ciclare. Presupunând că
iniţiale (definite prin pasul Baza al definiţiei) şi P o afirmaţie care
semnificaţia intuitivă a instrucţiunilor de mai sus este cunoscută de
trebuie demonstrată pentru toate elementele lui A. Acceptăm că P (a)
către cititor, vom mai face precizări şi completări pe parcursul lucrării
este adevărată pentru fiecare a ∈ A dacă şi numai dacă:
legate de conceptul de algoritm, cum ar fi prezentarea pe scurt a
1. (Baza.) Arătăm că P(a) este adevărată pentru fiecare a ∈ 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],
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ă
13
Fundamentele logice ale Informaticii
14
Cristian Masalagiu
scriem acest lucru prin b = f(a1, a2, ... , a n), deşi relaţia dintre
Noţiunile de axiomă, teoremă, regulă de inferenţă, demonstraţie,
elementele vechi şi cele noi nu este întotdeauna de natură funcţională)
raţionament, sunt utilizate în acest capitol la modul informal/descriptiv,
şi presupunem că este adevărată P(ai) pentru fiecare ai ∈ {1, 2, ..., n}.
ele urmând a fi precizate în capitolele următoare.
Arătăm că este adevărată P(b).
§1. Algebre booleene Observaţie. Principiul inducţiei matematice (naturale) aşa cum este
Se presupun cunoscute noţiunile şi notaţiile de bază din
el cunoscut din matematica de liceu, este un caz particular al
matematica
de
liceu.
În
plus,
submulţimea
lui
N,
principiului inducţiei structurale (după cum se observă imediat).
{1, 2, ... ,n} se va nota şi cu [n], iar pentru indicarea unui element al
Folosim cuvântul principiu în loc de teoremă (care trebuie să aibă şi o
unui produs cartezian (numit şi tuplu sau n-uplu în cazul în care
demonstraţie aferentă) deoarece în cele de mai sus doar stipulăm că
numărul n de componente este cunoscut) se vor folosi parantezele
formulele (n)P(n) şi respectiv P(0) (n)(P(n) implică P(n+1))
ascuţite, nu cele rotunde (exceptând cazul în care este vorba de
sunt tare echivalente (în sensul care va fi precizat în Capitolul 2). În
aplicarea unei funcţii unui tuplu).
cele de mai sus, P(0) poate fi înlocuit şi cu orice P(k), k – număr
Notăm cu B mulţimea {0, 1} şi cu FB(n) = {f | f : Bn B}, Bn
natural fixat, deoarece şi submulţimea lui N, {k, k + 1, ... } este bine-
reprezentând produsul cartezian al lui B cu el însuşi, luat de n N ori
ordonată; în acest caz, locul lui (n) este luat de (n k)).
(Bn = B B ... B). FB(0) va coincide cu B, prin convenţie. Vom
Echivalenţa amintită, deşi adevărată în anumite situaţii („structuri”)
pune deci: FB FBn n 0 FB(0) B
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 n
corectitudinii algoritmilor imperativi, sau metoda inducţiei asupra
Observaţie. card(FBn) = 2 2 . Cardinalul unei mulţimi A va mai fi
unei demonstraţii ([WIN]), folosită pentru demonstrarea unor teoreme
notat, atunci când nu există confuzii şi cu |A|. Mai mult, dacă atât
de tip „corectitudine şi completitudine”. ■
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
15
Fundamentele logice ale Informaticii
16
Cristian Masalagiu
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:
x
c0
c1
1B
¯
x1
x2
0
0
0
0
... 1
xn
f(x1, x2, ... , x n)
0
0
1
0
1
0
f(0, 0, ... , 0)
1
0
1
1
0
...
1
f(0, 0, ... , 1)
...
...
...
...
Pentru n = 2, din totalul celor 16 funcţii de două variabile posibile
1
1
1
f(1, 1, ... , 1)
(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 | Se mai observă că am folosit o ordine standard pe Bn , de unde
(anticonjuncţia sau operaţia lui Sheffer):
se poate deriva o ordine standard pentru valorile din codomeniul funcţiei. Acest lucru face posibilă o reprezentare a funcţiilor booleene
x
y
x+y
x•y
x⊕y
x|y
ca numere în baza 2 şi (desigur) ca numere în baza 10.
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. Puteţi justifica egalitatea card (FBn) = 2
2
n
? ■
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:
Î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
17
Fundamentele logice ale Informaticii
18
Cristian Masalagiu
similar cu cazurile cunoscute ale grupului, inelului sau corpului, tuplul
Legile (numite impropriu şi axiome) de mai sus nu reprezintă
B = < B, •, +, ¯ > formează o algebră booleană, sau algebră Boole
identităţi, ele trebuind să fie înţelese ca nişte ecuaţii satisfăcute pentru
(după numele matematicianului G. Boole, 1815 – 1864). ■
toate valorile variabilelor x, y, z, care sunt nume generice pentru elemente oarecare din M. Fiecare dintre cei doi membri reprezintă de
Definiţia 1.1. Se numeşte algebră booleană un 4-uplu M ,
fapt (expresiile unor) funcţii booleene (numărul de argumente fiind dat
M = , format din orice mulţime nevidă M (suportul
de numărul de nume de variabile distincte care apar în intreaga ecuaţie).
algebrei) două operaţii binare , : M M M şi o operaţie unară ~ : M M, care satisfac condiţiile (legile):
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
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
substituţie va fi demonstrată în capitolul următor, în contextul logicii
faţă de )
formale.
4) (x y) y = y
absorbţie
5) (x (~x)) y = y
legea contradicţiei
şi respectiv
adevărate şi dacă înlocuim (textual) orice apariţie a unei funcţii (subexpresii) prin altă functie (subexpresie). O asemenea Teoremă de
Î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
1’) x y = y x.
comutativitate (a lui )
care sunt reprezentate fie prin axiome (Baza definiţiei structurale), fie
2’) (x y) z = x (y z)
asociativitate (a lui )
obţinute din axiome printr-un anumit raţionament utilizând reguli de
3’) x (y z) = (x y) (x z)
distributivitate (a lui
inferenţă (Pasul constructiv: cu ajutorul regulilor se obţin afirmaţii
faţă de )
noi, numite şi teoreme, din afirmaţii vechi), putem defini dualele lor,
4’) (x y) y = y
absorbţie
Aδ, în felul următor: Aδ se obţine din A prin înlocuirea simultană
5’) (x (~x)) y = y
legea tautologiei
(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
19
Fundamentele logice ale Informaticii
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
20
Cristian Masalagiu
Întrebare. Puteţi arăta că funcţia f(x, y, z) = x ⊕ y ⊕ z este autoduală ? ■
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ă
Teorema 1.1. Tuplul B = < B, •, +, ¯ > este o algebră booleană şi
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,
pentru fiecare x B avem x•( x ) = 0 şi x + ( x ) = 1.
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
că sunt adevărate doar axiomele 1) – 5) şi x•( x ) = 0 (în cazul nostru,
δ δ
este şi idempotentă (avem (o ) = o, pentru fiecare obiect o), existând şi δ
obiecte autoduale, adică obiecte care satisfac o = o (de exemplu, (3)
funcţiile 1 B, ¯ şi f FB , dată prin f(x, y, z) = x y z, sunt
Demonstraţie. Conform principiului dualităţii, este suficient să arătăm 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:
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
x
y
x•y
(x • y) + y
y
care se obţine o teoremă A, orice axiomă cu duala ei, vom găsi un
0
0
0
0
0
raţionament (dual), prin care se obţine (deduce, demonstrează)
0
1
0
1
1
afirmaţia Aδ. Este justificat atunci să adoptăm principiul dualităţii
1
0
0
0
0
pentru B (care, la o privire atentă, este şi el un caz particular al
1
1
1
1
1
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ă
şi respectiv: x
x
x • (x )
0
1
0
1
0
0
duala sa Aδ este adevărată. Adevărul axiomei 4) rezultă din primul tabel prin compararea penultimei coloane (care este membrul stâng al ecuaţiei) cu ultima
21
Fundamentele logice ale Informaticii
22
Cristian Masalagiu
coloană (membrul drept), linie cu linie. Se observă imediat că acestea
O latice (şi aici sunt mai multe accepţiuni matematice ale termenului şi
coincid, adică funcţiile date de expresiile respective sunt egale (două
câteva definiţii echivalente pentru o aceeaşi accepţiune) este un triplet
funcţii sunt egale dacă au acelaşi domeniu şi codomeniu şi valorile lor
M = , în care ambele operaţii satisfac proprietăţile de
coincid pe fiecare valoare a argumentului). Similar pentru x•( x ) = 0 şi
idempotenţă, comutativitate, asociativitate şi absorbţie.
cel de-al doilea tabel, cu observaţia că nu am mai explicitat coloana
orice latice (deci şi în orice algebră booleană), se poate defini o relaţie
care reprezintă membrul drept (şi care este de fapt expresia funcţiei c0).
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ă
În plus, în
acestui fapt, o latice se mai defineşte şi ca fiind o mulţime parţial O algebră booleană cunoscută este dată de mulţimea părţilor
ordonată (poset) în care toate submulţimile finite, nevide, admit măcar
V
(submulţimilor) unei mulţimi oarecare V, notată 2 , împreună cu intersecţia,
reuniunea
şi
complementara
faţă
de
o cea mai mică margine superioară (l.u.b., ) şi o cea mai mare
V,
V = < 2 V, ∩, U, CV>. Observaţie. Conceptul de algebră booleană este prezent în matematică
margine inferioară (g.l. b., ). ■
prin mai multe definiţii, nu toate echivalente în orice context ([BIR]).
§2. Teoreme de reprezentare şi forme normale pentru
Să menţionăm faptul că o definiţie echivalentă cu Definiţia 1.1 este:
funcţiile booleene Într-o algebră booleană (în particular, în B ) sunt valabile şi alte
O algebră booleană este o latice M = care satisface
teoreme. Ele pot fi demonstrate fie utilizând tabelele de adevăr, fie
condiţiile suplimentare:
construind un raţionament, adică pornind de la axiome (şi/sau de la alte
Există (măcar) un prim element, 0 M, astfel încât x 0 = x.
teoreme, demonstrate anterior) şi utilizând anumite reguli de inferenţă.
Există (măcar) un ultim element, 1 M, astfel încât x 1 = x.
Sumarizăm câteva dintre ele în tabelul următor (teoremele sunt notate
Operaţia este distributivă faţă de operaţia .
cu 6) – 13) iar dualele lor respectiv cu 6’) – 13’); am neglijat uneori, de
Pentru fiecare x M, există un element x M (numit şi
exemplu în 13) şi 13’), scrierea lui •).
complementul lui x), astfel încât x x = 1 şi x x = 0.
23
Fundamentele logice ale Informaticii
24
Cristian Masalagiu
comutativităţii, distributivităţii, precum şi cu alte teoreme, etc. Afirmaţiile 13) şi 13’) se mai numesc legile lui deMorgan.
6) x = x
6’) x = x
7) x• x = 0
7’) x + x = 1
8) x•x = x
8’) x + x = x
Exerciţiul 1.1. Să se demonstreze adevărul afirmaţiilor care urmează
9) x•0 = 0
9’) x + 1 = 1
folosind atât tabelele de adevăr cât şi raţionamente, implicând axiome
10) x•1 = x
10’) x + 0 = x
(sau alte afirmaţii, demonstrate în prealabil) şi reguli de inferenţă
11) x1•x2•…•xn = 0 dacă şi 11’) x1 + x2 + … + xn = 1 dacă
(deducţie, demonstraţie), cunoscute din matematica de liceu (de
numai dacă există i[n] astfel şi numai dacă există i[n]
exemplu, cele legate de faptul că egalitatea este o relaţie de
încât xi = 0 (oricare ar fi n 2 astfel încât xi = 1 (oricare ar fi
echivalenţă, adică este reflexivă, simetrică şi tranzitivă):
şi
oricare
ar
x1, x2, ..., xn B)
fi n
2
şi
oricare
ar
fi
b) x•(x + y ) = x.
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
a) 11) din tabelul anterior.
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
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.
(oricare ar fi n 2 şi oricare ar (oricare ar fi n 2 şi oricare ar
a) Procedăm prin inducţie matematică, afirmaţia de demonstrat fiind
fi x1, x2, ..., xn B)
(n N)(n 2 implică P(n)), unde:
fi x1, x2, ..., xn B)
P(n): (x1, x2, ..., xn B)( x1•x2•…•xn = 0 dacă şi numai dacă Tabelul 1.1.
(i [n])(xi = 0)). Baza. n = 2. Se folosesc 9) şi 10) din 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,
Fundamentele logice ale Informaticii
25
26
Cristian Masalagiu
Pas inductiv. Să presupunem că pentru (orice) k 2 şi oricare elemente
Folosind comutativitatea şi distributivitatea, rezultă că trebuie să arătăm
x1, x2, ..., xk B avem:
x + y•(x + x ) = x + y. Aplicăm acum 7’) şi apoi 10) (Tabelul 1.1),
x1•x2•…•xk = 0 atunci şi numai atunci când există i[k] astfel încât
pentru a obţine ceea ce se cere.
xi = 0.
e) x + x•y = x + y. În relaţia precedentă se înlocuiesc toate apariţiile
Să presupunem faptul că este adevărată P(k) şi să arătăm că P(k + 1)
lui x cu x şi se foloseşte apoi 6).
este adevărată. Fie orice element din B, notat xk+1 şi să notăm
f) x•( x + y) = x•y. Se folosesc - în ordine – distributivitatea, afirmaţia
y = x1•x2•…•xk. Atunci avem de demonstrat că este adevărată afirmaţia
7) (Tabelul 1.1), comutativitatea şi 10’) (Tabelul 1.1).
y•xk+1 = 0 dacă şi numai dacă există i[k + 1] astfel încât xi = 0,
g) x •(x + y) = x •y. Din nou, se înlocuiesc simultan toate apariţiile lui
ceea ce este echivalent cu a arăta că:
x cu x în relaţia precedentă şi se aplică 6). ■
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
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”
urmează acum imediat, prin aplicarea lui 10) (Tabelul 1.1).
1 ataşată unei expresii o lasă neschimbată, iar „puterea” 0
c) x + x•y = x. Rezultă din ultima parte a demonstraţiei anterioare.
„adaugă” o bară). Să remarcăm că indicii superiori precedenţi nu se
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.
îi
supun principiului dualităţii (de exemplu, nu este adevărat că (x1 = x) δ coincide cu (x0 = x)).
27
Fundamentele logice ale Informaticii
28
Cristian Masalagiu
Teorema 1.2 ([CAZ1], de descompunere, în sumă de „termeni”).
α1 , α2 , ... αk (ca argumente ale lui f) se înlocuiesc cu aceleaşi elemente,
Pentru fiecare n N*, f FB(n) şi fiecare k [n], avem:
dar barate.
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 )
distincte (putem nota mulţimea acestora cu X = {x1, x2, ... , xn}, ideea
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
Definiţia 1.2. Fie n N* şi x1, x2, ... , xn B variabile (booleene)
a1α1
aα2 2
... aαk k
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
va fi egal cu 1,
ordinea precizată.
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
Observaţie. Între mulţimea termenilor n-ari t (peste X) şi mulţimea
este egală exact cu f(a1, a2, ... , an). ■
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,
Este adevărată şi teorema duală (de descompunere, în produs de
dată de g(t) = , unde, pentru fiecare i [n], avem ei = 0
„factori”), ambele rezultate fiind folosite pentru demonstrarea
dacă xi apare barată în t, ei = 1 dacă xi apare nebarată în t şi ei = 2 în rest
existenţei formelor normale pentru funcţiile booleene. În enunţul
(xi nu apare în t). Mulţimea termenilor n-ari consideraţi va avea atunci
teoremei duale, înafara înlocuirii lui + cu • şi a lui Σ cu Π, numele
3n elemente. Raţionând similar pentru cazul maxtermenilor n-ari (în acest caz, nu este posibil ca vreo variabilă considerată să nu apară),
29
Fundamentele logice ale Informaticii
rezultă că există 2n maxtermeni n-ari distincţi (indiferent de numele celor n variabile diferite fixate prin X). ■
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
Consideraţiile de natură combinatorială sunt practic indispensabile în
două sume care diferă doar prin ordinea termenilor, le vom privi ca
vederea obţinerii unor rezultate convenabile.
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ă Î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 ? ■
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 .
Exemplu. Dacă luăm n = 2 şi notăm x1 cu x şi x2 cu y, atunci cei 3 2 = 9
Analog, numărul total al n-FNDP – urilor va fi:
termeni sunt: x, y, x, y, x•y, x •y, x• y, x y, 1. Cei 22 = 4 maxtermeni
n
n
C20n C21n ... C2kn ... C22n 2 2 .
sunt: x•y, x •y, x• y , x y. ■ Teorema 1.3 ([CAZ1]). Orice funcţie booleană se poate „reprezenta” în Î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
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, x2 ,... , 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:
numeşte formă normală disjunctivă perfectă (n-ară, n ∈ N*), sau (n-)FNDP pe scurt, orice sumă de maxtermeni n-ari distincţi. ■
f(x 1 , x 2 , ... , x n ) =
α 1 ,α 2 ,...,α n B
x 1α 1 x α2 2 ... x αn n ,
31
Fundamentele logice ale Informaticii
32
Cristian Masalagiu
oricare ar fi x1, x2, ... , xn B, 1, 2, ... , n B, astfel încât
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
f( α 1 , α 2 , ... , α n ) = 0. ■
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. ■
§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
Prin dualizare se obţin noţiunile de (n-)factor peste X (orice
convenţii; se pot construi „algoritmic”, conform Teoremei 1.3 şi
sumă de n variabile din X, acestea apărând barate sau nu), maxfactor
Teoremei 1.4, etc.), s-ar putea ca din punct de vedere practic să nu fie
(n-ar, peste X) – un (n-)factor în care apar toate variabilele, formă
chiar convenabile. Astfel, ne-am putea pune problema găsirii celei mai
normală conjunctivă (n-ară) ((n-)FNC, adică orice produs de factori
„scurte” forme normale, funcţie de o anumită măsură fixată. Există
dictincţi), formă normală conjunctivă (n-ară) perfectă ((n-)FNCP,
numeroase „măsuri candidat” pentru o FND sau FNC, suficient de
adică orice produs de maxfactori distincţi). Nu uităm că se aplică
simple (vom nota orice asemenea formă prin φ): lungimea ca text
asociativitatea generalizată şi comutativitatea, peste tot, atât pentru
(număr de caractere grafice conţinute, poate chiar excluzând
sumă cât şi pentru produs, astfel încât două sume (produse) nu vor fi
parantezele); numărul de operatori folosiţi (poate chiar exceptând
considerate distincte dacă diferă doar prin ordinea componentelor.
negaţia); numărul de nivele din arborele ataşat; numărul de termeni
Aplicând principiul dualităţii, rezultă că este adevărată şi duala
(factori); numărul de componente „elementare” ale unui termen
Teoremei 1.3, adică:
(factor); numărul total de apariţii ale variabilelor (apariţia unei aceleiaşi variabile pe poziţii diferite se numără distinct), etc. (n)
Teorema 1.4. Fie orice n N*, orice f FB
şi oricare nume
Considerând ultima măsură (pe care o vom nota cu n(φ)), putem numi
distincte de variabile x1, x2, ... , xn. Atunci f se poate reprezenta în mod
formă normală disjunctivă minimală (FNDM) pentru f FB, orice
unic ca o FNCP peste X = {x1, x2, ... , xn}, sub forma:
FND φ’ astfel încât: n(φ’) = min {n(φ) | φ este FND pentru f}.
f(x 1 , x 2 , ... , x n ) =
α 1 ,α 2 ,...,α n B
(x 1α 1 + x α2 2 + ... + x αn n ) ,
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
33
Fundamentele logice ale Informaticii
deoarece – reamintim - pentru fiecare număr natural n numărul
34
Cristian Masalagiu
Funcţiile i pn se mai numesc şi proiecţii. Pentru superpoziţie vom
n
funcţiilor booleene n-are este 2 2 iar numărul formelor disjunctive n3n
utiliza notaţia f = SUP(g, h1, h2, ... , ht), iar M va denota mulţimea
are este 2 ). Problema anterioară este rezolvabilă cu ajutorul
funcţiilor care apar ca elemente în M-şiruri. Pentru fiecare M dat, M
algoritmului lui W. Quine ([CAZ1]). Algoritmul lui Quine intră sub
va fi practic o mulţime definită constructiv, în care E U M constituie
incidenţa principiului dualităţii, astfel încât făcând modificările de
mulţimea funcţiilor de bază iar operatorul de superpoziţie este singura
rigoare el poate determina şi toate formele normale conjunctive
modalitate de a se obţine funcţii noi din funcţii vechi. Prin urmare, M
minimale (FNCM) pentru orice funcţie booleană.
este cea mai mică mulţime care conţine proiecţiile, elementele lui M şi
O problemă similară, prin rezolvarea căreia s-ar putea reduce în
este închisă la superpoziţie. Algebric vorbind, se mai spune că M este
anumite cazuri timpul de procesare a unor texte (expresii, formule,
închiderea prin superpoziţie a mulţimii E U M. M se va numi închisă
etc.), este găsirea unui număr minim de operaţii booleene
dacă coincide cu închiderea sa.
convenabile, cu ajutorul cărora să se „reprezinte” orice funcţie booleană.
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
Definiţia 1.4. Clasa funcţiilor booleene elementare este: n
se află în M.
E = { i | n N*, 1 p n, i : B B,
Demonstraţie. Este imediată din definiţii, demonstraţia reprezintând o
i pn (x1, x2, ... , xp, ... , xn) = xp}.
aplicare directă a principiului inducţiei structurale. Astfel, este suficient
n p
n p
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)).
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
Fie M FB. Se numeşte M-şir orice secvenţă (listă) finită f0, f1, ... , fr
f = SUP(g, h1, h2, ... , ht), avem: Dacă g, h1, h 2, ... , ht ∈ M, atunci
de funcţii booleene în care fiecare fi este fie din E U M fie se obţine
f ∈ M. ■
prin superpoziţie din alte funcţii, aflate în aceeaşi listă dar înaintea lui fi. ■
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
35
Fundamentele logice ale Informaticii
36
Cristian Masalagiu
consulta şi exerciţiile din finalul capitolului, împreună desigur cu
„identifica”). Urmează că orice funcţie booleană se poate
rezolvările din Anexă):
reprezenta unic ca un polinom (eventual, de mai multe
T0: mulţimea funcţiilor booleene de oricâte argumente care
variabile) cu coeficienţi în I. Fie astfel o funcţie booleană f,
păstrează pe 0, adică satisfac f(0, 0, ... , 0) = 0.
despre care ştim deja că se poate scrie ca o sumă (booleană) de
T1: dual, mulţimea funcţiilor care păstrează pe 1, adică satisfac
termeni. Putem acum folosi egalităţile (se pot demonstra uşor,
f(1, 1, ... , 1) = 1.
folosind tabelele de adevăr): x = x 1 şi x + y = x y = δ
Aut: mulţimea funcţiilor autoduale (f = f). Să notăm ca o
= (x1) • (y 1) 1 = x • y x y, precum şi proprietăţile
proprietate de caracterizare interesantă pentru această clasă de
inelelor, pentru a observa că orice FND a lui f devine o sumă
δ
funcţii şi faptul că f (x1, x2, ... , xn) =
f( x1 , x 2 ,..., x n ) . Acest δ
modulo 2 de termeni (care sunt produse de variabile distincte).
lucru se obţine imediat deoarece tabela de definiţie pentru f se
Numărul acestor produse este 2n, deci numărul polinoamelor
obţine din tabela pentru f, înlocuind simultan, peste tot, pe 0 cu
modulo 2 este 2 2 , acelaşi ca şi numărul funcţiilor booleene
1 şi pe 1 cu 0.
n-are (de unde urmează unicitatea reprezentării). Spunem că o
Mon: mulţimea funcţiilor monotone. Pe B putem defini o relaţie
funcţie f FB(n) este liniară dacă reprezentarea sa (unică) sub
de ordine „naturală”: 0 1 (putem pune chiar 0 < 1). Relaţia
formă de polinom modulo 2 are aspectul:
n
precedentă poate fi extinsă „pe componente” la orice produs
c0 c1 • x1 c2 • x2 ... cn • xn, ci B, i [n].
cartezian. Să considerăm două n-uple α = <α1, α2, ... , αn> şi β = <β1, β2, ... , βn>, αi, βi B, i [n]. Vom spune că α β dacă
Observaţie. Se poate arăta că toate mulţimile anterioare sunt nebanale,
şi numai dacă αi βi pentru fiecare i [n] (desigur că vom avea
adică nu coincid nici cu FB, nici cu E, nici cu Ø. ■
α < β dacă şi numai dacă α β şi α ≠ β adică α şi β diferă prin măcar o componentă). O funcţie f FB(n) este monotonă dacă n
Exemplu ([CAZ1]). Funcţia f(x, y, z) = x•z + x •y• z + x • y • z este
pentru fiecare α, β B , din α β rezultă f(α) f(β).
liniară deoarece avem succesiv:
Lin: mulţimea funcţiilor liniare. Se poate arăta mai întâi că
f(x, y, z) =
comutativitate, distributivitate
tripletul I = este un inel comutativ cu unitatea 1,
= x•z + x • z •(y + y ) =
ştim că y+ y = 1
izomorf cu inelul claselor de resturi modulo 2 (cele două
= 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
mulţimi
suport
şi
operaţiile
„corespondente”
se
pot
37
Fundamentele logice ale Informaticii
38
Cristian Masalagiu
= x •z x• z =
folosind a = a ⊕ 1
de dorit să se găsească o cale de mijloc, prin care să se păstreze într-
= x • z (x 1) (z 1) =
distributivitate
adevăr cât mai puţine funcţii într-o bază, dar acestea să fie şi uşor de
= x•z x•z x z 1 =
folosind a ⊕ a = 0
înţeles/manipulat. ■
= x z 1. ■ Acceptăm fără demonstraţie (Teorema 1.7 a fost însă deja 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ă
demonstrată implicit, prin comentariile anterioaree), următoarele rezultate ([CAZ1], această referinţă nefiind sursa primară):
dacă este maximală (adică nici o submulţime proprie a sa nu mai este completă). ■
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,
Observaţie. Se arată relativ simplu că mulţimea {c0, c1, f, •}, unde f
Aut, Mon, Lin. ■
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
Teorema 1.7. Orice bază conţine cel mult patru funcţii şi există baze compuse din una, două, trei şi patru funcţii. ■
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
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ă). ■
{|} 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
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
Fundamentele logice ale Informaticii
39
40
Cristian Masalagiu
de acest tip la mulţimi de cardinal mai mare decât doi (cardinalul lui
poate fi dăunătoare, mărind confuziile care se fac în mod uzual între
B). Importanţa unor asemenea cercetări constă în speranţa reducerii
sintaxă şi semantică sau între limbaj şi metalimbaj.
complexităţii unor algoritmi clasici şi dezvoltării unor teorii similare, implementabile şi care să fie valabile şi pentru logicile neclasice
Indexul (neexhaustiv) este:
multivaluate). definiţia structurală (constructivă) a unei mulţimi, 8
§4. Recapitulare şi Index Teoria funcţiilor booleene constituie suportul pentru semantica
algoritm (imperativ), 9 funcţie calculată de un algoritm, 9
logicii clasice. Înţelegerea problematicii capitolelor următoare va fi
problemă rezolvată de un algoritm, 9
astfel uşurată, anumite paragrafe (cum ar fi cel privind formele
terminarea algoritmilor, semialgoritm, 10
normale) fiind simple transpuneri într-un alt limbaj ale unor concepte şi
pseudocod, 10
rezultate deja întâlnite. Principalele teme abordate au fost:
principiul inducţiei structurale, 11
Reprezentarea funcţiilor booleene. Funcţii booleene particulare
funcţii booleene, 13
importante.
tabele de adevăr, 13
Proprietăţile globale ale clasei funcţiilor booleene. Principiul
algebre booleene, 15
dualităţii. Algebre booleene.
afirmaţii şi obiecte duale, 17
Forme normale pentru funcţiile booleene. Forme minimale.
principiul dualităţii, 18
Mulţimi închise şi (pre)complete de funcţii booleene. Baze.
termen, maxtermen, 27
Deşi ne-am bazat în principal pe cunoştinţele de matematică de
formă normală disjunctivă (perfectă), 28-29
liceu, am fost nevoiţi să abordăm tangenţial – într-un mod intuitiv,
factor, maxfactor, 30
pentru coerenţa materialului – subiecte colaterale cum ar fi cele privind
formă normală conjunctivă (perfectă), 30
algoritmii (imperativi), mulţimile definite structural (constructiv), sau
formă normală disjunctivă (conjunctivă) minimală, 31
principiul inducţiei structurale. Folosirea nediscreţionară, în acest
funcţii booleene elementare, 32
moment, de către cititor a unor termeni introduşi doar informal (cum
mulţime închisă de funcţii booleene, 33
sunt, până acum: axiomă, teoremă, raţionament, demonstraţie, etc.)
mulţime completă (precompletă) de funcţii booleene, 36 bază de funcţii, 36
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.
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:
§5. Exerciţii
x
y
z
f(x, y, z)
0
0
0
0
legilor 1), 2), 3), 5), 1’) – 5’) şi x + ( x ) = 1, utilizând tabelele
0
0
1
1
de adevăr.
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
1
1
1
0
0
1
1
1
1
1. Completaţi demonstraţia Teoremei 1.1, adică arătaţi validitatea
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. 4. Justificaţi egalitatea card(FBn) = 2 2 . n
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
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
ei = 2 în rest (adică xi nu apare în t). De asemenea, arătaţi că
că el este izomorf cu R = , inelul claselor de
există (măcar) o corespondenţă bijectivă între mulţimea
resturi modulo 2.
funcţii
11. Arătaţi că funcţia booleană f(x, y, z) = x y + y z nu este liniară
{f | f : [n] {0, 1, 2}}. Deduceţi că mulţimea termenilor n-ari
(acolo unde nu există confuzii, operatorul • nu va fi scris
n-uplelor
peste
{0,
1,
2}
şi
mulţimea
de
explicit).
44
Capitolul 2 Logica propoziţională (Calculul propoziţional)
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
Manualele de Logică şi Algebră ([BIE], [DID]) pot fi privite ca
unei noţiuni noi înseamnă delimitarea unei noi sfere (sau a unui nou
o introducere (firavă) în logica formală. Şi în alte manuale de
conţinut), ceea ce se poate face de exemplu (există şi alte tipuri
matematică (şi nu numai), sunt prezente frecvent noţiuni ca afirmaţie,
generale de definiţii) prin precizarea unei sfere vechi (care
axiomă, teoremă, raţionament, demonstraţie, etc. Aceste noţiuni sunt
caracterizează complet o noţiune anterior definită, numită gen proxim)
însă descrise sau concepute/receptate/folosite la modul informal: o
şi a unei mulţimi de proprietăţi suplimentare (care nu fac parte din
afirmaţie este orice propoziţie (frază) care poate căpăta o unică valoare
conţinutul vechii noţiuni, dar care – împreună cu acesta – vor alcătui
de adevăr (a – adevărat, f – fals); o axiomă este o afirmaţie care se
noul conţinut), numită diferenţă specifică: un paralelogram este un
acceptă a fi adevărată fără a se cere o demonstraţie a ei; o teoremă este
patrulater convex care are două laturi paralele şi egale; un romb este
o afirmaţie (presupusă a fi adevărată) care se obţine (din axiome sau
un paralelogram cu toate laturile egale; un pătrat este un romb având
teoreme deja acceptate) printr-o demonstraţie (formală), numită şi
un unghi de 90○, ş. a. m. d. În acest mod, „mergând invers”, procesul de
raţionament; o demonstraţie (formală) este transpunerea într-o formă
definire a unor noţiuni ar deveni infinit dacă nu am accepta existenţa
(mai) exactă a unui raţionament; un raţionament este o succesiune
unor noţiuni primare (pentru o mai bună înţelegere se poate recurge şi
(finită) de aplicări ale unor inferenţe (reguli de deducţie); o regulă de
la reprezentări grafice cum ar fi diagramele Venn-Euler – [ŢIP]).
deducţie (inferenţă) are forma: premize/concluzii (atât premizele cât şi
Noţiunile primare nu mai sunt definite prin schema „gen proxim şi
concluziile sunt afirmaţii, ideea fiind aceea că regulile sunt astfel
diferenţă specifică” ci sunt doar descrise cu ajutorul unor elemente
construite încât dacă premizele sunt adevărate atunci şi concluziile sunt
considerate a fi suficiente pentru delimitarea exactă a sferei curente de
adevărate; se mai spune că inferenţele sunt în acest caz valide sau
sfera altor noţiuni (asemenea definiţii sunt cunoscute şi sub numele de
corecte), etc. De altfel, acesta este modul principal prin care se obţin
definiţii operaţionale): o mulţime este o colecţie de obiecte distincte
(constructiv) în ştiinţele exacte noţiuni noi (utilizând definiţiile) şi
două câte două; un punct este ceea ce se obţine prin apăsarea unui vârf
afirmaţii (adevărate) noi (utilizând raţionamentele). Din punctul de
de creion pe o foaie de hârtie, etc. Un proces similar are loc şi în cazul
vedere al logicii filozofice, o noţiune este complet caracterizată de
conceptelor de axiomă (în „rolul” noţiunilor primare), teoremă (în
Fundamentele logice ale Informaticii
45
46
Cristian Masalagiu
„rolul” noţiunilor noi), regulă de inferenţă (în „rolul” diferenţei
sub numele de paradoxuri logice, sunt deja clasificate, împărţite pe
specifice), acceptarea axiomelor ca fiind „advărate fără demonstraţie”
categorii. Nu este simplu să dăm o definiţie unanim acceptată (de altfel,
având desigur scopul de a evita raţionamentele infinite. Aşa cum în
B. Russell a împărţit paradoxurile în şapte categorii, având definiţii
momentul definirii unei noţiuni (noi) trebuie să fim atenţi ca sfera
practic diferite). Pentru unii, un paradox este o afirmaţie care pare să
acesteia să fie nevidă şi (în general) distinctă de sferele unor noţiuni
se autocontrazică, sau poate conduce la o situaţie care contrazice
deja existente (chiar definite operaţional), în cazul raţionamentelor este
bunul simţ. Mai general, este orice afirmaţie surprinzătoare,
de dorit ca axiomele să reprezinte „cu certitudine” afirmaţii
alambicată, contrară intuiţiei, sau, o argumentaţie aparent solidă,
adevărate, iar inferenţele să fie valide (inferenţele trebuie să fie valide
corectă, dar care conduce la o contradicţie. Pentru alţii, este o
pentru a avea raţionamente corecte, adică formate numai din afirmaţii
propoziţie care îşi afirmă propria falsitate, sau, un argument care
adevărate). Din păcate, datorită lipsei unei sintaxe clare pentru
conduce la o concluzie contradictorie deşi începe cu nişte premize
conceptul de afirmaţie (lipsei definiţiilor formale în general), precum şi
acceptabile şi se foloseşte o deducţie validă. Oricum, se acceptă faptul
datorită „amalgamării” consideraţiilor de natură sintactică şi semantică,
că un paradox nu înseamnă acelaşi lucru cu o contradicţie. Astfel,
eşafodajul anterior este destul de şubred putând conduce la apariţia
afirmaţia „Această cămaşă este albastră şi această cămaşă nu este
unor paradoxuri de gândire sau la acceptarea unor „adevăruri” hilare.
albastră” este o contradicţie, dar un paradox va apare atunci când o
Prima parte a capitolului este destinată unei scurte treceri în revistă a
persoană face o anumită presupunere şi apoi, urmând o argumentaţie
unor asemenea anomalii şi introducerii primelor elemente de logică
logică, ajunge la contrariul presupunerii iniţiale. „Nu spun niciodată
(informatică) formală.
adevărul” este considerat un paradox (al mincinosului), deoarece dacă presupunem că propoziţia este adevărată atunci rezultă imediat că ea
§1. Logica, parte a filozofiei
este falsă si reciproc. Mai sus este vorba despre o clasă mai simplă de
Ambiguităţile permise de limbajul natural, acceptarea utilizării unor
paradoxuri (numite şi semantice). Practic, ele ar putea fi „rezolvate”
noţiuni primare sau a unor axiome având conţinut ambiguu în
daca sunt eliminate complet din logica clasică, deoarece pot fi
raţionamente complexe, tratarea simultană a unor probleme de natură
considerate ca afirmaţii cărora nu li poate ataşa o unică valoare de
sintactică împreună cu altele care implică semantica, au creat de-a
adevăr (contradicţiilor nu li se poate practic ataşa nici una!). Un
lungul timpului numeroase confuzii şi interpretări greşite, „bruind”
paradox mai complicat este paradoxul lui B. Russell, legat de teoria
comunicarea inter-umană. Un prim tip de asemenea confuzii, cunoscute
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?”.
Fundamentele logice ale Informaticii
47
48
Cristian Masalagiu
Imediat se obţine că dacă răspunsul este „DA”, atunci R nu se conţine
logice complexe. Aceste raţionamente „elementare” se împart în
pe ea însăşi şi dacă răspunsul este „NU”, atunci R se conţine.
deductive şi inductive, iar cele mai simple inferenţe sunt cele imediate,
Contradicţia provine aici din acceptarea axiomei înţelegerii: „Dacă P
cu propoziţii categorice (fiind formate din două asemenea propoziţii: o
este o proprietate (relaţie, predicat), atunci M = {x | P(x)} este o
premiză, şi o concluzie). Silogismul este tipul fundamental de inferenţă
mulţime” (paradoxul precedent se obţine luînd P(x): „x nu este
deductivă mediată alcătuită din exact trei propoziţii categorice: două
element al lui x”). Matematic vorbind, paradoxul dispare dacă se
premize, dintre care una majoră şi alta minoră, precum şi o concluzie.
renunţă la axioma înţelegerii (mai exact, M de mai sus nu este o
Silogismele se pot de altfel împărţi în ipotetice, categorice, disjunctive,
mulţime, ci o clasă). Un alt paradox, cunoscut încă din antichitate, este
etc. (nu insistăm asupra altor detalii). Un exemplu de silogism
paradoxul lui Ahile şi broasca ăestoasş , atribuit lui Zenon: „Ahile şi o
(categoric, corect) este:
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,
Premiza majoră: Toate elementele transuranice sunt
într-un punct B, dar începând să se deplaseze amândoi în acelaşi
radioactive.
moment şi în aceeaşi direcţie. Afirmaţie: Ahile nu va ajunge din urmă
Premiza minoră: Plutoniul este element transuranic.
broasca (chiar dacă broasca ar avea...viteza 0)”. Putem „demonstra”
Concluzia: Plutoniul este radioactiv.
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
Pentru a folosi însă doar silogisme corecte (valide), este necesar un
distanţei dintre A şi C, etc. Cum mulţimea numerelor reale este densă,
studiu mai aprofundat al acestora. În caz contrar, putem ajunge, ca şi în
mereu mijlocul unui segment de lungime diferită de zero va genera alte
cazul paradoxurilor, să acceptăm nişte aberaţii drept propoziţii
două segmente de lungime nenulă, astfel încât Ahile nu va ajunge
adevărate. De exemplu:
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
Albă este adjectiv Zăpada este albă Zăpada este adjectiv
reale). Deşi nu sunt ele însele „absurdităţi”, silogismele reprezintă o
Greşeala în silogismul anterior constă în aceea că nu se ţine cont de o
altă sursă generoasă de confuzii. Inferenţele, adică paşii elementari
lege a silogismelor, care stipulează că într-un silogism valid există trei
(consideraţi a fi indivizibili) ai unui raţionament, reprezintă forme
şi numai trei termeni lingvistici distincţi. Din păcate însă, în limba
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
50
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:
nota „egal prin definiţie/notaţie/convenţie”): C A sau B (simbolic:
AB A B
A B); D A şi B (simbolic: A B); E non A (simbolic: A);
sau
F dacă A atunci B (simbolic: A B; A se numeşte uneori ipoteză
Cristian Masalagiu
modus ponendo-ponens (pe scurt, modus ponens)
Fundamentele logice ale Informaticii
51
AB B A
52
Cristian Masalagiu
forma condensată (x1, x2 R)(f(x1) = f(x2) x1 = x2). Există modus tollendo-tollens (pe scurt, modus tollens)
următoarele posibilităţi: a) x 1, x2 ≤ 0. Atunci f (x1) = x1 şi f (x2) = x2. Prin urmare f(x1) = f(x2)
Validitatea (reamintim: dacă ipotezele sunt adevărate, atunci şi
chiar coincide cu x1 = x2 şi deci implicaţia f(x1) = f(x2) x1 = x2 este
concluzia trebuie să fie adevarată) schemelor modus ponens (modul
adevărată.
afirmativ) şi modus tollens (modul negativ) rezultă imediat din definiţia
b) x 1, x 2 > 0. Atunci f (x1) = x12 + 1 şi f (x2) = x22 + 1. Prin urmare,
implicaţiei. Oprindu-ne la modus ponens, am putea spune că acesta
f(x1) = f(x2) înseamnă x12 + 1 = x22 + 1, ceea ce se întâmplă atunci şi
poate fi reformulat în: din A (adevărată) şi A → B (adevărată)
numai atunci când (x1 - x2 )(x1 + x2) = 0. Deoarece variabilele sunt
deducem (că) B (adevărată). Pe scurt, vom nota acest lucru prin
pozitive, ultima egalitate este echivalentă cu x1 - x2 = 0, deci cu x1 = x2.
A B. Următorul exemplu este edificator pentru greşelile care se pot
Am arătat de fapt că avem f(x1) = f(x2) dacă şi numai dacă x1 = x2 ceea
face fie din necunoaşterea definiţiei reale a implicaţiei, fie din
ce se poate scrie simbolic (în metalimbaj!) f(x1) = f(x2) x1 = x2. În
confundarea lui A B (formulă în limbajul de bază) cu A B
consecinţă, la fel ca la punctul precedent, implicaţia cerută
(formulă în metalimbaj, care sugerează deducerea lui B, pornind de la
f(x1) = f(x2) x1 = x2 este la rândul ei adevărată (este adevărată chiar
A şi folosind un raţionament).
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
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ă.
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
Conform uneia dintre definiţiile cunoscute, trebuie să arătăm că pentru
din x1 = x22 + 1 nu se poate deduce x1 = x2. Totuşi, implicaţia în cauză
fiecare x1, x2 ∈ R, avem: dacă f (x1) = f (x2) atunci x1 = x2. Anticipând
din limbajul de bază este adevş ratş , deoarece antecedentul ei este
notatiile din Capitolul 3 şi presupunând cunoscută (cel puţin la nivel
fals. Într-adevăr, oricare ar fi x1 0 şi x2 > 0, în egalitatea x1 = x22 + 1,
informal) semnificaţia cuanficatorilor, putem scrie acest lucru sub
membrul stâng este nepozitiv iar membrul drept este pozitiv, ceea ce face ca relaţia să devină imposibilă în contextul dat. ■
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
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.
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
Exerciăiul 2.1. O teoremş , în sensul matematicii de liceu, are şi ea
de succes. În acest scop vom porni de la postulatele (axiomele)
ipoteze şi concluzii. Scrieţi simbolic forma generală a unei teoreme
Cunoaşterea înseamnă putere şi Timpul înseamnă bani, pe care le vom
(directe), utilizând propoziţii elementare (variabile propoziăionale) şi
folosi sub forma prescurtată: cunoaştere = putere şi respectiv
conectori logici. Scrieţi apoi teorema reciprocş , contrara teoremei
timp = bani. Ca inferenţe, le vom utiliza pe cele mai simple (imediate,
directe şi contrara reciprocei. Există vreo legătură între acestea, în
cu afirmaţii categorice), la care adăugăm altele la fel de simple,
ceea ce priveşte valoarea lor de adevăr? Daţi un exemplu de teoremş
cunoscute din matematica elementară. Plecăm astfel de la axioma
de caracterizare (A dacă şi numai dacă B). Puteţi specifica altfel
suplimentară:
rezultatul exprimat de teoremă, astfel încât să fie – separat - puse în
m un că p utere tim p
evidenţă condiăia necesarş şi condiăia suficientş ? Exerciăiul 2.2. Să considerăm definiţia limitei unui şir dat de
Folosind axiomele iniţiale şi proprietăţile relaţiei de egalitate, printr-o
numere reale, având ca valoare un număr real dat, definiţie exprimată
inferenţă simplă deducem:
cu ajutorul vecinătăţilor care sunt intervale simetrice faţă de punctul
m u ncă cu n o aştere b an i Aplicând acum o proprietate a proporţiilor, găsim:
considerat. Să se exprime simbolic (în sensul matematicii de liceu, folosind şi cuantificatorii) această definiţie şi să se nege formula astfel găsită.
m uncă = bani c u n o a ş te re
exerciţiilor anterioare – propoziţia Dacş mi-e sete, beau apş . Negaţi
Cititorul poate trage singur concluzia care se impune pentru situaţia în
formula şi apoi rescrieţi rezultatul în limbaj natural. Dacă aţi fi negat
care cunoaştere se apropie de (tinde la) valoarea zero.
direct propoziţia iniţială, aţi fi obţinut acelaşi lucru?
Exerciăiul 2.3. Exprimaţi simbolic, ca o formulş – în sensul
Ca o concluzie, situaţiile neplăcute descrise anterior trebuie
În restul capitolului, câteva dintre concepte/rezultate/exemple
evitate sau eliminate. Acest lucru se poate face doar prin „translatarea”
sunt din [MAS1] (trebuie să precizăm că o parte dintre acestea provin,
părţilor de limbaj într-un mecanism formal bine pus la punct, pe care-l
la origine, din [SCH]).
Fundamentele logice ale Informaticii
55
56
Cristian Masalagiu
Putem privi o formulă F ca fiind reprezentată de un arbore binar
§2. Sintaxa logicii propoziţionale Vom trece direct la prezentarea sintaxei formale a logicii
(arborele ataşat lui F, notat Arb(F)), în modul următor (procedăm structural, conform definiţiei lui LP):
propoziţionale (calculului propoziţional). Logica propoziţională, aşa cum am sugerat deja, va fi numele unei mulţimi de formule
Definiţia 2.2.
(propoziţionale), notată LPL sau, prescurtat, LP şi definită structural în
Baza. F = A A. Atunci arborele ataşat lui F (sau, arborele care
cele ce urmează.
reprezintă F), este:
Definiţia 2. 1. Fie o mulţime numărabilă de variabile propoziţionale
Pas constructiv.
(formule elementare, formule atomice pozitive, atomi pozitivi),
(i) Fie F = ( F1) şi să presupunem că se cunoaşte arborele ataşat lui F1,
A = {A1, A2, … }. Fie, de asemenea, C = {, , } mulţimea
Arb(F1). Atunci, arborele ataşat lui F va fi (ceva similar se obţine
conectorilor/conectivelor logici/logice non (negaţia), sau (disjuncţia),
pentru (iv), adică pentru cazul F = (F1)):
respectiv şi (conjuncţia) şi P = { ( , ) } mulţimea parantezelor
A
()
(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.
(iii) Fie F = (F1 F2) şi să presupunem că se cunosc atât arborele ataşat
(iv)
Dacă F LP atunci (F) LP.
lui F1 cât şi arborele ataşat lui F2 , adică Arb(F1) respectiv Arb(F2).
(v)
Nimic altceva nu este formulă. ■
Atunci arborele ataşat lui F va fi (pentru F = (F1 F2) se obţine ceva
Arb(F1)
similar):
Fundamentele logice ale Informaticii
57
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) }. Arb(F1)
Arb(F1)
(iii) Analog cu (ii) pentru cazul F = (F1 F2) (înlocuind peste tot, simultan, cu ). (iv) F = (F1). Atunci subf(F) = subf(F1) U { (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
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
ai fiecarui nod (implicit, pentru o formulă este valabilă ordinea de
secvenţă finită de caractere din L ) să se decidă dacă w ∈ LP. Conform
scriere a „literelor” în cuvântul respectiv, exceptând paranteza închisă
[JUC] de exemplu, notaţia L* (algebric, L * este monoidul liber generat
„)”, care are acelaşi „număr de ordine” cu paranteza deschisă „(”
de L ) se explică prin aceea că mulţimea cuvintelor (secvenţelor finite
corespunzătoare), atunci se observă că fiecărei formule îi corespunde
de simboluri) aparţinând unui alfabet cel mult numărabil formează un
un arbore ataşat unic şi fiecărui arbore ordonat G (cu nodurile
monoid
etichetate cu elemente din L ) îi corespunde o unică formulă din LP
literelor/cuvintelor). Elementul neutru, este cuvântul fără nici o literă
(pentru care G este arborele ataşat). Definim structural şi mulţimea
(cuvântul vid) şi este notat cu e. Algoritmul menţionat se termină
subformulelor oricărei formule date F (notată subf(F)). Admitem
pentru fiecare intrare w∈ L*, cu răspunsul (ieşirea) „DA” dacă w LP
implicit faptul că F’ ∈ subf(F) dacă şi numai dacă F’ este subcuvânt al
şi „NU” dacă w LP. O problemă de decizie are doar alternativa de
lui F şi F’∈ LP (cu alte cuvinte, F1 şi F2, în cele ce urmează, sunt tot
răspuns „DA/NU” şi aici este un caz particular al problemei de
formule).
apartenenţă pentru un limbaj de tip 2. Revenind, A1 A2, nu este
faţă de operaţia de concatenare (de juxtapunere a
Fundamentele logice ale Informaticii
59
60
Cristian Masalagiu
formulă pentru că nu are parantezele necesare (nu putem vorbi de
se consideră întâi afirmaţiile elementare A, B, C; se consideră apoi
subf(A1 A2) pentru că A1 A2 nu este formulă). Dar, la fel ca şi în
negaţia lui A, notată, să spunem, A’ şi conjuncţia lui B cu C, notată D;
cazul cunoscut al expresiilor aritmetice care conţin variabile, constante
în sfârşit, se consideră disjuncţia lui A’ cu D).
şi operatorii „–” (având şi sensul de opus), „+”, „•” şi „/”, putem Vom face şi alte câteva prescurtări sintactice, justificate de altfel
accepta convenţia de a prescurta scrierea unor expresii (formule, cuvinte) prin eliminarea unor paranteze (sau chiar pe toate). Acest lucru
şi de anumite considerente semantice care vor fi prezentate ulterior:
se poate face prin atribuirea de priorităţi operatorilor, apoi bazându-ne
(( F) G) se va nota cu (F G).
pe faptul că aritatea lor (numărul de argumente) este cunoscută,
Pentru ((( F) G) (( G) F)) folosim (F G) sau
precum şi pe unele proprietăţi cum ar fi comutativitatea, asociativitatea
((F G) (G F)).
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
n
i1
Fi este o prescurtare pentru F1 F2 ... Fn.
n
i1
Fi este prescurtarea lui F1 F2 ... Fn .
acestea litere mari de la începutul alfabetului latin (A, B, C, ..., cu sau
Simbolurile şi (numite după cum ştim implicaţie, respectiv
fără indici). Invers, putem adăuga în orice formulă „bine formată”
echivalenţă) pot fi considerate ca şi cum ar fi fost introduse de la bun
cupluri de paranteze corespondente (la fel cum le-am şi eliminat),
început în mulţimea de conectori C (dacă am fi procedat astfel de la bun
pentru a îmbunătăţi receptarea corectă a sintaxei şi fără a schimba
început, s-ar fi complicat atât unele lucruri de natură sintactică cum ar fi
semnificaţia formulei în cauză. Acest lucru este permis de altfel prin
definiţiile constructive, priorităţile, etc., cât şi definiţia semanticii LP,
(iv), Definiţia 2.1. ■
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,
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,
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ă ¯,
Fundamentele logice ale Informaticii
61
62
Cristian Masalagiu
prezentă în definiţia algebrelor booleene, rezultatele privind sintaxa
(iv) S’((F1 F2) ) = S’(F1) + S’(F2), pentru fiecare F1, F2 LP.
fiind, în general, separate de cele privind semantica. Se numeşte clauză
Demonstraţie. Fie S : A B. Definim funcţia S’ : LP B, structural,
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).
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).
§3. Semantica logicii propoziţionale
(c) Dacă F = (F1 F2), atunci S’(F) = S’(F1) + S’(F2).
Semantica (înţelesul) unei formule propoziţionale este, conform
Este evident că S’ este o extensie a lui S, proprietatea (i) fiind
principiilor logicii aristotelice, o valoare de adevăr (a sau f), obţinută în
satisfăcută imediat conform pasului Baza de mai sus. De asemenea,
mod determinist, care este independentă de context, etc. Notând de la
definiţiile (a) – (c) din Pasul constructiv asigură satisfacerea punctelor
început pe a cu 1 şi pe f cu 0, astfel încât să putem lucra cu algebra
(ii) – (iv) din enunţ, deoarece orice formulă din LP, dacă nu este
booleană B = < B, •, +, ¯ >, noţiunea principală este cea de asignare
elementară, are una dintre cele trei forme considerate (cazul F = (F1)
(interpretare, structură).
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
Definiţia 2.4. Orice funcţie S, S : A B se numeşte asignare. ■
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ă,
Teorema 2.1 (de extensie). Pentru fiecare asignare S există o unică
trebuind să arătăm că pentru fiecare F ∈ LP, este adevărat P(F), unde
S’ : LP B (numită tot structură sau
P(F) este: Oricare ar fi asignarea S, valoarea S’(F) există (ca element
extensie a acesteia,
interpretare), care satisface:
al lui B) şi este unică, adică S’ este funcţie, şi oricare altă funcţie S’’
(i) S’(A) = S(A), pentru fiecare A A.
care satisface (i) – (iv), satisface S’(F)= S’’(F).
(ii) S’(( F)) = S' (F) , pentru fiecare F LP.
Baza. Fie F = A A şi orice asignare S. Cum S este funcţie (totală)
(iii) S’((F1 F2) ) = S’(F1) • S’(F2), pentru fiecare F1, F2 LP.
prin definiţie şi avem S’(A) = S(A), tot prin definiţie (S’ este extensia
Fundamentele logice ale Informaticii
63
64
Cristian Masalagiu
lui S), este imediat faptul că S’(A) există şi este unică în sensul precizat
de extensionalitate). Vom mai pune S(F) S((F)) pentru fiecare
(orice alt – posibil – S’’ trebuie să fie tot o extensie a lui S).
F LP.
Pas inductiv. Vom arăta doar cazul F = ( F1), celelalte două (F = (F1 F2) şi F = (F1 F2) ) fiind similare. Presupunem prin urmare
Exerciăiul 2.5. Definiţi structural prop(F), pentru fiecare F ∈ LP.
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
Fără alte precizări, vom lucra în continuare doar cu structuri
sensul precizat), rezultă din nou imediat, din ipoteza inductivă (S’(F1)
complete pentru mulţimile de formule (o structură este completă pentru
S' (F1 ) )
o mulţime de formule dacă este completă pentru fiecare element din
există şi este unică), din definiţia negaţiei în B (ştim că S’(F) =
şi a faptului că orice alt S’’ trebuie să satisfacă punctul (ii) din teoremă. ■
acea mulţime) care ne interesează la momentul dat. Definiţia 2.5. O formulă F LP se numeşte satisfiabilă dacă există
De acum înainte nu vom face nici o diferenăş, nici mş car
măcar o structură S (completă) pentru care formula este adevărată
notaăionalş , între asignare şi structurş (intrerpretare). Se observă că
(S(F) = 1). Se mai spune în acest caz că S este model pentru F
dată orice formulă F ∈ LP şi orice structură S, este suficient să
(simbolic, se mai scrie S F). O formulă este validă (tautologie) dacă
cunoaştem valorile lui S în variabilele propoziăionale care apar în F
orice structură este model pentru ea. O formulă este nesatisfiabilă
(pentru fiecare F ∈ LP, vom nota cu prop(F) mulăimea atomilor
(contradicţie) dacă este falsă în orice structură (S(F) = 0, pentru fiecare
pozitivi care apar în F, sau peste care este construitş F). Vom numi
S, sau S F, pentru fiecare S). ■
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.
Teorema 2.2. O formulă F LP este validă dacă şi numai dacă ( F)
Aceasta, în cazul în care F este cunoscută, poate fi identificată cu o
este contradicţie.
funcţie totală pe A. Putem conchide chiar că în LP valoarea de adevş r
Demonstraţie. F LP este validă dacă şi numai dacă pentru fiecare
a unei formule se deduce în mod unic din valoarea de adevş r a
structură S avem S(F) = 1, adică (conform ii), Teorema 2.1) dacă şi
subformulelor (se mai spune că logica propoziţională are proprietatea
65
Fundamentele logice ale Informaticii
66
Cristian Masalagiu
numai dacă S(( F) ) = 1 = 0 (definiţia negaţiei), ceea ce înseamnă că
faptul că S este definită cel puţin pentru toate variabilele propoziţionale
( F) este o contradicţie. ■
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,
Clasa tuturor formulelor propoziţionale LP, este astfel
vom scrie G F). ■
partiţionată în (mulţimile indicate mai jos sunt într-adevăr nevide şi disjuncte): Tautologii F
Observaţie. Relaţiile şi s sunt relaţii de echivalenţă (binare) pe LP, Formule satisfiabile dar nevalide F
( F)
Contradicţii ( F)
î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ă
Tabelul 2.1 În tabelul anterior linia punctată poate fi considerată drept o oglindă în care se reflectă adevărul.
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). ■
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ă
Teorema 2.3. Fie G LP şi G = { G1, G2, …, Gn } LP. Următoarele
S(F1) = S(F2) (simbolic, vom scrie F1 F2). F1 şi F2 se numesc slab
afirmaţii sunt echivalente:
echivalente dacă F1 satisfiabilă implică F2 satisfiabilă şi reciproc (vom
(i) G este consecinţă semantică din G.
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
n
(ii) (
i1
Gi ) G este tautologie.
n
(iii) (
i1
Gi ) G este contradicţie.
67
Fundamentele logice ale Informaticii
Demonstraţie. (i)
Presupunem
prin
reducere
la
absurd
că
n
F = ( Gi) G nu este tautologie, deşi G este consecinţă semantică i1
din G. Rezultă că există o structură S pentru care F este falsă, adică n
S(
i1
Cristian Masalagiu
(iii) (ii).
implicş
68
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
implicş
(i).
Presupunem
prin
reducere
la
absurd
că
n
F=(
i1
Gi) G este contradicţie, dar G nu este consecinţă semantică
din G. Atunci există o structură S care satisface toate formulele din G n
dar nu satisface G. Prin urmare, avem S(( Gi)) = 1 şi S(G) = 0, adică i 1
n
S((
i1
n
Gi)) = 1 şi S(G) = 1. Cum S((
i1
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 i1
consecinţă semantică din G. (ii) implicş (iii). Procedăm din nou prin reducere la absurd, adică n
n
i1
i 1
presupunem că deşi ( Gi) G este tautologie, ( Gi) G nu n
este contradicţie. Această înseamnă că F1 = ( Gi) G este i1
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.
n
tautologie, dar F2 = ( Gi) G este satisfiabilă. Prin urmare, există i1
o structură S astfel încât S(F2) = 1 (şi, desigur, S(F1) = 1). Din S(F2) = 1 n
n
i1
i1
rezultă S(( Gi )) • S( G) = 1, adică S(( Gi )) = 1 şi
S(G) = 1.
n
În consecinţă, S(
(
i1
n
Gi )) = 0 şi S(G) = 0. Pentru că
S(F1) = S(( i 1 Gi )) + S(G), avem S(F1) = 0, ceea ce este absurd deoarece F1 este tautologie.
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(GH)
(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)
Fundamentele logice ale Informaticii
(f) F F
(legea
69
dublei negaţii)
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
(g) ( F G )
(g’) ( F G ) F G (legile lui
P(H): (F, G, H’ LP)(((F subf(H)) şi
FG
deMorgan)
(H’ se obţine din H înlocuind o apariţie fixată a lui F cu G) şi
(h) F G F
(h’) F G G (legile validităţii,
(F G)) H H’).
adevărate doar dacă F este tautologie)
Baza. H = A A. Să arătăm că P(A) este adevărată. Fie F, G,
(i’) F G G (legile contradicţiei,
H’ LP, astfel încât F subf(H), H’ se obţine din H înlocuind
adevărate doar dacă F este contradicţie)
apariţia aleasă a lui F cu G, iar F G. Trebuie să arătăm că H H’.
(i) F G F
Demonstraţie. Vom arăta doar una dintre echivalenţe şi anume (i). Fie
Dar, din F subf(H) şi subf(H) = {A}, rezultă că F = A ( care coincide
F LP orice contradicţie şi G LP. Fie orice structură S. Atunci
cu H). Prin urmare, H’ = G. Avem acum F = H, G = H’ şi F G, de
S(F G) = S(F)•S(G) = 0, conform Tabelului 1.1 (punctul 9)) şi
unde urmează imediat că H H’.
faptului că F este contradicţie. Aceeaşi valoare o are şi membrul drept
Pas inductiv. Trebuie tratate separat situaţiile care urmează.
din (i). ■
(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ă
Se poate arăta, de exemplu, prin inducţie matematică, faptul că
F = ( H1 ) ( = H), suntem într-o situaţie similară cu cea din Baza,
asociativitatea, distributivitatea şi legile lui deMorgan se extind pentru
deoarece raţionamentul se face din nou asupra întregii formule H. Fie o
orice număr finit de formule.
apariţie fixată a lui F subf(H1) subf(H) şi considerăm orice G LP
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
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ă).
Fundamentele logice ale Informaticii
71
72
Cristian Masalagiu
(ii) H = (H1 ∧ H2). Presupunem că P(H1) şi P(H2) sunt adevărate şi
şi + luându-l ∧ respectiv ∨, după cum se poate deduce chiar din
demonstrăm că P(H) este adevărată. Fie orice F subf((H1 H2)) =
Teorema 2.4). De asemenea, vom folosi tabelele de adevăr pentru a
subf(H1) U subf(H2) U{(H1 H2)}. Dacă F = ( H1 H2 ) ( = H) suntem
găsi în mod direct semantica (valoarea de adevăr a) unei formule într-o
din nou într-un caz similar cu cel din Baza. Să considerăm că
structură dată.
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
Nu apare astfel surprinzătoare tematica paragrafului următor, privind existenţa formelor normale.
neschimbată). Vom nota cu H’ respectiv H1’, formulele obţinute după aceste înlocuiri. Aplicând ipoteza inductivă (P(H1) este adevărată),
§ 4. Forme normale în LP
rezultă imediat că H1’ H1. Revenind, ştim că H = (H1 H2),
Spre deosebire de cazul funcţiilor booleene, vom studia pentru
H’ = (H1’ H2) şi H1’ H1. Obţinem imediat că H H’ (putem folosi
început formele normale conjunctive şi formele normale disjunctive
direct faptul deja amintit, că ≡ este compatibilă cu operaţiile, respectiv
simultan.
cu conjuncţia). (iii) H = (H1 ∧ H2). Se demonstrează analog cu cazul precedent. ■
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
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
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] ).
conjuncţia prin şi. Deocamdată am păstrat notaţia clasică pentru
Similar, F LP este în formă normală disjunctivă (FND, pe scurt),
cuantificatorul universal (), deoarece el nu apare explicit în LP.
dacă este o disjuncţie de conjuncţii de literali. ■
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 •
Î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. ■
73
Fundamentele logice ale Informaticii
74
Cristian Masalagiu
(ii) F = (G ∧ H). Presupunem că afirmaţiile
P(G) şi P(H) sunt
Teorema 2.6. Pentru fiecare formulă F LP există cel puţin două
adevărate şi arătăm că P(F) este adevărată. Din faptul că P(G) este
formule F1, F2 LP, F1 aflată în FNC şi F2 aflată în FND, astfel încât
adevărată rezultă că există G1, aflată în FNC şi satisfăcând G G1,
F F1 şi F F2 (se mai spune că F1 şi F2 sunt o FNC, respectiv o FND,
astfel încât: m1
pentru F). Demonstraţie. Pentru a demonstra afirmaţia necesară, (F)P(F) în
n 1 i
( L i,j )) G1 = ( i=1 j 1
metalimbaj, unde
Cu totul similar, pentru că P(H) este adevărată, înseamnă că există H1,
P(F): există F1 LP, aflată în FNC şi există F2 LP, aflată în
aflată în FNC şi satisfăcând H H1:
FND, astfel încât F F1 şi F F2,
m2
n 2 i
L i,j )) H1 = ( i=1 ( j 1
procedăm prin inducţie structurală. Baza. F = A A. Această formulă este atât în FNC cât şi în FND, deci
Atunci, G H G1 H1 şi este evident că ultima formulă este tot o
putem lua F1 = A şi F2 = A.
conjuncţie de disjuncţii, adică este o FNC, notată F1, pentru F. Pentru a
Pas inductiv. Trebuie tratate cazurile corespunzătoare definiţiei
obţine o FND, F2, pentru F, pornim de la o FND, G2, pentru G şi o
constructive a lui LP.
FND, H2, pentru H. Atunci F = G H G2 H2, de unde obţinem
(i) F = (⎤ G). Presupunem că P(G) este adevărată şi demonstrăm că
imediat o FND pentru F, notată F2, dacă se aplică mai întâi
P(F) este adevărată. Din ipoteza inductivă rezultă că există formulele
distributivitatea generalizată a conjuncţiei faţă de disjuncţie şi apoi, în
G1, aflată în FNC şi G2, aflată în FND, astfel încât G G1 şi G G2.
interiorul subformulelor, a disjuncţiei faţă de conjuncţie.
Atunci, de exemplu, G G1 şi, aplicând legile lui deMorgan, găsim:
(iii) F = (G ∨ H). Procedăm analog ca în cazul anterior. ■
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.
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.
75
Fundamentele logice ale Informaticii
76
Cristian Masalagiu
Exemplu. Găsiţi o formulă F LP construită peste mulţimea de
respectivă negată, iar dacă valoarea ei este 1, atunci ea apare
variabile propoziţionale {A, B, C} şi care să satisfacă condiţia: în
nenegată; formula finală, aflată în FND(P), este disjuncţia tuturor
tabelul de adevăr standard care o descrie, o schimbare şi numai una
acestor conjuncţii. Prin urmare, putem pune F = (A B C)
în secvenţa produce schimbarea valorii
(A B C) (A B C) (A B C). Găsiţi, analog, o
corespunzătoare de adevăr S(F). Dacă începem secvenţa S(F) cu 0,
FNC(P) ■
atunci F este descrisă de tabelul: Conform teoremei anterioare, precum şi datorită comutativităţii
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
ş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,
Se poate construi apoi direct din tabel măcar o formulă (sau două) care
1 C 1 şi deci aceste clauze sunt tautologii (notate generic cu 1).
îi corespunde semantic, formulă ce se află în FND (şi/sau FNC). De
Tautologiile componente nu au nici o semnificaţie pentru stabilirea
fapt vom folosi algoritmul de construcţie a FNDP (FNCP) pentru o
valorii semantice a unei formule F aflate în FNC (1 C C).
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
Fundamentele logice ale Informaticii
77
78
Cristian Masalagiu
algebrele booleene LP şi B stau la baza corectitudinii acestei
§ 5. Decidabilitate în LP
construcţii) care are forma:
LP, cadrul formal propus (realitatea este modelată prin afirmaţii, afirmaţiile sunt reprezentate ca formule propoziţionale),
S(A1) S(A2)
……
S(An)
S(F)
oferă ca principală metodă de a rezolva problemele, testarea adevărului
0
0
……
0
v1
(satisfiabilităţii) unor formule. Din punctul de vedere al unui
0
0
……
1
v2
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
1
1
……
1
vm
2
n
=m
„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
Dacă toţi vi (i [m]) sunt egali cu 0 atunci F este contradicţie, dacă toţi
formulă sau nu).
În această situaţie se spune că problema
vi sunt 1 atunci F este tautologie, iar în rest F este satisfiabilă dar
satisfiabilităţii (pe scurt, SAT) pentru LP este rezolvabilă
nevalidă. Pentru a depista acest lucru, trebuie parcurs, în Pasul 2, în
(decidabilă). Mai mult, am vrea să găsim asemenea algoritmi pentru
cazul cel mai defavorabil, întregul tabel, linie cu linie şi prin urmare
care complexitatea timp este „rezonabilă”.
trebuie efectuate 2n comparaţii (F este construită peste n formule atomice). Deşi mai sus nu avem o explicaţie formală riguroasă a
Teorema 2.7 (decidabilitatea SAT). Satisfiabilitatea (validitatea,
faptului că SAT are timp exponenţial, se poate arăta că problema este
nesatisfiabilitatea) formulelor calculului propoziţional este decidabilă în
chiar NP-completă (conform [AHO]; a se urmări şi comentariile care
timp exponenţial.
urmează imediat după demonstraţie). ■
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
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
Fundamentele logice ale Informaticii
79
80
Cristian Masalagiu
complexitate (timp) mică. Astfel, două dintre măsurile (teoretice,
asimptotică (sau ordinul de creştere) a (al) lui tAlg(n), adică ne vor
globale) de complexitate des întrebuinţate sunt complexitatea timp şi
interesa doar anumite margini ale sale, cum ar fi marginea sa
complexitatea spaţiu. Ideea este aceea că un (orice) pas elementar
superioară.
(instrucţiune) al unui algoritm se execută într-o unitate de timp (pentru
O(f) = {g | g : N → N, există c ∈ R, c > 0 şi există k ∈ N, astfel încât
spaţiu, fiecare dată elementară se memorează într-un registru sau locaţie de memorie, acesta/aceasta ocupând o unitate de spaţiu),
Formal,
pentru
fiecare
f
:
N
N,
notăm
pentru fiecare n ≥ k avem g(n) ≤ c•f(n)} şi vom spune cş fiecare
criteriul numindu-se al costurilor uniforme. Există şi criteriul costurilor
g ∈ O(f), este de ordinul lui f, ceea ce se mai notează şi cu g = O(f).
logaritmice (pe care însă nu-l vom utiliza aici), în care orice informaţie
Astfel, vom spune că SAT are complexitatea (timp, asimptotică) O(2 n),
de lungime i, se prelucrează (respectiv, se memorează) în numărul de
sau, pe scurt, complexitate exponenţială, deoarece că există (măcar) un
unităţi de timp (unităţi de spaţiu) egal cu ëlog(i)û + 1 (dacă i = 0, se
algoritm Alg care rezolvă problema (cel sugerat în demonstraţia
convine să luăm log(i) = 0; ënû notează partea întreagă inferioară a
algoritmi polinomiali (tAlg(n) = O(p(n)), unde p(n) desemnează un
numărului n). Intuitiv, timpul luat de execuţia unui algoritm Alg este dat
polinom în n, de orice grad), sau de algoritmi liniari (p(n) de mai sus
de numărul de instrucţiuni (paşi/operaţii elementare) efectuate (să-l
este un polinom de gradul I), adică de probleme având complexitatea
notăm cu tAlg), iar spaţiul (notat cu sAlg) este dat de numărul de locaţii
(timp, dar se poate defini ceva asemănător pentru spaţiu) de tipul
(elementare) de memorie (internă, a calculatorului) ocupate în cursul
precedent. Speranţa de a găsi algoritmi mai performanţi pentru
execuţiei. Sigur că totul se raportează la lungimea fiecarei intrări
rezolvarea SAT, se poate baza pe ideea de a restrânge LP la anumite
(adică, în cazul nostru, la lungimea unei formule F IN LP, aceasta
subclase stricte, particulare de formule ale sale, suficient de largi însă
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
Teoremei 2.7) şi pentru care tAlg(n) = O(2n). Similar, vom vorbi de
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).
Fundamentele logice ale Informaticii
81
§ 6. Formule Horn
82
Cristian Masalagiu
literal negativ). Vom scrie C A1 A2 A3 …… Ak 0
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
C = A1 A2 …… Ak (nici un literal pozitiv, măcar un
(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 CA1 A2 A3 … AkB,
componente fiind (toate) clauze Horn. ■
direct din definiţia implicaţiei. 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
reprezentarea clauzelor cu mulţimi vom folosi pentru
echivalente cu nici o formulă Horn, apariţia a măcar doi literali pozitivi
Ø). Prin convenţie,
distincţi într-o clauză fiind decisivă. Formele posibile pentru o formulă
chiar
este o clauză de orice tip (inclusiv o
clauză Horn), dar nesatisfiabilă. ■
Horn sunt (variabilele propoziţionale care apar sunt elemente ale lui A): (ii) C = A1 A2 …… Ak B, k N.
(nici un literal negativ, nici un literal pozitiv). Din
motive tehnice vom folosi şi această clauză vidă (în
poate arăta ([MAS1]) că există formule propoziţionale care nu sunt tare
(i) C = A1 A2 …… Ak, k 1, k N şi
C
Teorema 2.8. Satisfiabilitatea formulelor Horn este decidabilă în timp liniar. Demonstraţie. Să considerăm algoritmul:
Observaţie. Înafară de reprezentarea ca mulţimi, clauzele Horn pot fi reprezentate sub şi sub aşa-numita formă implicaţională. Vom distinge
Algoritm Horn
cazurile (reamintim că 0 şi 1 denotă orice contradicţie respectiv orice
Intrare: Orice formulă Horn, F, reprezentată ca mulţime de clauze,
tautologie):
clauzele componente fiind clauze Horn diferite de clauza vidă şi scrise
C = A A (nici un literal negativ, un literal pozitiv). Acest
sub formă implicaţională .
lucru se mai poate scrie sub forma C 1 A, ceea ce se
Ieşire: „DA”, în cazul în care formula F este satisfiabilă (furnizându-se
justifică prin aceea că 1 A 1 A 0 A A.
şi o asignare S care este model pentru F) şi „NU” în caz contrar (F nu este satisfiabilă).
83
Fundamentele logice ale Informaticii
84
Cristian Masalagiu
Metodă (de marcare):
Arătăm mai întâi că algoritmul se terminş pentru fiecare intrare. Să
Pasul 1. i := 0.
precizăm că acţiunea de marcare o privim în sens grafic normal,
Pasul 2.
marcajul care poate fi ataşat unei variabile proziţionale alegându-se
Cât_timp
((există
în
F
o
clauză
C
de
forma
fără criterii speciale (să presupunem că el este *, împreună eventual cu
A1 A2 A3 …… Ak B, cu A1, A2, A3, ... , Ak marcaţi şi
anumiţi indici prin care să se identifice în care dintre execuţiile
B nemarcat sau de forma A1 A2 A3 …… Ak 0, cu A1,
corpului buclei s-a făcut marcarea). Iniţial, toate variabilele se
A2, A3, ... , Ak marcaţi) şi (i = 0))
presupun a fi nemarcate. Dacă F conţine clauze de forma 1 B (care
execută
se consideră a fi de fapt de forma A1 A2 A3 …… Ak B, cu A1,
Pasul 3. Alege un asemenea C ca mai sus.
A2, A3, ... , Ak marcaţi şi B nemarcat), se procedează conform
Pasul 4. Dacă ( C = A1 A2 A3 …… Ak B )
algoritmului, adică se marchează toate apariţiile lui B în F şi se trece la
atunci Pasul 5. Marchează B peste tot în F. altfel Pasul 6. i := 1. Sf_Dacă Sf_Cât_timp Pasul 7.
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”
Dacă ( i = 0 )
(formula este satisfiabilă) şi cu asignarea S, în care S(A) = 0 pentru
atunci
fiecare A (care apare în F). Pasul 8. Scrie „DA”.
Arătăm în continuare că algoritmul este corect. Aceasta înseamnă că
Pasul 9. Scrie S, cu S(A) = 1 dacă şi numai
ieşirea algoritmului satisface ceea ce am dorit, adică răspunsul „DA”/S
dacă A apare în F şi este marcată.
corespunde faptului că formula F furnizată la intrare este satisfiabilă (şi
altfel
S F) iar răspunsul „NU” corespunde faptului că F este nesatisfiabilă. Pasul 10. Scrie „NU”.
Sf_Dacă.
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ă
85
Fundamentele logice ale Informaticii
86
Cristian Masalagiu
că bucla s-a terminat fără să i se execute vreodată corpul având în plus
1 B, B marcat), de unde rezultă că semantica lui C în asignarea
i = 0 şi S(A) = 0 pentru fiecare A (care apare în F). Atunci există în F
furnizată de algoritm este de forma 1 0 şi prin urmare S(C) = 0, de
(la finalul execuţiei) doar clauze de tipul C1=A1 A2 A3 … AkB,
unde S(F) = 0. Acest lucru nu înseamnă însă că F este nesatisfiabilă.
sau C2 = A1 A2 A3 …… Ak 0 (k 1) , care n-au nici o
Pentru a trage această concluzie trebuie să arătăm că pentru nici o altă
variabilă marcată. Avem atunci, pe scurt, S(C1) = S(0•0• ... •0 0)= 1,
asignare, ea nu poate fi model pentru F. Să presupunem (RA) că există
respectiv S(C2) = 1, de unde găsim S(F) = 1.
o asignare S’ (diferită de S, furnizată de algoritm) astfel încât
Cazul b). La terminare se obţine „DA” iar F conţine şi clauze
S’(F) = 1. Să observăm, pentru început, că toate variabilele care au fost
C = 1 B. Atunci bucla se termină după un anumit număr de execuţii
marcate în algoritm (deci cele care au primit valoarea de adevăr 1 în S),
ale corpului său, valoarea lui i este 0 şi F conţine în final clauze C
trebuie să primească valoarea 1 în oricare S’ cu S’(F) = 1. Altfel spus,
având marcate anumite variabile. Dacă C = 1 B (adică
asignarea S conţine cel mai mic număr posibil de valori 1 (atribuite
C = B), unde B este marcat (S(B) = 1), avem imediat S(C) = 1. Dacă
evident variabilelor marcate) astfel încît formula sş aibş şanse să fie
C = A1 A2 A3 … Ak B (k 1) este posibil ca, fie toate
satisfiabilă. Într-adevăr, pentru fiecare S’ cu S’(F) = 1, trebuie să avem
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),
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
fie există măcar una dintre variabilele Ai de mai sus care este
de forma C = A1 A2 A3 … Ak B (k 1) după numărul de
nemarcată, dar atunci vom avea iarăşi S(C) = 1, pentru că semantica sa
variabile din antecedent (chiar în algoritm, selecţia unei clauze „pentru
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
marcare” se poate face după un asemenea criteriu):
Clauze C de tipul 1 → B ≡ B (nici o variabilă în antecedent, B
nemarcat, semantica lui C este de forma 0 0 şi obţinem din nou
nemarcat). De la acestea începe procesul de marcare. Din faptul
S(C) = 1). Concluzia este că S(C) = 1 pentru fiecare C care apare în F,
că S’(C) trebuie să fie egal cu 1, este clar că trebuie pus
adică S(F) = 1.
S’(B) = 1 (B se şi marchează, deci S(B) = 1).
Cazul c). Algoritmul se termină cu i = 1 şi răspunsul „NU”. Acest lucru
Clauze C de forma
A → B ≡
⎤ A ∨ B (o variabilă în
înseamnă că există în F o clauză C = A1 A2 A3 …… Ak 0 cu
antecedent; A este marcat, B nemarcat). A nu putea fi marcat
toţi Ai, i [k] marcaţi (obligatoriu, în F există şi clauze de forma
decât dacă a apărut deja ca un consecvent într-o clauză de
Fundamentele logice ale Informaticii
87
88
Cristian Masalagiu
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,
Exemplu. Să aplicăm algoritmul de marcare următoarei formule Horn:
trebuie oricum să avem S’(A) = 1, deci S’( A) = 0 şi atunci
F = ( A D ) ( C A D ) ( A B ) D E.
S’(B) = 1 (concecinţa este că B se marchează, deci şi S(B) = 1).
Scriem
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’(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. ■
o
mulţime
de
implicaţii,
obţinând
nemarcate.
Prima execuţie. Alegem clauza 1D (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 :
algoritm, adică pentru fiecare A care satisface şi S(A) = 1 (procesul antecedent, iar numărul acestora este finit). Prin urmare, avem şi
ca
prima execuţie a corpului buclei, avem i = 0 şi toate variabilele sunt
S’(F) = 1, trebuie să avem S’(A) = 1 pentru fiecare A marcat de către descris mai sus se continuă pentru oricâte variabile prezente în
F
F = {D A, C A D, A B 0, 1 D, E 0}. Înainte de
S(B) = 1. Revenind, am arătat într-adevăr că pentru fiecare S’ astfel încât
întâi
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,
89
Fundamentele logice ale Informaticii
90
Cristian Masalagiu
dovedită de acum, a unor algoritmi care să nu facă apel explicit la
poate fi obţinută prin rezoluţie din două clauze de forma C1 = {A} şi
semantică, pare deja a fi un câştig.
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,
§7. Rezoluţie în LP
adică acele clauze sunt tautologii, detectabile sintactic (în acest caz nu
Fără a restrânge generalitatea, putem presupune că lucrăm cu formule din LP aflate în FNC, reprezentate sub formă de mulţimi
ne mai interesează alte metode formale de studiere a satisfiabilităţii lor). ■
(finite) de clauze, iar clauzele ca mulţimi (finite) de literali. Exemplu. Definiţia 2.9 (rezolvent). Fie clauzele C1, C2 , R. Spunem că R este
Fie formula F = {{A, E, B}, { A, B, C}, {A, D}, { A, D, E}}. Să
rezolventul lui C1, C2 (sau că C1, C2 se rezolvă în R, sau că R se
găsim câţiva dintre rezolvenţii care se pot obţine (succesiv) pornind de
obţine prin rezoluţie într-un pas din C1, C2), pe scurt,
cele cele patru clauze care compun F, notate respectiv C1, C2, C3, C4:
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 }). ■
C2
C1
A
A 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ă ( )
C1
C2 B
{E, B, B, C}
B
{A, E, A, C}
C1
C4 A
A
{E,B,D,E}
C4
C1 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:
91
Fundamentele logice ale Informaticii
92
Cristian Masalagiu
Teorema 2.9 (lema rezoluţiei). Fie oricare formulă F LP (aflată în C2
C3
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}.
A
A
Demonstraţie.
{B, C, D} B
C1 B
„⇐”. 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).
{C, D, A, E}
„⇒”. Să presupunem că S F , adică S C, pentru fiecare C F. Fie
Mulţi dintre aceşti rezolvenţi „primari” nu sunt interesanţi, fiind
C1,C2 F şi R un rezolvent al lor, R = (C1 \ {L}) U (C2 \ { L }), unde
tautologii (datorită faptului că acele clauze alese spre rezolvare conţin
L C1, L C2 .
mai mult de un literal de tipul L/ L ). Procesul poate însă continua cu
Cazul 1. S(L) = 1. Atunci S L. Dar ştim că S C2 . Rezultă că
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. ■
S C2 \ { L }, de unde S(R) = 1. Cazul 2. S(L) = 0. Analog, arătându-se că S C1 \ {L}. ■
În acest moment putem să ne punem cel puţin două întrebări:
Există cazuri în care procesul anterior (de aflare succesivă de
În teorema anterioară am fi putut considera, în loc de F, o mulţime oarecare de clauze, chiar infinită.
rezolvenţi noi) nu se termină?
În caz de răspuns negativ şi presupunând că există o legătură
Definiţia 2.10. Fie F o mulţime oarecare de clauze din LP şi C o
între acest proces sintactic (de obţinere de rezolvenţi) şi
clauză. Spunem că lista C’1, C’2 , … , C’m este o demonstraţie prin
satisfiabilitate, se pot obţine algoritmi (sintactici, eventual
rezoluţie (în mai mulţi paşi) a lui C pornind cu F dacă sunt
performanţi) de testare a satisfiabilităţii unor formule?
satisfăcute condiţiile: (i) Pentru fiecare i [m], fie C’i F, fie C’i este obţinut prin rezoluţie
Răspunsul îl vom da în cele ce urmează.
într-un pas din C’j, C’k, cu j, k < i. (ii) C = C’m. ■
Fundamentele logice ale Informaticii
93
94
Cristian Masalagiu
{A, B, C}
{A, B, C}
În condiţiile definiţiei, se mai spune că C este demonstrabilă C
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ă)
C {A, B}
{A, B}
î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
B
B
succesiune finită de rezoluţii într-un pas, care poate fi reprezentată şi
{A}
grafic, printr-un arbore (a se vedea exemplul care urmează), sau chiar
{A} A
ca un graf oarecare (dacă nu folosim noduri diferite pentru apariţiile
A
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
Definiţia 2.11 (mulţimea rezolvenţilor unei mulţimi de clauze). Fie F
altă măsură pentru o demonstraţie reprezentată ca text poate fi chiar
o mulţime de clauze din LP (nu neapărat finită). Notăm succesiv:
lungimea listei (numărul total de clauze, sau chiar numărul total de
Res(F) = F U{R | există C1, C2 F astfel încât R = Res(C1, C2)}.
clauze distincte). Dacă reprezentăm o demonstraţie ca un arbore, putem
Res(n+1)(F) = Res(Res(n)(F)), n N. Prin Res(0)(F) vom înţelege F şi
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:
atunci vom putea pune şi Res(1)(F) = Res(F).
Res*(F) = Res(n) (F). nN
(n)
Res (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).
Fundamentele logice ale Informaticii
95
96
Cristian Masalagiu
Putem da atunci şi o definiţie structurală a lui Res*(F). Vom nota astfel
Pas inductiv. Fie C = Res(C1, C2), C1, C2 Resc şi resupunem că C1,
cu Resc mulţimea definită prin:
C2 Res*(F). Să arătăm că C Res*(F). Acest fapt urmează imediat,
Baza. F Resc.
conform Definiţiei 2.11. ■
Pas constructiv: Dacă C1, C2 Resc şi C = Res(C1, C2), atunci C Resc. ■
De acum înainte vom folosi ambele notaţii pentru mulţimea rezolvenţilor unei mulţimi de clauze. Şi în Teorema 10 se putea
Rămâne să arătăm că cele două definiţii introduc aceeaşi mulţime.
considera că F reprezintă o mulţime oarecare de clauze.
Teorema 2.10. Pentru fiecare F LP, avem Res*(F) = Resc.
Teorema 2.11. Fie F o mulţime de clauze din LP (nu neapărat finită).
Demonstraţie. Arătăm egalitatea prin dublă incluziune.
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).
„⊆”. Demonstrăm prin inducţie matematică adevărul afirmaţiei din
Demonstraţie. Fie F şi C fixate ca în enunţ.
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
„⇒”. Să presupunem că există o demonstraţie prin rezoluţie a lui C
imediat din definiţia lui Resc.
pornind cu F, C’1, C’2, ... , C’m = C. Este îndeplinită condiţia (i) din
Pas inductiv. Presupunem că Res(n)(F) Resc şi arătăm că
Definiţia 2.10 şi atunci înseamnă că pentru fiecare i [m], avem
Res(n+1)(F) Resc, ceea ce este din nou imediat din definiţia lui Resc şi
C’i Resc, care coincide cu Res*(F), conform Teoremei 2.10. Prin
Definiţia 2.11. În sfârşit, avem Res*(F) Resc, direct din Definiţia
urmare, conform definiţiei lui Res*(F) există k N, asfel încât
2.11 şi observaţia care urmează acesteia.
C Res(k)(F).
„⊇”. Procedăm prin inducţie structurală, mai exact arătăm că afirmaţia
„⇐”. Să presupunem că există k N, asfel încât C Res(k)(F) (pe k îl
din metalimbaj (C Resc)(C Res*(F)) este adevărată.
considerăm a fi cel mai mic număr natural care satisface condiţia).
Baza. C F. Adevărat, deoarece F = Res(0)(F) Res*(F).
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
Fundamentele logice ale Informaticii
97
98
Cristian Masalagiu
doua mulţime din reuniunea de mai sus să nu punem decât rezolvenţii
interesează doar satisfiabilitatea lor), aproape toate rezultatele sunt
noi, care nu apar în Res(j-1)(F). Atunci C apare efectiv în Res(k)(F) dar
valabile şi pentru mulţimi infinite (numărabile) de formule (clauze).
nu şi în Res(k-1)(F). Dacă k = 0, am terminat (C F şi lista formată doar
Teorema
din C constituie o demonstraţie prin rezoluţie a lui C). În caz contrar,
satisfiabilitatea, între mulţimile infinite şi cele finite de formule
mai întâi construim algoritmic un graf neorientat în felul următor: la
oarecare din LP.
următoare
stabileşte
o
legătură
importantă,
privind
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 (k-2)
Res
(F), precum şi muchiile corespunzătoare care unesc nodurile
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ă
puse deja în graf, conform rezoluţiilor într-un pas din care ele provin,
fiecare submulţime finită a sa este satisfiabilă.
ş. a. m. d. În cel mult k + 1 paşi, vom plasa în graf şi elementele
Demonstraţie.
(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
„⇒”. 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.
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ă
„⇐”. Pentru fiecare n N, vom nota Mn {F M | subf(F) ∩
subgraful considerat nu este arbore, acest lucru se datorează faptului că
A = prop(F) An}, adică mulţimea formulelor din M care sunt
măcar o clauză C’ este utilizată în mai mulţi paşi de rezoluţie. Graful
construite peste (cel mult) mulţimea de variabile propoziţionale
poate fi uşor transformat în arbore prin multiplicarea nodurilor de tipul
An = {A1, A2, … , An}. Cum mulţimea funcţiilor booleene de n
C’ şi a arcelor aferente. ■ După cum probabil s-a putut observa, în cele de mai sus am
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
folosit în majoritatea cazurilor termenul mulţimea de clauze F şi nu
M1 M2 … Mn ... M şi M = M n . Revenind, să
formula F (aflată în FNC). Deşi pe noi ne interesează doar formulele
presupunem că fiecare submulţime finită a lui M este satisfiabilă şi să
(care pot fi privite ca mulţimi finite de clauze în cazul în care ne
n 1
Fundamentele logice ale Informaticii
99
100
Cristian Masalagiu
arătăm că M este satisfiabilă. Fie K M orice submulţime finită
restricţii ale lui Si+1, lucrul fiind evident posibil deoarece Mi Mi+1).
(satisfiabilă) a lui M. Atunci există n, natural, astfel încât K Mn . Fie
Ca urmare, putem defini structura S : A {0,1}, dată prin
M’n = {F1, F2, … , Fk n }, kn 2 2 , mulţimea elementelor lui Mn care au
S(Ai) = Si(Ai), pentru fiecare i N*. Faptul că S este funcţie şi model
tabele de adevăr distincte. Pentru fiecare formulă G din K alegem o
pentru M este imediat. ■
n
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
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)
F Mn \ M "n , există G M "n astfel încât Sn(G) = Sn(F). Din ipoteza
al clauzelor peste (cel mult) n variabile atomice date este finit (de fapt,
noastră (fiecare submulţime finită a lui M este satisfiabilă) rezultă
m = 3n). Orice rezoluţie într-un pas „şterge” câte un literal. Prin
aşadar că există un şir de structuri care satisfac:
urmare, indiferent câte dintre cele m posibile clauze sunt prezente
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
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. ■
Ai+1, în mod aleator. Dacă nu avem Si+1 Mi+1, atunci revenim, alegând
Reamintind că vom elimina din orice mulţime de forma Res*(F),
o structură Si+1 care să satisfacă Mi+1 (ştim că există), prin schimbarea,
pe măsură ce se obţin, toate clauzele care conţin o subformulă de tipul
eventual, şi a structurilor anterioare S1, S2, ... , Si (acestea vor fi simple
A A, enunţăm cea mai importantă teoremă din acest capitol.
101
Fundamentele logice ale Informaticii
102
Cristian Masalagiu
Teorema 2.14 (teorema rezoluţiei pentru calculul propoziţional).
formule construite peste n+1 formule atomice. Fie F LP, construită
Fie F o mulţime oarecare de clauze din calculul propoziţional. Atunci F
peste An+1 = {A1, A2, … , An, An+1}. Pornind de la această formulă vom
este nesatisfiabilă dacă şi numai dacă
Res*(F).
An 1
A
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
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
că F este o mulţime finită de clauze, sau, alternativ, o formulă
apariţii a literalului pozitiv An+1 din orice clauză şi apoi
propoziţională aflată în FNC. Fără a restrânge generalitatea, putem
eliminarea în totalitate a tuturor clauzelor care conţin o apariţie
presupune deci că F este o formulă oarecare din LP (Teorema 2.6).
negativă a literalului An+1.
„⇐” (corectitudine). Să presupunem că
Res*(F) şi să arătăm că F
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.
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)
Afirmaţie. Dacă F este nesatisfiabilă, atunci atât F0
… Res(n)(F) … . Dacă
sunt nesatisfiabile. Să presupunem că F este nesatisfiabilă şi nu are
(k)
Res*(F) atunci există k N, astfel încât
(k)
Res (F), adică Res (F) este nesatisfiabilă (
este nesatisfiabilă
A n +1
A n +1
clauze care sunt tautologii. Fie F0
An 1
cât şi F1
şi fie S orice structură corectă
(k)
prin convenţie). Cum F Res (F), rezultă că F este nesatisfiabilă.
(definită pentru toate variabilele propoziţionale care intervin în A
„⇒” (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ă
formulele considerate). Considerând clauzele C ale lui F0 n + 1 , avem următoarele posibilităţi :
pentru această clauză nu se modifică şi astfel nu modifică
Res*(F)).
A
valoarea de adevăr a lui F0 n + 1 faţă de cea a lui F (dacă luăm în
Baza. n = 0. Aceasta înseamnă că F = { } = Res*(F) şi concluzia este
considerare doar această clauză).
evidentă. Pas inductiv. Presupunem afirmaţia adevărată pentru formule construite peste n variabile propoziţionale şi o demonstrăm pentru
C este o clauză din F, nemodificată. Evident că valoarea lui S
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
103
Fundamentele logice ale Informaticii A n +1
nou valoarea de adevăr a lui F0
nemodificându-se faţă de cea
104
Cristian Masalagiu
respingere (D1) B1, B2, … Bt =
An 1
, pornind cu clauzele lui F1
.
a lui F (relativ la C). Dacă S(An+1) = 1, avem S(C U {An+1}) = 1.
Adăugăm acum la fiecare clauză din (D0) pe An+1, peste tot de unde
Cum F este nesatisfiabilă, înseamnă că există o altă clauză C’,
acesta a fost scos (inclusiv la clauzele rezultate în urma aplicării
C U {An+1} ≠ C’ F cu S(C’) = 0. Este evident că C’ nu poate
rezoluţiei într-un pas), obţinând o demonstraţie prin rezoluţie notată
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 0
F
An + 1 0
, de unde urmează imediat că S( F
) = 0.
(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:
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
(D1’) rămâne B’t = Bt =
A n +1
este absurd, F fiind nesatisfiabilă. Rezultă că F0 An 1 1
Se procedează similar pentru F
este nesatisfiabilă.
. (q. e. d.)
şi B’t = Bt =
demonstraţiile (D0’) şi (D1’), rezultând evident o respingere
lucru înseamnă că în această structură avem S(An+1) = 1. Să considerăm
pusă pe 0. Conform celor de mai sus, avem imediat S’(F) =1, ceea ce
(sau invers, C’l = Cl =
{An+1}). Atunci concatenăm cele două liste care reprezintă
, fiind adevărate în S. Acest
structura S’ care coincide cu S, exceptând valoarea lui An+1, care este
Ultima clauză a lui (D0’) este C’l = {An+1} şi ultima clauză a lui
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.
A n +1
În acest moment ştim că formulele F0
An 1
şi F1
sunt nesatisfiabile şi,
În ambele situaţii, conform Teoremei 2.11, rezultă că
Res*(F). ■
mai mult, sunt construite peste cel mult n variabile. Aplicând ipoteza inductivă pentru aceste formule rezultă că An 1
Res*( F1
A n +1
Res*( F0
) şi
). Conform Teoremelor 2.11 şi 2.13, există o respingere
(D0) C1, C2, … , Cl =
A n +1 0
, pornind cu elementele lui F
, precum şi o
Î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ă
105
Fundamentele logice ale Informaticii
106
Cristian Masalagiu
remarcăm şi faptul că testarea satisfiabilităţii nu implică nimic special
rezolvenţi sunt totuşi excluşi, deoarece reprezintă tautologii). Teorema
Res*(F)), ca de altfel nici
rezoluţiei sugerează crearea mai întâi a acestui graf de rezoluţie total şi
(în acest caz, condiţia de verificat va fi
testarea validităţii (F este validă dacă şi numai dacă F este
apoi parcurgerea lui pentru a vedea dacă
contradicţie; prin urmare, putem aplica Teorema 2.14 lui F). A testa
graf. Teorema 2.11 ne indică faptul că este suficient să găsim o
dacă o formulă F este satisfiabilă dar nevalidă impune însă aplicarea
respingere în loc de a creea şi apoi parcurge întregul graf. Rafinările se
teoremei anterioare atât pentru F (F este satisfiabilă dacă
Res*(F))
este (eticheta unui) nod în
împart în două mari categorii: strategii şi restricţii.
Res*( F)). Singura şansă
Strategiile nu restrâng, în general, spaţiul de căutare (adică
(oricât de puţin probabilă ar părea) de a găsi algoritmi performanţi
graful total) dar folosesc anumite informaţii suplimentare despre
rămâne aceea de a căuta subclase ale lui LP „suficient de interesante
clauze, astfel încât să crească şansele pentru selectarea rapidă a unei
din punct de vedere practic”, pentru care asemenea algoritmi să existe
demonstraţii căutate, adică a unui „cel mai scurt drum” pornind de la
(avem deja un exemplu: clasa formulelor Horn). Avantajul în acest
frunze (elementele lui F), către o rădăcină (clauza vidă). Astfel, cel
moment este că aceste subclase pot fi selecţionate ţinându-se cont
puţin la modul ideal, graful total nu se construieşte în întregime, ci
(numai) de motivaţii sintactice.
doar acele porţiuni din el (cât mai puţine şi cât mai mici), care este
cât şi pentru F ( F este satisfiabilă dacă
posibil să „conţină” măcar o respingere. Cel mai cunoscut exemplu
§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
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
Fundamentele logice ale Informaticii
107
108
Cristian Masalagiu
micşorat într-un mod, să-i spunem, abuziv. Astfel, o anumită restricţie
SLD-rezoluţia se utilizează cu succes pentru clauzele Horn (alte detalii
poate interzice total folosirea (într-un pas de rezoluţie) a unor clauze
sunt în Capitolul 5). În acest caz, ea va fi atât o rezoluţie liniară cât şi
având o anumită formă sintactică. Restricţiile rămân însă complete
una de intrare (a se vedea mai jos). Astfel, putem considera că F este
pentru anumite subclase de formule propoziţionale. Există mai multe
partiţionată în F1 = {C’1, C’2, ... , C’m}, care sunt clauze Horn pozitive
exemple importante de restricţii, câteva dintre ele fiind trecute în
(doar acestea numindu-se aici clauze definite, program, etc.) şi
continuare în revistă.
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ă
Rezoluăia pozitivş (P-rezoluăia). La fiecare pas al rezoluţiei (al unei
scop, iar clauzele suplimentare trebuie să fie clauze pozitive (practic,
demonstraţii prin rezoluţie), măcar una dintre clauze trebuie să fie o
elemente ale lui F1, pentru că toţi rezolvenţii obţinuţi pe parcurs sunt
clauză pozitivă.
clauze negative).
Rezoluăia negativş (N-rezoluăia). La fiecare pas al rezoluţiei măcar una dintre clauze se cere să fie negativă.
Exemplu. Să se găsească o respingere liniară bazată pe C = {A, B} şi
Rezoluăia liniarş bazatş pe o clauzş iniăialş . Fie F LP,
pornind cu F = { {A, B}, { A, B}, { A, B}}. În cele de mai jos (sunt
F = {C1, C2, … , Cn} o mulţime de clauze (numite şi clauze de intrare)
reprezentaţi doi arbori de rezoluţie distincţi), în stânga avem ceea ce am
şi o clauză fixată C F (numită clauză iniţială sau clauză de bază). O
cerut, iar în dreapta o respingere oarecare, aceasta din urmă fiind „mai
rezoluţie liniară bazată pe C este o (demonstraţie prin) rezoluţie în care
scurtă”.
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).
109
Fundamentele logice ale Informaticii
110
Cristian Masalagiu
cu unu). Astfel, se poate modela o situaţie reală în care dispunem de o {A,B}
{A, B} {A,B} B
B
{A,B} {A,B} B
B
{A,B} B
B
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ă
{A}
{A,B}
{A}
A
A
{A} A
{B}
A
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).
{A,B}
Rezoluăia de intrare. În orice pas al acestui tip de rezoluţie, măcar una B
B
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
{A}
{A}
considerat şi ca o rezoluţie liniară, bazată pe (oricare) C F. Rezoluăia unitarş . Într-o demonstraţie de acest tip, orice rezolvent
A
A
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
Rezoluăia bazatş pe o mulăime suport. Se porneşte cu formula F,
obţine „repede” clauza vidă sunt suficient de mari.
precum şi cu mulţimea suport T F, singura condiţie fiind că F \ T
Teorema următoare o dăm fără demonstraţie deoarece este
trebuie să fie satisfiabilă (desigur că, în principiu, acest lucru trebuie să
importantă pentru anumite detalii legate de implementările programelor
fie cunoscut aprioric şi nu după aplicarea unuia dintre algoritmii deja
logice, detalii care nu sunt tratate nici măcar în Capitolul 5.
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
Teorema 2.16. P-rezoluţia, N-rezoluţia, rezoluţia liniară şi rezoluţia
dintre clauze trebuie să nu aparţină lui F \ T (situaţie foarte
bazată pe o mulţime suport sunt complete. Rezoluţia unitară, rezoluţia
convenabilă dacă numărul de elemente din T este mic, preferabil egal
Fundamentele logice ale Informaticii
111
112
Cristian Masalagiu
de intrare şi SLD-rezoluţia sunt complete doar pentru clasa formulelor
formuleleor din LP), despre care am arătat că este decidabilă dar de
Horn. ■
complexitate (timp) exponenţială. Primii algoritmi descrişi erau bazaţi pe semantică. Din punctul de vedere al tratării automate (cu
§9. Recapitulare şi Index
ajutorul unui calculator) a problemei SAT, sunt mai convenabili
În acest capitol am introdus sintaxa şi semantica formală a
algoritmii de decizie bazaţi pe sintaxă, deşi aceştia nu sunt mai rapizi,
unui limbaj logic, privit în sensul unei mulţimi de formule. Acestea
la nivel global. Am prezentat un asemeanea algoritm (Teoremele 2.11,
reprezintă, într-un mod precis, cunoştinţele noastre despre anumite părţi
2.13, 2.14), care foloseşte conceptul de rezoluţie (propoziţională).
ale realităţii. Sunt transpuse într-o formă exactă conceptele şi principiile
Deşi metoda rezoluţiei nu aduce îmbunătăţiri semnificative ale timpului
principale ale logicii aristotelice, printre care bivalenţa/tertium non
necesar pentru rezolvarea SAT (în sensul teoriei generale a
datur şi extensionalitatea. Sintactic, mulţimea formulelor logicii
complexităţii şi pentru întreaga clasă LP), s-au putut pune în evidenţă
propoziţionale – notată LP – poate fi definită constructiv, pornind de la
strategii şi restricţii ale rezoluţiei, care măresc şansele găsirii rapide a
o mulţime numărabilă de formule atomice şi utilizând conectorii logici
răspunsului, precum şi subclase de formule pentru care problema poate
şi, sau, non, eventual şi implică. O formulă poate fi „recunoscută fără
fi rezolvată în timp liniar (cum ar fi clasa formulelor Horn, pentru
dubii” (problema apartenenţei unui şir finit de caractere la LP este
care putem aplica atât algoritmul de marcare, cât şi o variantă
decidabilă) şi poate fi reprezentată ca un arbore. Există şi reprezentări
convenabilă de implementare a SLD-rezoluţiei). Se poate argumenta
standard ale formulelor, prin forme normale. Semantica unei formule
că mulţimea LP este „prea simplă” în privinţa „puterii” de a reprezenta
este o valoare de adevăr (0 – adevărat, 1 – fals), valoare care se
lumea reală şi în consecinţă nu merită atenţie specială. Este adevărat că
determină tot într-un mod standard. Această valoare este unică, odată
LP poate fi inclusă în mulţimea de formule a calculului cu predicate
ce este cunoscută o structură corectă, adică o asignare pentru formulele
de ordinul I (care va constitui obiectul de studiu al următorului
atomice componente. Definiţia semanticii se bazează şi pe rezultatele
capitol), dar am considerat ca benefică introducerea şi prezentarea ei
cunoscute despre funcţiile booleene. Am evidenţiat apoi clasele de
separată, din motive didactice. De altfel, deşi destul de restrictivă, LP
formule satisfiabile, valide şi nesatisfiabile, introducându-se şi
este suficient de „bogată” pentru a putea exprima (şi deci, studia
studiindu-se alte concepte de natură semantică, cum ar fi cele de
formal) afirmaţii intreresante privind lumea reală. Urmărind exemplul
echivalenţă (slabă, tare) sau de consecinţă semantică. Problema cea mai
de mai jos, vom înţelege poate mai uşor/mai exact conţinutul de până în
importantă de care ne-am ocupat a fost problema SAT (a satisfiabilităţii
prezent al cărţii.
Fundamentele logice ale Informaticii
113
114
Cristian Masalagiu
Exemplu. Fie următoarea afirmaţie:
F = (F1 F2) F3, unde F1 = P (E G), F2 = P E şi
Dacă există petrol în Patagonia atunci fie experţii au dreptate, fie
F3 = G, adică:
guvernul minte. Nu există petrol în Patagonia sau experţii greşesc,
F = ((P (E G)) ( P E)) G.
aşadar guvernul nu minte.
Să determinăm formal valoarea de adevăr a lui F.
O primă întrebare ar fi: Formuleazş ea un adevş r?
Metoda 1 (încercăm să folosim algoritmul de marcare). Pentru
Logica ne oferă o modalitate de a răpunde la întrebare cât mai exact.
aceasta, F ar trebui să fie tare echivalentă cu o formulă Horn:
Ideea este de a exprima afirmaţia anterioară, cât mai adecvat, ca o
F
formulă F din LP şi apoi de a vedea dacă formula respectivă este satisfiabilă, validă sau contradicţie, pentru a putea trage concluziile de
(definiţia implicaţiei) (( P E G ) ( P E )) G
rigoare. Pentru aceasta, vom izola următoarele propoziţii, pe care le vom privi drept variabile (elemente din A):
(de Morgan) ( P E G ) ( P E) G
P - Există petrol în Patagonia
(dubla negaţie,
E - Experţii au dreptate
asociativitate)
G - Guvernul minte
(P E G) ( (P E) G)
Î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ă
(distributivitate) (P E G) ((P G) (E G))
exprime. În continuare, 1., 2. şi 3. sintetizeză cunoştinţele prezente în
(distributivitate,
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:
idempotenţă) (P G) (P E G) ( E P G) ( E E G) ( G P) ( G E) (legea tautologiei, idempotenţă, comutativitate)
115
Fundamentele logice ale Informaticii
116
(P G) (P G E) (P G E) ( G E)
Cristian Masalagiu
P
E
G
G
PG
EG
F
(asociativitate,
0
0
0
1
1
1
1
distributivitate)
0
0
1
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
0
1
0
idempotenţă,
1
0
0
1
1
0
0
comutativitate)
1
0
1
0
1
0
0
(P G) (E G).
1
1
0
1
1
1
1
Prin urmare, F poate fi considerată ca fiind formula Horn
1
1
1
0
1
1
1
(P G) ((P G) (E E)) ( G E) (legea contradicţiei,
{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
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
mulţimi găsim că F = {P E 0, P G, E G, 1 G}. Aplicarea
natural afirmaţia „elementară” P (adică, de fapt, Există petrol în
Algoritmului Horn conduce la marcarea doar a lui G şi la răspunsul
Patagonia) este consideratş ad literam, împreună cu semantica sa
că F este tot satisfiabilă. În concluzie, F este satisfiabilă dar
(adică se acceptă cumva intuitiv şi implicit, ca fiind un adevăr: în
nevalidă, ceea ce poate apare ca un fapt ciudat dacă ne-am fi luat după
Patagonia există petrol), pe când în LP, P este un simplu nume
forma iniţială a afirmaţiei în limbaj natural. Dacă am cunoaşte toate
sintactic de variabilş , care semantic poate avea orice valoare de
structurile care sunt model pentru F, acest lucru ar deveni poate
adevş r.
explicabil. Aplicarea metodei următoare poate fi o soluţie.
Metoda 3 (a rezoluţiei). Pornim din nou cu forma mai simplă
Metoda 2 (a tabelelor de adevăr). Ştim deja că F(P G)(E G),
F (P G) (E G) şi dorim să vedem dacă F este nesatisfiabilă,
de aceea nu vom folosi forma iniţială, care este mai complicată. Avem:
utilizând rezoluţia. Prin urmare, F = {{P, G}, {E, G}} şi practic se
117
Fundamentele logice ale Informaticii
118
Cristian Masalagiu
Res*(F), adică F este satisfiabilă.
pânş acum, însş doar în metalimbaj. S-ar ajunge atunci la ceva de
Lăsăm pe seama cititorului să arate, folosind tot această metodă, că F
forma (presupunând că relaţia iniţială este deja exprimată ca fiind o
este nevalidă. ■
mulţime de perechi de tipul ):
găseşte imediat că Res*(F) = F,
F’ = (x)(y)(f(x) = y) (x)(y)(z)(f(x) = y f(x) = z y =z), Nu am avea acelaşi succes dacă am dori să „exprimăm
lucru care ar permite păstrarea tuturor principiilor logicii aristotelice,
convenabil” în LP o afirmaţie ca: „O relaţie binară f ⊆ A × B este
iar „puterea de exprimare directă” a limbajului este clar „mai mare”
funcţie atunci şi numai atunci când pentru fiecare element a ∈ A, dacă
(F’ LP, dar poate aparţine unei supramulţimi alese corespunzător).
există b1, b2 ∈ B cu f(a) = b1 şi f(a) = b2, rezultă b 1 = b2”. Am putea
Atuci va exista într-adevăr posibilitatea de a lucra cu afirmaţii
încerca ceva de genul (începem tot cu „delimitarea” subformulelor
elementare cu semnificaţie clară, de a avea o semantică explicită pentru
atomice):
cuantificatori, de a exprima direct relaţii (cum ar fi relaţia de egalitate),
D: f A B este o relaţie binară.
sau, dacă se doreşte neapărat, relaţia de apartenenţă a unor obiecte la
E: A’ este o submulţime a lui A formată din toţi a A pentru
anumite mulţimi, etc. Capitolul 3 este destinat studiului unei extensii
care există măcar două elemente distincte b1, b 2 B, care
posibile a lui LP şi anume LP1, logica (calculul) cu predicate de
satisfac f(a) = b1 şi f(a) = b 2, sau, pentru care nu există nici un
ordinul I.
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
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
Fundamentele logice ale Informaticii
119
120
Cristian Masalagiu
formule propoziţionale, 53
rezoluţia liniară bazată pe o clauză iniţială, SLD-rezoluţia, 106
variabile propoziţionale, 53
rezoluţia bazată pe o mulţime suport, 108
formule atomice, 54
rezoluţia de intrare, 109
arbore ataşat unei formule, 55 subformulă, 56
§10. Exerciţii
problemă de decizie, 57
1. Rezolvaţi Exerciţiul 2.1.
literali (pozitivi, negativi), 59
2. Rezolvaţi Exerciţiul 2.2.
clauze, clauze pozitive, clauze negative, 59
3. Rezolvaţi Exerciţiul 2.3.
clauze Horn, clauze Horn pozitive, 59
4. Rezolvaţi Exerciţiul 2.4.
asignare, interpretare, structură, 60
5. Completaţi demonstraţia Teoremei 2.1.
structură completă, 62
6. Rezolvaţi Exerciţiul 2.5.
formule satisfiabile (model), valide (tautologii), 63
7. Arătaţi că în LP există formule satisfiabile (dar nevalide),
formule nesatisfiabile (contradicţii), 63 formule tare şi slab echivalente, 64
formule valide, contradicţii. 8. Arătaţi că sunt adevărate afirmaţiile:
consecinţă semantică, 65
(a) şi s sunt relaţii de echivalenţă pe LP.
forme normale (disjunctive, conjunctive), 71
(b) este compatibilă la dreapta şi la stânga cu , şi
clauza vidă, 80
compatibilă cu .
forma implicaţională a clauzelor Horn, 80
(c) LP = < LP/, ∧, ∨, ⎤ > formează o algebră booleană.
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
(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
Fundamentele logice ale Informaticii
121
122
Cristian Masalagiu
va fi liderul Partidului. Dacă Popescu nu este ales liderul
(c) Dacă F G este validă şi F este satisfiabilă, atunci G este
Partidului, atunci fie Ionescu fie Rădulescu va părăsi partidul şi
satisfiabilă.
vom pierde alegerile. 12. Se dă formula:
18. Folosind cele menţionate despre necesitatea de a utiliza un limbaj mai complex pentru reprezentarea realităţii prin formule,
F = ((A1 A3) (A2 A4)) ((A1 A2) (A2 A4)).
găsiţi o formulă F care să conţină un simbol funcţional f de
Să se elimine conectorii care apar în F şi apoi să se elimine
aritate 1 şi care să exprime faptul că f este funcţie injectivă şi
„cât mai multe” paranteze (fără a schimba semantica formulei),
surjectivă.
ţ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ă.
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).
124
Capitolul 3
Cristian Masalagiu
începe cu anumite transformări de natură sintactică. Mai precis,
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
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
formulelor LP sunt deja descurajatoare. Principalul argument este acela că lumea reală nu poate fi modelată satisfăcător şi simplu prin
său, fiecare Pi este o mulţime cel mult numărabilă de predicate
formule logice care utilizează doar variabile propoziţionale şi
de aritate i (i N). Elementele lui P0 se mai numesc şi
conectori. De aceea principala modificare va fi de natură sintactică,
variabile predicative.
manifestată prin adăugarea cuantificatorilor logici (există şi pentru orice),
împreună
cu
introducerea
F = {F0, F1, ...}: o mulţime cel mult numărabilă de simboluri
constantelor,
funcţionale (sau funcţii) cu arităţi, fiecare Fi fiind o mulţime
simbolurilor funcţionale (de aritate mai mare decât unu) şi a
cel mult numărabilă de funcţii de aritate i (i N). Elementele
simbolurilor predicative. Din acest punct de vedere, limbajul logicii cu
lui F0 se numesc şi constante (funcţionale).
variabilelor,
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
la care se pot adăuga, opţional, şi alte simboluri cum ar 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.
C1 = {, , }: o mulţime de conectori logici (conective logice), , 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
§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
început este suficient să considerăm doar cuantorii universali.
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
126
Cristian Masalagiu
pot fi considerate ca fiind operatori pe şiruri de caractere, de aritate 1 sau 2).
scurt, P):
i0
i 0
Alf = X U ( Pi ) U ( Fi ) U C1 U C2 U P
i0
i 0
Definiţia 3.1 (sintaxa LP1). Fie Alf alfabetul fixat anterior. Atunci mulţimea formulelor calculului cu predicate de ordinul I, LP1 Alf,
Mulţimile Pi şi Fi vor fi notate tot cu P respectiv F, atunci când
este dată constructiv prin:
nu există confuzii.
Baza. Se defineşte mulţimea formulelor atomice, notată cu At, prin: (i)
Po At (variabilele predicative sunt formule atomice).
Observaţie. Prin „o mulţime cel mult numărabilă” înţelegem o
(ii) Pentru fiecare n N*, pentru fiecare P Pn, pentru fiecare
mulţime numărabilă, finită sau vidă. Intuitiv, variabilele funcţionale
t1, t2, …, tn T, avem P(t1, t2, ……, tn) At.
notate x vor fi nume generice pentru elementele dintr-un anumit
(iii) Nimic altceva nu mai este formulă atomică.
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
Î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).
argumente peste acelaşi domeniu, codomeniul fiind {a, f}, sau B (într-o
Pas constructiv. Pentru fiecare n N*, pentru fiecare f Fn,
interpretare vom avea P() = 1 dacă şi numai dacă
pentru fiecare t1, t2, … , t n T, avem f(t1, t2, ……, t n) T.
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,
Concluzionăm această etapă a definiţiei prin a „spune” că At LP1
peste acelaşi domeniu şi codomeniu. Pentru parantezele utilizate în
(formulele atomice sunt formule).
scrierea cuantificatorilor ar trebui de fapt folosit un alt font (ca de altfel
Pas constructiv. Continuăm definirea lui LP1Alf cu partea „formule
şi pentru virgulă). ■
vechi din formule noi”. (i)
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,
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.).
127
Fundamentele logice ale Informaticii
128
Cristian Masalagiu
(iii) Dacă F LP1 atunci (x)(F) LP1 (dacă dorim, punem şi
f
( x)(F) LP1), pentru fiecare x X . ■ Arb(t1)
Ca şi în cazul LP, se definesc constructiv subf(F), mulţimea
Arb(tn)
subformulelor formulei F, şi Arb(F), arborele ataşat lui F (cuantorii sunt operatori de aritate 1). Singura subformulă a unei formule atomice
Ştiind Arb(t) pentru fiecare t T, putem acum construi Arb(F) pentru
este ea însăşi şi Arb(F) va fi constituit în acest caz dintr-un simplu nod.
fiecare F At, după cum urmează.
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”,
(i)
Dacă P P0, atunci Arb(P) este:
P
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ă);
(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:
(iv) Dacă F LP1 atunci (F) LP1.
Q 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(t1)
Arb(t), poate fi dat constructiv prin: Baza. Dacă t = c F0, atunci Arb(t) este:
c
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)
Dacă t = x X, atunci Arb(t) este:
x
(similar, (x)(F1)), sau (F1) (Arb(F1) coincide cu Arb((F1)), lipsind doar nodul etichetat cu ), unde F1, F2 sunt tot formule (oarecare).
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:
Arborele ataşat lui F va avea în consecinţă una dintre formele:
129
Fundamentele logice ale Informaticii
130
Cristian Masalagiu
În cazul lui subf(F), poate este bine să subliniem faptul că ()
(x)
()
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
Arb(F1)
Arb(F1)
Arb(F2)
Arb(F1)
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ă. ■
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
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
simboluri distincte care apar în Alf să fie disjuncte, atunci putem scrie
apariţii libere în F, şi cu leg(F) – mulţimea variabilelor care au apariţii
Pt1t2...tn în loc de P(t1, t2, ..., tn), adică putem elimina de tot aceste
legate în F. Desigur că pentru fiecare x X, este posibil ca x să nu
paranteze (care oricum trebuiau să aibă alt font decât cele din P). Şi în
apară în F, să aibă doar apariţii libere, doar apariţii legate, sau şi apariţii
cazul cuantificatorilor, în loc de (x)(F) putem scrie x(F). Astfel,
libere şi apariţii legate. Putem nota cu var(F) = free(F) U leg(F). O
putem conveni că singurele paranteze care „merită” a fi luate în
situaţie nenaturală din punct de vedere semantic, dar posibilă sintactic,
considerare atunci când apar într-o formulă sunt cele din P. ■
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
131
Fundamentele logice ale Informaticii
132
Cristian Masalagiu
conveni să notăm mulţimea acestor variabile cu restvar(F) şi să
De obicei, se utilizează doar substituţii permise pentru o formulă
includem şi această mulţime în var(F).
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
Exerciţiul 3.1. Definiţi constructiv leg(F) şi free(F).
legate în F (s de mai sus va fi permisă pentru F dacă va fi permisă
Definiţia 3.4 (închideri). O formulă F LP1 se numeşte închisă dacă
pentru fiecare componentă a sa, [xi/ti], i [n]). Ordinea (fixată deja
nu conţine apariţii libere de variabile (altfel spus, free(F) = Ø). Pentru
prin modul de scriere) aplicării substituţiilor elementare dintr-o
formula
formula
substituţie s este esenţială în majoritatea cazurilor. O substituţie s este
(x1)((x2)( …((xk)(F)) ... ) (notată, pentru simplitate şi cu (*)(F)
normalizată (pentru F) dacă ordinea de aplicare a substituţiilor
sau chiar (F)), unde {x1, x2, … , xk} = free(F). Analog (înlocuind cu
elementare componente nu contează. Mai precis, s este normalizată
) se defineşte (notează) închiderea existenţială a lui F. Se va numi
dacă avem (F)s = (F)s’, pentru fiecare s’ care este obţinută din s printr-
matricea lui F (notată F*) acea formulă obţinută din F prin ştergerea
o permutare a componentelor acesteia. Substituţia vidă (ca element
(sintactică, textuală) a tuturor cuantificatorilor (x) şi (x). O formulă
neutru al lui S*), notată [], nu face desigur nici o transformare în
care nu este închisă, se numeşte deschisă (o formulă în care var(F) = Ø
formula F căreia îi este aplicată, adică avem (F)[] = F.
F,
se
numeşte
închiderea
sa
universală
se consideră a fi închisă). ■ Exerciţiul 3.2. Arătaţi că pentru fiecare F ∈ LP1 şi fiecare Definiţia 3.5 (substituţii). Prin substituţie vom înţelege o secvenţă
substituţie s, permisă pentru F, care îndeplineşte condiţia că ea nu
finită de elemente de tipul [x/t] (numite şi substituţii elementare),
coţine un element de forma [x/t] astfel încât t nu conţine x, există
unde x X, t T. ■
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ă.
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.
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,
Fundamentele logice ale Informaticii
133
134
Cristian Masalagiu
z, ...) vom nota variabilele. Literele latine mici de la începutul
domeniul sintactic al cuantificatorului respectiv. Domeniul sintactic
alfabetului (a, b, c, ...) vor nota constantele. Literele latine mari de la
pentru o apariţie a unui cuantor (să spunem că aceasta este (∀x))
mijlocul alfabetului (P, Q, R, ...) vor nota simbolurile predicative.
într-o formulă F, reprezintă porţiunea continuă de text (care este o
Literele latine mici de la mijlocul alfabetului (f, g, h, ...) vor fi rezervate
subformulă G alui F), care începe cu primul simbol de după o apariţie a
pentru desemnarea simbolurilor funcţionale, iar cu F, G, H, … vom
cuantorului în cauză, identificat mai jos prin subliniere (parcurgem
nota formulele. Dacă nu am adopta astfel de convenţii (dorim, totusi, să
formula de la stânga la dreapta) şi se termină cu un anumit simbol
avem o anumită libertate de exprimare şi să folosim şi alte nume înafara
ulterior (să-l identificăm tot prin subliniere), conform următoarelor
celor admise de alfabetul iniţial, aşa cum am folosit şi în cazul LP), am
situaţii:
avea, posibil, cazuri în care, la o primă vedere, nu am putea distinge
F = ... (∀x)(G’) ... . Nu sunt probleme, deoarece parantezele
între o variabilă şi o constantă. Sintactic, diferenţa dintre un nume de
cerute de sintaxa dată de Definiţia 3.1. nu au fost eliminate. Ca
variabilă (element din X) şi un nume de constantă (element al lui F0)
observaţie, parantezele subliniate de mai sus sunt (se mai
este clară doar în momentul când numele respectiv apare într-un
numesc şi) corespondente (definiţia sintactică a unei formule nu
cuantificator.
permite existenţa unei paranteze deschise fără ca ea să fie închisă ulterior, neexistând ambiguităţi nici în privinţa
Definiţia 3.6. Un term care nu conţine variabile se numeşte term de
parantezei închise care corespunde unei anumite paranteze
bază. Analog, vom avea formule de bază, substituţii de bază, etc. ■
deschise).
F = ... (∀x)G. Situaţia evidenţiază faptul că domeniul se extinde
Ca şi pentru LP, putem renunţa la anumite paranteze (nu uităm,
„până la sfârşitul formulei”, dar condiţia suplimentară este
sunt implicate doar elementele lui P) într-o formulă, bazându-ne pe
aceea că în G nu există nici o paranteză închisă care să nu aibă
aceeaşi idee (priorităţi acordate operatorilor, proprietăţi generale ale
corespondent o paranteză deschisă situată tot în domeniu (nu
acestora cum ar fi asociativitatea, convenţii, etc). În cazul unui cuantor,
uităm că domeniul începe oricum cu primul simbol de după
avem nevoie, înafara priorităţii care este maximă (adică 0; standard,
(x)). Nu am mai subliniat simbolurile de început şi sfârşit a
vom admite că are prioritatea 1, - 2, - 3, - 4, - 5, etc.; în
domeniului, deoarece ei sunt primul şi respectiv ultimul simbol
cadrul unei secvenţe continue de operatori de aceeaşi prioritate,
din G.
parantetizarea se face la dreapta), şi de definirea a ceea ce se numeşte
135
Fundamentele logice ale Informaticii
136
Cristian Masalagiu
F = ... ( ... (∀x) ... ) ... . Este pus în evidenţă cazul în care au fost
tipul ... 1 ... 1 ... 2 ... 2 ... , sau imbricate - ... 1 ... 2 ... 2 ... 1 ... , dar nu
eliminate parantezele iniţiale de după cuantificator, dar în
se pot „intersecta”, ca în situaţia ... 1 ... 2 ... 1 ... 2 ... . Dacă o apariţie
subformula G care urmează după acesta există o paranteză
a unei variabile x se află în interiorul mai multor domenii imbricate,
închisă care are corespondent înainte de apariţia cuantorului al
desigur că ea aparţine tuturor. Apariţiile diferite ale unui simbol pot
carui domeniu îl căutăm. Ceea ce am subliniat este prima
avea semnificaţii (valori) diferite. Astfel, în ... 1 ... 2 ... 3 ... x(1) ... 3 ...
paranteză cu această proprietate (practic, simbolul imediat de
x(2) ... 2 ... 1 ... , apariţia lui x notată x(1) şi cea notată x(2), pot practic fi
dinaintea ei fiind ultimul care aparţine domeniului).
considerate ca fiind nume de variabile diferite. În ceea ce priveşte
Prioritatea cuantificatorilor fiind maximă, se găsesc mai întâi domeniile
parantezele adăugate, ele pot fi fie restaurări ale parantezelor şterse,
sintactice ale fiecărui cuantificator dintr-o formulă şi apoi se aplică
fie ne folosim de (iv) (Definiţia 3.1, Pas inductiv extins).
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
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
variabilele locale). Procedurile n-au însă şi un sfârşit marcat explicit,
cuantificatori, iar z X conform convenţiilor făcute (e literă de
astfel încât domeniul sintactic este corpul procedurii, delimitarea lui
la sfârşitul alfabetului). Variabila x apare de 4 ori în F (de la
clară fiind desigur absolut necesară pentru a cunoaşte porţiunea de
stânga la dreapta: x are o apariţie liberă în Q(x); o apariţie legată
text în care numele unei variabile păstrează o aceeaşi semnificaţie.
în P(f(x), z), ea fiind în domeniul sintactic al cuantorului (x); o
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
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
137
Fundamentele logice ale Informaticii
138
Cristian Masalagiu
consecinţă, free(F) = {x, z}, leg(F) = {x}, var(F) = {x,z} (sau
Q(x), P(f(x), z), Q(a) şi R(x, z, g(x)). În plus, Q(a) este o formulă de
chiar {x, y, z} dacă acceptăm ca restvar(F) să fie introdus în
bază. Să reamintim din nou că avem o definiţie formală pentru subf(F)
var(F)).
doar în cazul în care n-am eliminat paranteze din F şi că subformulă a
a F0 conform convenţiilor.
lui F este orice subcuvânt al său care aparţine lui LP1.
Q P1, P P2, R P3, din scrierea sintactică (nici convenţiile
Termii (funcţionali) care apar în formulă. Ei sunt în ordine: x, f(x),
nu sunt contrazise).
z, a, g(x) (de fapt, termii x şi z au câte două apariţii, ei fiind şi
f, g F1, din scrierea sintactică (la fel, convenţiile „spun”
variabile).
Mulţimea subformulelor închise ale lui F. Nu avem asemenea
acelaşi lucru). Domeniile cuantorului
sintactice (x)
ale
cuantorilor.
este
format
Domeniul 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:
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
Fundamentele logice ale Informaticii
139
140
Cristian Masalagiu
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ă
(x)
Q
generează de obicei grave anomalii semantice). Tot din acest motiv, s este şi normalizată. Arborele ataşat formulei
x
(y)
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 „()”):
(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.
141
Fundamentele logice ale Informaticii
§2. Semantica logicii cu predicate de ordinul I
142
Cristian Masalagiu
univers, interpretarea unui simbol predicativ n-ar este o funcţie de
Înţelesul (semantica) unei formule F LP1 va fi, la fel ca în
la USn la {0, 1} (sau, uneori, mulţimea elementelor din US n pentru
logica propoziţională, o valoare de adevăr 0, 1 B, valoare obţinută
care valoarea în cauză este 1), iar semantica unui simbol funcţional
într-un mod extensional. Elementul principal în definirea semanticii va
de aritate n este o funcţie de la USn la US. Pentru simplificarea
rămâne noţiunea de structură. Deşi definiţia unei structuri şi găsirea
exprimării, vom renunţa la indici dacă nu există confuzii şi vom nota
unei valori de adevăr pentru o formulă va depinde practic doar de
pe IS tot cu S. Similar cu cazul logicii propoziţionale, orice structură va
simbolurile care intervin în acea formulă, vom prefera să utilizăm în
putea fi unic extinsă astfel încât să fie definită pentru toate elementele
continuare să ne folosim de funcţiile totale în locul celor parţiale.
lui LP1.
Definiţia 3.7. Se numeşte structură un cuplu S = în care US
Definiţia 3.8. Pentru fiecare structură S = , vom numi extensia
este o mulţime nevidă numită univers, iar IS este o funcţie (numită şi
sa imediată funcţia
interpretare)
S’ : X U P U F U T U LP1 US U [ US B] U [ US US] U B,
IS : X U P U F US U [US B] U [US US],
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ă
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
că S’ s-a definit, în particular, pentru fiecare term elementar. Fie acum
n
n
US . ■
Î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
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
Fundamentele logice ale Informaticii
143
144
Cristian Masalagiu
deja definită (S’(P) = S(P) B), iar în al doilea caz punem desigur
propoziţionale, vom folosi titulatura de structură corectă pentru o
S’ (P) = S(P)(S’ (t1), S’ (t2), ... , S’ (tn)) B.
formulă (sau o mulţime de formule), pentru a denota restricţia unei
Pas constructiv. Vom avea de considerat cazurile:
structuri la simbolurile din Alf care apar într-o formulă (acesta fiind de
(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).
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
(iv) F = (x)(G). Atunci S’(F) = 1 dacă şi numai dacă pentru fiecare
presupune astfel că mulţimea de variabile este numărabilă, că în
u US avem S’[x/u](G) = 1 unde S’[x/u] este o interpretare care coincide
mulţimea P cel puţin P0, P1, P2 sunt nevide, că mulţimea F conţine
în totalitate cu S’ exceptând faptul că S’(x) = u.
măcar un simbol funcţional (indiferent de aritate), etc. Fără restricţii de
(v) F = (x)(G). Atunci S’(F) = 1 dacă şi numai dacă există (măcar) un
acest tip, există pericolul ca LP1 să fie trivială (de exemplu, mulţimea
element u US astfel încât S’[x/u](G) = 1. ■
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
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ă
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
dată S prin S(F) sau chiar FS (de fapt, tehnic vorbind, am putea face
predicativ de aritate 2 (să presupunem că P2 ≠ Ø şi „=” P2). În
acest lucru de-abia după demonstraţia Teoremei 3.1). În mod cu totul
momentul în care considerăm o formulă F care conţine un asemenea
similar vor fi notate interpretările celorlalte simboluri în structura dată:
simbol şi ne interesează existenţa unui model, este normal să-l căutăm
xS, cS, fS, PS, tS, etc. Putem vorbi acum de noţiuni pe care le cunoaştem
doar printre structuri de forma S = în care =
deja, cum ar fi model, formule satisfiabile, valide, nesatisfiabile,
egal cu 1 atunci şi numai atunci când a coincide cu b în universul dat
consecinţă semantică, echivalenţă tare şi slabă, etc. Aşa cum am mai
(=S : US US B). Cu alte cuvinte, în asemenea situaţii, clasa
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
S
(a, b) este
structurilor/modelelor „admise” este restrânsă în mod forţat, ceea ce nu are întotdeauna efecte secundare favorabile. Astfel, în situaţia descrisă,
145
Fundamentele logice ale Informaticii
146
Cristian Masalagiu
clasa de formule este notată LP1 {=} (pe scurt, LP1=) şi se numeşte
fH( t1H , t H2 , , t nH ) = f( t1H , t H2 , , t nH ), pentru fiecare n N şi fiecare
calculul cu predicate de ordinul I cu egalitate (punctăm iar: dacă
t = f(t1, t2, ... , tn) T. ■
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{=,
este
semidecidabilă, iar problema satisfiabilităţii pentru LP1=
este
satisfiabilităţii
LP1
etc. Vom vedea că SAT1)
problema
pentru
+},
(notată
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
nedecidabilă. Un rol important în demonstraţii îl au structurile
D(F) cu valori în B). A nu se confunda fH( t1H , t H2 , , t nH ), care denotă
Herbrand.
aplicarea efectivă a funcţiei fH : D(F)n
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:
→ D(F) n-uplului
< t1H , t H2 , , t nH >, cu f( t1H , t H2 , , 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
Baza. În D(F) se pun toate elementele din F0 care apar în F. Dacă F nu
model Herbrand.
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)) =
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,
147
Fundamentele logice ale Informaticii
148
Cristian Masalagiu
adică dacă şi numai dacă pentru fiecare u US avem PS(u, fS(u)) = 1 şi
(ii) Să se găsească o structură S = , corectă pentru F, astfel
QS(gS(bS, zS)) = 1. În acest moment, pentru obţinerea structurii cerute,
încât S F. Procedăm identic cu cazul precedent, doar în final luăm de
se pune mai întâi problema alegerii unui univers US corespunzător. Ar
exemplu QS(n) = 1 dacă şi numai dacă n este număr par.
trebui să ne gândim măcar la D(F) (a fost recent construit) şi la N, care
(iii) Să se găsească universul Herbrand al lui F. Conform Definiţiei
este o mulţime cunoscută, având numeroase proprietăţi. Cum ambele
3.9, începem (Baza) prin a introduce în D(F) constantele care apar în F.
mulţimi au acelaşi cardinal, vom încerca întâi cu US = N. Apoi, într-un
Prin urmare, iniţial (conform convenţiilor deja adoptate), D(F) = {b}.
prim pas ar trebui să găsim o relaţie PS : N N N şi o funcţie
Rămâne să aplicăm Pasul constructiv cât timp este posibil, „obţinând”
fS : N N, astfel încât pentru fiecare u U S să avem PS(u, fS(u)) = 1.
D(F) = {b, f(b), f(f(b)), … } U {g(b, b), g(g(b, b), b), ... } U {f(g(b, b)),
O relaţie binară pe N, cunoscută, este relaţia de ordine parţială .
f(f(g(b, b))), …} U {g(f(b), b), … } U ... . Desigur că D(F) este
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,
numărabilă. Într-adevăr, considerând D(F) ca o mulţime de cuvinte peste alfabetul
a = {b, g, f, (, ), ,}, putem defini lungimea, l(w), unui
a* ca fiind egală cu numărul de caractere care îl compun
pentru fiecare u US. Structura deja sugerată mai trebuie completată
cuvânt w
de alegerea corespunzătoare a relaţiei QS : N N, a funcţiei
(poate chiar exceptând parantezele). Atunci, pentru fiecare n N,
gS : N N N şi a valorilor bS N şi zS N, astfel încât să avem şi
mulţimea cuvintelor de lungime n va fi finită şi astfel D(F) va fi o
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
sfârşit,
QS(n)
(gS este
adunarea pe N) şi, î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.
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
149
Fundamentele logice ale Informaticii
cuvânt). În consecinţă, mulţimea D(F) ⊆
a* este şi ea total ordonată
150 (i) S’(( F1 )) =
Cristian Masalagiu
S '(F1 ) , pentru fiecare F LP1.
prin restricţia relaţiei ∠. Vom prescurta acest lucru scriind
(ii) S’((F1 F2)) = S’(F1) • S’(F2), pentru fiecare F1, F2 LP1.
D(F) = {w1, w2, ... }, ştiind şi că w1 ∠ w2 ∠ ... . Să mai notăm faptul că
(iii) S’ ((F1 F2)) = S’(F1) + S’(F2), pentru fiecare F1, F2 LP1.
D(F) este întotdeauna o mulţime nevidă, ea putând fi finită în cazul în
(iv) S’((x)(G)) = 1 dacă şi numai dacă pentru fiecare u US avem
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
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
(structurile Herbrand pentru o formulă F sunt întotdeauna corecte
u US astfel încât S’[x/u](G) = 1 (pentru fiecare x X şi fiecare
pentru F), avem D(F) = {w1, w2, ... } şi putem lua PH1 = PH2 = ,
G LP1).
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. ■
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
Teorema 3.1 (de extensie). Pentru fiecare structură S = ,
prin reducere la absurd, folosind direct relaţiile (i) – (v). ■
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
Exerciţiul 3.3. Fie F o formulă din calculul cu predicate de ordinul
US U [US B] U [ US US] U B, care extinde S şi satisface
I, cu sau fără egalitate, (∀*)F închiderea sa universală şi (∃*)F
condiţiile:
Fundamentele logice ale Informaticii
151
152
Cristian Masalagiu
închiderea sa existenţială. Ce se poate spune despre legătura dintre
LP1, la fel cum mulţimea numerelor raţionale este o aproximare a
aceste formule în privinţa satisfiabilităţii (validităţii)?
mulţimii numerelor reale. Numele folosite, logică propoziţională respectiv logică cu predicate de ordinul I, sunt legate de lipsa
În secţiunile/paragrafele următoare din Capitolul 3 vom urma
cuantificatorilor respectiv de folosirea acestora pentru a „lega” doar
un drum oarecum similar cu calea parcursă în cazul LP, pentru a ajunge
variabilele (nu şi, de exemplu, simbolurile funcţionale sau cele
în situaţia să testăm satisfiabilitatea unei formule din LP1 utilizând
predicative). Cuvântul calcul, utilizat ca un sinonim pentru logică în
rezoluţia (adaptată pentru noul context). Avem nevoie de câteva
acest context, exprimă faptul că mulţimile (de formule) considerate nu
rezultate preliminare.
sunt „amorfe”, ci pot fi „prelucrate” într-un mod „sistematic” (vorbim despre calculul diferenţial şi integral, de exemplu). O logică (calcul) în
§3. Forme normale în LP1
care ar fi permisă şi cuantificarea simbolurilor predicative (eventual şi a
Să observăm mai întâi că LP1 poate fi considerată ca o extensie
celor funcţionale), ar putea fi numită logică (calcul) cu predicate de
reală a lui LP, atât la nivel sintactic cât şi la nivel semantic. Orice
ordinul II (LP2), dacă ţinem cont de faptul observat deja că (măcar)
formulă de bază din LP1 (formulă care nu conţine variabile) poate fi
elementele lui P0 sunt formule atomice pentru LP dar „variabile” în
interpretată ca o formulă propoziţională (inclusiv elementele lui P0).
LP1 (analog, formulele atomice din LP1 ar putea fi „variabile” în
Dacă formula în cauză nu conţine nici apariţii de conectori (şi, evident,
LP2). Fiecare nou tip de logică (LP1, LP2, …), trebuie să fie în
nici de cuantori), ea va putea fi considerată drept o variabilă
acelaşi timp o extensie şi o aproximare a logicii anterioare (pe scurt, o
propoziţională. Conchidem că din punct de vedere sintactic avem
generalizare sau o logică de ordin superior). După cum am mai
într-adevăr LP LP1 (însă este iar nevoie de nişte presupuneri
subliniat de câteva ori, deşi rezultatele privind complexitatea sau
suplimentare privind cardinalitatea unor mulţimi ca P0,F0, F1 sau P1).
tratabilitatea
Mai mult, considerând orice structură S ca funcţie semantică în sensul
descurajatoare chiar pentru logici de ordin inferior, căutarea unor logici
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
(algoritmică
a)
unor
probleme
importante
sunt
„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ă.
Fundamentele logice ale Informaticii
153
Conţine un simbol funcţional binar f F2 şi un simbol constant
154
Cristian Masalagiu
3. f admite element neutru (notat e): F3: (e)(x)(f(x, e) = f(e, x) f(x, e) = x)).
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ă
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. ■
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
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
Capitolul 4):
apariţii fixate a) lui F cu G. atunci H H’.
1. f este lege de compoziţie internă, binară, pe orice mulţime nevidă
Demonstraţie. Se procedează prin inducţie structurală, într-un mod
considerată:
identic cu cazul LP. Situaţia în care sunt utilizaţi cuantificatorii trebuie
F1: (x)(y)(z)(f(x, y) = z) (x)(y)(u)(v)(f(x, y) = u
tratat suplimentar. Reamintim astfel că afirmaţia de demonstrat este
f(x, y) = v u = v).
(H LP1)P(H), unde
2. f este asociativă:
P(H): (F, G, H’ LP1)(((F subf(H)) şi
F2: (x)(y)(z)(f(x, f(y, z)) = f(f(x, y), z)).
(H’ se obţine din H înlocuind o apariţie fixată a lui F cu G) şi
Fundamentele logice ale Informaticii
155
156 (x)(y)F (y)(x)F
(F G)) H H’). În Pasul inductiv singurul caz netratat anterior, în Teorema 2.5
Cristian Masalagiu
5.
Dacă x nu apare liber în F, atunci:
(pentru H = (x)H1 se procedează similar) este:
(x)F F
(iv) H = (∀x)H1. Fie orice F subf(H) = {H} U subf(H1). Dacă F = H,
(x)F F.
nu mai avem ce demonstra, la fel ca în cazul Baza. Să presupunem că
Demonstraţie. Începem cu prima echivalenţă din 5. Fie astfel orice
F subf(H1) şi fie H1’ formula care se obţine din H1 înlocuind o
structură (corectă) S = astfel încât
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.
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
Teorema 3.3. Pentru fiecare F, G LP1 şi fiecare x, y X, sunt adevărate următoarele echivalenţe: 1.
2.
lăsându-le pe seama cititorului. Fie din nou orice structură S = corectă pentru formulele care intervin. Avem succesiv:
(x)F (x)( F)
S((x)(F) G) = 1 dacă şi numai dacă
(x)F (x)( F)
pentru fiecare u US, S[x/u] (F) şi S (G) = 1 dacă şi numai dacă (folosim
Dacă x nu apare liber în G, atunci:
5., pentru G)
(x)(F G) (x)(F) G
pentru fiecare u US, S[x/u] (F) = 1 şi S[x/u] (G) = 1 dacă şi numai dacă
(x)(F G) (x)(F) G
pentru fiecare u US, S[x/u] (F G) = 1 dacă şi numai dacă
(x)(F G) (x)(F) G
S((x)(F G)) = 1. ■
(x)(F G) (x)(F) G 3.
4.
(x)(F) (x)(G) (x)(F G)
Observaţie. Ca o consecinţă a teoremei anterioare rezultă că sunt
(x)(F) (x)(G) (x)(F G)
adevărate şi echivalenţele (x)(x)F (x)F şi (x)(x)F (x)F
(x)(y)F (y)(x)F
(chiar şi variantele (x)(x)F (x)F, respectiv (x)(x)F (x)F),
Fundamentele logice ale Informaticii
157
158
Cristian Masalagiu
care se pot generaliza pentru oricâte apariţii ale cuantorilor (F ar putea
indiferent de structura considerată). Deoarece echivalenţele anterioare
conţine la rândul ei cuantificatori). Se poate arăta însă că nu sunt
pot fi interpretate şi ca modalităţi de transformare a formulelor care
adevărate echivalenţele (mai exact, există x X, există F, G LP1
păstrează validitatea („mutând cuantificatorii în faţă”), putem
astfel încât, mai jos, formulele din membrul stâng nu sunt echivalente
considera că am făcut un prim pas spre obţinerea formelor normale
cu cele corespunzătoare din membrul drept):
pentru formulele din LP1. Deşi nu este imediat util, am preferat să
(x)F (x)G (x)(F G)
începem cu rezultatul următor datorită importanţei sale în justificarea
(x)F (x)G (x)(F G)
unor afirmaţii şi caracterului didactic al demonstraţiei. Intuitiv, teorema
Să considerăm de exemplu prima relaţie. Chiar la nivel intuitiv cei doi
afirmă că pentru a găsi semantica unei formule F (cu ajutorul unei
membri nu exprimă acelaşi lucru deoarece faptul că F sau G este
structuri S), formulă în care am substituit apariţiile libere ale unei
satisfăcută pentru o (aceeaşi) valoare a lui x nu înseamnă că fie F, fie G,
variabile x cu un term de bază t, putem afla mai întâi semantica lui t în
sunt satisfăcute pentru (alte) valori ale lui x, eventual diferite. Astfel,
structura considerată şi apoi să găsim semantica lui F în noua
putem lua drept contraexemplu:
structură S[x/SS(t)].
F = P(x).
G = Q(x).
Teorema 3.4 (lema de translaţie). Fie F LP1, x X , t T un term
S = , US = N, PS(n) = 1 dacă şi numai dacă n este
de bază şi S orice structură corectă pentru formulele care apar. Atunci:
număr par, QS(n) = 1 dacă şi numai dacă n este număr impar
S ((F)[x/t]) = S[x/S(t)] (F)
(interpretarea lui x în S nu contează, toate apariţiile sale fiind în
Demonstraţie. Arătăm prin inducţie structurală adevărul metaformulei
acest caz legate).
(F)P(F), unde:
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
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.
cuantor este inutilă, la fel fiind şi o nouă cuantificare a unei apariţii deja
(i) F = P P0. Neexistând variabile, afirmaţia este imediată.
cuantificate (interpretarea unei variabile care nu are apariţii libere într-o
(ii) Fie n N*, t1, t2, … , tn T , P Pn astfel încât F = P(t1, t2, …, tn ).
formulă neavând efect în stabilirea valorii de adevăr a acelei formule,
159
Fundamentele logice ale Informaticii
160
Cristian Masalagiu
Dacă x nu apare (liber) în F, afirmaţia este din nou evidentă. În caz
(iii) F = (∀y)G (cazul F = (∃y)G poate fi demonstrat similar). Dacă
contrar, este suficient să demonstrăm rezultatul pentru cazul în care
y = x şi x nu apare liber în G, suntem într-un caz similar cu cel tratat în
există o (singură) apariţie (liberă) a lui x în F. Putem presupune, fără a
Baza. Presupunem că y ≠ x şi x apare liber în G (deci şi în F) măcar
restrânge generalitatea, că x apare la poziţia i (de la stânga la dreapta)
odată.
în t1. În acest caz, este clar că t1 are forma f( , x , ) , sau poate chiar
S((y )((G)[x/t])). Atunci:
coincide cu x. Atunci:
S((y)((G)[x/t])) = 1 dacă şi numai dacă pentru fiecare u US avem
S((F)[x/t]) = S((P(t1, t2 , …, tn ))[x/t]) =
S[y/u] ((G)[x/t])) = 1 dacă şi numai dacă (aplicăm ipoteza inductivă
= S(P((t1)[x/t], t2 , …, tn )) =
pentru G şi S[y/u])
= S((P(f(… , x, …)))[x/t], t2, …, tn ) =
S[y/u][x/S(t)] (G) = 1 dacă şi numai dacă (tS, u US, şi y ≠ x)
= S(P(f(… , t, …)), t2, …, tn ) =
S[x/S(t)][y/u] (G) = 1 dacă şi numai dacă
= S(PS(fS(… , tS, …)), S(t2), …, S (tn)) =
S[x/S(t)] ((y)G) = 1 dacă şi numai dacă
= S [x/S(t)] (F), direct din definiţii, în contextul teoremei.
S[x/S(t)] (F) = 1. ■
i
Ca
urmare,
rezultă
S((F)[x/t]) = S(((y)G)[x/t]) =
Pas inductiv. (i) F = (⎤ G). Atunci S((F)[x/t]) = S(( G)[x/t]) = S(((G)[x/t])) =
Cu următorul rezultat se „începe construcţia” formelor normale.
S((G)[x/t]). Aplicând acum ipoteza inductivă pentru G, obţinem în continuare:
Teorema 3.5 (lema de redenumire a variabilelor legate). Fie
S((G)[x/t]) = S[x/S(t)] (G) = S[x/S(t)] ( G) = S [x/S(t)] (F).
F = (○x)G , ○ {, }, o formulă oarecare din LP1. Fie y o variabilă
Să mai observăm că egalităţile anterioare sunt triviale dacă x nu are nici
nouă (în sensul că ea nu apare în G). Atunci : F (○y)(G[x/y]).
o apariţie liberă în F. (ii) F = (G ○ H), ○ {, }. Se demonstrează analog cu cazul
Demonstraţie. Imediată, prin inducţie structurală. ■
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ă).
În cele de mai sus era suficient să presupunem că y, variabila nouă, nu apare liber în G.
Fundamentele logice ale Informaticii
161
162
Cristian Masalagiu
Definiţia 3.10 (forma normala rectificată). O formulă F LP1 se
Demonstraţie. Fără a restrânge generalitatea, putem presupune că toate
numeşte rectificată (sau, se află în formă normală rectificată, pe scurt
formulele care intervin sunt rectificate. Procedăm prin inducţie
FNR) dacă nu conţine variabile care apar atât libere cât şi legate şi nu
structurală, (meta)afirmaţia de demonstrat fiind evidentă.
are cuantificatori care să lege aceeaşi variabilă, dar pe poziţii diferite în
Baza. F At. Aceasta este deja în FNP, având numărul de
formulă (indiferent dacă este vorba de cuantificatori existenţiali sau
cuantificatori egal cu zero.
universali). ■
Pas inductiv. (i) F = (⎤ F1). Presupunem că F1 este în FNP şi arătăm că F este în
Teorema 3.6. Pentru orice formulă din F LP1, există o formulă
FNP. Conform ipotezei inductive pentru F1, există G1 aflată în FNP
rectificată F’ LP1, astfel încât F’ F.
rectificată
Demonstraţie. Se aplică de un număr finit de ori Lema de redenumire
G1 = (○1 y1) …(○nyn)G, unde ○1, ○2, ..., ○n {, } şi G nu mai conţine
formulei iniţiale F (implicit, se aplică şi Teorema 3.3 şi Teorema de
cuantificatori. Atunci:
substituţie). ■
F = ( F1) (○1 y1) …(○n yn)G (
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. ■
astfel
încât
G1
F1.
' 1
y1 ) …(
Aceasta
'
n
are
aspectul
yn )( G), unde
'
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 = (
' 1
y1 ) …(
'
k
yk ) G '2 ,
'
i
{, }, i [k], G1 şi G2 fiind în
În cele de mai sus, cazul n = 0 se referă la absenţa cuantificatorilor
FNPR (formă normală prenex rectificată) şi echivalente respectiv cu F1
([0] = Ø).
şi F2 . Atunci F G1 ○ G2 = (○1 y1)…(○ mym) G1' ○ (
Teorema 3.7. Pentru fiecare formulă F LP1, există o formulă F’ LP1, care este în FNP şi este tare echivalentă cu F.
' 1
z1 ) …(
'
k
zk ) G '2 (
' 1
z1 ) …(
'
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.
163
Fundamentele logice ale Informaticii
164
(iii) F = (ox)G, o ∈ {∀, ∃}. Conform ipotezei inductive, există o
Cristian Masalagiu
Vom arăta în continuare că dacă există cuantificatori existenţiali
FNPR,
în forma anterioară pentru o formulă, aceştia pot fi eliminaţi, fără a se
G = (○1 y1) … (○n yn)G’, ○i {, }, i [n]. Dacă x {y1, y2, … , yn},
afecta satisfiabilitatea. Testul de satisfiabilitate pentru formulele din
atunci aplicăm mai întâi Lema de redenumire. Să presupunem acum
LP1 poate fi redus astfel la un test de satisfiabilitate pentru formule de
că x {y1, y2, … , yn}. Atunci F (○x)(○1 y1) … (○n yn)G’, formulă
forma F = (y1) … (yn)F*, unde {y1, y2, …, yk} = free(F*), F*
care se află în forma necesară. ■
neconţinând cuantificatori.
Observaţie. Am arătat că pentru fiecare formulă din LP1, există o altă
Definiţia 3.12 (forma normală Skolem). O formulă F LP1 este în
formulă din LP1, care este tare echivalentă cu ea şi care este în FNP
formă
rectificată (pe scurt, FNPR). Conform Teoremei 3.3, putem presupune
F = (x1) … (xk)G unde G nu mai conţine cuantificatori (este
şi că nu există în această formulă cuantificatori care să lege variabile
matricea lui F), iar x1, x2, … , xk sunt variabile distincte şi reprezintă
care nu apar în ea şi nici cuantificatori (relativ la o aceeaşi variabilă) cu
exact variabilele care apar în G (free(G) = {x1, x2, … , xk}). F este în
apariţii multiple. Cu alte cuvinte, din punctul de vedere al
formă normală Skolem clauzală (FNSC, pe scurt), dacă este în FNS
satisfiabilităţii, ne putem limita la studiul formulelor din LP1 de forma
şi matricea sa este în FNC (forma normală conjuctivă) într-un sens
F = (○1 y1) … (○k yk)F’, unde free(F’) = {y1, y2, … , yk}, iar F’ este chiar
similar cu LP (literalii reprezentând acum formule atomice din LP1 sau
matricea lui F, nemaiconţinând alţi cuantori (○1, ○2, …, ○k {, }).
negaţii ale lor). ■
formulă
tare
echivalentă
cu
G,
aflată
în
normală Skolem (FNS, pe scurt), dacă are
aspectul
Prin urmare, folosind şi Exerciţiul 3.3 (o formulă este satisfiabilă dacă şi numai dacă închiderea sa existenţială este satisfiabilă), putem spune
Teorema 3.8. Pentru fiecare formulă F din LP1, există o altă formulă
că pentru testarea satisfiabilităţii unei formule din LP1, putem să ne
F’ LP1, care este în FNSC şi care este slab echivalentă cu ea.
limităm
Demonstraţie. Vom prezenta un algoritm prin care formula F’ va fi
la
clasa
de
formule
având
aspectul
sintactic
F = (○1 y1)(○2 y2) … (○k yk)F*, unde F* este matricea lui F iar
construită efectiv din formula F.
leg(F) = var(F) = free(F*) = {y1, y2, … yk}. Prin urmare, această formulă este şi închisă, neconţinând apariţii libere de variabile. ■
Algoritm Skolem Intrare: F LP1. Fără a restrânge generalitatea, putem presupune că F este în FNPR, închisă.
Fundamentele logice ale Informaticii
165
166
Cristian Masalagiu
Ieşire: F’ LP1, aflată în FNS (şi închisă), slab echivalentă cu F.
Presupunem întâi că H’ este satisfiabilă. Există atunci o structură
Metodă:
corectă S = , astfel încât S H’. Ca urmare, pentru fiecare
Pasul 1. F’ : = F. Pasul 2. Cât_timp (există cuantificatori existenţiali în F’) execută
u1, u2, … , uk US avem
S [y /u ][y /u 1
1
2
2 ]...[yk /u k ]
((G)[z/f(y1, y2, … , yk]) = 1.
2.1. Alege un asemenea cuantificator şi elimină-l.
Pentru că variabilele y1, y2, … yk sunt distincte şi apar liber în
2.2. Transformă formula F’.
(G)[z/f(y1,
Sf_Cât_timp.
S [y /u ][y /u 1
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,
1
2
y2,
… ,
2 ]...[yk /u k ]
yk)]
şi
pentru
că structura S’
(adică
) 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),
alegerea fiind acum deterministă dacă ne gândim că parcurgem formula
distincte, a1, a2, … , ak şi să extindem structurile S şi S’ prin
simbol cu simbol, de la stânga la dreapta). Atunci, în urma Paşilor 2.1
a iS = a iS' = ui , pentru fiecare i [k]. În acest moment, interpretarea
şi 2.2, F’ va căpăta forma F’ = (y1) …(yn)((G)[z/f(y1, … , yn)]) unde
termului t = f(y1, y2, … , yk) în structurile considerate va coincide cu
f este un simbol funcţional nou (în sensul că el nu mai apare în
cea a lui f(a1, a2, … , ak). Putem astfel chiar înlocui pe t cu
formulele considerate), f Fn. Să notăm H (y1) … (yk)(z)G,
f(a1, a2, … , ak), astfel încât el nu va conţine variabile. Avem deci
formula de tip F’ existentă înainte de execuţia unui pas al algoritmului
S’(f(y1, y2, … , yk)) = S’(f(a1, a2, … , ak)) = fS’() =
precedent şi cu H’ = (y1) … (yk)(G)[z/f (y1, y2, … yk)] formula
fS (). Atunci S’((G)[z/t]) = 1 şi t nu conţine variabile, astfel
rezultată după execuţie. ■
încât putem aplica Lema de translaţie, găsind S’[z/S’
S’ Arătăm acum că H este slab echivalentă cu H’.
[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ă.
167
Fundamentele logice ale Informaticii
168
Cristian Masalagiu
Invers, să presupunem că H este satisfiabilă. Fie orice S = ,
Teorema 3.9. Pentru fiecare formulă F LP1, există o formulă
structură corectă pentru H (atenţie, S nu este definită pentru simbolul f),
F’ LP1 astfel încât F’ s F, F’ fiind în FNSC închisă
astfel încât S H. Conform definiţiei, pentru fiecare u1, … , uk US
(F’ = (y1) … (yn)F*, {y1, … , yn} = free(F*), F*, matricea lui F,
există măcar un v US astfel încât
S [y /u ][y /u 1
1
2
fiind în formă normală conjunctivă). ■ 2 ]...[yk /u k ][z/v]
(G)=1.
Extindem pe S la S’, corectă şi pentru H’, punând (în rest, S’ coincide
Exemplul următor ne va sugera şi un algoritm pentru aflarea (unei)
cu S ): f
FNSC (de acum încolo vom presupune că orice formulă aflată în FNSC
S’ (
1,
… , uk>) = v. Prin urmare, pentru fiecare
u1, … , uk US =
US’, avem S[y 1/u1 ][y2/u 2 ]...[yk /u k ][z/f(u1 ,...,u k )] (G)
este şi închisă). = 1.
Luăm acum din nou termul t, t = f(y1, … , yk ) şi folosind aceeaşi
Exemplu. Fie
argumentaţie ca mai sus, putem aplica „invers” Lema de translaţie,
F = (x)(y)(P(x, g(y), z)) ( (x)(Q(x)) (z)(x) R(f(x, z), z))).
obţinând
S [y /u ][y /u 1
1
2
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:
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)
Fundamentele logice ale Informaticii
169
170
Cristian Masalagiu
( Q(u) R(f(v, t), t)). Revenind, x şi y nu apar (liber) în
(A1 A2) (A1 A3). Prin urmare obţinem în final că formula
(u)(t)(v)( Q(u) R(f(v, t), t)) şi atunci F (x)(y)(P(x, g(y), z)
noastră F este slab echivalentă (relaţiile şi s sunt tranzitive; de
(u)(t)(v)( Q(u) R(f(v, t), t))). Acum u, t, v nu apar liber în
asemenea, dacă G H atunci G s H) cu F’, unde:
P(x, g(y), z) şi atunci:
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))). ■
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)).
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.
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)),
§4. Decidabilitate în LP1 (LP1=) Vom începe direct cu un rezultat cumva aşteptat.
unde b F0.
Teorema 3.10. Fie F o formulă din calculul cu predicate de ordinul I
II. F s (x)(u)(t)(v)(P(x, g(h(x)), b) Q(u) R(f(v, t), t)),
fără egalitate, închisă şi aflată în FNS. Atunci F este satisfiabilă dacă şi
unde h F1.
numai dacă F admite un model Herbrand.
III. F s (x)(t)(v)(P(x, g(h(x)), b) Q(i(x)) R(f(v, t), t)), unde
Demonstraţie.
iF1.
Presupunem că F admite model Herbrand. Dacă F admite model
IV. F s (x)(t)(P(x, g(h(x)), b) Q(i(x)) R(f(j(x, t), t), t)), unde
Herbrand, ea este satisfiabilă prin definiţie.
j F2.
Presupunem că F este satisfiabilă. Atunci există o structură
Forma normală Skolem clauzală. Pornim cu:
S = corectă pentru formula dată astfel încât S F. Arătăm că
F* = P(x, g(h(x)), b) Q(i(x)) R(f(j(x, t), t), t).
în acest caz F admite şi un model Herbrand, notat HS = (pe
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.
scurt, modelul va fi notat H). Ţinînd cont de definiţia unei structuri
Atunci F* devine F* = A1 A2 A3 = A1 ( A2 A3)
Herbrand (orice term de bază este interpretat prin el însuşi), rămâne să
Fundamentele logice ale Informaticii
171
172
Cristian Masalagiu
interpretăm simbolurile predicative care intervin în formulă. Astfel,
arătăm că avem S(G) = H(G) pentru fiecare G de una din
pentru fiecare n N, pentru fiecare P Pn care apare în F şi pentru
formele: G = (G1 G2), G = (G1 G2) şi G = (G1) (formula
fiecare t1, t2, ... , tn UH = D(F), vom pune:
fiind închisă, nu mai trebuie considerate cazurile (x)(G1) sau
(*) PH() = 1 dacă şi numai dacă PS() = 1.
(x)(G1)). Şi acest lucru rezultă imediat din (*) şi definiţia
Dacă F nu conţine constante, alegem o constantă arbitrară a F0,
semanticii unei formule din LP1.
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:
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
Fie G orice formulă din LP1 aflată în FNP, fără cuantori existenţiali,
FNP, neavând cuantori existenţiali şi fiind construită peste simboluri
închisă şi conţinând simboluri funcţionale şi predicative care apar doar
funcţionale şi predicative din F. Fie S o structură corectă pentru G,
î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.
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
Demonstraţia afirmaţiei. Procedăm prin inducţie asupra numărului n
n – 1 universali şi x apare liber în G’ (în caz contrar, ajungem până la
de cuantificatori universali care apar în G.
urmă din nou în situaţia din Baza). Astfel, deşi G’ are restul
Baza. n = 0. Atunci G nu conţine cuantificatori şi este închisă. Acest
proprietăţilor cerute pentru a putea aplica ipoteza inductivă, ea nu este
lucru înseamnă că G nu are variabile şi vom arăta că S (G) = H(G).
formulă închisă. Dar, din S (G) = 1 rezultă S((x)G’) = 1, de unde
Procedăm acum prin inducţie structurală asupra submulţimii lui LP1
găsim că pentru fiecare u US avem S [x/u](G’)=1. Această relaţie este
alcătuită din formulele de tipul G de mai sus.
adevărată şi pentru acei u din US care au proprietatea că sunt imagini
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ă
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
Fundamentele logice ale Informaticii
173
construită peste simboluri din F. Putem în sfârşit aplica ipoteza
174
Cristian Masalagiu
Demonstraţie. Se aplică direct Teorema 3.10. ■
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
Definiţia 3.13 (extensia Herbrand). Pentru fiecare formulă F închisă, aflată în FNS, F = (y1) … (yn)F*, {y1, … , yn} = free(F*), F* fiind
de translaţie pentru a găsi (HS)[x/t](G’) = 1 pentru fiecare t din D(G),
matricea lui F, extensia sa Herbrand este mulţimea
adică H((x)G’) = 1, ceea ce înseamnă de fapt că H(G) = 1, adică H
E(F) = {(F*)[y1/t1]•[y2/t2]• … •[yn/tn] | t1, t2, …, tn D(F)}.
este model pentru G. Cu aceasta, afirmaţia este demonstrată (q. e. d.).
Dacă F este în FNSC (F are forma de mai sus, în plus F* fiind în FNC,
Pentru a încheia demonstraţia teoremei, aplicăm direct rezultatul
F* = C1 C2 …… C
precedent pentru G = F. ■
literali din LP1), mulţimea
k,
C1, C2, ... , Ck reprezentând clauze, adică k
E ( F ) E ( C i )
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
i 1
se numeşte extensia Herbrand generalizată. ■
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
Extensia Herbrand generalizată a unei formule este obţinută practic prin
căreia relaţia (*) este esenţială. Astfel, în cazul în care P este chiar
considerarea tuturor instanţelor clauzelor care compun matricea sa
egalitatea, ea trebuie interpretată standard în orice structură. Prin
(formula fiind deja în FNSC şi considerată în reprezentarea cu
urmare, considerând b şi c două constante distincte, putem găsi uşor
mulţimi), instanţe obţinute prin aplicarea tuturor substituţiilor posibile
structuri S în care bS = cS, dar b ≠ c în orice structură Herbrand.
cu termi de bază din D(F).
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,
Teorema 3.12 (Church). Problema validităţii pentru logica cu
faptul nu este posibil, conform rezultatelor care urmează (nu toate
predicate de ordinul I (fără egalitate) este nedecidabilă, dar
demonstrate). ■
semidecidabilă. Demonstraţie. Conform, de exemplu, [MAS1]. ■
Teorema 3.11 (Löwenheim – Skolem). Fiecare formulă satisfiabilă din LP1 admite model cel mult numărabil.
Fundamentele logice ale Informaticii
175
176
Cristian Masalagiu
Observaţie. Ţinând cont de legătura dintre F şi F, se deduce imediat
simbol predicativ care apare, ceea ce se reduce la interpretarea unei
că problema SAT1 este nedecidabilă, ca de altfel şi problema
variabile propoziţionale în sensul LP). Atunci are loc:
nesatisfiabilităţii (validităţii). Pe de altă parte, în cazul LP1 aceste probleme sunt totuşi semidecidabile. ■
Teorema 3.14 (teorema lui Herbrand; teorema de compactitate pentru LP1). O formulă F LP1 este nesatisfiabilă dacă şi numai
Teorema 3.13 (Gödel-Herbrand-Skolem). O formulă F LP1 este
dacă există o submulţime finită a lui E’(F) care să fie nesatisfiabilă.
satisfiabilă dacă şi numai dacă E(F) este satisfiabilă.
Demonstraţie. Direct din Teorema 3.13 şi Teorema de compactitate
Demonstraţie. Fără a restrânge generalitatea, putem presupune că F
pentru LP. ■
este în FNS închisă. Conform Teoremei 3.10, F este satisfiabilă dacă şi numai dacă admite model Herbrand H. Ca de obicei, putem considera
În acest moment putem spune că procedura următoare (intitulată
că F = (y1) … (yn)F* şi atunci, din H(F) = 1 rezultă că pentru fiecare
chiar în întregime „Procedura lui Gilmore”) poate fi folosită pentru
* t1, t2, … , tn D(F) avem H [y1/t1 ][y2 /t 2 ]...[yn /t n ] (F ) 1 . Deoarece termii în
testarea nesatisfiabilităţii oricărei formule din LP1. Pasul 1 este un algoritm în sine (a se vedea şi exemplul care urmează imediat
cauză sunt termi de bază, putem aplica Lema de translaţie de n ori,
Teoremei 3.9), formula găsită la sfârşitul execuţiei sale fiind slab
rezultând că H((F*)[y1/t1]•[y2/t2]•...•[yn/tn]) = 1, pentru fiecare
echivalentă cu formula iniţială şi având aspectul F = (*)F*, unde
t1, t2,… , tn D(F). Prin urmare, am arătat că F este satisfiabilă dacă şi
F* = C1 C2 … Ck. Extensia Herbrand generalizată E’(F)
numai dacă H G pentru fiecare G E(F) adică dacă şi numai dacă
„rezultată” în urma aplicării Pasului 2 trebuie interpretată ca fiind o
extensia Herbrand a lui F este satisfiabilă. ■
listă de clauze din LP. Datorită faptului că E’(F) nu este recursivă ci doar recursiv enumerabilă, Pasul 2 reprezintă doar un semialgoritm.
În Teorema 3.13 putem lua E’(F) în loc de E(F) şi, mai mult,
După cum se observă, nici n-ar fi nevoie de obţinerea acestei liste
aşa cum de altfel am mai punctat, elementele lui E’(F) pot fi privite
dintr-o dată. Este nevoie doar de a putea selecta câte un nou element
drept clauze în sensul logicii propoziţionale, deoarece literalii din
din ea „atunci când este necesar”, conform Pasului 3.3.2, care ar putea
LP1 care le compun nu conţin variabile (astfel, interpretarea lor, 0 sau
fi reformulat prin Obţine un nou element din E’(F). Practic, pornind de
1, în orice structură S, depinde practic doar de interpretarea singurului
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
Fundamentele logice ale Informaticii
177
simplă extensie a unei relaţii de ordine definită pe o mulţime „suport”
178
Cristian Masalagiu
Metodă:
la un produs cartezian al acelei mulţimi cu ea însăşi, de oricâte ori).
Pasul 1. Se transformă F într-o formulă aflată în FNSC
Pasul 3, şi numai el, este de fapt semialgoritmul cunoscut în literatura
(închisă), succesiv, prin rectificare (redenumire), găsirea FNP
de specialitate ca Procedura lui Gilmore (Procedura rezoluţiei de
(FNPR), obţinerea închiderii existenţiale, obţinerea FNS şi apoi
bază). Aceasta nu se termină în cazul în care F este satisfiabilă şi
FNSC, formula rezultat notându-se, pentru simplitate, tot cu F.
conţine măcar un simbol funcţional de aritate cel puţin 1.
Pasul 2. Se „obţine” E’(F) = {G1, G2, ... , Gn, ... }. Pasul 3. 3.1. M := Ø.
Semialgoritmul lui Gilmore
3.2. i := 0.
(Procedura rezoluţiei de bază) Intrare: Orice formulă F LP1.
3.3. Repetă 3.3.1. i := i + 1.
Ieşire: „DA”, doar dacă F este nesatisfiabilă.
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ă.
179
Fundamentele logice ale Informaticii
180
Cristian Masalagiu
Demonstraţie. Trebuie de fapt să arătăm că pentru fiecare F LP1
care la rândul lor se pot scrie ca mulţimi de literali din LP1. Putem
având E’(F) infinită, semialgoritmul anterior se opreşte dacă şi numai
trece astfel direct la Pasul 2 al Semialgoritmului lui Gilmore, adică la
dacă F este nesatisfiabilă. Acest lucru rezultă imediat din faptul că
aflarea mulţimii (listei) E’(F). O metodă generală amintită deja se
E’(F) este recursiv enumerabilă, din Teorema lui Herbrand şi din
bazează întâi pe enumerarea lui D(F), termii de bază fiind ordonaţi
Teorema rezoluţiei pentru LP. ■
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).
Putem acum justifica de ce logica propoziţională poate fi considerată ca o aproximare a logicii cu predicate de ordinul I.
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), ... ,
Semnificaţia este aceea că E(F) (sau E’(F)) aproximează pe F,
, g(b, b), g(b, c), g(c, b), g(c,c), g(b, f(b)), ... ,
deoarece testul de nesatisfiabilitate pentru F poate fi făcut testând
, g(b, g(b, b)), ... }
de nesatisfiabilitate submulţimile finite ale lui E(F) (E’(F)). Pentru
E(C1) = {(C1)[x/t1]•[y/t2 ] | t1, t2 D(F)} = { P(b) P(f(c)) Q(b),
detalii privind noţiunile de număr cardinal şi ordinal, funcţie (mulţime)
P(b) P(f(c)) Q(c), P(c) P(f(c)) Q(b),
recursivă
(recursiv
enumerabilă),
alte
amănunte
privind
P(c) P(f(c)) Q(c), P(b) P(f(c)) Q(f(b)), ... } =
calculabilitatea, complexitatea, tratabilitatea, pot fi consultate: [ŢIP],
{{
[CAZ2], [COR], [AHO], [BÖR], [RIC], etc.
{ 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))}, … } Exemplu. Fie formula
E(C3) = { P(g(b, b)) Q(b), P(g(b, c)) Q(b),
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),
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
181
Fundamentele logice ale Informaticii
182
Cristian Masalagiu
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ă
Bazându-ne pe exemplul anterior, putem enunţa explicit rezultatul:
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
Teorema 3.16 (a rezoluţiei de bază). Fie F LP1 şi E’(F’) extensia
E’(F). Mai întâi găsim:
Herbrand generalizată a unei formule F’, slab echivalente cu F şi aflată
{ P(g(b, c)), Q(b)}
{P(g(b, c))}
P(g(b, c))
P(g(b, c))
î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
{ Q(b)} Cele două clauze care intervin provin din C3 (prin substituţia [x/c]) şi
ţinând cont de legătura care există în LP între Res*(F) şi demonstraţiile prin rezoluţie. ■
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)}
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:
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 . ■
183
Fundamentele logice ale Informaticii
184
Cristian Masalagiu
§5. Rezoluţie în LP1 { 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)]
[x/a]
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”
{ P(f(a)),Q(b)} {P(f(a))} {P(g(b,a))}
{ P(g(b,a)), Q(b)}
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
{Q(b)}
{ Q(b)}
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
Conchidem că aspectul LP1 este următorul (subclasele indicate fiind nevide şi disjuncte):
Formule valide
infinit Formule satisfiabile,
prealabilă a unor literali, prin care se „desemnează cine este A”. Nu vom intra în prea multe detalii, pentru amănunte suplimentare
Formule satisfiabile, nevalide, având doar model
însemna numai simplă reducere a unui A cu un A, ci şi o unificare
putându-se consulta [MAS1], [CAZ1], etc. Formule nesatisfiabile
nevalide, având model finit
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).
Prin urmare, oricâte eforturi am depune, într-un limbaj suficient de bogat tot vor exista formule satisfiabile, nevalide şi având doar model
Exemplu. Vom relua formula din ultimul exemplu, despre care am
infinit (numărabil), care nu va putea fi găsit algoritmic, într-un timp
arătat deja că este nesatisfiabilă utilizând rezoluţia de bază. Vom arăta
finit. Totuşi, posibilitatea utilizării unei rezoluţii proprii lui LP1, prin
că ea este nesatisfiabilă folosind rezoluţia pură din LP1. Să precizăm şi
care să se evite măcar „scufundarea” în LP dacă nu şi aducerea
faptul că vom păstra toate notaţiile pe care le-am introdus pentru LP
formulelor la diferite forme normale, pare a fi o perspectivă benefică.
Fundamentele logice ale Informaticii
185
186
Cristian Masalagiu
(cum ar fi Res, Res*, etc.) deşi semnificaţiile exacte sunt de multe ori
Astfel, am găsit o respingere utilizând rezoluţia pură, adică
schimbate. După cum deja ştim, avem:
demonstraţia: C1, C2, C4, C5, C3, C6, . ■
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),
Deşi multe dintre rezultatele corespunzătoare pentru LP nu sunt
C2 = P(y),
adevărate în cazul LP1 (dacă înlocuim rezoluţia LP, sau rezoluţia de
C3 = P(g(b, x)) Q(b),
bază pentru LP1 cu rezoluţia pură), Teorema rezoluţiei (pure) are un
F* = {C1, C2, C3} =
enunţ similar cu Teorema rezoluţiei pentru LP şi în demonstraţia
{{ P(x), P(f(c)), Q(y)}, {P(y)}, { P(g(b, x)), Q(b)}}.
acesteia se foloseşte în mod esenţial Teorema rezoluţiei de bază. În
Considerăm pe rând următoarele cupluri de clauze:
acest mod, găsirea unei respingeri de tipul anterior este suficientă
C1 şi C2. Din motive tehnice, nu trebuie să existe variabile comune în clauzele considerate în momentul în care încercăm să
Nu putem încheia acest capitol fără a sublinia încă o dată faptul
aplicăm un pas al rezoluţiei pure. De aceea facem mai întâi
că situaţia în LP1= este şi mai neplăcută, cel puţin din punct de
substituţia de redenumire [y/z] în C2, găsind C’2 = {P(z)}. Apoi,
vedere teoretic. Se ştie astfel că, dacă limbajul iniţial este suficient de
prin [x/z], unificăm mulţimea {P(x), P(z)} (acest din urmă
bogat, problema SAT1 pentru LP1 = este chiar nedecidabilă „total”,
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.
pentru a trage concluzia că formula în cauză este nesatisfiabilă.
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) = .
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]):
Fundamentele logice ale Informaticii
187
188
Cristian Masalagiu
Teorema 3.17. Fie F LP1, satisfiabilă, care admite un model finit
vedere formal rezultatele vor fi şi mai descurajante. Există însă câteva
S = şi să presupunem că | US | = n N*. Atunci, pentru
argumente solide care fac ca utilizarea logicii să constituie într-
fiecare m n, există un model Sm pentru F, cu cardinalul universului
adevăr o modalitate interesantă de a interpreta programarea (vom
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. ■
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
Inconvenientul practic al diferenţei dintre LP1 şi LP1= poate fi
necesitate de limbaj), despre forme normale şi despre posibilităţi
reparat parţial (după cum am mai precizat, exemplificând chiar acest
efective de a testa satisfiabilitatea unei formule (de natură sintactică
lucru în Capitolul 5) prin „ascunderea” simbolului „=” într-un simbol
sau semantică). Problema SAT1 pentru LP1= este nedecidabilă, iar
predicativ de aritate superioară.
pentru LP1 este semidecidabilă. Utilizarea rezoluţiei de bază ne arată o legătură mai profundă între LP1 şi LP. Posibilitatea folosirii unui tip
§6. Recapitulare şi Index Deşi teoria este foarte dezamăgitoare în privinţa rezultatelor
specific de
rezoluţie - rezoluţia pură - pentru LP1, a unor clase
particulare de formule (cum ar fi clasa formulelor Horn), adaptarea
pozitive (chiar dacă ne referim doar la calculul propoziţional, unde
strategiilor
şi
restricţiilor
decidabilitatea SAT este „atenuată” de netratabilitate), necesitatea
variabilelor, „scufundarea” realităţii în alte tipuri de logici, rămân
exprimării simple a situaţiilor reale a condus la acceptarea introducerii
alternative viabile în programarea logică.
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
Pentru Index, vom aminti:
rezoluţiei
pentru
cazul
prezenţei
Fundamentele logice ale Informaticii
189
190
Cristian Masalagiu
calculul cu predicate de ordinul I fără egalitate, 122
formulă rectificată, 158
constantă funcţională, 123
formă normală prenex, 159
simbol funcţional de aritate i, 123
formă normală prenex rectificată, 160
variabilă predicativă, 123
formă normală Skolem, 161
simbol predicativ de aritate i, 123
formă normală Skolem clauzală, 161
variabilă (funcţională), 123
extensie Herbrand, extensie Herbrand generalizată, 171
cuantificator (cuantor) existenţial (universal), 123
rezoluţie de bază (procedura lui Gilmore), 174
termi (funcţionali), 125
unificare, 181
formule atomice, 125
rezoluţie pură, 181
formule (subformule, arbori), 125 apariţii libere şi legate ale variabilelor, 129
§7. Exerciţii
free(F), var(F), leg(F), restvar(F), 129
1. Definiţi constructiv free(F), F LP1.
formule închise, 130
2. Determinaţi subf(F) pentru
închiderea universală (existenţială) a unei formule, 130
F = (x)(((P(x, g(a)) Q(z)) R(u, f(v)))).
matricea unei formule, 130
3. Rezolvaţi Exerciţiul 3.1.
substituţii, substituţii elementare, substituţii permise, 130
4. Rezolvaţi Exerciţiul 3.2.
substituţii normalizate, substituţia vidă, substituţii echivalente, 131
5. Să se aplice substituţia: s = [y/h(z)]•[z/h(x)]•[x/g(f(y))] formulei
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
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ă.
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.
192
Cristian Masalagiu
19. Arătaţi că: (x)P(x) P(y) (x)(P(x) P(y)).
194
Capitolul 4 Teorii logice şi sisteme deductive
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
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,
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
Fundamentele logice ale Informaticii
195
196
Cristian Masalagiu
teoreme de corectitudine şi completitudine, adică teoreme de tipul: Tot
de inferenţă pentru „prezentarea” unor teorii logice poate fi imposibilă,
ceea ce este „adevărat” este demonstrabil (completitudine) şi tot ceea
existând şi un număr impresionant de tipuri generale de asemenea
ce este demonstrabil este „adevărat” (corectitudine). Mai precis, se
sisteme. De asemenea, forma în care sunt exprimate teoremele de
poate porni cu o teorie logică şi se poate încerca „axiomatizarea” ei
corectitudine şi completitudine poate depinde în mod esenţial de
(adică găsirea unui sistem deductiv prin care se „generează”, sintactic,
sistemul deductiv sau de teoria aleasă (ba uneori chiar şi de alfabetul
aceeaşi clasă de formule), cu scopul ca mulţimea teoremelor să coincidă
peste care este construită mulţimea de formule). Să reţinem faptul
cu mulţimea formulelor „adevărate” (cele care formează teoria). Se
important că sistemele deductive pot fi utilizate „pentru ele însele”, ca
poate şi invers, adică putem pleca cu un sistem deductiv pentru care
mecanisme formale (simple alternative pentru definiţiile constructive).
putem afla „imediat” clasa teoremelor (clasa formulelor generate prin
Cu ajutorul lor se pot astfel defini sintactic mulţimi care nu au
raţionamente specifice regulilor sale de inferenţă) şi punându-se apoi
întotdeauna o caracterizare semantică legată de o noţiune precisă de
problema ca această clasă să formeze o teorie logică (sau măcar o
„adevăr”. Paragrafele următoare, în care detaliem câteva dintre
„parte” a unei asemenea teorii), constituită din formule „adevărate”
aspectele menţionate, adoptă în mare linia sugerată de [CAZ1],
(„valide”, „satisfiabile”, „nesatisfiabile”, etc.).
concepţia generală fiind însă originală. De altfel, definiţiile noţiunilor
În realitate lucrurile nu stau chiar aşa de simplu cum au fost
de sistem de demonstraţie şi teorie logică diferă uşor faţă de cele
prezentate mai sus (din cauza lipsei de spaţiu tratarea noastră fiind
întâlnite în literatura de specialitate, datorită atât bagajului insuficient
departe de a fi exhaustivă). Astfel, subiectul general al teoriilor logice
de cunoştinţe presupus a fi fost acumulat anterior parcurgerii acestui
este foarte vast, vorbindu-se de teorii degenerate, de teorii
material de către cititor, cât şi datorită nevoii autorului de
inconsistente, de teorii recursive şi/sau recursiv enemerabile, etc. Mai
sistematizare şi generalizare a conţinutului.
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
§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
197
Fundamentele logice ale Informaticii
198
Cristian Masalagiu
formulele „clasice”. Mulţimea FORM va fi precizată în mod explicit
de reguli) să se interzică aplicarea regulii (schemei) pe considerente
doar atunci când va fi necesar, singura cerinţă permanentă fiind ca
semantice „globale” (forma demonstraţiei, apariţia în demonstraţie a
aceasta să fie definită constructiv.
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,
Definiţia 4.1 (sistem deductiv). Se numeşte sistem deductiv (de
mai exact ea poate fi „condiţia adevărată indiferent de context”)
demonstraţie,
cuplu
înseamnă că în orice demonstraţie, r va putea fi aplicată la un moment
SD = unde A FORM este o mulţime de axiome iar
dat doar dacă c este adevărată la momentul respectiv. O regulă
R FORM+ C o mulţime de reguli de inferenţă (de deducţie, de
r = < < {G1, G2, … , Gn}, G>, c>, va fi scrisă şi ca:
inferenţial,
axiomatic)
în
FORM
un
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
G1, G 2 , , G n ,c G În cazul în care n = 0 şi c lipseşte, r poate fi identificată ca fiind o axiomă, după cum rezultă din definiţia care urmează. Câteodată, alături de c, sunt explicitate separat şi restricţiile sintactice locale asupra (formei) metaformulelor. Definiţia 4.2 (demonstraţie). Fie SD = < A, R> un sistem deductiv în FORM. Se numeşte demonstraţie (pentru Fm, pornind cu F1) în SD o listă de metaformule D = F1, F2, … , Fm astfel încât pentru fiecare
ipotezelor nu este esenţială. Mulţimea C nu a fost specificată formal
i [m], fie Fi A, fie Fi este obţinut din Fj1 , Fj2 , ... , Fjk folosind o
(putem spune totuşi că elementele sale sunt metapredicate) din cauza
regulă r = < < { Fj1 , Fj2 , … , Fjk }, Fi>, c> R, unde j1, j2, ... , jk < i. ■
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
Prin urmare, fiecare element al listei D este fie o axiomă, fie
în paşi succesivi, la un pas aplicându-se o regulă. Există însă
este concluzia unei reguli de inferenţă ale cărei ipoteze sunt elemente
posibilitatea ca înafara restricţiilor sintactice „locale”, date de forma
anterioare din listă. Analogia cu cele deja fixate în Capitolul 2 despre
formulelor implicate (ceea ce face ca regulile să fie, de obicei, scheme
demonstraţiile prin rezoluţie (Definiţia 2.10 este un caz particular al
Fundamentele logice ale Informaticii
199
200
Cristian Masalagiu
definiţiei precedente) este clară şi aceasta poate fi continuată prin
Pas constructiv. Dacă r = < < {G1, G2, … , Gn}, G>, c> ∈ R şi
definirea numărului de paşi ai unei demonstraţii, reprezentarea unei
G1, G2, … , Gn ∈ Th(SD) atunci G ∈ Th(SD).
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
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
(concluzie) se obţine din noduri vechi (ipoteze), în timpul aplicării
motive tehnice, legate în general de demonstraţiile teoremelor de
Pasului inductiv, folosindu-se câte o regulă de inferenţă posibil de a fi
corectitudine şi completitudine, este posibil ca în anumite situaţii să
aplicată (conform c). Este posibil ca pentru anumite sisteme (a se vedea
lucrăm, pe lângă axiome, cu o mulţime suplimentară de metaformule,
sistemul SD0, §3 din acest capitol), care nu au axiome sau pentru care
notată I, şi să vorbim despre demonstraţii folosind I (notat I SD F, în
condiţiile c o impun, arborele să aibă o definiţie directă mai simplă,
cazul în care este vorba despre o formulă F; se mai spune că F este
sau, alternativ, noţiunea de consecinţă sintactică să fie definită cu
consecinţă sintactică din I sau teoremă în ipotezele I ). Practic, deşi
ajutorul arborelui (necoincizând cu el). Definiţia 4.3 (teoreme). Fie SD = < A, R> un sistem deductiv în FORM. Mulţimea teoremelor lui SD este mulţimea metaformulelor care admit demonstraţii în SD, adică:
Th(SD) = {F FORM | există o demonstraţie D pentru F în SD }. ■
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
Este imediat faptul că şi Th(SD) admite o definiţie constructivă
individualizate, deşi au substrat comun, le vom numerota în acelaşi
(similar cu Teorema 2.11, din cazul rezoluţiei, se arată că Th(SD)
mod ca pe definiţii (de altfel, unele vor fi reluate ulterior).
coincide cu mulţimea dată mai jos): Baza. A Th(SD).
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
Fundamentele logice ale Informaticii
201
202
Cristian Masalagiu
sisteme de demonstraţie dedicate, câte unul pentru fiecare formulă F
sintactice fixate şi anume faptul că sunt clauze din LP, pot fi aplicate
aflată în FNC şi reprezentată ca o mulţime finită de clauze (conform
fără restricţii pe parcursul demonstraţiilor), exceptând faptul deja
teoremei de compactitate, F poate fi şi infinită). Sistemele dedicate pot
amintit că vom pune (renunţăm la indici şi la faptul că ar trebui folosită
fi caracterizate de faptul că nu generează, în general, clasa formulelor
notaţia SD’ în loc de SD)
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:
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’.
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). ■
Clasa metaformulelor: FORM = LP. Formulele care ne interesează sunt însă doar clauzele din LP. Notăm mulţimea
Th(SD) = {G Cl | F SD G },
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:
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}.
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
În acest moment, sistemul SDF = este pe deplin precizat (true denotă condiţia mereu adevărată, adică regulile, dacă respectă cerinţele
poate fi privită ca sistem de demonstraţie.
203
Fundamentele logice ale Informaticii
204
Cristian Masalagiu
Exemplul 4.2 (sistemul SD3). Este un sistem deductiv standard, finit
modus ponens (pe scurt, (MP)) iar a doua este aşa-numita
specificat, care generează, după cum vom vedea (Teorema 4.1),
regulă a generalizării (RG).
î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):
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
reprezintă demonstraţia va fi: E1 = A ((A A) A). Folosim acum
3. ( F G) (( F G) F).
axioma 2., punând F = A, G = (A A) şi H = A. Obţinem:
4. (x)(F G) (F (x)G).
E2 = (A ((A A) A)) ((A (A A)) (A A)).
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ă (lipsind
2I.
dacă luăm F = A şi G = (A A). Primul element al listei care
2. (F (G H)) ((F G) (F H)).
sintactică
F G, F . G
este admis). Astfel, folosim întâi instanţa axiomei (schemei) 1., obţinută
1. F (G F).
1I.
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
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
205
Fundamentele logice ale Informaticii
206
Cristian Masalagiu
evident o formulă validă. Cum şi T este de fapt o schemă, rezultă şi că ( A A) este teoremă, etc.
F
G
FG
(F G) F
((F G) F) G
Profităm de exemplul în curs pentru a schiţa linia generală de
0
0
1
0
1
demonstrare a teoremelor de corectitudine (pentru cazul standard al
0
1
1
0
1
sistemelor care generează toate formulele valide).
1
0
0
0
1
I. Se arată că axiomele sunt formule valide. Conform Capitolului 2,
1
1
1
1
1
vom folosi tabelele de adevăr pentru prima axiomă: F
G
GF
F (G F)
Concluzia că teoremele sunt formule valide rezultă imediat din
0
0
1
1
definiţia constructivă a lui
0
1
0
1
demonstraţie prin inducţie structurală, de altfel foarte simplă). ■
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ă
Th(SD3) (formal, este vorba de o
Exerciţiul 4.2. Arătaţi că axiomele 2. – 5. sunt formule valide şi că (RG) este o regulă corectă.
Despre sistemele deductive se pot spune multe alte lucruri, la nivel general. Astfel, o proprietate gobală, deseori cerută, este cea de consistenţă. Astfel, o mulţime de metaformule J este consistentă într-
formulele folosite în axiome sunt în toate cazurile formule valide).
un sistem deductiv, dacă nu există nici o metaformulă F astfel încât să
Pentru aceasta este suficient să arătăm că G1 ∧ G2 ∧ ... ∧ Gk → G este
avem atât J F cât şi J F (J F notează faptul că nu este adevărat că
validă. De exemplu, (MP) este corectă, deoarece avem:
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
Fundamentele logice ale Informaticii
207
208
Cristian Masalagiu
important ca un sistem să conţină cât mai puţine axiome şi reguli de
considerente legate de programarea logică. Astfel, există numeroase
inferenţă, deşi acest lucru s-ar putea să conducă la existenţa unor
lumi (părţi ale realităţii, colecţie de cunoştinţe, etc.) care sunt cunoscute
demonstraţii mai lungi şi mai alambicate. Înafara sensului strict de
pur şi simplu, dar fiind foarte complexe este greu de spus dacă anumite
minimalitate (lucru care depinde şi de alfabetul peste care este
cunoştinţe nou asimilate fac parte din aceeaşi lume, sau chiar dacă
construită FORM), dintr-un sistem dat se pot elimina acele axiome care
anumite cunoştinţe vechi nu sunt cumva contradictorii. Dorind să ne
sunt consecinţe semantice din altele (în cazul considerării unei noţiuni
menţinem în cadrul general folosit până în prezent, introducerea unei
suport de adevăr) precum şi aşa- numitele reguli de inferenţă derivate.
noţiuni de adevăr (deocamdată, în sens clasic, adică binar, etc.) în
Astfel, considerând orice prefix al oricărei demonstraţii (privită textual)
legătură cu o metaformulă este acum obligatorie. Să presupunem că
D dintr-un sistem SD, acesta poate fi considerat ca o nouă regulă de
orice clasă de metaformule FORM are ataşată şi o clasă de structuri
inferenţă („derivată” din cele iniţiale): concluzia noii reguli este ultima
admisibile de adevăr, notată Str, o structură fiind o funcţie
formulă din demonstraţia respectivă, iar ipotezele sunt reprezentate de
S : FORM B. Dacă FORM admite o definiţie structurală, aşa cum
restul formulelor care apar. Eliminările de reguli derivate se „aprobă”
de altfel am şi convenit de la bun început (prin Baza se plasează în
doar dacă se menţine echivalenţa din sistemul iniţial şi cel rezultat
FORM metaformulele „atomice”; cu ajutorul unor operatori, cum ar fi
(după efectuarea eliminărilor). Două sisteme SD şi SD1 sunt
conectorii, cuantorii, etc., se introduc metaformule noi folosindu-se
echivalente dacă pentru fiecare mulţime de metaformule J şi fiecare
metaformule vechi, prin Pasul constructiv), atunci admitem şi că
metaformulă F avem: J SD F dacă şi numai dacă J SD1 F. Nu vom
fiecare S este unica extensie homomorfă a unei structuri definite
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
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
Fundamentele logice ale Informaticii
209
210
Cristian Masalagiu
cunoaştem, nu există metode semantice efective (algoritmice)
tuturor consecinţelor semantice din A’, în raport cu noţiunea de adevăr
convenabile pentru a testa dacă o mulţime dată de metaformule este sau
adoptată, şi cu SD’ sistemul compus din A’ şi R). După cum am mai
nu închisă la consecinţă semantică (sau dacă o anumită metaformulă
amintit, putem lua în considerare şi situaţia inversă, în care avem dat un
este satisfiabilă sau validă). Alternativa este de a folosi metode
sistem SD’ = şi dorim să vedem dacă Th(SD’ ) este într-
sintactice, care au avantajul că pot fi uşor automatizate. În cazul de faţă, se pune problema axiomatizării teoriilor logice, cu ajutorul sistemelor
adevăr o teorie logică, sau, mai mult, dacă Cs(A’ ) = Th(SD’ ).
de demonstraţie. Acest lucru înseamnă că având dată o teorie
Definiţia 4.5. Un sistem de demonstraţie SD’ = se numeşte
TE FORM, trebuie să găsim o submulţime A’ = A U I ⊆ TE, de
corect şi complet pentru o teorie TE dacă TE = Th(SD’ ) = Cs(A’ ) şi
„axiome” şi/sau ipoteze suplimentare, precum şi o mulţime de
A’ TE. O teorie TE este axiomatizabilă dacă există un sistem
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
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
noastră, trebuie să mai găsim şi o mulţime de reguli de inferenţă R
semidecidabile, etc.). Importante sunt teoriile nedegenerate. O teorie
astfel încât să avem Cs (A’) = Th(SD’) (am notat cu Cs(A’) mulţimea
logică se numeşte degenerată dacă coincide cu mulţimea vidă sau
Fundamentele logice ale Informaticii
211
212
Cristian Masalagiu
coincide cu întreaga clasa de metaformule în care se lucrează, FORM (de exemplu, dacă teoria conţine o contradicţie ea este degenerată;
În cazul în care este vorba de o teorie formată doar din formule valide
teoriile inconsistente sunt de asemenea degenerate). Nici axiomatizările
(atunci va lipsi I), teorema capătă forma simplificată:
„banale” nu sunt interesante (este clar că, la modul general, toate
Pentru fiecare F FORM, avem: SD F dacă şi numai dacă F.■
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.
În cele de mai sus am folosit notaţia SD F pentru faptul că FTh(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
TEOREMĂ DE CORECTITUDINE ŞI COMPLETITUDINE. Fie o clasă de metaformule FORM, o clasă de structuri admisibile Str
de vedere practic, teoriile finit axiomatizabile sunt cele mai utile.
pentru FORM, un sistem deductiv SD’ = în FORM, unde
Nu vom intra în detalii nici în privinţa numeroaselor rezultate
A’ = A U I (A fiind alcătuită din formule valide şi I din formule
(importante şi interesante) care pot fi demonstrate în acest moment. Se
satisfiabile) şi o teorie logică TE FORM, astfel încât TE = Cs(A’ ).
poate consulta [CAZ1] pentru completări, iar noi ne limităm la a
Atunci Th(SD’ ) = Cs(A’ ). ■
prezenta fără demonstraţie (de fapt, metateorema este sigur adevărată în cazul LP1 şi sistemului SD0):
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
Teorema deducţiei (pe scurt, TD). Pentru fiecare A, B FORM şi fiecare I FORM, dacă I, A B atunci I A B. ■
întâlnite:
Teoria TE admite un sistem deductiv corect şi complet.
Exemplul 4.2 (reluat). Avem FORM = LP1, Str este clasa fixată a
În condiţiile precizate, avem, pentru fiecare metaformulă
structurilor (conform Capitolului 3), TE = Val(LP1) (clasa formulelor
F FORM: I SD F dacă şi numai dacă I F.
valide din LP1), SD = SD3, I LP1 o mulţime oarecare de formule
Teoria TE este (eventual, finit) axiomatizabilă.
închise, satisfiabile şi F LP1 o formulă oarecare. Atunci:
Fundamentele logice ale Informaticii
213
214
Cristian Masalagiu
Teorema 4.1 (teorema de completitudine a lui K. Gödel,
rândul ei o mulţime finită de literali), îi putem asocia mulţimea Res*(F)
1930). I SD3 F dacă şi numai dacă I F.
care desigur nu este o teorie logică în acest caz. De altfel, nici F nu este
Demonstraţie. Corectitudinea (I SD3 F implică I F), a fost
(întotdeauna) o mulţime satisfiabilă (de ipoteze suplimentare). În plus, nici nu ne interesează „adevărul” ci „neadevărul”. Metoda rezoluţiei
deja demonstrată. Completitudinea (I F implică I SD3 F)
este de altfel o exemplificare perfectă a unei situaţii despre care am
este mult prea laborioasă pentru a o putea reda în lucrarea de
amintit deja: sistemul deductiv (aici, SDF) este folosit ca definiţie
faţă. De fapt ([CAZ1]), ea se demonstreză indirect, folosind
constructivă, pentru generarea unei mulţimi (Res*(F)), care nu este, şi
sistemul echivalent SD0, al deducţiei naturale (conform
nici nu vrem să fie, o teorie logică. Putem admite că această mulţime
Exemplului 4.4). Faptul că I este satisfiabilă nu este esenţial,
are totuşi o caracterizare semantică (în sensul că o submulţime a sa, F,
deoarece dacă I este nesatisfiabilă atunci (meta)teorema este
este sau nu satisfiabilă). Teorema de corectitudine şi completitudine
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
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
Fundamentele logice ale Informaticii
215
216
Cristian Masalagiu
structurile semantice admise pot fi doar anumite mulţimi (de exemplu,
incluse printre axiomele logice şi că uneori sunt utilizate variante ale
cum ar fi cele care constituie o structură de grup împreună cu o operaţie
acestora (în funcţie de scopul pentru care sunt introduse). Nu toate
dată). Structurile admise conţin în plus şi simboluri cu interpretări
axiomele egalităţii amintite sunt folosite în mod direct în TG
standard, cum ar fi egalitatea, totul fiind similar cu ceea ce am făcut în
(asemenea axiome particulare există şi printre axiomele grupului).
cazul „trecerii” de la LP1 la LP1=. Cadrul standard prezetat anterior se
Axiomele logice: Sunt cele ale sistemului SD3 (1. – 5.).
păstrează, inclusiv enunţul teoremei de corectitudine şi completitudine
Axiomele egalităţii:
(care, de fapt, este imediat adevărată, în general admiţându-se prin
6. (x)(x = x).
convenţie faptul că „teoria” în cauză este tocmai mulţimea toremelor
7. (x)(y)(x = y y = x).
din sistemul deductiv ales). Sensul noţiunilor de formulă „satisfiabilă”,
8. (x)(y)(z)(x = y y = z x = z).
„validă”, etc., este relativ la clasa restrânsă de structuri considerată.
9. (*)(x1 = y1 x2 = y2 ... xn = yn
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
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.
Fundamentele logice ale Informaticii
217
218
Cristian Masalagiu
Vom reveni cu un exemplu de demonstraţie în teoria grupurilor după ce
conector doar (rezultând aşa-numitul calcul implicaţional),
vom introduce sistemul SD0, echivalent cu SD3 (Exerciţiul 4.5).
va fi boolean incomplet.
Datorită acestui ultim fapt, vom putea folosi şi deducţia naturală în
cazul teoriei grupurilor. ■
Î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
În finalul acestui capitol prezentăm alte câteva (tipuri de)
corecte şi complete, conform definiţiei noastre. După cum am
sisteme deductive, având o largă utilizare atât din punct de vedere
mai precizat, completitudinea
teoretic cât şi practic.
(demonstrat) şi de aceea este de multe ori doar adoptată prin
este mai greu de atins
convenţie. Corectitudinea este de obicei impusă, deşi poate avea
§3. Clasificarea sistemelor deductive
şi nişte forme mai deosebite (vezi sistemele nestandard, cum ar fi rezoluţia).
Începem cu o trecere în revistă a unor posibilităţi de clasificare ([CAZ1]) a sistemelor deductive, din care se pot trage concluzii utile cu
În funcţie de importanţa acordată axiomelor sau regulilor de
privire la calităţile şi defectele unor asemenea sisteme. Clasificările
inferenţă. Din acest punct de vedere, se poate acorda o atenţie
prezentate (care nu sunt singurele acceptate) se referă în principal la
deosebită regulilor (adică modului de raţionament, de obţinere
sistemele standard (în sensul descris anterior). Sistemele deductive se
de cunoştinţe noi) în dauna axiomelor (cunoştinţelor primare).
pot astfel împărţi:
Acest tip de sisteme se numesc Gentzen-Jaskowski. Un
În funcţie de conectivele logice alese. Există sisteme boolean
asemenea sistem va fi SD0 (deducţia naturală), care este
complete sau boolean incomplete. Ştim că în interpretarea
echivalent cu SD3 şi va fi prezentat în acest capitol. În cazul în
conectorilor logici prin structuri aceştia devin funcţii booleene.
care balanţa este inversată (există „mult mai multe” axiome
Termenul de (in)completitudine se referă la faptul că mulţimea
decât reguli de inferenţă, ca în cazul SD3), sistemele sunt
interpretărilor conectorilor aleşi în alfabetul de bază peste care
cunoscute sub numele de sisteme Hilbert.
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
După clasa FORM aleasă. De exemplu (pentru logica clasică), putem avea sisteme propoziţionale sau sisteme predicative.
Fundamentele logice ale Informaticii
219
220
Cristian Masalagiu
Să considerăm un sistem de tip Gentzen, foarte cunoscut în literatura de
confuziilor, aceeaşi marcă se va asocia şi nodului care constituie
specialitate (introdus pentru prima oară de G. Gentzen şi S. Jaskowski
concluzia regulii care, aplicată, a cauzat anularea. Ipotezele anulate
în 1934).
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
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
suplimentară de formule I; sau, există o demonstraţie pentru G în SD0 utilizând I; sau, există o deducţie naturală pentru G în SD0) dacă există un arbore de deducţie naturală având rădăcina G şi cu toate ipotezele neanulate aparţinând lui I. Grafic: ....... .......
....... .......
......
....... .......
ipoteze, anulate sau neanulate
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, A1
conform definiţiei generale (rădăcina fiind „rezultatul final”).
A2
......
An
Caracteristic acestui sistem este faptul că acele condiţii c de aplicabilitate ale regulilor, dacă există, sunt de tipul „se anulează
B
rădăcina rădăc
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
Î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
Fundamentele logice ale Informaticii
221
substituţia [x/t] să fie permisă pentru A, iar în 6., ca x să nu apară liber
222
Cristian Masalagiu
Teorema 4.2. Sistemul SD0 este corect şi complet pentru Val (LP1). ■
în nici o ipoteză neanulată. Schemele 3. şi 4. au variante datorită necesităţii de a se „prinde” comutativitatea conjuncţiei la nivel sintactic
Teorema 4.3. Sistemele SD0 şi SD3 sunt echivalente, adică pentru
(ne vom referi la ele ca 3’., respectiv 4’.). Deoarece substituţia [x/x]
fiecare mulţime de formule închise J LP1 şi fiecare formulă
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ă
F LP1, avem: I SD0 F dacă şi numai dacă I SD3 F. ■
regula 6. nu are nevoie de nici o restricţie sintactică în momentul în În plus, putem spune că SD0 este un sistem predicativ (de tip
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
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
2. (IN)
B, B , c: se anulează ipoteza A. A
8. (ID)
3. (EC)
AB AB şi . A B
A A şi . A B B A
9. (EI)
4. (IC)
A, B A, B şi . AB B A
A, A B . B
10. (II)
5. (E∀)
(x )A . A[x/t]
B , c: se anulează ipoteza A. A B
11. (EE)
6. (I∀)
A . (x )A
AB AB şi . AB B A
12. (IE)
A B, B A . AB
13. (E∃)
(x)A, B , B
■ Demonstraţia teoremelor următoare poate fi găsită în [CAZ1].
c: se anulează ipoteza A din subarborele
având rădăcina acest B.
Fundamentele logice ale Informaticii
14. (I∃) 15. (DN)
223
224
A[x/t] . (x)A
Cristian Masalagiu
1
A A . şi A A
2
A C
C
3
(i)
Analog cu precizările deja făcute pentru regulile de bază, şi schemele
B 3
(iii)
BC
AC
de mai sus sunt valabile pentru fiecare A, B LP1, fiecare x X şi ( A C)
fiecare t T. În 13., condiţia sintactică este dată de faptul că x nu
( B C) (iv)
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
(ii)
1
A
aplică regula respectivă. De asemenea, în 14., condiţia sintactică este ca
B
2
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
(v)
echivalen○ă; mnemonicul I, de pe a doua poziţie din 9., 10., provine de
AB
la implica○ie, iar D – de la disjunc○ie (D de pe prima poziţie în 15.
( A B)
provine de la dublă). Reamintim că în regulile având variante cea de a (vi)
doua schemă va fi referită prin acelaşi număr (nume), urmat de un
C
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:
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
Fundamentele logice ale Informaticii
225
226
Cristian Masalagiu
două formule sunt denotate prin A, respectiv B). Această regulă nu are
Exerciţiul 4.3 ([CAZ1]). Fie A → C, B → C, A ∨ B şi C formule
ataşată nici o condiţie de aplicare. Apoi, la pasul (ii), se continuă
oarecare din LP1 şi I LP1. Să presupunem că I SD0 A → C,
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
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).
aplicată, conform celor stabilite, nodului concluzie al aplicării regulii şi ... lui ⎤ ⎤ A, în loc de A! Acest lucru nu este permis, tehnic vorbind
Exemplu (calculul cu secvenţe, sistemul SD1). Pornim iniţial cu LP1,
(de fapt, pentru a fi foarte exacţi, suntem în culpă şi cu utilizarea strictă
construit peste un alfabet care conţine toţi conectorii şi cuantificatorii
a parantezelor; soluţia aici este simplă, introducându-se de la bun
cunoscuţi (desigur că unii dintre ei pot fi adoptaţi prin notaţie, dar îi
început şi variante „cu paranteze” pentru toate regulile). Pentru a aplica
vom folosi fără restricţie): , , , , , . Se numeşte secvenţă orice
corect teoria, ne putem folosi de instanţe ale regulii derivate (DN)
formulă care are forma: A1 A2 … Am B1 B2 … Bn, unde
(deducem A din A, înainte de efectuarea primului pas (i) şi astfel
n, m N, A1, A2, … , Am, B1, B2, … , Bn LP1 (m, n pot fi şi egali cu
putem anula în (ii) ceea ce trebuie, adică pe A). Pe parcursul
0, dar nu simultan). Prin urmare, vom lucra practic cu clauze, dar
construcţiei arborelui se mai întâlnesc asemenea cazuri şi devine
notaţia pe care o vom adopta ne conduce la ideea că secvenţele sunt de
evidentă necesitatea de a avea la dispoziţie o „bibliotecă” de reguli
mai degrabă metaformule (alt tip de obiect, oricum mai complex) decât
derivate, pentru a lucra simplu cu un asemenea tip de deducţie naturală.
formulele cu care am fost familiarizaţi în capitolele anterioare. Astfel,
Acestea trebuie însă demonstrate în prealabil, lucru care nu este chiar
vom scrie o secvenţă sub forma (desigur că în cele ce urmează nu
uşor (totuşi, se pare că este mai uşor de conceput un „mecanism
are sensul de metaimplicaţie):
automat de raţionament” pentru SD0 decât pentru SD3). O alternativă,
A1, A2, … , Am B1, B2, …… , Bn.
bazată de fapt pe aceeaşi idee (utilizarea unor reguli derivate), este să
Mai mult, vom considera cei doi membri ai relaţiei de mai sus ca fiind
folosim formulele din I sub o formă echivalentă, de exemplu
mulţimi (atunci când ordinea elementelor va fi esenţială, vom specifica
I = {A C, B C, A B}. ■
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,
227
Fundamentele logice ale Informaticii
228
Cristian Masalagiu
elementul A din U’ trebuie pus în evidenţă. Vom extinde notaţia la
T, pentru care [x/t] este permisă pentru A; rolul lui A în (RT) este
submulţimi oarecare, adică vom putea scrie (de exemplu) V, W în loc de
similar, instanţele unei scheme referindu-se la celelalte elemente având
V U W şi V, A, B în loc de V U {A} U {B}. Astfel, punem
statutul de a fi „oarecare”.
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.
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
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
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
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:
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.,
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
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
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
231
Fundamentele logice ale Informaticii
U V , A[x/t] . U (x)A,V
15. (⇒ ∃)
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
Exemplu. Regula (↔⇒) se poate obţine pe baza deducţiei
care negaţia poate fi plasată doar imediat în faţa unei formule
(metaformulele U, B V, B şi U, A V, A sunt axiome):
atomice. Pentru acesta, se poate demonstra mai uşor posibilitatea
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
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
U , A B, B A V
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,
U , ( A B) ( B A) V
■
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
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
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
sistemul deductiv asociat, SDTG. Fie u, v ∈ T, termi oarecare. Să se
mulţime dată de formule şi chiar problema de decizie mai simplă Este
arate că u = v → v = u este teoremă în TG, folosind deducţia
formula F o consecinţă semantică din mulţimea G ?, sunt de cele mai
naturală.
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
Fundamentele logice ale Informaticii
233
234
Cristian Masalagiu
fiind, în cazurile nebanale, exponenţiali ca timp de execuţie, urmează că
domeniu, de a adapta algoritmii existenţi şi conceptele legate de
problema este în fapt netratabilă). Abordările sintactice ale rezolvării
programarea logică, urmărindu-se eficientizarea acesteia şi apropierea
problemelor au cel puţin două avantaje deloc de neglijat. Astfel, se pot
de idealurile Inteligenţei artificiale.
selecta din start subclase de formule interesante, cu o formă convenabilă, pentru care rezolvarea problemei este „mai simplă”. Apoi,
Atenţionăm asupra faptului că termenii pe care i-am selectat în
algoritmii generali bazaţi pe sintaxă (deşi nu neapărat mai eficienţi),
Indexul care urmează este posibil să nu fie chiar cei mai importanţi, iar
sunt mai flexibili, mai uşor de tranformat şi adaptat, mai uşor de extins
paginile indicate s-ar putea să nu fie chiar primele în care apare
şi de a fi aplicaţi şi în alte situaţii/contexte. Sistemele deductive
cuvântul respectiv (aceasta datorită generalităţii subiectului):
formalizează cele de mai sus, apelând la concepte cum ar fi axiomă, regulă de inferenţă, teoremă, consecinţă sintactică. Legătura dintre
teorie logică, 191
cele două noţiuni generale se stabileşte în mod concret prin teoreme de
sistem deductiv (de demonstraţie), 191
corectitudine şi completitudine. Chiar dacă uneori suntem nevoiţi să
axiomă, 191
renunţăm la demonstrarea completitudinii sau chiar la ataşarea unui
regulă de inferenţă (reguli corecte sau sound), 191
concept de „adevăr” formulelor, sistemele de demonstraţie pot fi
demonstraţie (consecinţă sintactică; deducţie; raţionament), 191
importante prin ele însele. Astfel, înafara exemplelor considerate,
metaformulă, 193
standard sau nestandard (SD0, SD1, SD3, etc.), mai poate fi amintit şi
sistem deductiv standard, 200
aşa-numitul calcul cu tabele ([OHL]), folositor înafara contextului
regulă de inferenţă derivată, 204
teoriilor logice.
axiomatizarea unei teorii logice, 207 teorie logică nedegenerată, consistentă, finit axiomatizabilă, 207
Teoriile logice şi sistemele de demonstraţie constituie prin urmare
teoremă de corectitudine şi completitudine, 208
cadrul formal prin care pot fi studiate într-un mod foarte precis părţi ale
sistem deductiv corect şi complet, 208
realităţii prin prisma oricărei ştiinţe (vezi de exemplu teoriile
sistem deductiv necontradictoriu (consistent), 210
matematice formale), conceptele menţionate în primele capitole
sistem deductiv independent şi minimal, 210
nemaifiind ambigue.
sistem deductiv boolean complet, 214-215
Pentru logicieni subiectul este inepuizabil şi
foarte atrăgător, obţinându-se şi astăzi noi rezultate surprinzătoare.
sistem deductiv propoziţional sau predicativ, 214-215
Informaticii îi revine sarcina de „ţine pasul” cu noile descoperiri în
sistem deductiv de tip Hilbert, 215
Fundamentele logice ale Informaticii
235
236
Cristian Masalagiu
sistem deductiv de tip Gentzen, 215
Ax5. A (B A B)
deducţie naturală, 215
Ax6. A A B
sisteme deductive echivalente, 218
Ax7. B A B
sistem deductiv finit specificat, 219
Ax8. (A D) ((B D) (A B D))
calculul cu secvenţe, 223
Ax9. (A B) (A B) Ax10. (A B) (B A)
§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.
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
4. Rezolvaţi Exerciţiul 4.3.
care fiecare apariţie a lui A1 se în locuieşte cu G1, fiecare
5. Rezolvaţi Exerciţiul 4.4.
apariţie a lui A2, cu G2, ş. a. m. d. , fiecare apariţie a lui An, se
6. Rezolvaţi Exerciţiul 4.5.
înlocuieşte cu Gn, simultan:
7. Fie sistemul deductiv SIN1 ([CAZ1]), dat prin axiomele şi regulile de mai jos.
(RS)
F(A1 , A 2 ,..., A n ) F(G1 , G 2 ,..., G n )
Axiome. Pentru fiecare A, B, C, D LP, avem:
Acesta este un sistem deductiv propoziţional standard, de tip
Ax1. A (B A)
Hilbert, construit peste LP care are toţi conectorii standard.
Ax2. (C (A B)) ((C A) (C B))
Sistemul este boolean complet, dar incomplet din punctul de
Ax3. A B A
vedere al Val (LP). Astfel, se poate arăta că formule valide
Ax4. A B B
cunoscute, cum ar fi ⎤ ⎤ A → A (legea negării negaţiei) sau
Fundamentele logice ale Informaticii
237
A ∨ ⎤ A (legea terţiului exclus) nu sunt teoreme în SIN1. Ca
Capitolul 5
observaţie suplimentară, să spunem că dacă păstrăm doar
Programare logicţ
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.
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
239
Fundamentele logice ale Informaticii
240
Cristian Masalagiu
sintactici pentru rezolvarea SAT, SAT1 sunt mai uşor de înţeles
relaţiilor (predicatelor, afirmaţiilor). Esenţa sa este exprimată prin
(pentru „calculator”, în mod sigur) şi de manipulat decât cei bazaţi pe
paradigma de programare, datorată lui R. Kowalski ([KOW]):
semantică; ei sunt tratabili măcar pentru anumite subclase interesante
Algoritm = Logicţ + Control. În sensul celor spuse anterior, prin
de formule; chiar în lipsa unor asemenea (semi)algoritmi, se pot
Logică se înţelege totalitatea cunoştinţelor de care dispunem în
imagina anumite proceduri implementabile, de tip interactiv (dialog în
privinţa unei „lumi” (parte a realitţ ţii), cunoştinţe exprimate prin
timp real cu utilizatorul), care pot furniza, dacă nu răspunsuri
formule (aparţinând, în general, unui fragment al LP1=), iar prin
complete, măcar răspunsuri parţiale, sau indicaţii utile despre cum (şi
Control, strategia (algoritmul) prin care se manipuleazţ o clasţ de
în ce situaţii) s-ar putea obţine un răspuns convenabil. Prin urmare,
asemenea formule, în vederea obţinerii unui anumit rţ spuns
tot ceea ce rţ mâne de fţ cut este sţ se gţ seascţ asemenea algoritmi,
(aceasta implementând, în general, un anumit tip de rezoluţie). În
semialgoritmi, proceduri automate, etc., pentru clase convenabile de
cele ce urmează, vom face doar o scurtă introducere în această
(meta)formule, având ataşatţ o noţiune corespunzătoare de adevăr.
tematică, bazându-ne în principal pe [MAS1], [MAS2] (şi, desigur,
Din punctul de vedere al unui utilizator, alternativa propusă de
bibliografia indicată în acea lucrare).
Programarea logicţ este atrăgătoare. Astfel, în loc sţ se utilizeze (pentru reprezentarea informaţiei şi prelucrarea acesteia) un
§1. Exemple de programe logice pure
limbaj de programare clasic (imperativ, orientat obiect, etc.) poate
Ţinând cont că scopul principal al acestui capitol este doar unul
fi preferat un limbaj creat special pentru reprezentarea de
introductiv pentru un domeniu vast, ne vom baza în principal pe
(meta)formule şi în care un (semi)algoritm (sau chiar procedurţ
exemple (cu caracter didactic) şi nu pe enumerarea unor concepte sau
interactivţ ) pentru rezolvarea SAT(1) şi bazat, de exemplu, pe
rezultate formale. Deoarece este posibil ca exemplele să fie reluate şi
rezoluţie, este implementat direct în compilatorul (interpreterul)
dezvoltate, vom proceda din nou la numerotarea lor în secvenţă.
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
Exemplul 5.1 (lumea lui Adam şi Eva). Se cunosc următoarele fapte şi afirmaţii mai complexe din/despre această lume:
Inteligenţa artificialţ , la începutul deceniului al optulea al secolului trecut, la Universitatea din Marsilia, Franţa ([ROU]), căpătând însă
Evei îi plac merele.
ulterior extensii, transformări şi utilizări nebănuite la stadiul iniţial.
Evei îi plac vinurile.
Este un limbaj declarativ, dedicat reprezentţ rii şi prelucrţ rii
241
Fundamentele logice ale Informaticii
Lui Adam îi place orice persoană căreia îi plac vinurile.
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
În condiţiile de mai sus, am dori să ştim dacă:
este întâmplătoare). Există o persoană pe care să o placă Adam?
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
Desigur că în cazul unui răspuns pozitiv, am dori să ştim şi care anume
există nici o asemenea transformare care să poată fi identificată.
ar fi persoana (persoanele) respectivă (respective).
Afirmaţii. În acest moment, putem traduce cunoştinţele existente în
Primul pas în scrierea unui program de tip PROLOG, pur, este să
formule. Avem:
formalizăm afirmaţiile anterioare (inclusiv interogarea) prin formule din LP1. Pentru aceasta, să identificăm mai întâi elementele importante
G1: place(Eva, Mere) traduce faptul Evei îi plac merele.
din lumea considerată. Vom distinge astfel:
G2: place(Eva, Vinuri) traduce faptul Evei îi plac vinurile.
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ă
A treia frază iniţială exprimă ceva puţin mai complex despre lumea în
facem
fiinţe/vieţuitoare,
cauză şi este natural să ne gândim la o formulă compusă. Putem
oameni/persoane, etc.; adică, într-un limbaj de specialitate, nu este
reformula fraza mai întâi prin Dacă există cineva căruia îi plac
nevoie de tipizare). Ele vor interpretate drept (simboluri de) constante
vinurile, atunci de aceea (acela) îi place lui Adam (oricine ar fi acel
funcţionale, adică elemente ale lui F0, pe care le vom nota prin Eva,
cineva) şi apoi prin Dacă lui x îi plac vinurile, atunci lui Adam îi
Mere, Vinuri, Adam (faptul că începem cu litere mari în scrierea
place de x, pentru fiecare x X, adică obţinem:
distincţie
între,
de
exemplu,
lucruri,
constantelor nu este întâmplător). Nume generice pentru obiecte. Avem nevoie de acest lucru deoarece
G3: (x)(place(x, Vinuri) place(Adam, x)).
există exprimarea Lui Adam îi place orice persoană ... . Vom nota cu X mulţimea tuturor acestor nume (care vor fi desigur nume de
Interogarea (întrebarea). Ea se traduce imediat prin Există y astfel
variabile) şi vom pune, ca şi până acum de altfel, x, y, … X.
încât lui Adam îi place de y? (alegerea unui nume diferit de x pentru
243
Fundamentele logice ale Informaticii
244
Cristian Masalagiu
variabila corespunzătoare nu este întâmplătoare), adică dispunem şi de
C2 = {place(Eva, Mere)},
formula din LP1:
C3 = {place(Eva, Vinuri)}, C4 = { place(x, Vinuri), place(Adam, x)}.
G: (y)place(Adam, y). Al treilea pas constă în a găsi o respingere în LP1, pornind cu clauzele Pentru a efectua şi al doilea pas (suntem deja într-un cadru formal
lui F*, folosind rezoluţia de bază, adică singura metodă cunoscută de
cunoscut), să observăm că a răspunde la întrebare înseamnă a vedea
noi până în prezent. Prin urmare, calculăm mai întâi D(F) şi apoi E(F)
dacă G este (sau nu) consecinţă semantică din {G1, G2, G3}, ceea ce,
(sau/şi E’(F)). Neexistând constante de aritate mai mare ca 1 în F*,
conform Teoremei 2.3, punctul (iii), este echivalent cu a arăta că
găsim imediat:
F = G1 G2 G3 G este contradicţie. Desigur că prin transformări
D(F) = {Eva, Mere, Vinuri, Adam}.
succesive, aducem uşor (nici măcar nu este nevoie de skolemizare) pe F
E’(F) = E(C1) U E(C2) U E(C3) U E(C4) (nu o explicităm mai mult
la FNSC şi apoi obţinem reprezentarea lui F* ca mulţime de mulţimi de
deoarece este foarte simplă).
literali:
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
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)
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
place(Eva, Vinuri) ( place(x, Vinuri) place(Adam, x))).
desigur lui E’(F)). Astfel, avem Res( C1' , C '4 ) = { place(Eva, Vinuri)}
F* = place(Adam, y) place(Eva, Mere) place(Eva, Vinuri)
(pe care o notăm cu C’). În sfârşit, Res(C’, C3) = { }. ■
( place(x, Vinuri) place(Adam, x)), Prin urmare, am satisfăcut parţial cerinţele enunţate deoarece
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)},
Mere)},
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"
Fundamentele logice ale Informaticii
245
246
Cristian Masalagiu
). Practic însă, am avea astfel nevoie de un alt tip de
clauze Horn). Înainte de a furniza detalii suplimentare, considerăm
rezoluţie, care, aplicată unei mulţimi date de clauze din LP1 să
utilă prezentarea unui alt exemplu, pentru a vedea că limbajul sugerat
producă în mod explicit (măcar ca un efect secundar) asemenea
este la fel de puternic ca orice alt limbaj de programare de nivel înalt,
substituţii (pe care le vom numi substituţii de succes). Deocamdată,
putându-se efectua în acesta, de exemplu, calcule aritmetice uzuale
putem totuşi trage o concluzie privind aspectul general al unui
(deşi, desigur, nu aceasta este utilitatea principală a PROLOG-ului).
(obţinere
program, în accepţiunea programării logice (program PROLOG pur). Exemplul 5.2 (adunarea în N). Să descriem lumea adunării pe
El conţine:
Fapte (afirmaţii simple, modelate prin formule atomice de bază
mulţimea numerelor naturale şi apoi să calculăm 3 + 2 folosind un
din LP1), care sunt „formule elementare de program”.
program logic interogat. Cazul considerat reprezintă deja o parte a unei
Alte formule de program (formule compuse din LP1, mai exact
realităţi având o descriere formală, matematică. Astfel, putem porni de
formule Horn închise, probabil pozitive).
la definiţia lui Peano pentru N, adică de la definiţia constructivă deja
O formulţ de interogare (formulă compusă din LP1, având şi
folosită:
ea o formă mai specială, negaţia ei fiind probabil o formulă Horn închisă, negativă). Generalizând, concluzionăm că formulele program (să spunem
Baza. 0 N. Pas constructiv. Dacă n N atunci s(n) N.
G1, G2, ... , Gn) sunt formule din LP1 aflate în FNSC, clauzele fiind clauze Horn având exact un literal pozitiv (sunt clauze Horn pozitive).
Reamintim că ideea în definiţia de mai sus este aceea că obiectul notat
Formula de interogare G (numită şi scop), apare tot ca o formulă
0 este număr natural şi dacă un obiect numit n este considerat număr
închisă, însă cuantificată existenţial. Deşi în exemplul considerat există
natural atunci şi succesorul său, notat s(n) este tot număr natural.
doar un literal (pozitiv), se admite prezenţa mai multor asemenea
Acum putem da o definiţie constructivă a adunării, ca operaţie binară
literali, formula scop fiind de fapt o conjuncţie de literali pozitivi,
pe N, bazându-ne pe reprezentarea a doar două proprietăţi ale acesteia
închisă, aflată în FNPR, cuantificată doar existenţial. După cum am
(suficiente pentru a calcula 3 + 2 în cadrul lumii descrise).
mai sugerat,
programul interogat va fi reprezentat de formula
F = G1 ∧ G2 ∧ ... ∧ Gn ∧ ⎤ G (se poate considera şi reprezentarea sa ca
Baza: x + 0 = 0, pentru fiecare număr natural notat x.
mulţime de mulţimi de literali, F fiind în FNSC şi clauzele fiind
Pas constructiv: s(x + y) = x + s(y), oricare ar fi numerele naturale notate x, y.
Fundamentele logice ale Informaticii
247
248
Cristian Masalagiu
Ultima definiţie „spune” că adunarea lui 0 la orice număr natural nu are
Nume generice pentru obiecte (variabile): x, y, z, u, ... X.
nici un efect (numărul respectiv fiind lăsat neschimbat) şi că dacă
Relaţii între obiecte: A P3.
adunăm la numărul x pe succesorul numărului y, se obţine acelaşi lucru
Transformţ ri între obiecte: s F1.
Afirmaţii (formule program):
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
G1 = (x)A(x, 0, x ).
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ă
(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).
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
Al doilea pas. Programul logic interogat va fi dat de formula:
că dacă z este suma dintre x şi y, atunci succesorul lui z reprezintă suma
F = G1 G2 G =
dintre x şi succesorul lui y). Din nou, această exprimare este suficientă
{{A(x,0,x)},{A(x, y, z), A(x, s(y), s(z)},{A(s(s(s(0))), s(s(0)), u)}}.
pentru a ne atinge scopul, care poate fi reformulat în cadrul logic propus prin întrebarea: Existţ vreun numţ r natural care sţ
Al treilea pas. Urmărim obţinerea unei respingeri pornind cu F şi,
reprezinte suma dintre numerele 2 şi 3 (şi, eventual, care este/sunt
eventual, „deducerea” unei valori, care ar fi desigur s(s(s(s(s(0))))),
acesta/acestea)? Să parcurgem cei trei paşi descrişi în exemplul
adică 5, pentru suma dintre 3 şi 2, valoare care apare „pe undeva” în
anterior, necesari pentru a forma un program logic interogat.
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
Primul pas.
Obiecte: 0.
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}. ■
Fundamentele logice ale Informaticii
249
250
Cristian Masalagiu
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
Definiţia 5.1 (program logic interogat; program PROLOG pur).
Program logic. Acesta conţine: o Fapte, având forma:
asupra şirurilor de caractere. Din acest motiv timpul real necesar pentru efectuarea unor asemenea calcule este foarte mare şi nu este de
P.
aceea indicat să apelăm la programarea logică pentru a efectua calcule numerice. Este însă adevărat că implementările comerciale ale unui
unde P este un literal pozitiv din LP1. Un asemenea
limbaj logic (de tip PROLOG, [MAS1]), oferă facilităţi „nestandard”
literal pozitiv poate avea şi variabile, presupuse a fi
pentru efectuarea rapidă a unor asemenea calcule (există şi maşini
implicit cuantificate universal, deşi în general el
PROLOG dedicate).
reprezintă o formulă de bază. Formula reprezentată este
Vom descrie în continuare, tot pe scurt, un alt tip de rezoluţie în
deci (*)(1 → P) sau (*)P, care poate fi citită „Sigur
LP1, „echivalent” cu rezoluţia de bază şi cunoscut sub numele de
P”. Notăm cu G1 = {G1, G2, … , Gp} mulţimea (finită a)
rezoluţie pură (specifică). Acesta va furniza, în cazul obţinerii unei
faptelor programului notat F.
respingeri, ca efect secundar, şi o substituţie de succes (din care se
o Clauze definite (suplimentare). Aspectul lor este:
pot/poate „extrage” simplu numele obiectelor/obiectului care satisfac(e) interogarea).
P ÷ Q1, Q2, … , Qn.
§2. Sintaxa programelor logice
unde P şi Qi, i [n] sunt literali pozitivi din LP1
Un program logic (clasic, standard) este format dintr-o
(simbolul este uneori înlocuit prin :-, ca şi în clauza
mulţime finită de formule program, alcătuită din fapte şi o mulţime de
scop). Formula reprezentată este
formule suplimentare. Un program logic interogat este un cuplu
(*)(Q1 ∧ Q2 ∧ … ∧ Qn → P) sau
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).
(*)(P ∨ ⎤ Q1 ∨ ⎤ Q2 ∨ … ∨ ⎤ Qn). Se citeşte „P, în caz că
Q1 şi
G2 = {Gp+1, G
Q2 şi p+2,
...
… , G
şi Qn”. p+q}
Notăm
cu
mulţimea (finită a)
251
Fundamentele logice ale Informaticii
Cristian Masalagiu
clauzelor definite ale programului F şi cu G = G1 U G2.
FNR), clauzele fiind clauze Horn (eventual, reprezentate ca mulţimi).
(uneori, chiar acest G este considerat a fi mulţimea
Implementarea foloseşte o strategie SLD. În fiecare pas se efectuează o
clauzelor suplimentare sau de program). Mai sus,
rezoluţie purţ , una dintre clauzele implicate fiind întotdeauna clauza
p, q N, dar nu pot fi simultan egali cu 0.
scop curentţ (iniţial, ea este formula de interogare G), cealaltă clauză fiind una dintre fapte sau clauzele definite aparţinând
Interogarea. Clauza scop este scrisă:
programului (pe scurt, o clauzţ program). Ţinând cont de forma formulelor care intervin şi de definiţia rezoluţiei pure, există o schemă
o G = ? ÷ R1, R2, … , Rk.
simplă care completează strategia SLD (prin precizarea acelei funcţii de
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 = . ■
logic
înseamnă
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ă),
Observaţie. După cum am putut deduce din exemple, execuţia unui program
252
testarea
nesatisfiabilitţ ţii
formulei
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
pq
unificator pentru L . O substituţie s se numeşte cel mai general
i 1
unificator (m.g.u., pe scurt) pentru o mulţime unificabilă L dacă orice
G i G, pe care o vom nota tot cu F. F este în FNSC închisă
(eventual, după ce se redenumesc anumite variabile, acest lucru
alt unificator s’ se „obţine” din s, adică pentru fiecare unificator s’
provenind din necesităţi tehnice, nu din nevoia de a aduce formula la
există o substituţie sub astfel încât s’ = s•sub. ■
253
Fundamentele logice ale Informaticii
254
Cristian Masalagiu
Să presupunem acum că avem două clauze (distincte) din LP1
Teorema 5.1 (Julia Robinson). Orice mulţime finită, nevidă,
(care nu sunt neapărat clauze Horn, conţinând şi variabile). Ideea
unificabilă, de literali din LP1, admite un cel mai general unificator.
rezoluţiei pure se bazează pe faptul că putem unifica (identifica textual)
Problema testării faptului că o mulţime de literali este unificabilă este
„cât mai mulţi” literali din cele două clauze cu ajutorul unei substituţii
decidabilă. De asemenea, găsirea unui cel mai general unificator pentru
convenabile şi apoi îi putem elimina pe aceştia (rezultând o nouă
o mulţime unificabilă se poate face algoritmic. ■
clauză, în final), similar cu cazul rezoluţei propoziţionale. Există o metodă relativ simplă (algoritm) pentru unificarea unei Definiţia 5.3 (rezoluţia purţ /specificţ într-un pas, în LP1). Fie C1,
mulţimi date de literali. Fără a intra în amănunte, tot ceea ce trebuie să
C2 şi R clauze în LP1, C1 ≠ C2. R se numeşte rezolvent (pur) pentru
înţelegem este că trebuie să identificăm porţiuni de text, având (în
C1 şi C2, obţinut într-un pas, dacă sunt îndeplinite condiţiile:
cazul de faţă) un format special. Acest lucru nu se admite a fi făcut
(i) Există substituţiile „de redenumire” s1 şi s 2 astfel încât (C1)s1 şi
decât prin intermediul variabilelor, folosind substituţiile. În plus,
(C2)s2 nu au variabile comune.
„apelurile recursive”, de genul „în substituţia s, variabila
(ii) Există literalii L1, L2, ... , Lm (C1)s1 şi L'1 , L' 2 , ... , L' n (C2)s2
înlocuită cu termul t, care conţine x”, sunt interzise.
x este
astfel încât mulţimea Teorema 5.2 (a rezoluţiei pure pentru LP1). Fie F LP1 o formulă
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.
■
î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. ■ Deoarece nu există pericol de confuzii, vom folosi aceleaşi
notaţii pentru rezoluţia pură identice cu cele adoptate pentru rezoluţia
Teorema 5.3 (completitudinea SLD-rezoluţiei). Dacă F este o
propoziţională (ceea ce se schimbă este practic doar definiţia
mulţime de clauze Horn din LP1, atunci, dacă F este nesatisfiabilă,
rezolvenţilor obţinuţi într-un pas). Teoremele următoare le prezentăm
există o respingere pornind cu F şi care utilizează SLD-rezoluţia pură.
făra demonstraţie (se poate consulta [MAS1]).
■
Fundamentele logice ale Informaticii
255
256
Cristian Masalagiu
Desigur că SLD-rezoluţia este şi corectă. Din păcate însă, problema este netratabilă relativ la complexitatea timp generală. Mai
{place(Adam, x), place(x, Vinuri)}
{ place(Adam, y)}
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;
[x/y] { place(y, Vinuri)}
{place(Eva, Vinuri)}
folosirea unor structuri de date „apropiate” de programarea imperativă, ca de exemplu liste, stive, arbori; utilizarea unei strategii de construcţie
[y/Eva]
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:
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
257
Fundamentele logice ale Informaticii
258
Cristian Masalagiu
unic, este o altă problemă care poate fi rezolvată de către un interpretor
Respingerea anterioară ne „spune” că răspunsul la întrebarea „există
PROLOG). ■
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ă:
Exemplul 5.2 (reluat). În mod cu totul similar ca mai înainte, fără a
A = { A(s(s (s (0)))), s (s (0)), u)}
construi întreg arborele de rezoluţie pură posibil, obţinem respingerea:
a = sub1=[x/ s (s (s (0)))]•[y/ s (0)]•[u/ s (z)] B = { A(s (s (s (0)))), s (0), z)}
(scopul iniţial) A
{A(x, s(y), s(z)), A(x, y, z)} (clauză suplimentară)
a
b = sub 2 [x/s(s(s(0)))] [y/ 0] [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)
(scop nou, derivat) B
{A(x, s(y), s(z)), A(x, y, z)} (clauză suplimentară)
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
b
acesteia (a se urmări valoarea finală a variabilei u, obţinută succesiv prin aplicarea substituţiilor elementare care compun sub), rezultă că (scop nou) C
{A(x, 0, x)}
răspunsul dorit este: suma dintre 2 şi 3 este 5. ■
(clauză suplimentară) c
§3. Rezumare şi Index Programarea logică reprezintă o alternativă viabilă pentru
(clauza vidă, scop final)
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
259
Fundamentele logice ale Informaticii
260
Cristian Masalagiu
presupunerii lumii închise, modul de a trata negaţia, utilizarea
clauze program (definite), 246
disjuncţiei în interogţ ri, precum şi implementarea unui dialog
formulă de interogare (scop), 246
interactiv cu utilizatorul (prin care să se dirijeze „din exterior” execuţia
substituţie de succes, 246
unui program), înseamnă extensii importante pentru programarea logică
formule (clauze) program, 248
([MAS1], [AND]) şi justifică orientarea unor grupuri semnificative de
unificare, 248
programatori într-o asemenea direcţie.
cel mai general unificator, 249
Nici rezultatele teoretice, nici inovaţiile de implementare, nici
rezoluţie pură, 250
ariile de aplicabilitate ale Programării logice nu sunt de altfel epuizate,
tratarea negaţiei, 255
astfel încât acest domeniu, cu toată complexitatea sa, nu este încă unul
ipoteza lumii închise, 255
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
§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).
algoritm = logică + control, 237
Găsiţi o SLD-respingere pentru scopul G = ? p(U, b). Se cere
fapte, 237
şi rezultatul execuţiei programului interogat P = .
program logic interogat, 242
Fundamentele logice ale Informaticii
261
3. Aritmetica ([COT]). Conform Exemplului 5.2, mulţimea
262
Cristian Masalagiu
parinti(andrei, maria, paul).
numerelor naturale poate fi definită prin următorul program
parinti(eliza, maria, paul).,
PROLOG:
unde semnificaţia predicatelor implicate este evidentă. De
numar_natural(0).
exemplu, parinti(E, M, T) este adevărat dacă şi numai dacă M şi
numar_natural(s(X)) :- numar_natural(X).,
T sunt părinţii lui E, M fiind mama, iar T fiind tatăl. Putem
unde predicatul numar_natural(X) „afirmă” că X este un
atunci defini relaţia sora_lui, în conformitate cu definiţiile de
număr natural. Adunarea poate fi dată şi de către predicatul
mai sus, prin (sora_lui(X, Y) este adevărat dacă şi numai dacă
plus1(X, Y, Z):
X este sora lui Y):
plus1(0, X, X).
sora_lui(X, Y):- femeie(X), parinti(X, M, T), parinti(Y, M, T).
plus1(s(X), Y, Z) :- plus1(X, s(Y), Z).
Aceasta va fi (singura) clauză suplimentară a programului.
Predicatul plus2 este similar cu cel dat deja de noi în Exemplul
Se cere să se răspundă la interogarea:
5.2 (şi notat acolo cu A):
? :- sora_lui(eliza, andrei).
plus2(0, X, X).
5. Arbori de cţ utare şi arbori de demonstrare ([COT]). Fiind
plus2(s(X), Y, s(Z)) :- plus2(X, Y, Z).
dat un program PROLOG, un scop iniţial şi regula standard de
Găsiţi definiţii PROLOG ale predicatelor minus(a, b, c),
selecţie a subscopurilor (literalii din clauza scop curentă, dacă
inmultire(a, b, c) şi exp(a, b, c), utilizând plus1, plus2.
sunt mai mulţi, sunt selectaţi în ordinea scrierii lor textuale, în
Intuitiv, predicatele cerute trebuie să fie adevărate dacă şi numai
vederea unificării cu capul unei clauze program, care va fi
dacă sunt respectiv îndeplinite condiţiile a - b = c, a b = c şi
aleasă ulterior), căutarea tututror alternativelor posibile se poate
c = b a.
reprezenta printr-un arbore, numit arbore de căutare (de
4. Fie baza de cunoştinţe ([COT]) exprimată prin faptele:
evaluare sau arbore OR). În acest arbore, rădăcina este scopul
barbat(paul).
iniţial. Orice nod neterminal este etichetat cu o conjuncţie de
barbat(andrei).
subscopuri, derivată din nodul tată într-un singur pas de
femeie(maria).
rezoluţie. Descendenţii imediaţi ai unui nod sunt scopuri
femeie(eliza).
alternative derivate din scopul prezent în acel nod. Căutarea se
femeie(emilia).
termină când toate nodurile sunt terminale. Orice nod terminal
parinti(emilia, maria, paul).
este etichetat cu „◊” în caz de terminare reuşită (cu succes) şi cu
263
Fundamentele logice ale Informaticii
264
Cristian Masalagiu
„♦” în cazul terminării cu eşec (scopul nu poate fi satisfăcut).
După cum am precizat, am urmat regula standard de selecţie a
Orice drum în arbore (o secvenţă de noduri de la rădăcină la un
subscopurilor (în graf este subliniat literalul selectat; arcele sunt
nod terminal) reprezintă un calcul posibil. Pot exista şi drumuri
notate cu numerele clauzelor corespunzătoare).
infinite. Să considerăm următoarele clauze „generice”:
Fie acum, din nou, un program, un scop iniţial, dar şi regula
a :- b, c.
/*clauza1*/
standard de selectare a clauzelor program (al căror cap s-ar
a :- d.
/*clauza2*/
putea unifica
b :- e.
/*clauza3*/
subscopurile pot forma un aşa numit arbore de demonstrare (de
d.
/*clauza4*/
derivare, arbore AND). În acest arbore, orice nod este un
e.
/*clauza5*/
(sub)scop. Rădăcina are în calitate de descendenţi imediaţi
cu
subscopul curent
ales deja).
Atunci
şi scopul iniţial
subscopurile scopului iniţial. Fiecare dintre acestea au în calitate
? :- a.
de descendenţi imediaţi subscopurile clauzei selectate. Nodurile
Arborele de căutare corespunzător programului interogat
terminale sunt notate, ca şi mai înainte, prin „◊” şi „♦”.
anterior este:
Mulţimea de noduri care preced imediat nodurile terminale
a 1 b,c
2
reprezintă subscopurile, conjuncţia cărora formează scopul complex ce corespunde arborilor de demonstrare:
d
a 3
a
4
e,c
d
b
c
◊
e
♦
5 c ♦ ◊
265
Fundamentele logice ale Informaticii
266
Cristian Masalagiu
Ne-am plasat în contextul aceluiaşi program şi, conform celor
Să considerăm acum următorul program interogat:
spuse, pentru scopul iniţial avem doi arbori de demonstrare (cei
bunic(X, Y):-tata(X, Z), tata(Z, Y).
de mai sus) care corespund, respectiv, selecţiei clauzei1 şi
bunic(X, Y):-tata(X, Z), mama(Z, Y).
respectiv selecţiei clauzei2. Arborii sunt reprezentaţi în figura
mama(maria, paul).
anterioară. Acum putem „cumula” arborii anteriori în:
mama(I, J):-mama(I, K), frate(K, J). tata(ion, maria).
a
frate(paul, petru)., b,c
d
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
b
c
◊
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:
e
♦
◊
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.
Mai exact, cele două tipuri de informaţii, furnizate de
Arătaţi că afirmaţia Toţi dragonii verzi sunt fericiţi este
arborele/arborii de demonstrare (AND) şi arborele de căutare
consecinţă semantică din afirmaţiile anterioare. Putem modela
(OR) pot fi efectiv reprezentate printr-un singur arbore (cel de
problema anterioară ca un program PROLOG interogat? Pentru
mai înainte), numit arbore AND-OR (sau arbore complet de
„consistenţa” lumii modelate ar mai fi utile şi alte afirmaţii?
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]).
268
Cristian Masalagiu
face prin inducţie după n). Cum |B| = 2 şi |Bn| = 2 n, trebuie să mai
Anexă Rezolvarea exerciţiilor şi exerciţii propuse
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
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.
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
§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.
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, , 0, , 0) 0 indiferent de valorile lui n N* şi p [n]. Fie p
Astfel, găsim imediat: x = x•1 = x•(x + x ) =
raţionament similar cu cel din exerciţiul precedent.
acum n N*, t N, f, h1, h2, ... , ht FB(n), g FB(t), astfel încât 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
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), ...
269
Fundamentele logice ale Informaticii
270
Cristian Masalagiu
, ht(0, 0, ... , 0)) = g(0, 0, ... , 0) = 0, folosind exact faptul că h1, h2, ..., ht
(iv) Putem trage acum concluzia că şi funcţiile de forma
şi g sunt elemente din T0.
g(x1, x2, ... , x m) = x 1α1 • x α2 2 • ... • x αmm (m N*, α1, α2, ... αm B) sunt în
V.1.8. Fie ([CAZ1]) M mulţimea considerată. Trebuie să arătăm că
M , deoarece g = SUP(pm, f 11 , f 22 , ... , f mm ).
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
(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
( ¯, + şi respectiv •, acestea neavând o notaţie prefixată). Considerăm
unică în FNDP, fiind o sumă de r N* maxtermeni, adică de
funcţiile:
funcţii g1, g2, ... , gr de tipul dat în cazul (iv), adică
(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 0 p
m p
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
f (x1, x2, ... , xm) = i (x 1 ,..., x m ) , oricare ar fi elementele
sus) fiind respectiv 0, 1, 1, 1. Pentru că am pus 0 1 (ştim deja că
x1, x2, ... , xm B, putem scrie şi f p0 = SUP(n, i mp ).
0 ≠ 1) şi extensia acestei relaţii la produsul cartezian este pe
(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 , m 1
m 2
p2 = SUP(p, i , i ), ş. a. m. d., adică pentru fiecare k > 2 găsim m k
pk = SUP(p, pk – 1, i ). (iii)
Considerăm
în
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:
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 )).
componente, putem spune că doar elementele <0, 1> şi <1, 0> sunt
271
Fundamentele logice ale Informaticii
272
Cristian Masalagiu
conform a = a ⊕ 1 = (x•(y 1) 1)•(y•(z 1) 1) 1 =
1+1
<1,1>
1
distributivitate, asociativitate = (x•y x 1)•(y•z y 1) 1 = distributivitate, a•a = a
1+0
<1,0>
<0,1>
x•y•z x•y x•y x•y•z x•y x y•z y 1 1 = 1
1
0+1
comutativitate, a ⊕ a = 0, a ⊕ 0 = a = x•y y•z x y. Evident, aceasta nu este o reprezentare liniară.
<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
§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
funcţia identică).
(contrara directei) este p q , iar TCR (contrara reciprocei) este
V.1.11. Să arătăm că funcţia specificată nu este liniară (conform celor
q p. Se poate arăta că p q este logic echivalentă (în
arătate în lucrare şi exerciţiului precedent, există o unicitate a
metalimbaj) cu q p (adică teorema directă este echivalentă cu
reprezentării funcţiei ca polinom):
contrara reciprocei, de unde se deduce metoda reducerii la absurd, ca
x• y + y• z =
metodă generală de demonstraţie). Se schimbă ceva în cele de mai sus conform a + b = a b
= x yyz =
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
conform a b = (a ⊕ 1)•(b ⊕ 1)⊕ 1 = (x• y 1)•(y• z 1) 1 =
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:
Fundamentele logice ale Informaticii
273
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
Obiecte care satisfac p
Obiecte care satisfac q
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
( ) 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
00
000
noţiunilor caracterizate prin condiţiile p şi q, echivalenţa logică (fie ea
()
()
001
0010
de natură semantică, fie sintactică) „spunând” că cele două sfere 0000
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)nN converge la a R; ceea ce nu înseamnă că (an)nN nu ar fi convergent) este: (ε > 0)(n N)(m N)( (m > n |am - a| < ε)) (ε > 0)(n N)(m N)(m > n |am - a| ε)
A 00000
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
În cele de mai sus s-a folosit faptul că p q p q şi ( p q)
devenit uşor un accesoriu direct al oricărui operator (aşa cum de altfel
p q.
mai sugerat). Arborele, în acest caz, ar putea fi uşor simplificat:
275
Fundamentele logice ale Informaticii
276
Cristian Masalagiu
V.2.7. Se verifică uşor că orice A A este o formulă satisfiabilă, dar ()
0
nevalidă, că F = A A este o formulă validă şi că F = A A este o contradicţie.
00 ()
()
01
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
000 A
B 010
C 011
egalitate. (b) Mai trebuie arătat că:
(compatibilitatea lui faţă de ), şi că
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
Dacă F1 F2, atunci F1 F2, pentru fiecare F1, F2 LP
Dacă F1 F2, atunci F1 F F2 F , pentru fiecare F, F1, F2
formulă F, pe poziţia i; subformula lui F care începe la poziţia i, etc.
LP (analog pentru ; F poate fi „adăugată” şi la stânga), ceea ce
V.2.5. Din demonstraţia Teoremei 2.1 au mai rămas cazurile
exprimă compatibilitatea la dreapta (respectiv la stânga) a lui
F = (F1 F2) şi F = (F1 F2). Sugerăm cititorului, datorită simplităţii
faţă de (sau ).
calculelor, să trateze simultan aceste cazuri, folosind acelaşi simbol atât
Să arătăm de exemplu că dacă F1, F2 LP sunt formule oarecare, astfel
pentru şi , cât şi, similar , pentru + şi •.
încât F1 F2, atunci pentru oricare F LP avem: F F1 F F2. Fie S
V.2.6. Procedăm prin inducţie structurală.
o structură oarecare, corectă pentru F, F1, F2. Avem succesiv:
Baza. F = A A. Atunci prop(F) = {A}.
S(F F1) = S(F) + S(F1) = S(F) + S(F2) = S(F F2).
Pas inductiv.
(c) Deoarece LP LP este o echivalenţă şi este compatibilă cu
(i) F = ( F1). Evident, prop(F) = prop(F1). Acelaşi lucru se întâmplă şi
, şi , rezultă că pe mulţimea cât LP/≡ = {[F] | F LP}, unde
atunci când F = (F1).
[F] = {F’ LP | F’ F}, se pot defini noile operaţii ∧, ∨, ⎤ (preferăm să
(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?
nu folosim simboluri mult diferite pentru LP/≡): ([F1] ∧ [F2]) = [(F1 F2)] ([F1] ∨ [F2]) = [(F1 F2)]
Fundamentele logice ale Informaticii
277
(⎤ [F1]) = [( F1)].
278
Cristian Masalagiu
Atunci, prima parte a afirmaţiei ar putea fi exprimată prin E D, iar
Operaţiile (considerate la nivel semantic) sunt într-adevăr funcţii
doua prin E (G H) D. Întreaga afirmaţie ar putea fi conjuncţia
tocmai datorită compatibilităţii lor cu echivalenţa.
afirmaţiilor precedente sau, mai degrabă, disjuncţia exclusivă a lor.
(d) Axiomele unei algebre booleene se arată simplu. 0 reprezintă clasa
După cum ştim, acest operator logic are de fapt acelaşi tabel de adevăr
tuturor tautologiilor, iar 1 este clasa contradicţiilor. Nu există doar un
ca şi suma modulo 2 şi va fi notat la fel (tot cu ). Deci,
singur homomorfism între mulţimile considerate, ci o infinitate. Astfel,
F = (E D) ( E (G H) D). Lăsăm pe seama cititorului
pentru fiecare S : LP B, putem lua h : LP/≡ B, dat prin
finalizarea exerciţiului.
h([F]) = S(F).
V.2.12. Avem succesiv, fără a mai indica explicit toate proprietăţile
V.2.9. Se pot folosi şi tabelele de adevăr, nu doar definiţia.
utilizate:
V.2.10. Avem succesiv:
F (( A1 A2) (A2 A4)) (( A1 A2) (A2 A4))
F
(( A1 A2) ( A2 A4)) ((A1 A2) ( A2 A4)) prioritate operatori, distributivitate
( B D) E C B ( B D) ( B B) conform ⎤ B ∨ B ≡ 1 şi A ∧ 1 ≡ 1
(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)
( B D) E C B ( B D).
(A2 A4) )
Aplicăm acum Algoritmul Horn formulei anterioare, găsind:
A1 A2 A4 A1 A2 A1 A4 A2 A4.
{B*1 D*2 0, E 0, C 0, 1 B*1, B*1 D*2}.
În cele de mai sus, am ţinut cont de faptul că are prioritatea 0, - 1 şi
Formula este prin urmare nesatisfiabilă. Vă sugerăm să aplicaţi şi altă
- 2. În cadrul unei aceleaşi priorităţi, gruparea am făcut-o însă „la
metodă de testare a satisfiabilităţii unei formule.
stânga”.
V.2.11. Putem considera următoarele variabile propoziţionale:
V.2.13. Deşi nu am mai precizat literalii care „se reduc” din fiecare
D: Vom câştiga alegerile.
clauză, sperăm ca ei să fie uşor de identificat:
E: Popescu va fi ales liderul partidului. G: Ionescu părăseşte partidul. H: Rădulescu părăseşte partidul.
279
Fundamentele logice ale Informaticii {B, C}
{B, C}
{ A, C}
{ C}
280
Cristian Masalagiu
{{B, C, D}, {B, D}, { C, D}, {B}}. O respingere ar putea fi: {B, C, D}
{B}
{ A}
{ C, D}
{A, B, C } {B, D }
{ B}
{ B, C}
{C}
{ D}
{ C}
{B, D}
{B}
{ B}
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ă
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:
281
Fundamentele logice ale Informaticii
( A B) ( B C) (A C) (A B C) ( A B C)
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 n2 ) + S (A2 n3 ) = 0 1 1 , pentru
fiecare n N, adică S M’’.
{A, B} { C} {B}
282
{A, C}
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
{A}
tabelă de adevăr (F = A A, G = B B, B 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}. V.2.16. Se observă că definind
1, k 2i 1, i N S ( Ak ) , avem * 0, k 2 i , i N
’
A=F
B
BB=G
FG
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:
S╞ M. Într-adevăr, mulţimile M = {A1A2, A3 A4,…,A2n+1 A2n+2,...}
(i) Dacă F = P P0 atunci free(P) = Ø.
şi M’’ = { A2 A3, A4 A5, …, A2n+2 A2n+3, …} formează o
(ii) Dacă F = P(t1, t2,..., tn), unde n N*, t1, t2,..., tn T, P Pn, atunci
partiţie a lui M. S este model pentru M’, pentru că avem
283
Fundamentele logice ale Informaticii
284
Cristian Masalagiu
n
V.3.4. Să presupunem că avem o substituţie s = [x1/t1]•[x2/t2]•...•[xn/tn],
i 1
n 2, nenormalizată. Ideea este ca, pentru fiecare i [n – 1], termii ti+1,
free(P(t1, t2,..., tn)) = free(t i ) . Prin urmare, este necesar să definim acum structural free(t), oricare ar fi
ti+2, ... , tn să nu mai conţină pe xi. Atunci putem transforma pe s în felul
t T.
următor: toate apariţiile variabilei xn în t1, t2, ... , tn-1 se înlocuiesc cu tn,
Baza. Dacă t = c F0, atunci free(t) = Ø, iar dacă t = x X, atunci
apoi toate apariţiile lui xn-1 în (noii) t1, t2, ... , tn-2 se înlocuiesc cu (noul)
free(t) = {x}.
tn-1, ş. a. m. d.
Pas inductiv. Să presupunem acum că t = f(t1, t2,..., tn), unde n N*,
V.3.5. (F)s = (x)(P(x, f(x)) Q(g(a, h(x)))). Să remarcăm însă că
n
t1, t2,..., tn T, f Fn. Atunci free(t) = free(t i ) . i 1
substituţia în cauză, s, nu este permisă pentru F. V.3.6. A se vedea V.3.11.
În sfârşit, putem trece la formule:
V.3.7. Formula F este satisfiabilă dar nevalidă. Considerând orice
Baza. Acest pas a fost descris mai sus (F este formulă atomică).
structură S = , corectă pentru F, avem FS = 1 dacă şi numai
Pas constructiv.
dacă S[x/u][y/v](P(x, y, f(z))) = 1, adică dacă şi numai dacă pentru fiecare
(i) Dacă F = ( F1), atunci free(F) = free(F1). La fel, pentru F = (F1).
u US, există v US, astfel încât
(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},
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ă
doar dacă x free(F1). Altfel, free(F) = free(F1) (desigur că puteam
v US, astfel încât PS (u, v, fS(zS )) = 1. Continuarea (şi finalizarea)
lăsa aceeaşi mulţime de mai sus).
exerciţiului este de acum simplă.
V.3.2. subf(F) = {R(u, f(v)), Q(z), P(x, g(a)), (P(x, g(a)) Q(z)),
V.3.8. F = (x)(y)(P(x, y) P(y, x)). Dar dacă P ar fi şi reflexivă şi
((P(x, g(a)) Q(z)) R(u, f(v))), (((P(x, g(a)) Q(z)) R(u, f(v)))), F}.
formula ar aparţine lui LP1 = ?
Puteţi deduce un algoritm imperativ pentru a calcula sub(F), din cel
V.3.9. F = (x)(y)(z)(P(x, x) (P(x, y) P(y, x))
recursiv sugerat de definiţie?
((P(x, y) P(y, z)) P(x, z)).
V.3.3. Definirea constructivă a mulţimii leg(F), F LP1, urmează
V.3.10. FS = 1 dacă şi numai dacă există u, v, w US astfel încât
aceiaşi paşi ca la definirea mulţimii free(F). Lăsăm în seama cititorului
avem
analiza diferenţelor care intervin.
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.
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: Fs(z)(u)(y)(v)(w)(x)((P(u, g(y), z) Q(v)) R(f(x, w), w)).
Finalizarea rezolvării exerciţiului este lăsată pe seama cititorului.
(iii) Pasul 3. Aplicăm Algoritmul Skolem ultimei forme a lui F, pentru
V.3.11. Afirmaţiile se demonstrează a fi adevărate prin aplicarea directă
a obţine o FNS (închisă). Separând execuţiile corpului buclei, obţinem
a definiţiilor notiunilor care sunt implicate.
succesiv:
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.
Alege „b” constantă şi elimină (z): Fs(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): Fs(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): Fs(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): Fs(u)(w)((P(u,g(h(u)),b) Q(t(u))) R(f(s(u,w), w), w)).
V.3.15. Rezolvarea nu poate prezenta dificultăţi dacă materia anterioară
(iv) Pasul 4. Formula este deja în FNSC (închisă).
a fost receptată corect.
V.3.18. Fie formula:
V.3.16. Aceeaşi indicaţie ca la exerciţiul precedent.
F = (x)(P(x, f(x))) (y)( P(y, y)) (u)(v)(w)((P(u, v)
V.3.17. Procedăm algoritmic după cum urmează:
P(v, w)) P(u, w)).
(i) Pasul 1. Obţinere FNPR.
F „ne spune” că P este o relaţie binară, tranzitivă şi nereflexivă, având o
F (u)(y)((P(u, g(y), z) (x)Q(x)) (z)(x) R(f(x, z), z))
proprietate
(u)(y)((P(u, g(y), z) (x)Q(x)) (w)(x) R(f(x, w), w))
F1=(x)(P(x, f(x))). Arătăm că, deşi F este satisfiabilă, ea nu admite
(u)(y)((P(u, g(y), z) (v)Q(v)) (w)(x) R(f(x, w), w))
nici un model finit.
suplimentară,
exprimată
prin
subformula
Fundamentele logice ale Informaticii
287
288
Cristian Masalagiu
(i) F este satisfiabilă. Fie structura S = , unde US = N,
Considerând subformula lui F,
PS = {| m, n N cu m
F3 = (u)(v)(w)((P(u,v) P(v, w)) P(u, w))
Pentru că formula nu conţine nici constante şi nici variabile libere,
şi ea trebuie să fie adevărată în structura dată. Rezultă că PS trebuie să
structura este corectă şi avem imediat că S F.
fie o relaţie tranzitivă pe domeniul în cauză şi deci trebuie să avem
(ii) F nu poate avea model finit. Folosind metoda reducerii la absurd, să presupunem că există S = 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ţă,
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.
infinită, de elemente din US, u0, u1, u2, … unde: (1)
u0 u S ui 1 f (ui ), pentru orice i N
§4. Rezolvări Capitolul 4 V.4.1. Avem succesiv, pentru (i), (ii), (iii) (cifrele din secvenţă sunt
Cum US este finită, nu toate elementele din secvenţă pot fi distincte.
locale rezolvării punctelor respective):
Prin urmare, trebuie să existe i, j N, i < j astfel încât ui = uj. Din
Pentru (i):
S F, subformula F1 trebuie să fie adevărată şi de aici rezultă că trebuie
1. AB, A AB, A
evident
să avem:
2. AB, A B
1., (MP)
3. AB, BC, A B, BC
2., de două ori
4. AB, BC, A C
3., (MP)
PS,
5. AB, BC AC
4., (TD)
PS,
6. AB (BC) (AC)
5., (TD)
7. (AB) ((BC) (AC))
6., (TD).
PS , PS, ………………
……………… PS, ………………
Pentru (ii):
289
Fundamentele logice ale Informaticii
290
Cristian Masalagiu
1. A(BC), A A(BC), A
evident
1. I AB
evident
2. A(BC), A BC
1., (MP)
2. I, A A, AB
1.
3. A(BC), A, B B, BC
2.
3. I, A B
2., (EI)
4. A(BC), A, B C
3., (MP)
4. I, A, B B, B
3.
5. A(BC), B AC
4., (TD)
5. I, B A
4., (IN)
6. A(BC) B(AC)
5., (TD)
6. I B A
5., (TD), (II).
7. (A(BC)) (B(AC))
6., (TD).
Apoi:
Pentru (iii):
1. I B A
evident
1. ( A A)(( A A) A)
axioma 3. din SD3
2. I, B B, B A
1.
2. A A
am arătat deja
3. I B A
2. (EI)
3. ( A A)(( A A) A)
1., (ii), (MP)
4. I, A, B A, A
3.
4. ( A A)A
2., 3., (MP)
5. I, A B
4., (EN)
5. A ( A A)
axioma 1. din SD3
6. I A B
5., (TD), (II).
6. A A
4., 5., (i), (MP).
În sfârşit:
V.4.2. Similar cu rezoluţia propoziţională, vom avea câte un sistem
1. I AB, AC, BC
evident
pentru fiecare F LP1, schimbându-se doar mulţimea de formule
2. I AB, C A, BC
1., Ax3
3. I AB, C A, C B
2., Ax3
„truc”.
4. I, C AB, C, C A, C B
3.
V.4.4. Avem succesiv:
5. I, C A, AB, C, C B
4., (EI)
suplimentare, care este sugerată de E’(F). V.4.3. Lăsăm rezolvarea pe seama cititorului, ea neimplicând nici un
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).
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.5. A C , B B, D , C
A B D, A, C
C B D, A, C
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).
A C , B B D, C
A C B D, A, C
§5. Rezolvări Capitolul 5 V.5.1. Putem nota clauzele cu C1 = {A(x, 0, x)}, C2 = { A(x, y, z), ( A C ) ( A B ), D B, D
A C , A B B D, C
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:
( A C ) ( A B), D B D
( A C ) ( A B ) B D, C
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)))))}.
( A C ) ( A B), C D B D
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))))}.
( A C ) ( A B ) (C D) B D
În sfârşit, substituind x = s(s(s(0))), obţinem
prin rezolvarea
lui C5 cu C1. ( A C ) ( A B ) (C D ) ( B D )
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 CP1CP2 CP3,
V.4.6. Avem succesiv: 1. (x)(y)(x = y y = x)
conform 7. (din enunţ)
valoarea cerută a lui U fiind c. În arborele de mai jos, nodurile
2. (y)(z)(z = y y = z)
1., (E∀)
suplimentare (care se rezolvă cu clauza scop curentă, precedată şi de
293
Fundamentele logice ale Informaticii
294
Cristian Masalagiu
simbolul ) sunt chiar clauzele de program, nu doar capul acestora
Am putea lua în considerare şi o definiţie recursivă directă de genul
(pentru a ne familiariza şi cu alte notaţii folosite în literatura de
minus1(X, 0, X).
specialitate). Numele unor variabile sunt de asemenea schimbate (aşa
minus1(s(X), s(Y), Z):-minus1(X, Y, Z).,
cum am mai amintit, sunt necesare cunoştinţe suplimentare pentru a ne
sau
convinge de ce anumite redenumiri nu pot fi evitate pe parcurs).
minus2(X, X, 0). minus2(X, Y, s(Z)):-minus2(X, s(Y), Z). Înmulţirea poate fi reprezentată de predicatul:
p(X,b)
p(X 1,Z1) q(X1,Y1), p(Y1,Z1) [X1/X]•[Z1/b]
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
q(X,Y1), p(Y1,b)
q(a,b) [X/a]•[Y1/b]
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).
p(b,b)
p(X3 ,X3) [X3/b]
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
V.5.3. Posibile definiţii sunt (semnificaţia intuitivă a predicatelor
mai numeşte şi corpul regulii). Substituţia de unificare este
folosite a fost deja sugerată; de exemplu, faptele din minus1 şi minus2
[X/eliza]•[Y/andrei], rezultând noul scop curent (scopul derivat)
ne „spun” că X – 0 = X şi respectiv X – X = 0):
? :- femeie(eliza), parinti(eliza, M, T), parinti(andrei, M, T), care are
minus1a(X, Y, Z):- plus(Y, Z, X).
trei subscopuri. Primul este femeie(eliza), care se unifică cu faptul
minus1b(X, Y, Z):- plus(Z, Y, X).
corespunzător, rezultând ? :- parinti(eliza, M, T), parinti(andrei, M, T).
minus2a(X, Y, Z):- plus(Y, Z, X).
Subscopul parinti(eliza, M, T) nu se poate unifica decât cu faptul
minus2b(X, Y, Z):- plus(Z, Y, X).
parinti(eliza, maria, paul), unde M este instanţiat de valoarea „maria”,
295
Fundamentele logice ale Informaticii
296
Cristian Masalagiu
iar T, de valoarea „paul” (un cel mai general unificator fiind evident dat de
[M/maria]•[T/paul].
Astfel,
scopul
curent
bunic(ion, petru)
devine
[X/ion][ Y/petru]
[X/ion] [Y/petru]
? :- parinti(andrei, maria, paul). Acesta se unifică cu faptul
tata(ion,Z), tata(Z,petru)
tata(ion,Z), mama(Z,petru)
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).
tata(ion,Z)
V.5.5. Arborele AND-OR este reprezentat în figura de mai jos. Pe arce
tata(Z, petru)
[Z/maria]
[Z/mari]a
◊
nu am mai trecut clauze, ci substituţiile corespunzătoare:
mama(Z,petru)
tata(ion,Z)
♦
[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
Fundamentele logice ale Informaticii
297
298
Cristian Masalagiu
(L)sub1 = {P(f(b), y), P(f(b), g(f(b))), P(f(z), g(f(z)))}.
G= (Y)((P(Y) R(Y)) Q(Y))
Acum pot fi aleşi tot primii doi literali:
este o consecinţă semantică din {F1, F2, F3}, utilizând rezoluţia. Urmăm
P(f(b), y)
paşii cunoscuţi:
P(f(b), g(f(b))).
(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
Găsim sub 2 = [y/g(f(b))] şi
reprezentarea clauzală sub formă de mulţimi a lui F’ ca fiind:
(L)sub1•sub2 = {P(f(b), g(f(b))), P(f(z), g(f(z)))}.
F’ = {{ P(Y), Q(Y), T(f(Y,Y))}, { P(Y), Q(Y), P(f(Y))},
Nu putem alege acum decât singurii literali rămaşi în mulţime:
{ P(Y), Q(Y), S(f(Y))}, { P(Y), R(Y), S(Y)},
P(f(b), g(f(b)))
{ P(X), T(X,Y), P(Y), R(Y), R(X)}, {P(b)}, {R(b)}, { Q(b)}}.
P(f(z), g(f(z))).
Î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
Punând sub 3 = [z/b], găsim în final
denota prin C1, ..., C8, în această ordine. Mai mult, din procesul de
(L)sub1•sub2•sub3 = {P(f(b), g(f(b)))}, substituţia cerută (finală) fiind
Skolemizare, rezultă două (noi) simboluri funcţionale, f – de aritate 1 şi
evident sub = sub 1•sub2•sub3.
b – de aritate 0.
V.5.7. Putem considera următoarele relaţii (predicate):
(ii) O posibilă respingere este:
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:
(1)
C1
C2
L = ({ P(y), P(a)})[y/a]
C 1' { Q(a), T(f(a), a)) }
Fundamentele logice ale Informaticii
(2)
C2
299
300
C6
Cristian Masalagiu
(5)
C8
C '2
L = ({ P(y), P(a)})[y/a]
C '2 {Q(a), P(f(a))}
(3)
C3
C "2 {P(f(a))}
C6 (6)
L = ({ P(y),
C8
C '3
P(a)})[y/a]
C '3 {Q(a), S(f(a))} C "3 { S(f(a))}
(4)
C1'
C8
(7)
C1
C5 (redenumire în C1: [y/z]) L = ({T(f(z),z), T(x, y)}) [x/f(z)][y/z]
C1" {T(f(a), a)}
C 9 { P(z), Q(z), P(f(z)), T(f(z), z), R(z), R(f(z))}
301
Fundamentele logice ale Informaticii
(8)
C9
302
Cristian Masalagiu
C1" (9)
L = ({T(f(z),z),
C4
C "3
T(f(a),a)}) [z/a]
L = ({ S(y), S(f(a))}) [y/f(a)]
{ P(a), Q(a), P(f(a)), R(a), R(f(a))}}
C
" 2
{ P(f(a)), R(f(a))}} { P(a), Q(a), R(a), R(f(a))}
C8 { P(f(a))}
{ P(a), R(a), R(f(a))}
{ P(a), R(f(a))}
C10
C "2
C7
C6 Puteţi folosi ca alternativă rezoluţia de bază ? Raspundeţi singuri la celelalte întrebări din enunţ.
C10 = {R(f(a))}
§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
303
Fundamentele logice ale Informaticii
de la 1 la 10, realizarea a 75 de puncte este o cerinţă minimală pentru
304
a şti că pregătirea este cât de cât satisfăcătoare.
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,
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 •,
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?
presupunând în acelaşi timp că acesta este prioritar faţă de +):
V.F.5. Ne plasăm în LP. Fie F G o tautologie, astfel încât F şi G nu
f(x, y, z) = x + x y + x y
au formule atomice în comun. Arătaţi că fie F este nesatisfiabilă, fie G
f(x, y, z) = (x + y) (x + y )( x + z )( x + z)
este tautologie (neexclusiv). Argumentaţi faptul că presupunerea „nu
f(u, x, y, z) = u x + y z
există variabile comune” este esenţială.
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
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.
Pentru fiecare asemenea element, se poate evident determina
Mulţimea X are 2 elemente.
„gradul său de imbricare”, adică numărul total de simboluri
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.
atomice,
apoi
pentru
formule)
următoarele
funcţii
recursive
(calculabile prin algoritmi):
Cristian Masalagiu
ND : T U At U LP1 N. Pentru fiecare F LP1 (t T, A At), considerăm toate variabilele şi constantele care apar.
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.
Fundamentele logice ale Informaticii
305
306
Cristian Masalagiu
Mulţimea {x, y, z} formează un triunghi isoscel.
V.F.11 ([OHL]). Problema reacţiei în lanţ a lui Schubert. Lupii,
Dacă două puncte ale unei drepte aparţin unui plan, atunci
vulpile, păsările, omizile şi melcii sunt animale, şi există măcar câte un
dreapta aparţine planului.
asemenea animal. Există, de asemenea şi cereale, cerealele fiind plante.
V.F.7. Ne plasăm în LP1. Construiţi o formă normală Skolem, notată
Despre fiecare animal ştim că fie îi place să mănânce toate plantele, fie
C, pentru formula B = (x)(y)Q(x, y) şi arătaţi că formulele B şi C nu
îi place să mănânce toate animalele mult mai mici ca el însuşi, animale
sunt tare echivalente.
cărora, în plus, le place să mănânce anumite plante. Omizile şi melcii
V.F.8. Ne plasăm din nou în LP1. Arătaţi că formula
sunt mult mai mici decât păsările, care sunt mult mai mici decât vulpile,
F = (x)(y)(z)((Q(x, x)) ((Q(x, y) Q(y, z)) Q(x, z))
care la rândul lor sunt mult mai mici decât lupii. Lupilor nu le place să
((Q(x, y) Q(y, x)) (y)(x)Q(y, x))
mănânce vulpi sau cereale, în timp ce păsărilor le place să mănânce
este satisfiabilă dar nevalidă. Mai mult, arătaţi că ea este adevărată în
omizi dar nu şi melci. Omizilor şi melcilor le place să mănânce anumite
orice univers finit. V.F.9. Demonstraţi, folosind deducţia naturală, că: (x)(A) (x)A.
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ă
A (x)A, dacă x nu apare (intră) liber în A.
(de fapt, trivalentă), notată, să spunem, cu LP3. Mai precis, luăm
(x)(A) A, dacă x nu apare liber în A.
LP3 = LP, sintaxa nemodificându-se. Prin urmare, mulţimea de
(x)(B A) ((x)(B) A), dacă x nu apare liber în A.
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,
V.F.10. Arătaţi că următoarea mulţime de literali L din LP1 este
implică şi echivalent (aceştia vor căpăta însă, pentru evitarea unor
unificabilă şi găsiţi un cel mai general unificator:
confuzii, indicele inferior 3). Notând B’ = B U {u}, o asignare
L = { P(f(z, g(a, y)), h(z)), P(f(f(u, v), w), h(f(a, b)))}.
(structură) va fi orice funcţie S : A B’, iar conectorii amintiţi vor fi
Ca o indicaţie, luând doar câte doi literali la fiecare pas de unificare,
interpretaţi semantic ca funcţii de arităţi corespunzătoare peste B’,
Algoritmul lui J. Robinson se termină după patru paşi, cu un posibil
funcţii definite prin următoarele tabele de adevăr generalizate:
m.g.u. de forma sub = [z/f(u, v)]•[w/g(a,y)]•[u/a]•[v/b].
x
⎤3
0
1
307
Fundamentele logice ale Informaticii
308
Cristian Masalagiu
1
0
operaţiile, pentru fiecare asignare S, adică LP3 este extensional. Dar,
u
u
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),
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
în momentul respectiv. Leul şi inorogul erau şi ei vizitatori destul de
0
u
u
0
1
0
frecvenţi ai pădurii uitării. În plus, ei erau fiinţe destul de ciudate.
1
u
1
u
u
0
Astfel, leul minţea întotdeauna lunea, marţea şi miercurea, în timp ce în
u
u
u
u
1
1
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
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
Se observă imediat că dacă restricţionăm pe 3, 3, 3, 3 şi 3 la B
şi inorogul, care se odihneau sub un copac. Ei au făcut următoarele
(le notăm la fel), atunci acestea coincid cu funcţiile corespunzătoare din
afirmaţii:
semantica logicii propoziţionale clasice ( 3(x) = x , x 3 y = x + y,
Leul: Ieri a fost una dintre acele zile în care eu spun minciuni.
x 3 y = x•y, x 3 y = x + y respectiv x 3 y = ( x + y)•( y + x)).
Inorogul: Şi pentru mine ieri a fost una dintre zilele în care eu
Valoarea u (nedefinit, undefined) nu trebuie înţeleasă ca fiind fie
spun minciuni.
adevărat, fie fals, dar nu ştim exact care dintre ele, ci mai degrabă în
Folosind aceste informaţii, Alice, care era o fată deşteaptă, a putut să
sensul: „cineva care are 2.00 metri este cu siguranţă înalt - 1; cineva
determine în ce zi din săptămână se afla atunci. Puteţi afla şi
care are 1.50 metri este cu siguranţă mic de statură – 0; cineva care
dumneavoastră?
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ă
V.F.14 ([OHL]). Fie formulele din LP1 =: F = (y)(x)P(x, f(x, y))
309
Fundamentele logice ale Informaticii
310
Cristian Masalagiu
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
0
b
b
n
n
0
1
4
1
b
n
0
După cum se poate observa, pentru simplitate, am schimbat uneori
1
1
1
1
1
modalitatea de reprezentare a unui tabel în cele de mai sus (sperând că
b
1
b
b
b
nu există dificultăţi de înţelegere). Intuitiv, această logică se poate
n
1
b
n
0
interpreta după cum urmează: Să presupunem că cineva trimite nişte
0
1
b
0
0
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
şi
4
1
b
1
1
b
n
0
dacă la toate s-a răspuns „NU”. Dacă s-au returnat toate
b
n
0
chestionarele dar există atât răspunsuri „DA” cât şi răspunsuri „NU”,
b
b
n
0
sau dacă nu s-au returnat toate chestionarele (ci doar o parte,
n
n
n
n
n
indiferent de răspunsuri), atunci activitatea va fi apreciată cu b. Dacă
0
0
0
n
0
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
Fundamentele logice ale Informaticii
311
pentru Q1 este b şi rezultatul pentru Q2 este n, atunci rezultatul pentru
Bibliografie
Q1 ∧4 Q2 este, natural, tot n). Demonstraţi, de exemplu, că atât 4 cât şi 4 sunt operaţii comutative
[AHO]
pe B’’ = B U {b, n}. Ce alte lucruri interesante mai puteţi deduce pentru această logică?
[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.
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. Programarea Lucanu, D., Jucan, T. – [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]
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.
Fundamentele logice ale Informaticii
[WIN]
Winskel, G. – The Formal Semantics of Programming Languages. An Introduction, M. I. T. Press, Massachusetts, S. U. A., 1990.
315