Documente Academic
Documente Profesional
Documente Cultură
Cuprins
Prefaţă şi Introducere 1
§5. Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . . 41
§5. Decidabilitate în LP . . . . . . . . . . . . . . . 77
Bibliografie 312
Intrare: -.
Ieşire: N.
Metodă:
Pas 1: N { =׃0}.
Pas 2: Cât_timp (este posibil) execută
Pas 3: Alege n ∈ N.
Pas 4: N =׃N U {s(n)}.
Sf_Cât_timp.
scriem acest lucru prin b = f(a1, a2, ... , a n), deşi relaţia dintre
elementele vechi şi cele noi nu este întotdeauna de natură funcţională)
şi presupunem că este adevărată P(ai) pentru fiecare ai ∈ {1, 2, ..., n}.
Arătăm că este adevărată P(b).
n
Observaţie. card(FBn) = 2 2 . Cardinalul unei mulţimi A va mai fi
notat, atunci când nu există confuzii şi cu |A|. Mai mult, dacă atât
domeniul cât şi codomeniul unei funcţii sunt mulţimi finite, funcţia
poate fi dată tabelar. O asemenea tabelă de definiţie va fi numită încă
de pe acum tabelă de adevăr, deşi semnificaţia acestui termen poate
2n
Întrebare. Puteţi justifica egalitatea card (FBn) = 2 ? ■
x c0 c1 1B ¯
0 0 1 0 1
1 0 1 1 0
x y x•y (x • y) + y y
0 0 0 0 0
0 1 0 1 1
1 0 0 0 0
1 1 1 1 1
şi respectiv:
x x x • (x )
0 1 0
1 0 0
O latice (şi aici sunt mai multe accepţiuni matematice ale termenului şi
câteva definiţii echivalente pentru o aceeaşi accepţiune) este un triplet
M = <M, ⊥, ∇>, în care ambele operaţii satisfac proprietăţile de
idempotenţă, comutativitate, asociativitate şi absorbţie. În plus, în
orice latice (deci şi în orice algebră booleană), se poate defini o relaţie
de ordine parţială (relaţie binară, reflexivă, tranzitivă şi antisimetrică),
prin: x ≤ y dacă şi numai dacă x = x ⊥ y (sau, dual, y = x ∇ y). Datorită
acestui fapt, o latice se mai defineşte şi ca fiind o mulţime parţial
ordonată (poset) în care toate submulţimile finite, nevide, admit măcar
6) x = x 6’) x = x
7) x• x = 0 7’) x + x = 1
8) x•x = x 8’) x + x = x
9) x•0 = 0 9’) x + 1 = 1
10) x•1 = x 10’) x + 0 = x
11) x1•x2•…•xn = 0 dacă şi 11’) x1 + x2 + … + xn = 1 dacă
numai dacă există i∈[n] astfel şi numai dacă există i∈[n]
încât xi = 0 (oricare ar fi n ≥ 2 astfel încât xi = 1 (oricare ar fi
şi oricare ar fi n ≥ 2 şi oricare ar fi
x1, x2, ..., xn ∈ B) x1, x2, ..., xn ∈ B)
12) x1•x2•…•xn = 1 dacă şi 12’) x1 + x2 + … + xn = 0 dacă
numai dacă pentru fiecare i∈[n] şi numai dacă pentru fiecare
avem xi = 1 (oricare ar fi n ≥ 2 i∈[n] avem xi = 0 (oricare ar fi
şi oricare ar fi n ≥ 2 şi oricare ar fi
x1, x2, ..., xn ∈ B) x1, x2, ..., xn ∈ B)
13) 13’)
x1 ⋅ x 2 ⋅ ... ⋅ x n = x1 + x 2 + ... + x n x1 + x 2 + ... + x n = x1 ⋅ x 2 ⋅ ... ⋅ x n
(oricare ar fi n ≥ 2 şi oricare ar (oricare ar fi n ≥ 2 şi oricare ar
fi x1, x2, ..., xn ∈ B) fi x1, x2, ..., xn ∈ B)
Tabelul 1.1.
x1α1 ⋅ xα2 2 ⋅ ... ⋅ xαk k = 1 dacă şi numai dacă xi = αi pentru fiecare i ∈ [k].
Fie acum elementele a1, a2, ... , an ∈ B, oarecare, fixate. Conform (*), în
suma
α α α
∑ a 1 1 ⋅ a 2 2 ⋅ ... ⋅ a k k ⋅ f(α 1 , α 2 , ..., α k , a k+1 , ..., a n )
α 1 ,α 2 ,...,α k ∈ B
α α α
unul şi numai unul dintre factorii a1 1 ⋅ a 2 2 ⋅ ... ⋅ a k k va fi egal cu 1,
oricare ar fi valorile lui x1, x2, ... , xn din B şi prin urmare avem:
utiliza notaţia f = SUP(g, h1, h2, ... , ht), iar M va denota mulţimea
funcţiilor care apar ca elemente în M-şiruri. Pentru fiecare M dat, M
va fi practic o mulţime definită constructiv, în care E U M constituie
mulţimea funcţiilor de bază iar operatorul de superpoziţie este singura
modalitate de a se obţine funcţii noi din funcţii vechi. Prin urmare, M
este cea mai mică mulţime care conţine proiecţiile, elementele lui M şi
este închisă la superpoziţie. Algebric vorbind, se mai spune că M este
închiderea prin superpoziţie a mulţimii E U M. M se va numi închisă
dacă coincide cu închiderea sa.
= x •z ⊕ x• z = folosind a = a ⊕ 1
= x • z ⊕ (x ⊕1) (z ⊕1) = distributivitate
= x•z ⊕ x•z ⊕ x⊕ z ⊕ 1 = folosind a ⊕ a = 0
= x ⊕ z ⊕ 1. ■
Teorema 1.7. Orice bază conţine cel mult patru funcţii şi există baze
compuse din una, două, trei şi patru funcţii. ■
Teorema 1.8. Orice mulţime închisă de funcţii booleene fie este inclusă
cel puţin în una dintre mulţimile T0, T1, Aut, Mon, Lin, fie coincide cu
FB. ■
Teorema 1.9. Mulţimile T0, T1, Aut, Mon, Lin sunt precomplete (o
mulţime M de funcţii booleene este precompletă dacă pentru orice altă
funcţie f ∉ M, mulţimea M U{f} este completă). ■
de acest tip la mulţimi de cardinal mai mare decât doi (cardinalul lui
B). Importanţa unor asemenea cercetări constă în speranţa reducerii
complexităţii unor algoritmi clasici şi dezvoltării unor teorii similare,
implementabile şi care să fie valabile şi pentru logicile neclasice
multivaluate).
§5. Exerciţii
1. Completaţi demonstraţia Teoremei 1.1, adică arătaţi validitatea
legilor 1), 2), 3), 5), 1’) – 5’) şi x + ( x ) = 1, utilizând tabelele
de adevăr.
2. Arătaţi că V = < 2V, ∩, U, CV> este o algebră booleană, oricare
ar fi mulţimea (nevidă) V. În plus, demonstraţi că 0 = Ø şi
1 = V.
3. Arătaţi adevărul afirmaţiilor rămase nedemonstrate din Tabelul
1.1.
n
4. Justificaţi egalitatea card(FBn) = 2 2 .
5. Fie mulţimea termenilor n-ari t, construiţi peste mulţimea
variabilelor booleene distincte (ordonate) X = {x1, x2, ... , xn},
precum şi mulţimea n-uplelor peste {0, 1, 2}. Arătaţi că există o
funcţie bijectivă g, care „identifică” aceste mulţimi, dată prin
g(t) = <e1, e2, ... , en>, unde, pentru fiecare i ∈ [n], avem ei = 0
dacă xi apare barată în t, ei = 1 dacă xi apare (nebarată) în t şi
ei = 2 în rest (adică xi nu apare în t). De asemenea, arătaţi că
există (măcar) o corespondenţă bijectivă între mulţimea
n-uplelor peste {0, 1, 2} şi mulţimea de funcţii
{f | f : [n] → {0, 1, 2}}. Deduceţi că mulţimea termenilor n-ari
A→B
B
modus tollendo-tollens (pe scurt, modus tollens)
A
Validitatea (reamintim: dacă ipotezele sunt adevărate, atunci şi
concluzia trebuie să fie adevarată) schemelor modus ponens (modul
afirmativ) şi modus tollens (modul negativ) rezultă imediat din definiţia
implicaţiei. Oprindu-ne la modus ponens, am putea spune că acesta
poate fi reformulat în: din A (adevărată) şi A → B (adevărată)
deducem (că) B (adevărată). Pe scurt, vom nota acest lucru prin
A ⇒ B. Următorul exemplu este edificator pentru greşelile care se pot
face fie din necunoaşterea definiţiei reale a implicaţiei, fie din
confundarea lui A → B (formulă în limbajul de bază) cu A ⇒ B
(formulă în metalimbaj, care sugerează deducerea lui B, pornind de la
A şi folosind un raţionament).
Definiţia 2.2.
Baza. F = A ∈ A. Atunci arborele ataşat lui F (sau, arborele care
reprezintă F), este:
A
Pas constructiv.
(i) Fie F = ( F1) şi să presupunem că se cunoaşte arborele ataşat lui F1,
Arb(F1). Atunci, arborele ataşat lui F va fi (ceva similar se obţine
pentru (iv), adică pentru cazul F = (F1)):
()
Arb(F1)
()
)
Arb(F1) Arb(F1)
■
Deşi au un rol pur sintactic, neschimbând cu nimic semantica
formulelor în care apar, parantezele rotunde au fost – din anumite
motive tehnice – privite mai sus ca un operator pre&post-fixat. Dacă
introducem o ordine stânga-dreapta pe mulţimea succesorilor imediaţi
ai fiecarui nod (implicit, pentru o formulă este valabilă ordinea de
scriere a „literelor” în cuvântul respectiv, exceptând paranteza închisă
„)”, care are acelaşi „număr de ordine” cu paranteza deschisă „(”
corespunzătoare), atunci se observă că fiecărei formule îi corespunde
un arbore ataşat unic şi fiecărui arbore ordonat G (cu nodurile
etichetate cu elemente din L ) îi corespunde o unică formulă din LP
(pentru care G este arborele ataşat). Definim structural şi mulţimea
subformulelor oricărei formule date F (notată subf(F)). Admitem
implicit faptul că F’ ∈ subf(F) dacă şi numai dacă F’ este subcuvânt al
lui F şi F’∈ LP (cu alte cuvinte, F1 şi F2, în cele ce urmează, sunt tot
formule).
Definiţia 2.3.
Baza. F = A ∈ A. Atunci subf(F) = {A}.
Pas constructiv.
(i) F = ( F1). Atunci subf(F) = subf(F1) U { ( F1) }.
(ii) F = (F1 ∧ F2). Atunci subf(F) = subf(F1) U subf(F2) U { (F1 ∧ F2) }.
(iii) Analog cu (ii) pentru cazul F = (F1 ∨ F2) (înlocuind peste tot,
simultan, ∧ cu ∨).
(iv) F = (F1). Atunci subf(F) = subf(F1) U { (F1) } ■
n
• ∨ Fi este prescurtarea lui F1 ∨ F2 ∨ ... ∨ Fn .
i=1
lui S), este imediat faptul că S’(A) există şi este unică în sensul precizat
(orice alt – posibil – S’’ trebuie să fie tot o extensie a lui S).
Pas inductiv. Vom arăta doar cazul F = ( F1), celelalte două
(F = (F1 ∧ F2) şi F = (F1 ∨ F2) ) fiind similare. Presupunem prin urmare
P(F1) ca fiind adevărat şi demonstrăm că P(F) este adevărat. Fie orice
asignare S. Faptul că S’(F) există (ca element al lui B) şi este unică (în
sensul precizat), rezultă din nou imediat, din ipoteza inductivă (S’(F1)
există şi este unică), din definiţia negaţiei în B (ştim că S’(F) = S' (F1 ) )
şi a faptului că orice alt S’’ trebuie să satisfacă punctul (ii) din teoremă.
■
F∈ LP.
Tabelul 2.1
n
(iii) ( ∧ Gi ) ∧ G este contradicţie.
i=1
Demonstraţie.
(i) implică (ii). Presupunem prin reducere la absurd că
n
F = ( ∧ Gi) → G nu este tautologie, deşi G este consecinţă semantică
i=1
n
este contradicţie. Această înseamnă că F1 = ( ∧ Gi) ∨ G este
i=1
n
tautologie, dar F2 = ( ∧ Gi) ∧ G este satisfiabilă. Prin urmare, există
i=1
o structură S astfel încât S(F2) = 1 (şi, desigur, S(F1) = 1). Din S(F2) = 1
n n
rezultă S(( ∧ Gi )) • S( G) = 1, adică S(( ∧ Gi )) = 1 şi S(G) = 1.
i=1 i=1
n
În consecinţă, S( ( ∧ Gi )) = 0 şi S(G) = 0. Pentru că
i=1
n
S(F1) = S(( i∧= 1 Gi )) + S(G), avem S(F1) = 0, ceea ce este absurd
n n n
S(( ∧i=1
Gi)) = 1 şi S(G) = 1. Cum S(( ∧
i=1
Gi) ∧ G) =S(( ∧
i =1
Gi))•S(G),
n
rezultă că există S astfel încât S(( ∧ Gi) ∧ G) = 1, deci F nu este
i=1
contradicţie (absurd). ■
§ 4. Forme normale în LP
Spre deosebire de cazul funcţiilor booleene, vom studia pentru
început formele normale conjunctive şi formele normale disjunctive
simultan.
Î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.
Se poate construi apoi direct din tabel măcar o formulă (sau două) care
îi corespunde semantic, formulă ce se află în FND (şi/sau FNC). De
fapt vom folosi algoritmul de construcţie a FNDP (FNCP) pentru o
funcţie booleană. Conform Capitolului 1, acesta poate fi exprimat
astfel: se fixează liniile având 1 în ultima coloană (cele marcate cu *
în tabel); pentru fiecare asemenea linie se construieşte o conjuncţie de
literali (apar toţi, cu bară sau fără): dacă valoarea unei variabile
(atom pozitiv) este 0 în tabel, atunci variabila se trece în conjucţia
§ 5. Decidabilitate în LP
LP, cadrul formal propus (realitatea este modelată prin
afirmaţii, afirmaţiile sunt reprezentate ca formule propoziţionale),
oferă ca principală metodă de a rezolva problemele, testarea adevărului
(satisfiabilităţii) unor formule. Din punctul de vedere al unui
informatician, trebuie ca pentru clasa de formule admisă să existe un
algoritm care, având la intrare orice F ∈ LP, se termină cu răspunsul
„DA”, dacă F este satisfiabilă (sau validă, sau contradicţie) şi „NU” în
rest (ştiind desigur că putem decide dacă un anumit şir de caractere este
formulă sau nu). În această situaţie se spune că problema
satisfiabilităţii (pe scurt, SAT) pentru LP este rezolvabilă
(decidabilă). Mai mult, am vrea să găsim asemenea algoritmi pentru
care complexitatea timp este „rezonabilă”.
Dacă toţi vi (i ∈ [m]) sunt egali cu 0 atunci F este contradicţie, dacă toţi
vi sunt 1 atunci F este tautologie, iar în rest F este satisfiabilă dar
nevalidă. Pentru a depista acest lucru, trebuie parcurs, în Pasul 2, în
cazul cel mai defavorabil, întregul tabel, linie cu linie şi prin urmare
trebuie efectuate 2n comparaţii (F este construită peste n formule
atomice). Deşi mai sus nu avem o explicaţie formală riguroasă a
faptului că SAT are timp exponenţial, se poate arăta că problema este
chiar NP-completă (conform [AHO]; a se urmări şi comentariile care
urmează imediat după demonstraţie). ■
numărului n). Intuitiv, timpul luat de execuţia unui algoritm Alg este dat
de numărul de instrucţiuni (paşi/operaţii elementare) efectuate (să-l
notăm cu tAlg), iar spaţiul (notat cu sAlg) este dat de numărul de locaţii
(elementare) de memorie (internă, a calculatorului) ocupate în cursul
execuţiei. Sigur că totul se raportează la lungimea fiecarei intrări
(adică, în cazul nostru, la lungimea unei formule F ∈ IN ⊆ LP, aceasta
putând fi de exemplu nF = card (prop(F))) şi ne interesează de fapt
sup{tAlg(F) | F ∈ IN şi nF = n ∈ N}, margine superioară pe care o vom
nota cu tAlg(n). Această abordare (în care se caută cazul cel mai
nefavorabil, dacă este desigur posibil), ne permite să fim siguri că
pentru fiecare intrare de lungime n, timpul de execuţie al lui Alg nu va
depăşi tAlg(n). Cum determinarea acelui supremum este de multe ori
destul de dificilă, ne vom mulţumi să studiem aşa-numita comportare
§ 6. Formule Horn
Reamintim că o clauză Horn este o disjuncţie de literali care
conţine cel mult un literal pozitiv.
Uneori, vom numi tot formulă Horn şi o formulă care este (tare)
echivalentă cu o formulă de forma considerată în Definiţia 2.8. Se
poate arăta ([MAS1]) că există formule propoziţionale care nu sunt tare
echivalente cu nici o formulă Horn, apariţia a măcar doi literali pozitivi
distincţi într-o clauză fiind decisivă. Formele posibile pentru o formulă
Horn sunt (variabilele propoziţionale care apar sunt elemente ale lui A):
(i) C = A1 ∨ A2 ∨ …… ∨ Ak, k ≥ 1, k ∈ N şi
(ii) C = A1 ∨ A2 ∨ …… ∨ Ak ∨ B, k ∈ N.
Algoritm Horn
Intrare: Orice formulă Horn, F, reprezentată ca mulţime de clauze,
clauzele componente fiind clauze Horn diferite de clauza vidă şi scrise
sub formă implicaţională .
Ieşire: „DA”, în cazul în care formula F este satisfiabilă (furnizându-se
şi o asignare S care este model pentru F) şi „NU” în caz contrar (F nu
este satisfiabilă).
§7. Rezoluţie în LP
Fără a restrânge generalitatea, putem presupune că lucrăm cu
formule din LP aflate în FNC, reprezentate sub formă de mulţimi
(finite) de clauze, iar clauzele ca mulţimi (finite) de literali.
C1 C2
L L
R
Vom renunţa la scrierea explicită a lui L sau/şi L în momentul în care
nu există cofuzii.
Exemplu.
Fie formula F = {{A, E, B}, { A, B, C}, {A, D}, { A, D, E}}. Să
găsim câţiva dintre rezolvenţii care se pot obţine (succesiv) pornind de
cele cele patru clauze care compun F, notate respectiv C1, C2, C3, C4:
C1 C2 C1 C2 C1 C4
A A B B A A
C2 C3
A A
{B, C, D} C1
B B
{C, D, A, E}
S ‘ C2 \ { L }, de unde S(R) = 1.
C C
B B
{A} {A}
A A
Ai+1, în mod aleator. Dacă nu avem Si+1 ‘ Mi+1, atunci revenim, alegând
restricţii ale lui Si+1, lucrul fiind evident posibil deoarece Mi ⊆ Mi+1).
următoarele posibilităţi :
• C este o clauză din F, nemodificată. Evident că valoarea lui S
pentru această clauză nu se modifică şi astfel nu modifică
A
valoarea de adevăr a lui F0 n + 1 faţă de cea a lui F (dacă luăm în
A n +1
nou valoarea de adevăr a lui F0 nemodificându-se faţă de cea
A n +1 An +1
În acest moment ştim că formulele F0 şi F1 sunt nesatisfiabile şi,
mai mult, sunt construite peste cel mult n variabile. Aplicând ipoteza
∈ Res*( F0
A n +1
inductivă pentru aceste formule rezultă că ) şi
∈ Res*( F1
An +1
). Conform Teoremelor 2.11 şi 2.13, există o respingere
A n +1
(D0) C1, C2, … , Cl = , pornind cu elementele lui F0 , precum şi o
An +1
respingere (D1) B1, B2, … Bt = , pornind cu clauzele lui F1 .
Adăugăm acum la fiecare clauză din (D0) pe An+1, peste tot de unde
acesta a fost scos (inclusiv la clauzele rezultate în urma aplicării
rezoluţiei într-un pas), obţinând o demonstraţie prin rezoluţie notată
(D0’) şi, analog, adăugăm la fiecare element din (D1) pe An+1 acolo
unde este necesar, obţinând o altă demonstraţie prin rezoluţie, notată
(D1’) (odată An+1 respectiv An+1 introduse, ele nu vor mai fi şterse).
Sunt posibile următoarele situaţii:
• Ultima clauză a lui (D0’) este C’l = {An+1} şi ultima clauză a lui
(D1’) rămâne B’t = Bt = (sau invers, C’l = Cl = şi B’t = Bt =
{An+1}). Atunci concatenăm cele două liste care reprezintă
demonstraţiile (D0’) şi (D1’), rezultând evident o respingere
pornind cu clauzele lui F.
• Ultima clauză lui (D0’) este C’l = {An+1}şi ultima clauză a lui
(D1’) este B’t = {An+1}. Atunci concatenăm din nou cele două
liste şi apoi mai facem un pas de rezoluţie obţinând clauza finală
C = Res(C’l, B’t) = . Din nou avem o respingere pornind cu
clauzele lui F.
În ambele situaţii, conform Teoremei 2.11, rezultă că ∈ Res*(F). ■
B B B B B B
A A A A
{B} {A,B}
B B
{A} {A}
A A
≡ (P ∨ G) ∧ (P ∨ G ∨ E) ∧ (P ∨ G ∨ E) ∧ ( G ∨ E) ≡
(asociativitate,
distributivitate)
≡ (P ∨ G) ∧ ((P ∨ G) ∨ (E ∧ E)) ∧ ( G ∨ E) ≡
(legea contradicţiei,
idempotenţă,
comutativitate)
≡ (P ∨ G) ∧ (E ∨ G).
Prin urmare, F poate fi considerată ca fiind formula Horn
{G → P, G → E} şi, printr-o aplicare imediată a Algoritmului Horn,
obţinem că F este satisfiabilă (asignarea S fiind dată de
S(P) = S(E) = S(G) = 0). Este însă F validă? Pentru aceasta putem
cerceta dacă F este contradicţie. Obţinem însă imediat (folosind legile
lui de Morgan, distributivitatea şi idempotenţa) că
F ≡ ( P ∨ E) ∧ ( P ∨ G) ∧ (G ∨ E) ∧ G, adică, în reprezentarea cu
mulţimi găsim că F = {P ∧ E → 0, P → G, E → G, 1 → G}. Aplicarea
Algoritmului Horn conduce la marcarea doar a lui G şi la răspunsul
că F este tot satisfiabilă. În concluzie, F este satisfiabilă dar
nevalidă, ceea ce poate apare ca un fapt ciudat dacă ne-am fi luat după
forma iniţială a afirmaţiei în limbaj natural. Dacă am cunoaşte toate
structurile care sunt model pentru F, acest lucru ar deveni poate
explicabil. Aplicarea metodei următoare poate fi o soluţie.
Metoda 2 (a tabelelor de adevăr). Ştim deja că F≡(P ∨ G)∧(E ∨ G),
de aceea nu vom folosi forma iniţială, care este mai complicată. Avem:
P E G G P∨G E∨G F
0 0 0 1 1 1 1
0 0 1 0 0 0 0
0 1 0 1 1 1 1
0 1 1 0 0 1 0
1 0 0 1 1 0 0
1 0 1 0 1 0 0
1 1 0 1 1 1 1
1 1 1 0 1 1 1
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
formule propoziţionale, 53
variabile propoziţionale, 53
formule atomice, 54
arbore ataşat unei formule, 55
subformulă, 56
problemă de decizie, 57
literali (pozitivi, negativi), 59
clauze, clauze pozitive, clauze negative, 59
clauze Horn, clauze Horn pozitive, 59
asignare, interpretare, structură, 60
structură completă, 62
formule satisfiabile (model), valide (tautologii), 63
formule nesatisfiabile (contradicţii), 63
formule tare şi slab echivalente, 64
consecinţă semantică, 65
forme normale (disjunctive, conjunctive), 71
clauza vidă, 80
forma implicaţională a clauzelor Horn, 80
rezolvent, arbore de rezoluţie, 87
rezoluţie într-un pas, 87
demonstraţie prin rezoluţie, 90
respingere, 91
mulţimea rezolvenţilor unei mulţimi de clauze, 93
rafinări, restricţii şi strategii ale rezoluţiei, 104
strategia unitară, 105
rezoluţia pozitivă, rezoluţia negativă, 106
§10. Exerciţii
1. Rezolvaţi Exerciţiul 2.1.
2. Rezolvaţi Exerciţiul 2.2.
3. Rezolvaţi Exerciţiul 2.3.
4. Rezolvaţi Exerciţiul 2.4.
5. Completaţi demonstraţia Teoremei 2.1.
6. Rezolvaţi Exerciţiul 2.5.
7. Arătaţi că în LP există formule satisfiabile (dar nevalide),
formule valide, contradicţii.
8. Arătaţi că sunt adevărate afirmaţiile:
(a) ≡ şi ≡s sunt relaţii de echivalenţă pe LP.
(b) ≡ este compatibilă la dreapta şi la stânga cu ∧, ∨ şi
compatibilă cu .
(c) LP = < LP/≡, ∧, ∨, > formează o algebră booleană.
(d) Între LP şi B = < B, •, +, ¯ > există măcar un homomorfism
de algebre booleene.
9. Completaţi demonstraţia Teoremei 2.4.
10. Să se aplice Algoritmul Horn formulei:
F = ( B ∨ D) ∧ E ∧ C ∧ B ∧ ( B ∨ D ∧ B).
11. Să se exprime ca formulă în LP şi să se studieze satisfiabilitatea
afirmaţiei: Vom câştiga alegerile în condiţiile în care Popescu
∞ ∞
Mulţimile ∪ Pi şi ∪ Fi vor fi notate tot cu P respectiv F, atunci când
i=0 i= 0
nu există confuzii.
Definiţia 3.1 (sintaxa LP1). Fie Alf alfabetul fixat anterior. Atunci
mulţimea formulelor calculului cu predicate de ordinul I, LP1 Alf,
este dată constructiv prin:
Baza. Se defineşte mulţimea formulelor atomice, notată cu At, prin:
Arb(t1) Arb(tn)
Arb(t1) Arb(tn)
() () (∀x)
∧ ()
• F = ... ( ... (∀x) ... ) ... . Este pus în evidenţă cazul în care au fost
eliminate parantezele iniţiale de după cuantificator, dar în
subformula G care urmează după acesta există o paranteză
închisă care are corespondent înainte de apariţia cuantorului al
carui domeniu îl căutăm. Ceea ce am subliniat este prima
paranteză cu această proprietate (practic, simbolul imediat de
dinaintea ei fiind ultimul care aparţine domeniului).
Prioritatea cuantificatorilor fiind maximă, se găsesc mai întâi domeniile
sintactice ale fiecărui cuantificator dintr-o formulă şi apoi se aplică
regulile de prioritate legate de conectori (acestea fiind similare de fapt
cu cele din LP). Intuitiv, dacă privim LP1 ca un limbaj de programare
imperativ (formulele fiind programe), construcţiile de tipul
(○1x1)(○2x2) ... (○nxn), cu ○1, ○2, ... , ○n ∈ {∀, ∃}, reprezintă linia de
definiţie a unei proceduri (în care se specifică drept parametri
variabilele locale). Procedurile n-au însă şi un sfârşit marcat explicit,
astfel încât domeniul sintactic este corpul procedurii, delimitarea lui
clară fiind desigur absolut necesară pentru a cunoaşte porţiunea de
text în care numele unei variabile păstrează o aceeaşi semnificaţie.
Continuând paralela, variabilele libere din domeniul sintactic al unui
cuantificator reprezintă variabilele globale, iar aplicarea unei
substituţii ar fi un apel de procedură (deosebirea faţă de un program
imperativ fiind aceea că valorile parametrilor, adică numele
cuantificatorilor din linia de definiţie, pot fi elemente oarecare sau
anumite din domeniile considerate, conform sematicii). Să mai
precizăm şi faptul ca domeniile sintactice ale diverşilor cuantificatori
pot fi, datorită formei sintactice a formulelor, doar disjuncte, adică de
tipul ... 1 ... 1 ... 2 ... 2 ... , sau imbricate - ... 1 ... 2 ... 2 ... 1 ... , dar nu
se pot „intersecta”, ca în situaţia ... 1 ... 2 ... 1 ... 2 ... . Dacă o apariţie
a unei variabile x se află în interiorul mai multor domenii imbricate,
desigur că ea aparţine tuturor. Apariţiile diferite ale unui simbol pot
avea semnificaţii (valori) diferite. Astfel, în ... 1 ... 2 ... 3 ... x(1) ... 3 ...
x(2) ... 2 ... 1 ... , apariţia lui x notată x(1) şi cea notată x(2), pot practic fi
considerate ca fiind nume de variabile diferite. În ceea ce priveşte
parantezele adăugate, ele pot fi fie restaurări ale parantezelor şterse,
fie ne folosim de (iv) (Definiţia 3.1, Pas inductiv extins).
Q(x), P(f(x), z), Q(a) şi R(x, z, g(x)). În plus, Q(a) este o formulă de
bază. Să reamintim din nou că avem o definiţie formală pentru subf(F)
doar în cazul în care n-am eliminat paranteze din F şi că subformulă a
lui F este orice subcuvânt al său care aparţine lui LP1.
Termii (funcţionali) care apar în formulă. Ei sunt în ordine: x, f(x),
z, a, g(x) (de fapt, termii x şi z au câte două apariţii, ei fiind şi
variabile).
Mulţimea subformulelor închise ale lui F. Nu avem asemenea
subformule. Totuşi, prin convenţia stabilită, am admis că formulele care
nu conţin deloc variabile (adică formulele de bază) sunt formule
închise. Singura asemenea subformulă în cazul nostru este deci Q(a).
Matricea formulei date. Ea este (am eliminat şi parantezele
corespondente devenite inutile în urma ştergerii cuantificatorilor):
F* = (Q(x) ∨ ((P(f(x), z) ∧ Q(a)) ∨ R(x, z, g(x))).
Închiderea universală a formulei este:
F’ = (∀z)((∀x) (Q(x) ∨ (∃x)((∀y)(((P(f(x), z) ∧ Q(a)) ∨
∨ (∀x)(R(x, z, g(x))))))).
Similar se obţine închiderea existenţială.
Fie acum substituţia s = [x/c]•[z/g(b)]•[y/x]. Dacă o aplicăm formulei
F (iniţiale, nu celei parantetizate complet) găsim succesiv:
(F)s =
(Q(c) ∨ (∃x)(∀y)(P(f(x),z) ∧ Q(a) ∨ (∀x)R(x, z, g(x)))[z/g(b)]•[y/z] =
= (Q(c) ∨ (∃x)(∀y)(P(f(x), g(b)) ∧ Q(a) ∨ (∀x)R(x, g(b), g(x)))[y/x].
Ultima aplicare nu schimbă nimic deoarece y nu apare în F. Conform
definiţiei rezultă că s nu este permisă pentru F (datorită faptului că în
Q (∃x)
x (∀y)
()
(∀x)
∧
P Q R
f z a
x z g
x
x
■
Putem acum introduce şi studia elementele de semantică
privitoare la calculul cu predicate de ordinul I.
n
• Dacă P ∈ P n, atunci IS (P) : US → B.
n
• Dacă F ∈ F n, atunci IS (F) : US → U S . ■
Definiţia 3.8. Pentru fiecare structură S = <US, IS>, vom numi extensia
sa imediată funcţia
deja definită (S’(P) = S(P) ∈ B), iar în al doilea caz punem desigur
clasa de formule este notată LP1 {=} (pe scurt, LP1=) şi se numeşte
calculul cu predicate de ordinul I cu egalitate (punctăm iar: dacă
F ∈ LP1=, atunci, dacă F conţine simbolul predicativ = ∈ P2, pentru a i
se calcula valoarea de adevăr S(F) se iau în considerare doar structuri S
în care „=” este interpretat doar ca fiind egalitatea pe universul
respectiv). Acestea se vor numi structuri/interpretări standard.
Similar se poate considera LP1 {+}, LP1{=, +}, etc. Vom vedea că
problema satisfiabilităţii pentru LP1 (notată SAT1) este
semidecidabilă, iar problema satisfiabilităţii pentru LP1= este
nedecidabilă. Un rol important în demonstraţii îl au structurile
Herbrand.
unei variabile este cea uzuală (xH ∈ D(F) pentru fiecare x ∈ X), la fel ca
şi interpretarea simbolurilor predicative (ele vor fi funcţii oarecare peste
D(F) cu valori în B). A nu se confunda fH( t1H , t H2 ,K , t nH ), care denotă
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
(F ≡ G)) ⇒ H ≡ H’).
În Pasul inductiv singurul caz netratat anterior, în Teorema 2.5
(pentru H = (∃x)H1 se procedează similar) este:
(iv) H = (∀x)H1. Fie orice F ∈ subf(H) = {H} U subf(H1). Dacă F = H,
nu mai avem ce demonstra, la fel ca în cazul Baza. Să presupunem că
F ∈ subf(H1) şi fie H1’ formula care se obţine din H1 înlocuind o
apariţie a lui F cu un G (nu uităm că F ≡ G). Ştiind, conform ipotezei
inductive, că H1 ≡ H1’, faptul că H’ = (∀x)H1’ este tare echivalentă cu
H rezultă acum direct din definiţii. ■
(∃x)(∃y)F ≡ (∃y)(∃x)F
5. Dacă x nu apare liber în F, atunci:
(∀x)F ≡ F
(∃x)F ≡ F.
Demonstraţie. Începem cu prima echivalenţă din 5. Fie astfel orice
structură (corectă) S = <US, IS> astfel încât S ‘ (∀x)F. Aceasta
S((x)(F ∧ G)) = 1. ■
Baza. F ∈ At.
coincide cu x. Atunci:
S((F)[x/t]) = S((P(t1, t2 , …, tn ))[x/t]) =
= S(P((t1)[x/t], t2 , …, tn )) =
= S((P(f(… , x, …)))[x/t], t2, …, tn ) =
= S(P(f(… , t, …)), t2, …, tn ) =
= S(PS(fS(… , tS, …)), S(t2), …, S (tn)) =
= S [x/S(t)] (F), direct din definiţii, în contextul teoremei.
Pas inductiv.
(i) F = ( G). Atunci S((F)[x/t]) = S(( G)[x/t]) = S(((G)[x/t])) =
S((G)[x/t]).
Aplicând acum ipoteza inductivă pentru G, obţinem în continuare:
S((G)[x/t]) = S[x/S(t)] (G) = S[x/S(t)] ( G) = S [x/S(t)] (F).
Să mai observăm că egalităţile anterioare sunt triviale dacă x nu are nici
o apariţie liberă în F.
(ii) F = (G ○ H), ○∈ {∧, ∨}. Se demonstrează analog cu cazul
precedent, folosindu-se ipoteza inductivă pentru G şi H, regulile
semantice corespunzătoare pentru ∨ şi ∧, precum şi faptul că t nu
conţine variabile (este term de bază).
Teorema 3.8. Pentru fiecare formulă F din LP1, există o altă formulă
F’∈ LP1, care este în FNSC şi care este slab echivalentă cu ea.
Demonstraţie. Vom prezenta un algoritm prin care formula F’ va fi
construită efectiv din formula F.
Algoritm Skolem
Intrare: F ∈ LP1. Fără a restrânge generalitatea, putem presupune că F
este în FNPR, închisă.
obţinând S [y′ 1/u1 ][y2/u 2 ]...[yk /u k ] ((G)[z/f(y1 ,..., y k )]) = 1 , ceea ce înseamnă
Exemplu. Fie
F = (∀x)(∃y)(P(x, g(y), z)) ∨ ( (∀x)(Q(x)) ∧ (∀z)(∃x) R(f(x, z), z))).
Să se găsească o formulă F’, aflată în FNSC, slab echivalentă cu F.
Forma rectificată. Folosim Lema de redenumire, în principal
(folosirea Teoremei de substituţie este implicită, iar echivalenţele
exprimate prin Teorema 3.3 trebuie utilizate imediat ce este posibil de
a fi aplicate; ordinea de aplicare a acestora nu este esenţială). Găsim
(prin redenumire z, redenumire x în două poziţii diferite şi aplicare
Teorema 3.3, punctul 1.):
F ≡ (∀x)(∃y)((P(x, g(y), z))) ∨ ((∃x)(Q(x)) ∧ (∀z)(∃x) R(f (x, z), z))≡
≡ (∀x)(∃y)(P(x, g(y), z)) ∨ ((∃u)( Q(u)) ∧ (∀t)(∃v) R(f(v, t), t)).
Forma normală prenex rectificată. ∧ este prioritar faţă de ∨ (puteam
deci să ne fi dispensat de nişte paranteze) şi u nu apare liber în
(∀t)(∃v) R(f(v, t), t)). De aceea, (∃u)( Q(u)) ∧ (∀t)(∃v) R(f(v, t), t) ≡
(∃u)( Q(u) ∧ (∀t)(∃v) R(f(v, t), t)). În continuare, t şi v nu apar liber
în Q(u) şi atunci (∃u)(Q(u)) ∧ (∀t)(∃v) R(f(v, t), t)) ≡ (∃u)(∀t)(∃v)
Fie G orice formulă din LP1 aflată în FNP, fără cuantori existenţiali,
închisă şi conţinând simboluri funcţionale şi predicative care apar doar
în F. Atunci, pentru fiecare structură S = <US, IS> corectă care este
model pentru G, structura H construită ca mai sus este de asemenea
model pentru G.
Demonstraţia afirmaţiei. Procedăm prin inducţie asupra numărului n
de cuantificatori universali care apar în G.
Baza. n = 0. Atunci G nu conţine cuantificatori şi este închisă. Acest
lucru înseamnă că G nu are variabile şi vom arăta că S (G) = H(G).
Procedăm acum prin inducţie structurală asupra submulţimii lui LP1
alcătuită din formulele de tipul G de mai sus.
Baza 1. G este formulă atomică fără variabile, deci
G = P(t1, t2, ... , tn), n ∈ N, P ∈ Pn şi apare în F, iar t1, t2, ... , tn ∈
UH . Egalitatea S(G) = H(G) urmează atunci direct din (*).
Pas inductiv 1. Fie G1, G2 formule fără variabile (şi închise şi
fără cuantificatori), având simbolurile funcţionale şi predicative
din F, pentru care S(G1) = H(G1) şi S(G2) = H(G2). Trebuie să
Atunci H ‘ (G’)[x/t] şi putem din nou aplica (în ultima relaţie) Lema
În Teorema 3.13 putem lua E’(F) în loc de E(F) şi, mai mult,
aşa cum de altfel am mai punctat, elementele lui E’(F) pot fi privite
drept clauze în sensul logicii propoziţionale, deoarece literalii din
LP1 care le compun nu conţin variabile (astfel, interpretarea lor, 0 sau
1, în orice structură S, depinde practic doar de interpretarea singurului
Metodă:
Pasul 1. Se transformă F într-o formulă aflată în FNSC
(închisă), succesiv, prin rectificare (redenumire), găsirea FNP
(FNPR), obţinerea închiderii existenţiale, obţinerea FNS şi apoi
FNSC, formula rezultat notându-se, pentru simplitate, tot cu F.
Pasul 2. Se „obţine” E’(F) = {G1, G2, ... , Gn, ... }.
Pasul 3.
3.1. M := Ø.
3.2. i := 0.
3.3. Repetă
3.3.1. i := i + 1.
3.3.2. Alege Gi ∈ E’(F).
3.3.3. M := M U {Gi}.
3.3.4. M’ := Res*(M).
Până_când ( ∈ M’).
Pasul 4. Tipăreşte „DA”.
care la rândul lor se pot scrie ca mulţimi de literali din LP1. Putem
trece astfel direct la Pasul 2 al Semialgoritmului lui Gilmore, adică la
aflarea mulţimii (listei) E’(F). O metodă generală amintită deja se
bazează întâi pe enumerarea lui D(F), termii de bază fiind ordonaţi
crescător, în ordinea lungimii lor (să precizăm şi că b precede pe c, f
precede pe g, etc., şi abia apoi folosim indicaţia referitoare la lungime).
Găsim, succesiv, ceva de genul:
D(F) = {b, c, f(b), f(f(b)), ... , f(n)(b), ... , f(c), f(f(c)), ... , f(m)(c), ... ,
, g(b, b), g(b, c), g(c, b), g(c,c), g(b, f(b)), ... ,
, g(b, g(b, b)), ... }
E(C1) = {(C1)[x/t1]•[y/t2 ] | t1, t2 ∈ D(F)} = { P(b) ∨ P(f(c)) ∨ Q(b),
P(b) ∨ P(f(c)) ∨ Q(c), P(c) ∨ P(f(c)) ∨ Q(b),
P(c) ∨ P(f(c)) ∨ Q(c), P(b) ∨ P(f(c)) ∨ Q(f(b)), ... } =
{{ P(b), P(f(c)), Q(b)}, { P(b), P(f(c)), Q(b)},
{ P(b), P(f(c)), Q(b)}, ... }
E(C2) = {{P(b)}, {P(c)}, {P(f(b))}, {P(f(f(b)))}, {P(f(n)(b))}, … }
E(C3) = { P(g(b, b)) ∨ Q(b), P(g(b, c)) ∨ Q(b),
P(g(b, f(b))) ∨ Q(b), P(g(b, f(f(b)))) ∨ Q(b),
P(g(b, f(n)(b))) ∨ Q(b), ... } = {{ P(g(b, b)), Q(b)},
{ P(g(b, c)), Q(b)}, { P(g(b, f(b))), Q(b)},
{ P(g(b, f(f(b)))) ∨ Q(b)}, {P(g(b, f(n)(b))), Q(b)}, ... }
E’(F) = E(C1) U E(C2) U E(C3).
Aplicarea Pasului 3 ad literam este foarte anevoioasă, deoarece ar
implica (ar trebui să amintim şi de faptul că ar fi mai simplu să denotăm
întâi formulele atomice de bază distincte de mai sus prin variabile
{ Q(b)}
Cele două clauze care intervin provin din C3 (prin substituţia [x/c]) şi
respectiv C2 (prin substituţia [y/g(b, c)]). Conform definiţiei, termii
respectivi sunt elemente din D(F). Acum continuăm cu:
P(f(c) P(f(c)
{Q(b)}
{Q(b)} { Q(b)}
(cum ar fi Res, Res*, etc.) deşi semnificaţiile exacte sunt de multe ori
schimbate. După cum deja ştim, avem:
F = (∀x)(∀y)((P(x) ∨ P(f(c)) ∨ Q(y)) ∧ P(y) ∧ (P(g(b, x)) ∨ Q(b))),
C1 = P(x) ∨ P(f(c)) ∨ Q(y),
C2 = P(y),
C3 = P(g(b, x)) ∨ Q(b),
F* = {C1, C2, C3} =
{{ P(x), P(f(c)), Q(y)}, {P(y)}, { P(g(b, x)), Q(b)}}.
Considerăm pe rând următoarele cupluri de clauze:
• C1 şi C2. Din motive tehnice, nu trebuie să existe variabile
comune în clauzele considerate în momentul în care încercăm să
aplicăm un pas al rezoluţiei pure. De aceea facem mai întâi
substituţia de redenumire [y/z] în C2, găsind C’2 = {P(z)}. Apoi,
prin [x/z], unificăm mulţimea {P(x), P(z)} (acest din urmă
literal fiind complementarul celui conţinut de C’2), găsind
Res(C1, C’2) = { P(f(c)), Q(y)} = C4.
• C4 şi C2. Facem aceeşi redenumire în C2 şi lucrăm tot cu C’2.
Aplicând [z/f(c)], vom unifica mulţimea { P(f(c)), P(z)},
găsind Res(C4, C’2) = {Q(y)} = C5.
• C3 şi C2. Nu mai avem nevoie de redenumiri, putând unifica
{ P(g(b, x)), P(y)}, prin [y/g(b, x)]. Găsim Res(C3, C2) =
{ Q(b))}= C6.
• C5 şi C6. Nu avem nevoie de redenumiri, unificăm
{Q(y), Q(b)} prin [y/b] şi obţinem în final Res(C5, C6) = .
§7. Exerciţii
1. Definiţi constructiv free(F), F ∈ LP1.
2. Determinaţi subf(F) pentru
F = (∀x)(((P(x, g(a)) ∧ Q(z)) ∨ R(u, f(v)))).
3. Rezolvaţi Exerciţiul 3.1.
4. Rezolvaţi Exerciţiul 3.2.
5. Să se aplice substituţia: s = [y/h(z)]•[z/h(x)]•[x/g(f(y))] formulei
F = (∀x)(P(x, f(x)) ∧ Q(g(a, z)).
6. Rezolvaţi Exerciţiul 3.3.
7. Fie formula F = (∀x)(∃y)P(x, y, f(z)). Să se decidă dacă formula
este satisfiabilă, validă, sau contradicţie.
8. Găsiţi o formulă F ∈ LP1 care să conţină un simbol predicativ
P ∈ P2 şi care să exprime faptul că P este o relaţie antisimetrică.
regulă r = < < { Fj1 , Fj2 , … , Fjk }, Fi>, c> ∈ R, unde j1, j2, ... , jk < i. ■
Pas constructiv. Dacă r = < < {G1, G2, … , Gn}, G>, c> ∈ R şi
G1, G2, … , Gn ∈ Th(SD) atunci G ∈ Th(SD).
În acest moment, sistemul SDF = <AF, RF> este pe deplin precizat (true
denotă condiţia mereu adevărată, adică regulile, dacă respectă cerinţele
sintactice fixate şi anume faptul că sunt clauze din LP, pot fi aplicate
fără restricţii pe parcursul demonstraţiilor), exceptând faptul deja
amintit că vom pune (renunţăm la indici şi la faptul că ar trebui folosită
notaţia SD’ în loc de SD)
Th(SD) = {G ∈ Cl | F •SD G },
adică vom considera demonstraţiile plecând de la mulţimea de axiome
A’ = A U F (considerăm I = F). Este imediat faptul că pentru fiecare
asemenea SD, avem Th(SD) = Res*(F). ■
F G F→G (F → G) ∧ F ((F → G) ∧ F) → G
0 0 1 0 1
0 1 1 0 1
1 0 0 0 1
1 1 1 1 1
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.
În cazul în care este vorba de o teorie formată doar din formule valide
(atunci va lipsi I), teorema capătă forma simplificată:
liseşte, ‘F poate nota doar faptul că F este o formulă validă. Din punct
Exemplul 4.2 (reluat). Avem FORM = LP1, Str este clasa fixată a
structurilor (conform Capitolului 3), TE = Val(LP1) (clasa formulelor
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
A1 A2 ...... An
B rădăcina
rădăc
Teorema 4.2. Sistemul SD0 este corect şi complet pentru Val (LP1). ■
A, A → B
9. (EI) .
B
B
10. (II) , c: se anulează ipoteza A.
A→ B
A⇔B A⇔B
11. (EE) şi .
A→B B→ A
A → B, B → A
12. (IE) .
A⇔B
(∃x)A, B
13. (E∃) , c: se anulează ipoteza A din subarborele
B
având rădăcina acest B.
A[x/t]
14. (I∃) .
(∃x)A
A A
15. (DN) şi .
A A
Analog cu precizările deja făcute pentru regulile de bază, şi schemele
de mai sus sunt valabile pentru fiecare A, B ∈ LP1, fiecare x ∈ X şi
1 A 2 B
C
C 3
3
(i) (iii)
A∧C B∧C
( A ∧ C) ( B ∧ C)
(iv)
(ii)
1 A B 2
(v)
( A ∧ B)
A∧B
(vi)
C 3
două formule sunt denotate prin A, respectiv B). Această regulă nu are
ataşată nici o condiţie de aplicare. Apoi, la pasul (ii), se continuă
construcţia demonstraţiei (arborelui) prin aplicarea regulii (IN), care are
ca ipoteze formulele A ∧ C şi ( A ∧ C) (în descrierea
generală ele sunt notate B, respectiv B) şi drept concluzie formula A,
având şi condiţia de aplicare c = se anulează ipoteza A. Marca 1 a fost
aplicată, conform celor stabilite, nodului concluzie al aplicării regulii
şi ... lui A, în loc de A! Acest lucru nu este permis, tehnic vorbind
(de fapt, pentru a fi foarte exacţi, suntem în culpă şi cu utilizarea strictă
a parantezelor; soluţia aici este simplă, introducându-se de la bun
început şi variante „cu paranteze” pentru toate regulile). Pentru a aplica
corect teoria, ne putem folosi de instanţe ale regulii derivate (DN)
(deducem A din A, înainte de efectuarea primului pas (i) şi astfel
putem anula în (ii) ceea ce trebuie, adică pe A). Pe parcursul
construcţiei arborelui se mai întâlnesc asemenea cazuri şi devine
evidentă necesitatea de a avea la dispoziţie o „bibliotecă” de reguli
derivate, pentru a lucra simplu cu un asemenea tip de deducţie naturală.
Acestea trebuie însă demonstrate în prealabil, lucru care nu este chiar
uşor (totuşi, se pare că este mai uşor de conceput un „mecanism
automat de raţionament” pentru SD0 decât pentru SD3). O alternativă,
bazată de fapt pe aceeaşi idee (utilizarea unor reguli derivate), este să
folosim formulele din I sub o formă echivalentă, de exemplu
I = {A → C, B → C, A ∨ B}. ■
T, pentru care [x/t] este permisă pentru A; rolul lui A în (RT) este
similar, instanţele unei scheme referindu-se la celelalte elemente având
statutul de a fi „oarecare”.
U ⇒ V ,A
1. ( ⇒) .
U , A ⇒ V
U , A, B ⇒ V
2. (∧ ⇒) .
U, A ∧ B ⇒ V
U,A ⇒ V
3. (⇒ ) .
U ⇒ V , A
U ⇒ V , A;U ⇒ V , B
4. (⇒ ∧) .
U ⇒ V,A ∧ B
U , (A)[x/t] ⇒ V
5. (∀ ⇒) .
U , (∀x)Α ⇒ V
U ⇒ V, A
6. (⇒ ∀) .
U ⇒ V , (∀x)Α
U , A ⇒ V ;U ⇒ V , A
7. (RT) .
U ⇒V
Conform cadrului general fixat, o metaformulă (aici, o secvenţă)
U ⇒ V este teoremă în SD1 dacă există un arbore (care reprezintă o
demonstraţie a lui U ⇒ V) având în rădăcină pe U ⇒ V şi axiome în
frunze (în acest sens însă, sistemul doar generează constructiv
mulţimea teoremelor). Dacă vrem să legăm SD1 de Val (LP1) şi să
enunţăm o teoremă de corectitudine şi completitudine, trebuie să
interpretăm relaţia de consecinţă sintactică I • F (I ⊆ LP1,
U ⇒ V , A[x/t]
15. (⇒ ∃) .
U ⇒ (∃x)A,V
U , A, B ⇒ V U, B ⇒ V , B U, A ⇒ V , A U ⇒ V , A, B
U , A → B, B ⇒ V U, A → B ⇒ V, A
U , A → B, B → A ⇒ V
U , ( A → B) ∧ ( B → A) ⇒ V
■
§5. Exerciţii
1. Să se demonstreze în sistemul SD3 următoarele formule
([CAZ1]):
(i) (A → B) → ((B → C) → (A → C)).
(ii) (A → (B → C)) → (B → (A → C)).
(iii) A → A.
2. Rezolvaţi Exerciţiul 4.1.
3. Rezolvaţi Exerciţiul 4.2.
4. Rezolvaţi Exerciţiul 4.3.
5. Rezolvaţi Exerciţiul 4.4.
6. Rezolvaţi Exerciţiul 4.5.
7. Fie sistemul deductiv SIN1 ([CAZ1]), dat prin axiomele şi
regulile de mai jos.
Ax5. A → (B → A ∧ B)
Ax6. A → A ∨ B
Ax7. B → A ∨ B
Ax8. (A → D) → ((B → D) → (A ∨ B → D))
Ax9. (A ↔ B) → (A → B)
Ax10. (A ↔ B) → (B → A)
Ax11. (A → B) → ((B → A) → (A ↔ B))
Ax12. (A → A) → A
Ax13. A → (A → B)
Reguli de inferenţă. Acestea sunt (MP) şi regula substituţiei,
(RS). Schema este valabilă pentru fiecare F, G1, G2, ... , Gn ∈
LP. În cele de mai jos, F(A1, A2, ... , An) denotă faptul că F este
construită peste (exact) mulţimea de variabile propoziţionale
{A1, A2, ... , An}, iar F(G1, G2, ... , Gn) denotă o formulă F în
care fiecare apariţie a lui A1 se în locuieşte cu G1, fiecare
apariţie a lui A2, cu G2, ş. a. m. d. , fiecare apariţie a lui An, se
înlocuieşte cu Gn, simultan:
F(A1 , A 2 ,..., A n )
(RS)
F(G1 , G 2 ,..., G n )
A treia frază iniţială exprimă ceva puţin mai complex despre lumea în
cauză şi este natural să ne gândim la o formulă compusă. Putem
reformula fraza mai întâi prin Dacă există cineva căruia îi plac
vinurile, atunci de aceea (acela) îi place lui Adam (oricine ar fi acel
cineva) şi apoi prin Dacă lui x îi plac vinurile, atunci lui Adam îi
place de x, pentru fiecare x ∈ X, adică obţinem:
G: (∃y)place(Adam, y).
C2 = {place(Eva, Mere)},
C3 = {place(Eva, Vinuri)},
C4 = { place(x, Vinuri), place(Adam, x)}.
clauza obţinută din C4 aplicând [x/Eva] (atât C1' cât şi C '4 aparţin
desigur lui E’(F)). Astfel, avem Res( C1' , C '4 ) = { place(Eva, Vinuri)}
Baza. 0 ∈ N.
Pas constructiv. Dacă n ∈ N atunci s(n) ∈ N.
Primul pas.
• Obiecte: 0.
P.
Definiţia 5.2 (unificare). Fie L = {L1, L2, ... , Lk} o mulţime (finită),
nevidă, de literali din LP1. Ea se numeşte unificabilă dacă există o
substituţie s astfel încât card((L)s) = 1. În acest caz, s se numeşte
unificator pentru L . O substituţie s se numeşte cel mai general
unificator (m.g.u., pe scurt) pentru o mulţime unificabilă L dacă orice
alt unificator s’ se „obţine” din s, adică pentru fiecare unificator s’
există o substituţie sub astfel încât s’ = s•sub. ■
(iii) R = (((C1)s 1 \ {L1, L2, ... , Lm}) U ((C2)s 2 \ { L'1 , L' 2 , ... , L' n }))sub.
[x/y]
[y/Eva]
(clauză suplimentară)
a
(clauză suplimentară)
b
(clauză suplimentară)
c
(clauza
vidă,
scop
final)
(în cauza suplimentară facem mai întâi substituţia [z/z’], din motive
tehnice, netransparente în acest moment fără anumite informaţii
suplimentare)
C = { A(s (s (s (0)))), 0, z’)},
c = sub3 =[x/ s (s (s (0)))][z’/ s (s (s (0)))].
Substituţia finală este sub = sub1•sub2•sub3. Din inspectarea atentă a
acesteia (a se urmări valoarea finală a variabilei u, obţinută succesiv
prin aplicarea substituţiilor elementare care compun sub), rezultă că
răspunsul dorit este: suma dintre 2 şi 3 este 5. ■
§4. Exerciţii
1. Găsiţi respingerea bazată pe rezoluţia de bază cerută în
Exemplul 5.2.
2. Considerăm ([COT]) următorul program PROLOG notat F şi
format din clauzele program (în toate exerciţiile care urmează
adoptăm convenţia că variabilele se notează prin litere latine
mari, iar constantele, simbolurile funcţionale şi predicative,
folosind litere mici; de asemenea, simbolul ÷ este uneori
înlocuit şi de ←):
CP1: p(X, Z) ÷ q(X, Y), p(Y, Z).
CP2: p(X, X) .
CP3: q(c, b).
Găsiţi o SLD-respingere pentru scopul G = ? ÷ p(U, b). Se cere
şi rezultatul execuţiei programului interogat P = <F, G>.
3 4
e,c ¸
d b c
◊ e ♦
b,c d
b c ◊
e ♦
◊
Mai exact, cele două tipuri de informaţii, furnizate de
arborele/arborii de demonstrare (AND) şi arborele de căutare
(OR) pot fi efectiv reprezentate printr-un singur arbore (cel de
mai înainte), numit arbore AND-OR (sau arbore complet de
calcul). Arborele AND-OR descrie practic „spaţiul total de
calcul” care poate fi obţinut din mulţimea de clauze ale
programului interogat. Acesta este în fapt o reprezentare
unitară a tuturor tipurilor de nedeterminism care apar, în mod
implicit, în momentul execuţiei programelor logice ([MAS1]).
face prin inducţie după n). Cum |B| = 2 şi |Bn| = 2 n, trebuie să mai
calculăm numărul total de funcţii de la A1 = Bn la A2 = B, ceea ce este
imediat.
V.1.5. Faptul că g este bijectivă este o consecinţă imediată a definiţiei
unui termen peste mulţimea X = {x1, x2, ... , xn}. Să arătăm că un n-uplu
e = <e1, e2, ... , en> în care, pentru fiecare i ∈ [n], avem ei∈{0, 1, 2},
poate fi interpretat într-un mod unic ca o funcţie fe : [n] → {0, 1, 2}.
Astfel, definim fe(i) = ei, pentru fiecare i ∈ [n]. Se aplică apoi un
raţionament similar cu cel din exerciţiul precedent.
V.1.6. Presupunem că X = {x, y, z}, în această ordine. Se aplică direct
Teorema 1.3 şi respectiv 1.4, găsind, următoarea FNDP:
f(x, y, z) = x • y •z + x •y• z + x• y • z + x• y •z + x•y•z .
V.1.7. Fiecare dintre mulţimile considerate conţin pe E, care este o
mulţime infinită (acest lucru rezultând uşor din definiţiile respective).
Pentru a arăta că T0 este o mulţime închisă, este suficient să arătăm
(Teorema 1.5) că T0 conţine E şi că este închisă la superpoziţie.
Într-adevăr, după cum deja am observat, E ⊆ T0 pentru că
i np (0, 0,K , 0,K , 0) = 0 indiferent de valorile lui n ∈ N* şi p ∈ [n]. Fie
p
, ht(0, 0, ... , 0)) = g(0, 0, ... , 0) = 0, folosind exact faptul că h1, h2, ..., ht
şi g sunt elemente din T0.
V.1.8. Fie ([CAZ1]) M mulţimea considerată. Trebuie să arătăm că
M = FB, adică să arătăm că orice funcţie booleană este fie o funcţie
elementară, fie o funcţie din M, fie se obţine printr-un număr finit de
superpoziţii din funcţiile elementare şi/sau elementele lui M. Desigur că
ne vor fi de folos teoremele de reprezentare ale funcţiilor booleene.
Pentru a simplifica notaţiile, vom desemna prin n, s şi p funcţiile din M
( ¯, + şi respectiv •, acestea neavând o notaţie prefixată). Considerăm
funcţiile:
(i) f pα , α ∈ B, date prin f pα (x1, ... , x p, ... , xm) = x αp (oricare ar fi
(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 ,
pk = SUP(p, pk – 1, i mk ).
(iii) Considerăm în continuare funcţiile sr, date prin
sr(x1, x2, ... , xm) = x1 + x2 + ... + xr ( pentru fiecare m ∈ N* şi r ∈ [m]),
despre care se arată în modul recursiv similar cazului precedent că sunt
elemente din M , (s1 = i1m , s2 = SUP(s, i1m , i m2 ) şi, pentru fiecare r > 2,
sr = SUP(s, sr – 1, i mr )).
1+1
<1,1>
1
1+0
<1,0>
<0,1> 1
1
0+1
<0,0>
0
0+0
conform a + b = a gb
= x g y g yg z =
conform a = a ⊕ 1
= (x•(y ⊕ 1) ⊕ 1)•(y•(z ⊕ 1) ⊕ 1) ⊕ 1 =
distributivitate, asociativitate
= (x•y ⊕ x ⊕1)•(y•z ⊕ y ⊕ 1) ⊕ 1 =
distributivitate, a•a = a
x•y•z ⊕ x•y ⊕ x•y ⊕ x•y•z ⊕ x•y ⊕ x ⊕ y•z ⊕ y ⊕ 1 ⊕ 1 =
comutativitate, a ⊕ a = 0, a ⊕ 0 = a
= x•y ⊕ y•z ⊕ x ⊕ y.
Evident, aceasta nu este o reprezentare liniară.
Obiecte
care
satisfac q
Obiecte
care
satisfac p
( ) 0
∨ 00
000
() () 001
0000
∧ 0010
A
B C
00000
00100 00101
∨∨() 0
00
() ∧ () 01
000
A
B C
010 011
Cu ajutorul unei astfel de structuri de informaţie s-ar putea defini
simplu, formal (structural), noţiuni cum ar fi: apariţia unui simbol într-o
formulă F, pe poziţia i; subformula lui F care începe la poziţia i, etc.
V.2.5. Din demonstraţia Teoremei 2.1 au mai rămas cazurile
F = (F1 ∨ F2) şi F = (F1 ∧ F2). Sugerăm cititorului, datorită simplităţii
calculelor, să trateze simultan aceste cazuri, folosind acelaşi simbol atât
pentru ∧ şi ∨, cât şi, similar , pentru + şi •.
V.2.6. Procedăm prin inducţie structurală.
Baza. F = A ∈ A. Atunci prop(F) = {A}.
Pas inductiv.
(i) F = ( F1). Evident, prop(F) = prop(F1). Acelaşi lucru se întâmplă şi
atunci când F = (F1).
(ii) F = (F1 ○ F2), ○ ∈ {∧ , ∨}. Atunci prop(F) = prop (F1) U prop (F2).
Folosind o definiţie formală a unei formule considerate ca un arbore
binar etichetat (V.2.4.), puteţi defini formal şi numărul de apariţii ale
unei variabile, împreună cu poziţia la care există aceste apariţii?
h([F]) = S(F).
V.2.9. Se pot folosi şi tabelele de adevăr, nu doar definiţia.
V.2.10. Avem succesiv:
F≡
prioritate operatori, distributivitate
≡ ( B ∨ D) ∧ E ∧ C ∧ B ∧ ( B ∨ D) ∧ ( B ∨ B) ≡
conform B ∨ B ≡ 1 şi A ∧ 1 ≡ 1
≡ ( B ∨ D) ∧ E ∧ C ∧ B ∧ ( B ∨ D).
Aplicăm acum Algoritmul Horn formulei anterioare, găsind:
{B*1 ∧ D*2 → 0, E → 0, C → 0, 1 → B*1, B*1 → D*2}.
Formula este prin urmare nesatisfiabilă. Vă sugerăm să aplicaţi şi altă
metodă de testare a satisfiabilităţii unei formule.
V.2.11. Putem considera următoarele variabile propoziţionale:
D: Vom câştiga alegerile.
E: Popescu va fi ales liderul partidului.
G: Ionescu părăseşte partidul.
H: Rădulescu părăseşte partidul.
{B, C} {B, C} { A, C} { C}
{B}
{ A} {A, B, C }
{ B, C}
{C} { C}
{B, C, D} { C, D}
{B, D } { B}
{ D} {B, D}
{B} { B}
( A ∨ B) ∧ ( B ∨ C) ∧ (A ∨ C) ∧ (A ∨ B ∨ C) ∧ ( A ∨ B∨ C)
{A, B}
{ C}
{B} {A, C}
{A}
{ B}
1, k = 2i + 1, i ∈ N
V.2.16. Se observă că definind S ( Ak ) = , avem
0, k = 2i, i ∈ N
*
(ii) Dacă F = P(t1, t2,..., tn), unde n ∈ N*, t1, t2,..., tn ∈ T, P ∈ Pn, atunci
n
free(P(t1, t2,..., tn)) = U free(t i ) .
i =1
Acest lucru are loc dacă şi numai dacă pentru fiecare u ∈ US, există
Pentru (ii):
3. A→(B→C), A, B • B, B→C 2.
Pentru (iii):
1. • ( A → A)→(( A → A) →A) axioma 3. din SD3
1. I • A→B evident
2. I, A • A, A→B 1.
3. I, A • B 2., (EI)
4. I, A, B • B, B 3.
5. I, B • A 4., (IN)
Apoi:
1. I • B→ A evident
2. I, B • B, B→ A 1.
3. I • B→ A 2. (EI)
4. I, A, B • A, A 3.
5. I, A • B 4., (EN)
În sfârşit:
1. I • A∨B, A→C, B→C evident
7. I, C • B, B 6., (EI)
8. I • C 7., (EN).
V.4.5.
A ∨ C , B ⇒ B, D , C A ⇒ B ∨ D, A, C C ⇒ B ∨ D, A, C
A ∨ C , B ⇒ B ∨ D, C A ∨ C ⇒ B ∨ D, A, C
( A ∨ C ) ∧ ( A → B ), D ⇒ B, D A ∨ C , A → B ⇒ B ∨ D, C
( A ∨ C ) ∧ ( A → B), D ⇒ B ∨ D ( A ∨ C ) ∧ ( A → B ) ⇒ B ∨ D, C
( A ∨ C ) ∧ ( A → B), C → D ⇒ B ∨ D
( A ∨ C ) ∧ ( A → B ) ∧ (C → D) ⇒ B ∨ D
⇒ ( A ∨ C ) ∧ ( A → B ) ∧ (C → D ) → ( B ∨ D )
V.4.6. Avem succesiv:
1. (∀x)(∀y)(x = y → y = x) conform 7. (din enunţ)
2. (∀y)(∀z)(z = y → y = z) 1., (E∀)
iar T, de valoarea „paul” (un cel mai general unificator fiind evident dat
de [M/maria]•[T/paul]. Astfel, scopul curent devine
? :- parinti(andrei, maria, paul). Acesta se unifică cu faptul
corespunzător din baza de date. Prin urmare, PROLOG-ul a reuşit să
obţină o respingere, răspunzând „DA” şi găsind valorile cerute (chiar
dacă nu explicit).
V.5.5. Arborele AND-OR este reprezentat în figura de mai jos. Pe arce
nu am mai trecut clauze, ci substituţiile corespunzătoare:
bunic(ion, petru)
◊ ♦
◊ mama(maria,K), frate(K,petru)
mama(maria,K) frate(K,petru)
[K/pau l]
◊ ◊
(1) C1 C2
L = ({ P(y),
P(a)})[y/a]
(2) C2 C6
L = ({ P(y),
P(a)})[y/a]
(3) C3 C6
L = ({ P(y),
P(a)})[y/a]
(4) C1' C8
(5) C '2 C8
C "2 = {P(f(a))}
(6) C '3 C8
C "3 = { S(f(a))}
(7) C1 C5
(8) C9 C1"
L = ({T(f(z),z),
T(f(a),a)})
[z/a]
{ P(a), R(f(a))} C6
C10 = {R(f(a))}
(9) C4 C "3
{ P(f(a))} C "2
1 0
u u
x y x ∨3 y x ∧3 y x →3 y x ↔3 y
0 0 0 0 1 1
0 1 1 0 1 0
1 0 1 0 0 0
1 1 1 1 1 1
u 0 u 0 0 0
u 1 1 u 1 0
0 u u 0 1 0
1 u 1 u u 0
u u u u 1 1
∨4 1 b n 0
1 1 1 1 1
b 1 b b b
n 1 b n 0
0 1 b 0 0
∧4 1 b n 0
1 1 b n 0
b b b n 0
n n n n n
0 0 0 n 0
şi
4
1 0
b b
n n
0 1
[AHO] Aho, A., V., Hopcroft, J., E., Ullman, J., D. – The
Design and Analysis of Computer Algorithms,
Addison-Wesley Publishing Company, Reading,
Massachusetts, S. U. A., 1976.
[AND] Andrews, J., H. – Logic Programming: operational
Semantics and Proof Theory, Cambridge Unversity
Press, Anglia, 1992.
[BIE] Bieltz, P., Gheorghiu, D. – Logica, Manual pentru
clasa a IX-a licee şi clasa a XI-a şcoli normale,
Editura Didactică şi Pedagogică, Bucureşti, România,
1996.
[BIR] Birkhoff, G. – Latice Theory, A.M.S. Colloquium
Publications, Vol. 25, Providence, Rhode Island,
S. U. A., retipărit în 1984.
[BOL] Bolc, L., Borowik, P. – Many-Valued Logics, 1,
Theoretical Foundations, Springer Verlag, Berlin,
Germania, 1992.
[BÖR] Börger, E. – Computability, Complexity, Logic,
North Holland, Amsterdam, Olanda, 1989.
[CAZ1] Cazacu, C., Slabu, V. – Logică matematică, Editura
Stefan Lupaşcu, Iaşi, România, 1999.
[CAZ2] Cazacu, C. – Teoria calculabilităţii efective, Editura
Universităţii „Al. I. Cuza”, Iaşi, România, 1996.
[COR] Cormen, T., H., Leiserson, C., E.,
Rivest, R., R. – Introducere în algoritmi, Editura
Computer Libris Agora, Cluj, România, 2000
(copywright după: Introduction to Algorithms, M. I. T.
Press, Massachusetts, S. U. A., 1990).
[COT] Cotelea, V. – Programarea în logică, Editura
NESTOR, Chişinău, Republica Moldova, 2000.
[CRO] Croitoru, C. – Tehnici de bază în optimizarea
combinatorie, Editura Universităţii „Al. I. Cuza”, Iaşi,
România, 1992.