Documente Academic
Documente Profesional
Documente Cultură
Note de curs
Adrian Crăciun
adrian.craciun@e-uvt.ro
21 ianuarie 2020
1
Cuprins
I. Introducere 2
i
4.2. Designul şi tranformarea circuitelor digitale . . . . . . . . . . . . . . . . . 40
4.2.1. Circuite digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.2. Designul circuitelor digitale . . . . . . . . . . . . . . . . . . . . . . 40
4.2.3. Transformarea şi simplificarea circuitelor digitale . . . . . . . . . . 42
4.2.4. Mulţimi complete de conectori logici . . . . . . . . . . . . . . . . . 42
ii
Definiţii
1.1. Definiţie (Problemă, soluție, context) . . . . . . . . . . . . . . . . . . . . . 3
1.2. Definiţie (Raţionament, proprietăţile raţionamentului) . . . . . . . . . . . 7
1.3. Definiţie (Limbaj) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Definiţie (Sistem de raţionament) . . . . . . . . . . . . . . . . . . . . . . . 9
1.5. Definiţie (Logica matematică) . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6. Definiţie ((O) Logică) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
iii
6.9. Definiţie (Substituţie aplicată unei expresii) . . . . . . . . . . . . . . . . . 67
6.10. Definiţie (Compunerea substituţiilor) . . . . . . . . . . . . . . . . . . . . . 69
1
Partea I.
Introducere
2
1. Rezolvare problemelor prin raționament
1.1. Rezolvarea de probleme
Definiţie 1.1 (Problemă, soluție, context).
O problemă este o situație în care un anume obiect sau stare sunt dorite, dar nu sunt
disponibile.
O soluție a unei probleme reprezintă un mod de a face disponibile obiectul sau starea
care sunt dorite.
Problemele nu apar izolate, ci mai degrabă într-un context ( univers de discurs,
lume de interes), care este necesar pentru ca problema să poată fi formulată şi
înţeleasă.
Rezolvarea problemelor este procesul prin care lumea care conţine problema se trans-
formă în lumea cu soluţie, vezi Figura 1.
Figura 1.: Rezolvarea de probleme: transformarea unei lumi (context, univers de discurs)
cu problemă într-o lume (context, univers de discurs) cu soluție.
3
Exemplul 1.1 (Trecerea unui râu).
Să ne imaginăm un moment din zorile umanității, un (h)om(inid) (flămând) pe malul
unui râu, observând pe cealaltă parte un pom plin cu fructe. Problema este cum să
ajungă acolo (vezi Figura 2).
Tentaţia soluţiei directe există, impulsul este acela de a ajunge cât mai rapid la pomul
cu fructe. Însă există un râu de trecut. Dacă (h)om(inid)ul nu ştie să înoate, aceas-
tă încercare de a rezolva problema direct poate avea consecinţe dramatice, potenţial
ireversibile.
▲
Desigur, există multe soluții (evidente acum pentru noi) la problema din Exemplul 1.1.
Este clar că primii oameni au ajuns la aceste soluții acumulând experiență din încercări
eșuate, observând mediul, învățând (de exemplu de la animale) cum să construiască
baraje peste râu, cum să găsească porțiuni ce pot fi trecute cu piciorul, cum să înoate,
cum să improvizeze poduri doborând copaci care sunt suficient de înalți pentru a trece
peste râu. Apoi au învățat să îmbunătățească aceste soluții, dezvoltând unelte cu care
să construiască de exemplu poduri, bărci, etc.
Aceste soluții sunt parte a poveştii succesului rasei umane. Însă pentru individul din
exemplul nostru, care încearcă să ajungă la fructele de pe malul opus, această informație
s-ar putea să fie cumva nefolositoare, să vină prea târziu. Aceste soluţii menţionate mai
sus au fost dezvoltate într-un interval de timp foarte lung (de generaţii).
Acest mod de abordare a problemei, direct, în universul de discurs, în esență „încercare
și eșec”, poate fi:
4
• consumator de timp: găsirea soluțiilor ia mult timp (generații),
• potențial ireversibil: resursele comise pot fi irosite în caz de eşec (mai mult, uneori
chiar cel care încearcă rezolvarea directă a problemelor poate suferi – de exemplu,
ce se poate întâmpla dacă (h)om(inid)ul din Exemplul 1.1 nu ştie să înoate?).
• (relativ) ieftină: din ce în ce mai mult ne așteptăm ca aceste cutii negre să fie
disponibile (dar observați că acest tip de așteptări poate fi considerat o poziție de
privilegiu, și în general cutiile negre nu sunt atât de răspândite precum ar părea),
• opacă: soluțiile sunt obținute într-un mod care pare aproape magic, fără să ne pese
în ce mod și fără să înțelegem în ce mod, fără a avea control asupra procesului.
Evident, în multe situaţii nu este necesar să se înţeleagă soluţia atât timp cât proble-
ma este rezolvată. Cu toate acestea, sunt numeroase probleme pentru care verificarea
soluţiei este importantă, chiar esenţială. Există situaţii critice în care trebuie să ne asi-
gurăm nu numai că găsim soluţia, dar şi că aceasta are anumite proprietăţi, care pot fi
stabilite numai înţelegând modul în care această soluţie poate fi găsită/construită, etc.
În plus, aceste cutii negre sunt construite de cineva. Aceştia, din ce în ce mai mult, sunt
profesioniştii în informatică (din moment ce prin natura lor, aceste cutii magice conţin
şi funcţionează pe baza „sofware”-ului).
Întrebarea rămâne: avem un mod mai eficient de a rezolva probleme într-un mod care
ne permite menținerea controlului asupra acestui proces?
5
1.2. Rezolvarea problemelor prin raționament
Răspunsul este afirmativ. Există o metodă prin care se pot rezolva problemele într-
un mod eficient, menținând controlul asupra procesului, în principiu disponibilă oricui.
Aceasta este rezolvarea de probleme bazată pe raționament, și funcționează în modul
următor, vezi Figura 3:
1. Observație: folosind simțurile, ajutate de instrumente (microscop, telescop, rigle,
etc), se construiește un model intelectual al universului de discurs (o imagine inte-
lectuală), ce conţine o imagine a problemei de rezolvat.
2. Raționament: modelul care conține o imagine a problemei de rezolvat este trans-
format prin raționament într-un model care conține soluția. Suportul acestui pas
este mintea, ajutată de instrumente (hârtie și creion, calculatoare, etc).
3. Acțiune: odată soluția găsită în model, aceasta poate fi implementată în universul
de discurs folosind membrele ajutate de instrumente (ciocan, roboți, buldozere,
etc).
Aparent, tot ce aduce nou această schemă este faptul că înainte de a încerca o abor-
dare directă pentru rezolvarea problemei, este bine „să te gândeşti”, oferind un filtru
pentru eliminarea celor mai proaste abordări. În Exemplul 1.1, dacă nu ştie să înoate,
(h)om(ninid)ul „se poate gândi” că această abordare directă este una proastă.
Mai mult, într-un anumit sens, schema din Figura 3 se potriveşte unei game largi de
abordări, care include printre altele:
6
Abordarea magică: (h)om(ninid)ul găseşte şamanul tribului, îi explică situaţia, acesta
îşi creează o imagine intelectuală a problemei, şi printr-un ritual care poate implica
un zbor cosmic, întâlnirea cu şamanii care i-au precedat, etc, acesta „vede” soluţia.
Cutii negre: aplicaţiile, cutiile negre bazate pe tehnologie, necesită în fapt un nivel de
abstractizare, modelare a problemelor pe care le rezolvă. Interfeţele, reprezentarea
problemelor la nivelul cutiilor negre (aplicaţii, dispozitive) presupun în fapt un
proces de modelare.
Ambele abordări funcţionează (mai mult sau mai puţin subiectiv), sunt abordări valide
(din anumite puncte de vedere), utilizate pentru rezolvarea de probleme. Există însă, în
ambele cazuri, un pas „magic” prin care se obţine soluţia, un pas ce nu poate fi explicat
sau controlat de către beneficiarul soluţiei sau chiar de către cei care generează/descoperă
soluţia.
În mod esenţial, abordarea bazată pe raţionament elimină necunoscutul şi oferă control
celor care folosesc acest instrument pentru verificarea şi validarea soluţiei. În continuare
vom descrie proprietăţile raţionamentului, ce diferenţiază această abordare de altele, de
exemplu de cele „magice”.
Definiţie 1.2 (Raţionament, proprietăţile raţionamentului).
Raţionamentul este procesul prin care se transformă un model intelectual ce conţine o
problemă într-un model intelectual, caracterizat de următoarele proprietăţi:
1. Abstract: Raționamentul operează într-un model intelectual. După ce modelul este
construit, nu mai există legătură cu lumea (universul) pe care o descrie. Această
proprietate asigură:
• puterea raționamentului: este reversibil, rapid, ieftin (totul se întâmplă în
mintea noastră),
• limitările raționamentului: modelele construite pot fi inadecvate,
concentrându-se pe anumite aspecte ale universului de discurs, dar ignorând
altele (și se pierde legătura cu realitatea). Această situație a dus de fapt la
seria de crize pe care le parcurge omenirea: ecologică, tehnologică, economică,
socială.
7
de discurs). Aceste noi imagini trebuie să aibă un corespondent în universul de
discurs, adică atunci când „ne întoarcem”, imaginile (noi) trebuie să corespundă
unor obiecte sau situaţii care pot fi construite/au loc în universul de discurs. Altfel
spus, când pornim de la ceva „adevărat”, prin aplicarea unui pas de raționament
trebuie să obținem ceva ce este tot „adevărat”. Prin raţionament nu putem construi
obiecte sau situaţii care nu există în universul de discurs.
8
Pentru asta avem nevoie de un limbaj. Toate fazele rezolvării problemei trebuie să
poată fi exprimate într-un limbaj, pentru a fi comunicate: modelul, problema, regulile
de raţionament şi modul cum sunt aplicate pentru a găsi soluţia (şi cum arată aceasta).
Drept consecință, limbajul este suportul raționamentului:
• regulile de raționament iau expresii din model și produc expresii noi (modificând
modelul).
Definiţie 1.3 (Limbaj). Un limbaj (care urmează să fie folosit pentru a construi
modele și a rezolva probleme) este definit de:
• sintaxa limbajului care cuprinde:
– vocabularul – simbolurile folosite pentru a forma expresii,
– regulile după care sunt formate expresiile care aparțin limbajului,
• paşilor de raţionament,
• modului în care paşii de raţionament sunt aplicaţi pentru a construi soluţia pro-
blemei.
■
1.4. Logica
Limbajele, sintaxa şi semantica lor, sistemele de raţionament asociate, sunt studiate în
cadrul logicii.
Definiţie 1.5 (Logica matematică). Logica (logica matematică, logica simbolică, me-
tamatematica) este un domeniu științific care se ocupă cu studiul sistemelor de ra-
ţionament, prin aplicarea metodei matematice asupra problemei raţionamentului. ■
9
Observaţie. (Terminologie: logică, logică computaţională) Folosim în aceste pagini
termenul logică pentru a desemna logica matematică, aşa cum este definită aceasta mai
sus.
Pe lângă domeniul matematic, logica este studiată în cadrul filozofiei, într-un sens
mai larg (studiul modului în care funcţionează gândirea şi modul cum se aplică aceasta
problemelor filozofice), care are părţi semnificative în comun cu logica matematică.
Există, bineînţeles, şi logica din viaţa de zi cu zi – termen care în principiu se referă
la un anumit mod („raţional”) de a face lucrurile.
Nu în ultimul rând, logica computaţională reprezintă aspectul din logică ce se referă
la automatizarea raţionamentului, sau raţionament despre calcul mecanic (automat).
Vom atinge aceste aspecte într-o anumită măsură, dar vom urmări şi modul în care
logica (matematică) poate fi folosită ca un instrument practic de înţelegere, explorare,
acumulare eficientă de cunoştinţe în informatică, pentru studenţi. ▲
În afară de logică drept domeniu de studiu, vom considera o logică ca instrument de
rezolvare a problemelor, în sensul următor:
Definiţie 1.6 ((O) Logică). O logică este formată din:
• un model,
10
fi descrise și au soluții). Un astfel de limbaj este limbajul logicii predicatelor,
care este universal în sensul că toată matematica (adică tot ce se poate rezolva
prin raţionament) poate fi exprimată în acest limbaj (inclusiv partea automată,
algoritmică). În fapt, chiar şi o versiune restricţionată, logica predicatelor de ordinul
întâi (împreună cu aşa numita teorie a mulţimilor) este suficientă pentru a exprima
toată matematica.
Limbajele speciale sunt limbaje relativ simple, și care pot descrie doar universuri
limitate. Motivul pentru care aceste limbaje sunt de preferat (în cazul în care
pot exprima problema de interes şi soluţia acesteia), este tocmai simplitatea, care
oferă proprietăţi mai bune, care în general nu sunt disponibile pentru limbaje mai
complicate, după cum vom discuta mai jos. Exemple de limbaje speciale sunt logica
propozițională, limbajul circuitelor cu comutare, geometria solidă constructivă.
11
1.5.2. Model: consistenţă
Este modelul (descrierea universului de discurs) consistent, liber de contradicţii?
Observaţie (Specificarea modelului). În matematică, forma în care se specifică mode-
lul universului de discurs este luată de axiome. Rolul axiomelor este acela de a descrie
comportamentul obiectelor de interes, noţiunile de bază.
În particular, axiomele sunt afirmaţii considerate adevărate, dar justificarea acestui
fapt vine tocmai din faptul că acestea descriu universul de discurs, comportamentul şi
relaţiile dintre obiectele acestui univers. ▲
Exemplul 1.3 (Paradoxul lui Russell). Să considerăm o axiomă (afirmaţie, parte a
modelului), care descrie o proprietate a mulţimilor. Intuitiv:
Pentru orice „proprietate” P , există „mulţimea” tuturor obiectelor x care posedă pro-
prietatea P .
Mai exact, pentru orice proprietate P :
„există o mulţime M astfel încât pentru orice x (x ∈ M dacă şi numai dacă P )”, unde
M este o variabilă.
Din moment ce funcţionează pentru orice proprietate, să considerăm proprietatea x ̸∈
x: „există o mulţime M astfel încât pentru orice x (x ∈ M dacă şi numai dacă x ̸∈ x)”
Din moment ce există o mulţime, fie aceasta M0 (M0 nu mai este o variabilă, este o
constantă): „pentru orice x (x ∈ M dacă şi numai dacă x ̸∈ x)”
Din moment ce afirmaţia este adevărată pentru toţi x, este adevărată şi pentru x := M :
„(M ∈ M dacă şi numai dacă M ̸∈ M )”, ceea ce este o contradicţie.
▲
Acest exemplu (faimos), vezi [Rus03], ne arată cum o axiomă intuitiv rezonabilă poate
duce la inconsistenţe în model.
Axioma poate fi „reparată” pentru a evita paradoxul:
Pentru orice proprietate P în care apare (liberă) variabila x şi orice variabilă B care
nu apare liberă în P :
„pentru orice B există M astfel încât pentru orice x (x ∈ M dacă şi numai dacă (x ∈
B şi P ))”.
12
1.5.4. Completitudinea regulilor de raţionament
Se pot rezolva într-un sistem de raţionament toate problemele care au o soluţie, este acel
sistem de raţionament suficient de puternic? Gödel a demonstrat în [Göd30] că logica
predicatelor are această proprietate: orice afirmaţie „adevărată” are o demonstraţie în
sistemul de raţionament al logicii predicatelor (de ordinul întâi).
Pentru limbaje (logici) mai simple (de exemplu, logica propoziţiilor), în general această
proprietate este uşor de stabilit.
1.5.6. Complexitate
Dacă o problemă se poate rezolva automat, o problemă importantă este complexitatea
soluţiei. Există clase de probleme pentru care complexitatea este prea mare, adică timpul
şi/sau spaţiul de memorie necesare sunt prea mari pentru a rezolva probleme în practică.
Acest aspect este foarte important. Oricât de mare ar fi puterea de calcul, aceasta poate
fi uşor depăşită de complexitatea unor probleme. Există o graniţă de la care calculul
devine nepractic.
Declaraţie
Autorul acestor note de curs a învăţat despre logică, rolul acesteia în rezolvarea de
probleme, mecanismele prin care funcţionează, etc., de la îndrumătorul său, Bruno Bu-
13
chberger. Acest prim capitol urmează structura din notele de curs (nepublicate) ale lui
Buchberger, vezi [Buc91].
14
Partea II.
Logica propoziţiilor
15
Logica propoziţiilor este o logică cu un limbaj care modelează afirmaţii simple:
• „Afară plouă.”
• „Afară plouă şi azi este miercuri dacă şi numai dacă păsările zboară spre vest.”
În această parte, vom defini sintaxa şi semantica logicii propoziţiilor, vom defini pro-
blemele ce pot fi exprimate în acest limbaj şi vom investiga ce înseamnă abordarea di-
rectă a rezolvării lor, lucru posibil în logica propoziţiilor. Vom vedea limitările abordării
directe şi vom defini un sistem de raţionament ce adresează aceste limitări.
De asemenea, vom ilustra unele aplicaţii ale logicii propoziţiilor.
16
2. Sintaxa logicii propoziţiilor
2.1. Expresiile logicii propoziţiilor
Definiţie 2.1 (Vocabularul logicii propoziţiilor). Simbolurile logicii propoziţiilor
sunt:
• V mulţimea (numărabilă) a variabilelor propoziţionale (nume de propoziţii). Vom
nota propoziţiile folosind majuscule, eventual cu indecşi A, B, P, Q, P1 , P2 . . ..
• Simbolurile rezervate:
– conectori logici: ¬ (negaţia), ∧ (conjuncţia), ∨ (disjuncţia),
⇒ (implicaţia), ⇔ (echivalenţa),
– ( ) paranteze.
■
Observaţie. Faptul că mulţimea variabilelor propoziţionale este numărabilă ne va per-
mite în orice moment să luăm o variabilă nouă, nefolosită până la acel moment. ▲
Definiţie 2.2 (Formule propoziţionale bine formate). Mulţimea formulelor propo-
ziţionale bine formate peste mulţimea de variabile V, P(V), este definită după
cum urmează:
• Dacă A ∈ V desemnează o propoziţie atomică, atunci A ∈ P(V).
17
• (P ∨ Q) disjuncţia lui P şi Q, „P sau Q”,
18
Avem nevoie, aşadar, pentru aceste situaţii, de o metodă în care structura expresiei
parcurse este identificată pas cu pas. ▲
• arborele vid,
• arborele nevid, format dintr-un nod rădăcină şi o listă (posibil vidă) de su-
barbori.
Fiecare nod care nu este rădăcină un singur nod părinte. Nodurile (în afară de
nodul răđacină) sunt conectate prin muchii la nodurile părinte corespunzătoare.
Nodurile care nu sunt noduri părinte se cheamă noduri frunză.
Fiecare nod al unui arbore conţine informaţii (de exemplu obiecte de anumit tip). ■
Exemplul 2.2 (Arbori). Mai jos, vom considera că nodurile arborilor ilustraţi conţin
numere naturale.
2 6
3 4 5 7 11
8 9
10
19
r
• Dacă F, G ∈ P(V), pentru formulele compuse (¬F ), (F □G), unde □ ∈ {∧, ∨, ⇒, ⇔}:
¬ □
F F G
■
Vom prezenta o metodă prin care se pot recunoaşte expresiile (şi în acelaşi
timp construi arborele sintactic) pentru propoziţii.
20
Metoda de recunoaştere pe care o propunem aici va parcurge expresia simbol cu simbol.
La fiecare pas, vom avea un arbore incomplet, poziţia în acel arbore, şi o regulă bazată
pe simbolul considerat. Regula ne va spune ce adăugăm la arborele incomplet, şi la ce
poziţie.
Metoda se termină cu succes când am parcurs tot şirul de caractere din expresie, şi
avem un arbore sintactic complet.
În orice alt caz:
• şirul este parcurs în întregime, dar arborele corespunzător nu este complet,
((P ∧ Q) ⇒ (¬R)).
( ( P ∧ Q ) ⇒ ( ¬ R ) )
1 2 3 4 5 6 7 8 9 10 11 12
Paşii algoritmului
(1): ( – paranteza deschisă înseamnă că expresia vrea să fie o formulă compusă. Avem
2 variante: negaţie, sau formulă ce conţine un conector binar. Arborii incompleţi
corespunzători celor 2 posibilităţi sunt:
„¬” „□”
„F ” „F ” „F ”
21
• Un nod sau subarbore reprezentat cu linie întreruptă reprezintă poziţia în
arborele incomplet, unde vom completa la pasul următor.
(2): ( – paranteză deschisă. Prima variantă (în care formula este o negaţie) cade, lucrăm
pe varianta a doua.
Paranteza deschisă poate fi începutul unei formule compuse, negaţie sau formulă
compusă folosind un conector binar.
Avem două posibilităţi:
„□” „□”
„¬” „F ” „□” „F ”
„F ” „F ” „F ”
(3): P – este o variabilă propoziţională, astfel că prima variantă (în care căutăm o
negaţie) cade, lucrăm pe varianta a doua. Variabila propoziţională închide ramura
arborelui, mutăm poziţia la nivelul părintelui.
„□” „□”
„¬” „F ” „□” „F ”
„F ” P „F ”
(4): ∧ – este un conector logic binar, îl scriem în nodul curent şi ne mutăm pe ramura
următoare .
22
„□”
∧ „F ”
P „F ”
„□”
∧ „F ”
P Q
(6): ) – paranteză închisă, ne mutăm pe poziţia părintelui, ramura curentă este închisă.
„□”
∧ „F ”
P Q
23
⇒
∧ „F ”
P Q
(8): ( – paranteza deschisă înseamnă că expresia vrea să fie o formulă compusă. Avem
2 variante: negaţie, sau formulă ce conţine un conector binar. Arborii incompleţi
corespunzători celor 2 posibilităţi sunt:
⇒ ⇒
∧ „¬” ∧ „□”
P Q „F ” P Q „F ” „F ”
(9): ¬ – conectorul negaţie, prima variantă este cea considerată, a doua cade, completăm
negaţia şi ne mutăm la subarbore.
⇒ ⇒
∧ ¬ ∧ „□”
P Q „F ” P Q „F ” „F ”
24
⇒
∧ ¬
P Q R
(11): ) – paranteză închisă, subarborele curent este complet, ne mutăm la nivelul părin-
telui.
∧ ¬
P Q R
(12): ) – paranteză închisă, subarborele curent este complet, ne mutăm la nivelul pă-
rintelui. Cum nodul curent este rădăcina, înseamnă că marcajul poziţiei următoare
iese din arbore, deci avem un arbore închis, am terminat, expresia parcursă este o
propoziţie, şi avem arborele ce reprezintă sintaxa abstractă.
∧ ¬
P Q R
25
formulele propoziţionale sunt folsite de calculator). În practică, oamenii au tendinţa de
a folosi paranteze doar când este neapărat necesar.
Exemplul 2.4. Să considerăm expresia P ∧ Q ⇒ ¬R. Aceasta este evident mai com-
pactă decât formula din Exemplul 2.1. Problema este că această formulă este ambiguă:
• sau (P ∧ (Q ∧ (¬R)))
După cum vom vedea în Secţiunea 3, într-adevăr există o diferenţă, iar pentru a evita
ambiguităţile, trebuie să ţinem cont de anumite aspecte discutate în continuare. ▲
¬, {∧, ∨}, ⇒, ⇔
((P ∧ Q) ⇒ (¬R)).
• reprezintă (P ⇒ (Q ⇒ R))
26
3. Semantica logicii propoziţiilor
3.1. Valori de adevăr, interpretări, valoare sub interpretare
Definiţie 3.1 (Domeniu de valori de adevăr). Considerăm două obiecte (valori) dis-
tincte A, F. Domeniul valorilor de adevăr este reprezentat de mulţimea {A, F}.
Această mulţime este considerată total ordonată, F < A. ■
Domeniul valorilor de adevăr reprezintă universul de discurs pentru logica propoziţii-
lor.
Definiţie 3.2 (Funcţii de adevăr corespunzătoare conectorilor logici). Definim urmă-
toarele funcţii de adevăr corespunzătoare conectorilor propoziţionali:
B¬ : {A, F} −→ {A, F},
B∧ , B∨ , B⇒ , B⇔ : {A, F} × {A, F} −→ {A, F} ,
• I1 : I1 (P ) = F, I1 (Q) = F, I1 (R) = A,
• I2 : I2 (P ) = A, I2 (Q) = F, I2 (R) = F.
27
Observaţie (Reprezentarea compactă a interpretărilor). Putem reprezenta interpretă-
rile compact, ca mulţimi de atomi sau negaţii de atomi, în felul următor:
■
Exemplul 3.2 (Valoare sub interpretare).
.
Considerăm propoziţia G = ((P ∧ Q) ⇒ (R ⇔ (¬S))) şi intepretarea I(P ) = A,
I(Q) = F, I(R) = A, I(S) = A.
Atunci, folosind Definiţia 3.4:
υI (G) =
υI (((P ∧ Q) ⇒ (R ⇔ (¬S)))) =
B⇒ (υI ((P ∧ Q)), υI ((R ⇔ (¬S)))) =
B⇒ (B∧ (υI (P ), υI (Q)), B⇔ (υI (R), υI ((¬S)))) =
B⇒ (B∧ (I(P ), I(Q)), B⇔ (I(R), υI ((¬S)))) =
B⇒ (B∧ (A, F), B⇔ (A, B¬ (υI (S)))) =
B⇒ (B∧ (A, F), B⇔ (A, B¬ (I(S)))) =
B⇒ (F, B⇔ (A, F)) =
B⇒ (F, F) = A.
28
▲
Definiţie 3.5. Fie F ∈ P(V) o propoziţie, I : V −→ {A, F} o intepretare.
Dacă υI (P ) = A, spunem că I satisface P , sau P este satisfăcută de I.
Dacă υI (P ) = F, spunem că I falsifică F , sau F este falsificată de I.
■
Observaţie (Numărul posibil de interpretări). Pentru n variabile propoziţionale, nu-
mărul total de interpretări este 2n .
▲
29
un număr în reprezentare binară: fiecare secvenţă este obţinută din precedenta
adăugând 1 la reprezentarea binară corespunzătoare;
b) prin înjumătăţire, pentru prima coloană, punem jumătate din valori (2n−1
pentru n variabile) F şi jumătate A, apoi pentru următoarea înjumătăţim
fiecare secvenţă, dacă în coloana din stânga avem o secvenţă de valori F,
atunci în coloana curentă punem jumătate din ele F şi jumătate A, până
când, pe ultima coloană avem alternanţă F, A.
De notat că ambele metode vor genera aceeaşi secvenţă de intepretări corespunză-
toare variabilelor.
■
Exemplul 3.3 (Tabel de adevăr). Tabelul de adevăr (P ⇒ Q) ∨ R.
P Q R P ⇒Q (P ⇒ Q) ∨ R
F F F T T
F F T T T
F T F T T
F T T T T
T F F F F
T F T F T
T T F T T
T T T T T
30
P Q (P ⇒ Q) ¬P (¬P ∨ Q)
F F A A A
F A A A A
A F F F F
A A A F A
Conform definiţiei, din tabelul de adevăr, vedem că cele două formule sunt logic echi-
valente. ▲
Formulele propoziţionale pot avea structură diferită, dar acelaşi înţeles. Aceasta este
intuiţia din spatele conceptului de echivalenţă logică.
Vom extinde limbajul logicii propoziţiilor adăugând două simboluri speciale care vor
denota două propoziţii atomice particulare.
Definiţie 3.10 (Formula falsă, formula adevărată). ⊥, ⊤ ∈ P(V), unde pentru orice
interpretare I,
• υI (⊥) = F
• υI (⊤) = A.
• Legi de reducere:
(a) (F ⇔ G) ∼ (F ⇒ G) ∧ (G ⇒ F ),
(b) (F ⇒ G) ∼ (¬F ∨ G).
• Legi comutative:
(a) F ∨ G ∼ G ∨ F ,
(b) F ∧ G ∼ G ∧ F ,
(c) F ⇔ G ∼ G ⇔ F .
31
• Legi asociative:
(a) (F ∨ G) ∨ H ∼ F ∨ (G ∨ H),
(b) (F ∧ G) ∧ H ∼ F ∧ (G ∧ H),
(c) (F ⇔ G) ⇔ H ∼ F ⇔ (G ⇔ H).
• Legi distributive:
(a) F ∨ (G ∧ H) ∼ (F ∨ G) ∧ (F ∨ H),
(b) F ∧ (G ∨ H) ∼ (F ∧ G) ∨ (F ∧ H),
(c) (F ∨ G) ⇒ H ∼ (F ⇒ H) ∧ (G ⇒ H),
(d) (F ∧ G) ⇒ H ∼ (F ⇒ H) ∨ (G ⇒ H),
(e) F ⇒ (G ∨ H) ∼ (F ⇒ G) ∨ (F ⇒ H),
(f ) F ⇒ (G ∧ H) ∼ (F ⇒ G) ∧ (F ⇒ H),
(g) (F ∧ G) ⇒ H ∼ F ⇒ (G ⇒ H).
(a) ¬⊤ ∼ ⊥,
(b) ¬⊥ ∼ ⊤,
(c) F ∨ ⊥ ∼ F,
(d) F ∧ ⊤ ∼ F,
(e) F ∨ ⊤ ∼ ⊤,
(f ) F ∧ ⊥ ∼ ⊥,
(g) ⊥ ⇒ F ∼ ⊤,
(h) F ⇒ ⊤ ∼ ⊤.
• Reguli de idempotenţă:
(a) F ∧ F ∼ F ,
(b) F ∨ F ∼ F .
(a) F ∨ (F ∧ G) ∼ F ,
(b) F ∧ (F ∨ G) ∼ F .
• Reguli de anihilare:
(c) F ⇒ F ∼ ⊤.
32
• Reguli pentru negaţie:
• Alte reguli:
(a) F ⇒ G ∼ F ⇔ (F ∧ G),
(b) F ⇒ G ∼ G ⇔ (F ∨ G).
υI (F1 ) = . . . = υI (Fn ) = A,
atunci υI (G) = A. ■
Exemplul 3.5. F, F ⇒ G ⊨ G. Construim următorul tabel:
F G F ⇒G
F F A
F A A
A F F
A A A
Teorema de deducţie
Teorema 3.1 (Teorema de deducţie pentru logica propoziţiilor).
Fie F1 , . . . , Fn , G ∈ P(V), formule propoziţionale.
F1 , . . . , Fn ⊨ G dacă şi numai dacă ((F1 ∧ . . . ∧ Fn ) ⇒ G) este validă.
33
Demonstraţie. “⇒”(implicaţia directă).
presupunem F1 , . . . , Fn ⊨ G şi
υI (((F1 ∧ . . . ∧ Fn ) ⇒ G)) = A.
Pentru a demonstra aceasta, luăm o interpretare arbitrar fixată I0 şi demonstrăm
B∧ (υI0 (F1 ), . . . , υI0 (Fn )) = A, astfel că (⋆) este adevărată (B⇒ (A, A) = A).
Caz: nu avem (υI0 (F1 ) = . . . = υI0 (Fn ) = A) (cel puţin o valoare este falsă).
B∧ (υI0 (F1 ), . . . , υI0 (Fn )) = F, astfel că (⋆) este adevărată (B⇒ (F, υI0 (G)) = A).
Demonstraţie.“⇐”(implicaţia inversă).
Pentru a demonstra implicaţia inversă,
34
Din presupunerea făcută ştim în particular că
Dar
υI0 (((F1 ∧ . . . ∧ Fn ) ⇒ G)) =
B⇒ (υI0 ((F1 ∧ . . . ∧ Fn )), υI0 (G)) =
B⇒ (B∧ (υI0 (F1 ), . . . , υI0 (Fn )), υI0 (G)) =
B⇒ (B∧ (A, . . . , A), υI0 (G)) =
B⇒ (A, υI0 (G)),
deci, B⇒ (A, υI0 (G)) = A.
F G F ⇒G F ∧ (F ⇒ G) (F ∧ (F ⇒ G)) ⇒ G
F F A F A
F A A F A
A F F F A
A A A A A
▲
Teorema 3.2 (Caracterizare alternativă a consecinţei logice).
Fie F1 , . . . , Fn , G ∈ P(V), formule propoziţionale.
F1 , . . . , Fn ⊨ G iff (F1 ∧ . . . ∧ Fn ∧ ¬G) este nesatisfiabilă.
Demonstraţie. Exerciţiu.
Demonstrație. Exerciţiu.
35
• orice consecinţă logică se reduce validitatea sau nesatisfiabilitatea unei formule, ceea
ce înseamnă că se verifică doar dacă o coloană (corespunzătoare unei implicaţii,
respectiv unei conjuncţii) conţine doar o anumită valoare de adevăr (A, respectiv
F), în loc să se caute în tabel linii în care anumite elemente au valoarea A.
Teoremele de mai sus arată că orice problemă din logica propoziţiilor se poate reduce la
validitate (sau nesatisfiabilitate).
▲
Prima coloană reprezintă mărimea unei probleme, celelalte reprezintă estimarea tim-
pului necesar pentru obţinerea soluţiei în următoarele condiţii pentru clasa corespunză-
toare de complexitate (din capul coloanei):
• timpul de execuţie este estimat pentru un procesor capabil de 1 milion de instru-
cţiuni pe secundă (MIPS),
• „f. lung” este considerat un timp de execuţie care depăşeşte 1025 ani.
Soluţiile directe în logica propoziţiilor au complexitatea 2n , ceea ce înseamnă că pentru
orice problemă netrivială, calculatoarele vor fi compleşite, şi calcularea răspunsurilor va
lua prea mult timp.
Pentru comparaţie, procesoarele curente sunt capabile să efectueze mult mai multe
operaţii (aprox 300 000 MIPS1 .). Chiar şi cu această diferenţă, observaţi că pentru
probleme netriviale (mai mult de 100 de variabile) timpul de aşteptare este nerezonabil.
1
Vezi http://en.wikipedia.org/wiki/Instructions_per_second
36
Avem nevoie de un mod diferit pentru a rezolva problemele în logica propoziţiilor, de
un sistem de raţionament.
37
4. Aplicaţii ale logicii propoziţiilor:
proiectarea circuitelor digitale
Înainte de a investiga raţionamentul în logica propoziţiilor, vom discuta aplicaţii ale
logicii propoziţiilor în practică.
38
Observaţie (Conjuncţii şi disjuncţii cu o componentă). Dacă în definiţiile de mai
sus n = 1, conjuncţia, respectiv disjuncţia cu o singură componentă se identifică cu
componenta respectivă. ▲
perechile de n elemente din {A, F}n pentru care f returnează valoarea A. Atunci funcţia f poate
este descrisă de următoarea formulă, ce foloseşte variabilele A1 , . . . , An :
39
• se ia disjuncţia conjuncţiilor rezultate.
Exemplul 4.1 (Funcţia majoritate). Să considerăm funcţia majoritate cu trei argumente, ce
returnează A dacă majoritatea argumentelor sale este A, descrisă de următorul tabel:
a1 a2 a3 f (a1 , a2 , a3 )
A A A A
A A F A
A F A A
A F F F
F A A A
F A F F
F F A F
F F F F
▲
Aşadar, am stabilit că logica propoziţiilor este un limbaj suficient de expresiv pentru a descrie
funcţiile de adevăr.
40
Figura 5.: Porţi logice: negaţie, nşi (negaţia conjuncţiei), nsau (negaţia disjuncţiei),
conjuncţie, disjuncţie.
• Se porneşte cu funcţia de adevăr, descrisă sub forma unui tabel. Aceasta poate fi conside-
rată specificaţia circuitului, pentru că descrie comportamentul circuitului.
• Se construieşte formula corespunzătoare funcţiei de adevăr. Aceasta va fi o disjuncţie
de conjuncţii de atomi sau negaţii ale unui atom. Această formulă reprezintă designul
circuitului.
Pentru reprezentarea circuitului:
– se reprezintă câte o linie pentru fiecare intrare (orizontal),
– pentru fiecare din acestea se leagă o linie pe care se pune o poartă logică negaţie,
– fiecare dintre intrări şi negaţiile acestora se leagă la o linie corespunzătoare (verticală),
– pentru fiecare conjuncţie din formula corespunzătoare, se ia o poartă şi, care se leagă
la intrările corespunzătoare din liniile verticale,
– ieşirile din porţile şi devin intrare într-o poartă sau, a cărei ieşire reprezintă ieşirea
din circuit.
Exemplul 4.3 (Circuitul majoritate). Funcţia majoritate returnează A dacă majoritatea in-
trărilor au valoarea A. Designul circuitului corespunzător este prezentat în Figura 4.3.
Figura 6.: Circuitul majoritate. Sursă: resurse didactice asociate cu [TA13]. 0 şi 1 sunt
folosite pentru F and A, respectiv, Ā pentru ¬A, ABC reprezintă A ∧ B ∧ C,
A + B reprezintă A ∨ B.
41
4.2.3. Transformarea şi simplificarea circuitelor digitale
În practică, designul circuitelor obţinute din specificaţie (funcţia de adevăr) nu este folosit: porţi
logice cu număr variabil de intrări nu sunt practice, circuitele vor folosi porţi logice standard, de
exemplu porţi şi/sau cu două intrări.
Pentru a înlocui porţile cu număr variabil de intrări, circuitul se transformă folosind echivalenţa
logică (de exemplu regulile de distributivitate, etc).
Mai mult, din motive de performanţă, circuitele trebuie să fie cât mai simple (să folosească un
număr cât mai mic de porţi logice, să aibă o adâncime cât mai mică). Transformările echivalente
sunt folosite şi în acest scop. Figura ?? ilustrează un astfel de caz.
42
7. {▽}, unde F ▽G = ¬(F ∨ G), ▽ este conectorul „nsau” (exerciţiu).
Vom demonstra că {|} este completă prin inducţie după structura formulelor:
Cazul de bază: Dacă A este atom, atunci A ∼ A.
Pasul de inducţie: Fie F şi G propoziţii arbitrare. Presupunem că pentru cele două pro-
prietate este adevărată.
Demonstrăm proprietatea pentru:
• ¬F :
¬F ∼ ¬(F ∧ F ) ∼ F |F ,
• F ∧ G:
F ∧ G ∼ ¬¬(F ∧ G) ∼ ¬(F |G) ∼ (F |G)|(F |G),
• F ∨ G:
F ∨ G ∼ ¬¬(F ∨ G) ∼ ¬(¬F ∧ ¬G) ∼ (¬F )|(¬G) ∼ (F |F )|(G|G).
• F ⇒ G: exerciţiu,
• F ⇔ G: exerciţiu,
• ⊥:
⊥ ∼ (F ∧ ¬F ) ∼ . . . (exerciţiu),
• ⊤: exerciţiu.
▲
Faptul că există mulţimi complete de conectori logici cu un singur element este important
pentru aplicaţia logicii propoziţiilor în domeniul circuitelor digitale: circuitele pot fi realizate
folosind un singur tip de poartă logică, ceea ce simplifică semnificativ construcţia acestora. Folo-
sind transformările echivalente, designul unui circuit este transformat într-un circuit echivalent
ce foloseşte un singur tip de poartă logică.
43
5. Raţionament în logica propoziţiilor
5.1. Forme normale
Negation Normal Form
Definition 1 (Literal). A literal is an atom or the negation of an atom. Atoms are called
positive literals, negations of atoms are called negative literals.
Definition 2 (Negation Normal Form). A formula F is said in negation normal form (NNF) ,
iff:
• F is ⊤ or F is ⊥;
• F is constructed from literals, using only the binary connectives ’∧’ and ’∨’.
⊤,
P,
P ∧ (Q ∧ (¬R ∨ S)),
however,
¬(¬P ),
¬(P ∨ ¬Q) ∧ R,
are not.
Transformation to NNF
Remark. Any propositional logic formula can be transformed into an equivalent formula in
NNF.
Transformation to NNF
1. use the reduction laws (given in the catalog of equivalent formulae) to eliminate ’↔’, ’→’;
2. repeatedly use the double negation and De Morgan’s laws to eliminate ’¬¬’s and ’¬(. . .)’s.
3. at each of the steps above, it is useful to perform simplifications of ⊤ and ⊥ (using the
laws of true and false, annihilation, idempocy).
44
Disjunctive Normal Form, Conjunctive Normal Form
Definition 4 (Disjunctive Normal Form). A formula F is said to be in disjunctive normal form
.
(DNF) iff F has the form F = F1 ∨ . . . ∨ Fn , n ≥ 1 , and each of F1 , . . . , Fn is a conjunction of
literals.
DNF Transformations
DNF Transformation via Truth Tables
Given a formula, one method to obtain a DNF equivalent formula is through truth tables, by:
• selecting all the rows that evaluate to T,
• for each such row, constuct a conjunct of literals in the following way: positive literals for
corresponding T values for the propositional variable, and negative literals otherwise.
• the DNF is the disjunctions of all these conjunctions.
Example 8. DNF from truth tables
45
P Q P →Q
T T T
The corresponding equivalent DNF formula:
T F F
(P ∧ Q) ∨(¬P ∧ Q) ∨ (¬P ∧ ¬Q).
F T T
F F T
Remark.
• In the above example, the DNF equivalent form is quite different from the well-known
equivalent (¬P ∨ Q), i.e. it is not the simplest DNF (also DNF’s are not unique).
• In general, getting the DNF from the truth table is expensive: one has to construct the
truth tables.
DNF Transformation
Transformation to DNF
An arbitrary propositional formula can be transformed in an equivalent DNF by carrying out
the following steps:
• bring the formula into NNF;
• repeatedly apply the tautologies:
F ∧ (G ∨ H) ∼ (F ∧ G) ∨ (F ∧ H),
(F ∨ G) ∧ H ∼ (F ∧ H) ∨ (G ∧ H),
starting with the outermost ’∧’, until the normal form is reached.
Example 9 (DNF transformation). Transform the following formula into its DNF:
Remark. In the above, distr, ann indicate the place where the distributive law (of ’∧’ over ’∨’)
and the annihilation law (for ’∧’) were applied, respectively, at each step.
When transforming a formula into its DNF equivalent, it is a good idea to perform, after each
transformation, simplification steps:
• contradictions within conjunctions:
– if both a subformula and its negation show up in the same conjunction, then the
conjunction is a contradiction (i.e. equivalent to ⊥),
– since P ∨ ⊥ ∼ P , contradictions can be discarded;
46
• subsumption:
– since (F ∧ G) ∨ F ∼ (F ∨ F ) ∧ (G ∨ F ) ∼ F ∧ (G ∨ F ), we see that if F is true
then the initial formula is true, and if F is false then the initial formula is false (read
evaluated to false under some interpretation), i.e. the truth value of G plays no part
in the result of the evaluation,
– therefore, in fact (F ∧ G) ∨ F ∼ F ,
– therefore, (F ∧ G) can be safely removed from the disjunct (we say that (F ∧ G) is
subsumed by F ),
– due to the associativity of ’∧’ this can be generalized (i.e. F and G can stand in for
conjunctions of literals).
Example 10 (DNF transformation, with contradiction checking.). Transform the following for-
mula into its DNF:
(F ∧ (G ∨ H)) ∧ (¬F ∨ ¬G).
CNF Transformation
Transformation to CNF
An arbitrary propositional formula can be transformed in an equivalent DNF by carrying out
the following steps:
• bring the formula into NNF;
• repeatedly apply the tautologies:
F ∨ (G ∧ H) ∼ (F ∨ G) ∧ (F ∨ H),
(F ∧ G) ∨ H ∼ (F ∨ H) ∧ (G ∨ H),
starting with the outermost ’∨’, until the normal form is reached.
47
When transforming into CNF, one should check at each step for valid conjuncts, i.e. disjunc-
tions that contain complementary subformulae.
• validity within conjunctions:
– if both a subformula and its negation show up in the same disjunction, then the
disjunction is a valid (i.e. equivalent to ⊤),
– since P ∨ ⊤ ∼ P , valid conjuncts can be discarded;
• absorbtion:
– F ∧ (F ∨ G) ∼ F .
Remark. DNF and CNF transformations are similar.
Example 11 (CNF transformation). Transform the following formula into its CNF:
(F ∨ (G ∧ H)) ∨ (¬F ∧ ¬G).
The formula is already in NNF.
(F ∨ (G ∧ H)) ∨ (¬F ∧ ¬G) ∼
distr
(((F ∨ (G ∧ H)) ∨ ¬F ) ∧ ((F ∨ (G ∧ H)) ∨ ¬G)) ∼
assoc and ann distr
((F ∨ G) ∧ (F ∨ H)) ∨ ¬G)) ∼
distr
((F ∨ G ∨ ¬G) ∧ (F ∨ H ∨ ¬G))) ∼
ann
(F ∨ H ∨ ¬G).
48
5.2. Metoda rezoluţiei şi metode bazate pe rezoluţie
49
Partea III.
Logica predicatelor
50
Logica predicatelor de ordinul întâi: sintaxă
şi semantică
Logica predicatelor este limbajul matematicii. Chiar şi o versiune restrânsă pe care o vom discuta
aici – logica predicatelor de ordinul întâi – este suficientă (împreună cu teoria mulţimilor) pentru
a exprima tot ce se poate exprima în matematică.
Totodată, este într-un anumit sens cel mai bine înţeleasă – munca de fundamentare a mate-
maticii (punerea matematicii pe bază solide) în cea mai mare măsură a fost făcută în această
logică.
Mai mult, logica predicatelor de ordinul întâi poate servi ca un cadru general pentru informa-
tică (matematică, raţionament automat).
În ceea ce urmează, vom introduce limbajul logicii predicatelor de ordinul întâi. Vom prezenta
sintaxa şi semantica, vom vedea că a rezolva probleme direct folosind logica predicatelor este
nepractic.
51
6. Sintaxa logicii predicatelor de ordinul
întâi
Rolul unui limbaj (în particular al limbajului considerat aici) este să descrie un univers de interes.
Pentru a forma expresii avem nevoie de simboluri, care vor juca diferite roluri în expresiile
limbajului.
■
Exemplul 6.1 (Simboluri ale unui limbaj). Vom considera următoarea signatură L a unui
limbaj:
F = f/2 , g/1 , h/3 , +/2 , !/1 ,
unde h/3 indică faptul că funcţia pentru care am ales numele h are aritate 3 (3 argumente).
P = P/2 , ≤/2 , prim/1 , par/1 ,
52
unde par/2 indică faptul că predicatul pentru care am ales numele par are aritate 2 (2 argumente).
C = {a, b, 0, 12} .
▲
Observaţie (constantele sunt funcţii). Tehnic, simbolurile constante sunt la fel cu simbolurile
funcţionale de aritate 0. Intuitiv, o funcţie „returnează” un obiect „în funcţie” de argumentele
sale, adică modificând argumentele, se modifică rezultatul. Dacă funcţia nu are argumente, atunci
rezultatul nu poate fi influenţat, aşadar este neschimbat. Atunci funcţia (cu 0 argumente) se poate
identifica cu valoarea pe care o returnează. ▲
Primul tip de expresii în logica predicatelor de ordinul întâi sunt termenii, care descriu obiecte
din universul de discurs.
Definiţie 6.2 (Termenii logicii predicatelor de ordinul întâi). Fie V mulţimea de variabile,
L mulţimea simbolurilor (signatura) unui limbaj al predicatelor de ordinul întâi. Mulţimea
termenilor peste L şi mulţimea de variabile V, notată T(L, V) este definită după cum
urmează:
• Dacă x ∈ V, atunci x ∈ T(L, V). (Variabilele sunt termeni.)
• Dacă c ∈ C, atunci c ∈ T(L, V). (Constantele sunt termeni.)
• Dacă f/n ∈ F şi t1 , . . . , tn ∈ T(L, V), atunci f (t1 , . . . , tn ) ∈ T(L, V). (Un simbol funcţional
aplicat unui număr corespunzător – cu aritatea sa – de termeni este la rândul său un
termen.)
În primele două cazuri avem de-a face cu termeni simpli (variabilă, constantă), iar în ultimul
avem termeni compuşi (din simbol funcţional aplicat altor termeni).
■
Definiţie 6.3 (Simboluri dominante, subtermeni). Fie f (t1 , . . . , tn ) ∈ T(L, V) un termen com-
pus. Spunem că f este simbol dominant al termenului compus şi t1 , . . . , tn sunt subter-
meni. ■
Al doilea tip de expresii în logica predicatelor de ordinul întâi sunt formulele, care intuitiv
descriu relaţii, situaţii din universul de discurs.
Definiţie 6.4 (Formulele logicii predicatelor de ordinul întâi). Fie V mulţimea de variabile,
L mulţimea simbolurilor (signatura) unui limbaj al predicatelor de ordinul întâi. Mulţimea
formulelor peste L şi mulţimea de variabile V, notată F(L, V) este definită după cum
urmează:
• Dacă P/n ∈ P şi t1 , . . . , tn ∈ T(L, V), atunci P (t1 , . . . , tn ) ∈ F(L, V). (Un predicat aplicat
unui număr corespunzător – cu aritatea sa – de termeni este o formulă, numită formulă
atomică).
• Dacă F, G ∈ F(L, V), atunci:
(F ∧ G) ∈ F(L, V).
53
(F ∨ G) ∈ F(L, V).
(F ⇒ G) ∈ F(L, V).
(F ⇔ G) ∈ F(L, V).
54
6.2.1. Recunoaşterea expresiilor logicii predicatelor folosind definiţia sintaxei
Exemplul 6.2 (Recunoaşterea expresiilor folosind definiţia). Considerăm expresia
(a) P (x, y) este formulă. Acest lucru se întâmplă, conform definiţiei este o formulă atomică, un
predicat binar (P ) aplicat la doi termeni, x respectiv y (care sunt variabile, deci termeni,
conform Definiţiei 6.2).
(b) ∀xP (f (a), x)) este formulă. Simbolul dominant este ∀ (subliniat în formulă), urmat de o
variabilă (x), deci conform definiţiei, trebuie să verificăm că P (f (a), x) este formulă. Acest
lucru se întâmplă, conform definiţiei este o formulă atomică, un preficat binar (P ) este aplicat
la doi termeni, f (x), un termen compus (simbolul funcţional f aplicat termenului constantă
a, şi variabilei x).
Aşadar, conform definiţiei, expresia este o conjuncţie, formulă compusă în logica predicatelor
de ordinul întâi.
▲
Observaţie (Subitare). Situaţia este aceeaşi cu cea identificată în Capitolul 2. Identificarea
simbolurilor dominante este un pas „mare”. Oamenii pot face acest pas pentru expresii mici,
folosind capacitatea de subitare. Însă pentru exemple mai complexe, avem nevoie de o metodă
care să parcurgă expresia pas cu pas şi în care identificarea componentelor să fie explicită. ▲
x c
55
f
t1 ··· tn
■
Definiţie 6.7 (Sintaxa abstractă a formulelor logicii predicatelor). Fie F(L, V) mulţimea for-
mulelor peste un limbaj. Atunci sintaxa abstractă a formulelor este reprezentată de următorii
arbori:
• Pentru formule atomice, dacă P (t1 , . . . , tn ) ∈ F(L, V):
t1 ··· tn
¬ □
F F G
∀ ∃
x F x F
■
Vom adapta metoda prin care se pot recunoaşte expresiile (şi în acelaşi timp construi
arborele sintactic) introdusă pentru propoziţii.
Metoda de recunoaştere pe care o propunem aici va parcurge expresia simbol cu simbol. La
fiecare pas, vom avea un arbore incomplet, poziţia în acel arbore, şi o regulă bazată pe simbolul
considerat. Regula ne va spune ce adăugăm la arborele incomplet, şi la ce poziţie.
Metoda se termină cu succes când am parcurs tot şirul de caractere din expresie, şi avem un
arbore sintactic complet.
În orice alt caz:
56
• şirul este parcurs în întregime, dar arborele corespunzător nu este complet,
• arborele este complet, dar şirul nu a fost parcurs în întregime,
• la pasul curent se adaugă un nod în arbore, care nu corespunde niciunui arbore acceptat
(de Definiţiile 6.6, 6.7),
avem eşec.
Exemplul 6.3 (Recunoaşterea expresiilor logicii predicatelor şi construcţia arborelui sintactic).
Pentru a ilustra această metodă, reluăm Exemplul 6.2:
( P ( x , y ) ∧ ∀ x P ( f ( a ) , x ) )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Paşii algoritmului
(1): ( – paranteza deschisă înseamnă că expresia vrea să fie o formulă compusă. Avem 2 variante:
negaţie, sau formulă ce conţine un conector binar. Arborii incompleţi corespunzători celor
2 posibilităţi sunt:
„¬” „□”
„F ” „F ” „F ”
57
„□”
„¬” P „F ”
„F ” „T ” „T ”
(3): ( – paranteza deschisă după P mută poziţia pe primul subarbore după al nodului ce conţine
P.
„□”
P „F ”
„T ” „T ”
(4): x – este o variabilă, deci termen, exact ce se aştepta, subarborele este închis, se mută poziţia
la părinte.
„□”
P „F ”
x „T ”
58
„□”
P „F ”
x „T ”
(6): y – este o variabilă, deci termen, exact ce se aştepta, subarborele este închis.
„□”
P „F ”
x y
(7): ) – paranteza închisă, închide tot subarborele ce începe cu nodul P , poziţia se mută la
părintele acestui subarbore.
„□”
P „F ”
x y
(8): ∧ – este un conector propoziţional binar, ceea ce era aşteptat, se completează şi poziţia se
muta pe al doilea subarbore:
59
∧
P „F ”
x y
(9): ∀ – cuantificatorul universal, vom avea nevoie de o variabilă şi de o formulă, poziţia se mută
pe primul subarbore:
P ∀
x y „v” „F ”
(10): x – este o variabilă, ceea ce era aşteptat, se închide subarborele, trecem la următorul:
P ∀
x y x „F ”
(11): P – este predicat binar, vrem formulă atomică, cu două subramuri, fiecare corespunzând
unui termen:
60
∧
P ∀
x y x P
„T ” „T ”
P ∀
x y x P
„T ” „T ”
(13): f este o funcţie unară (ok, aveam nevoie de un termen), construim o ramură nouă, unde
avem nevoie de un termen:
61
∧
P ∀
x y x P
f „T ”
„T ”
P ∀
x y x P
f „T ”
„T ”
62
∧
P ∀
x y x P
f „T ”
P ∀
x y x P
f „T ”
63
∧
P ∀
x y x P
f „T ”
P ∀
x y x P
f x
(19): ) paranteză închisă, subarborele care începe la P este închis, trecem la părinte:
64
∧
P ∀
x y x P
f x
(20): ) paranteză închisă, subarborele care începe la ∧ este închis, trecem la părinte (dar ∧ este
rădăcină, deci am terminat, avem arborele sintactic, avem o expresie în logica predicatelor):
P ∀
x y x P
f x
▲
Observaţie (Cazurile cu eşec). În cazul unui eşec, metoda descrisă mai sus oferă şi motivul
pentru eşec. Acesta se găseşte la pasul la care se produce eşecul. De exemplu, dacă în expresia
de mai sus, P ar fi un simbol funcţional binar (şi nu un predicat), la pasul 2 inserăm un simbol
funcţional în nodul curent, ceea ce ar contrazice definiţia formulelor compuse.
▲
65
6.3. Relaxarea sintaxei (I)
Metodade parcurgere şi recunoaştere a expresiilor logicii predicatelor prezentată în secţiunea
anterioară funcţionează pentru că simbolurile funcţionale şi predicative se pun înaintea argu-
mentelor. În practică, vrem să scriem lucruri ca x + y, x ≤ y, unde +, ≤ sunt respectiv un
simbol funcţional şi un predicat. Acest mod de a scrie lucrurile nu este acceptat conform Defi-
niţiilor 6.2, 6.4. Ar trebui să avem +(x, y), ≤ (x, y), respectiv.
Dar intenţia este să folosim logica predicatelor ca un limbaj practic. În acest sens, de acum
înainte vom accepta o relaxare a sintaxei care să permită folosirea simbolurilor în modul indicat
mai sus. Însă acest lucru trebuie făcut tinând cont de anumite aspecte ce vor fi menţionate în
continuare, pentru a evita ambiguităţile.
Poziţia simbolurilor
Simbolurile funcţionale sau predicative pot fi plasate în următoarele poziţii:
Prefix: simbolurile funcţionale sau predicative sunt plasate înaintea argumentelor (aşa se folosesc
simbolurile în Definiţiile 6.2, 6.4).
Infix: simbolurile funcţionale sau predicative sunt plasate între argumente. De obicei acest mod
de scriere este folosit pentru simboluri de funcţii şi predicate binare: x + y, x ≤ y. Un caz
particular de simbol infix este cel din expresia xy. Simbolul corespunzător este □□, unde
□ reprezintă poziţiile argumentelor.
Postfix: simbolurile funcţionale sau predicative sunt plasate după argumente. De obicei, acest
mod de scriere este folosit pentru simboluri unare: x! sau x este prim, unde, tradiţional !
este funcţia factorial, iar este prim este un predicat unar.
Altele (notaţii√2D): argumentele sunt plasate în poziţii nestandard, bidimensională. De exem-
plu: xy , n x. De remarcat că în aceste cazuri, simbolurile funcţionale corespunzătoare sunt
□ √ √
, □ □ (sau n □, dacă considerăm funcţie unară).
□
Asociativitatea
Dacă scriem (3 + 4) + 5 sau 3 + (4 + 5), expresiile respective, în interpretarea tradiţională, denotă
acelaşi lucru (adică + este o funcţie asociativă). Însă nu acelaşi lucru se întâmplă în cazul 8/2/2.
Dacă funcţia este asociativă la stânga, (8/2)/2 înseamnă 2, pe când daca funcţia este asociativă la
dreapta, 8/(2/2) înseamnă 8. În acest caz este esenţial să se precizeze asociativitatea. În general,
pentru funcţii aritmetice, asociativitatea este la stânga (dar dacă nu este clar din context, atunci
aceasta trebuie specificată).
De remarcat că nu toate simbolurile au proprietatea de asociativitate. De exemplu, 3 ≤ 4 ≤ 2
nu are sens nici cu asociativitate la stânga, nici la dreapta.
De asemenea, conectorii logici ∧, ∨ sunt asociativi (vom vedea mai târziu de ce), iar ⇒ este
asociativă la stânga, iar ⇔ nu este asociativă.
Precedenţa
Expresia x + yz poate fi parcursă ca x + (yz) sau (x + y)z. Care dintre cele două elemente sunt
considerate, depinde de precedenţa simbolurilor. Pentru interpretarea clasică (dacă considerăm
expresia ca fiind expresie aritmetică), trebuie ca simbolul □□ să aibă precedenţă mai mică (să
lege mai tare) decât +.
66
În mod similar, pentru conectorii logici, precedenţa uzuală este următoarea:
¬, {∧, ∨}, ⇒, ⇔
Dacă vrem să folosim expresiile logicii predicatelor în forma relaxată, trebuie specificate ele-
mentele relevante (poziţia, asociativitatea, precedenţa), pentru a evita ambiguităţile. sintaxa
relaxată are avantajul că permite expresii mai compacte. În practică (de ex în sursele matemati-
ce, etc) se foloseşte sintaxa relaxată (sintaxa este definită implicit). Însă în cazul în care sunteţi
nesiguri, folosiţi parantezele!
Relativ la sintax abstractă (reprezentarea sub formă de arbori sintactici), aceasta este aceeaşi
pentru sintaxa relaxată, însă modul în care se construieşte nu mai este la fel (de uşor) precum a
fost în cazul sintaxei stricte.
6.4. Substituţii
Substituţia de termeni pentru variabile este un proces elementar prin care putem construi expresii
noi din cele existente. Vom defini conceptul de substituţie:
Definiţie 6.8 (Substituţie).
O substituţie de termeni pentru variabile este o mapare
σ : V → T(L, V)
σ = {x1 ← t1 , . . . , xn ← tn } .
• Pentru termeni:
– dacă x ∈ V, atunci (
x dacă x ̸= xi , 1 ≤ i ≤ n,
xσ =
ti dacă pentru un i, x = xi .
67
– dacă c ∈ C, atunci cσ = c.
– dacă f/m ∈ F şi t1 , . . . , tm ∈ T(L, V), atunci:
• Pentru formule:
– Dacă P/m ∈ P şi t1 , . . . , tm ∈ T(L, V), atunci:
(¬F )σ = (¬Fσ ),
(F ∧ G)σ = (Fσ ∧ Gσ ),
(F ∨ G)σ = (Fσ ∨ Gσ ),
(F ⇒ G)σ = (Fσ ⇒ Gσ ),
(F ⇔ G)σ = (Fσ ⇔ Gσ ).
■
Aşadar, pentru a sumariza, pentru variabila se schimbă dacă coincide cu o variabilă ce apare
în substituţie, constanta rămâne neschimbată la substituţie. Pentru termenii compuşi, formulele
atomice, formulele compuse, substituţia se face pe componente. Pentru formulele cuantificate,
variabilele legate sunt protejate de la substituţie (substituţia merge pe componente, dar eliminând
din substituţie variabilele care sunt legate).
Exemplul 6.4 (Substituţii în logica predicatelor). Fie
σ = {x ← f (y, z), y ← z, z ← a} .
Atunci:
68
▲
Fiind date substituţii, se pot obţine unele noi prin operaţia de compoziţie.
Definiţie 6.10 (Compunerea substituţiilor). Fie θ = {x1 ← t1 , . . . , xn ← tn } şi σ = {y1 ←
s1 , . . . , yn ← sk } substituţii, X, Y respectiv mulţimile de variabile ce apar în θ, σ. Atunci com-
poziţia substituţiilor θ şi σ, notată cu θσ este o substituţie definită astfel:
Atunci:
θσ = {x ← f (y)σ , y ← f (a)σ , z ← uσ } ∪ {u ← z, v ← f (f (a))}
= {x ← f (g(a)), y ← f (a), z ← z} ∪ {u ← z, v ← f (f (a))}
= {x ← f (g(a)), y ← f (a), z←z} ∪ {u ← z, v ← f (f (a))}
= {x ← f (g(a)), y ← f (a), u ← z, v ← f (f (a))}.
▲
• Negaţii de predicate binare: x ⋪ y este o prescurtare a lui ¬(x ◁ y), unde ◁ este un
predicat binar.
• Asociativitarea conectorilor logici: P ∧ Q ∧ R este o prescurtare pentru P ∧ (Q ∧ R),
P ∨ Q ∨ R este o prescurtare pentru P ∨ (Q ∨ R), P ⇒ Q ⇒ R este o prescurtare pentru
P ⇒ (Q ⇒ R).
• Dacă . . ., atunci . . . { altfel . . . }: (if . . . then . . . else): „Dacă P , atunci Q” este o
prescurtare pentru P ⇒ Q, „DacăP , atunci Q, altfel R” este o prescurtare pentru
(P ⇒ Q) ∧ (¬P ⇒ R).
69
• Conjuncţii de formule: P, Q, R este o prescurtare pentru P ∧ Q ∧ R.
• Conjuncţii de formule atomice conţinând predicate binare:
– x < y < z < 1 este o prescurtare pentru x < y ∧ y < z ∧ z < 1,
– x, y, z < 1 este o prescurtare pentru x < 1 ∧ y < 1 ∧ z < 1.
• Formule cuantificate:
– ∀ A ( ∃ A) este o prescurtare pentru ∀∀A (∃∃A),
x,y x,y xy xy
– ∀ A este o prescurtare pentru ∀(P (x) ⇒ A),
P (x) x
70
7. Semantica logicii predicatelor
Limbajul logicii predicatelor (de ordinul întâi) este universal, în sensul în care poate exprima
„orice”. Prin urmare, va putea descrie orice univers. Vom defini în continuare modul în care înţe-
lesul expresiilor din limbaje de ordinul întâi poate fi determinat. Vom vedea care sunt problemele
legate de înţelesul unor astfel de expresii.
71
Definiţie 7.2 (Asignare de valori variabilelor). Fie I o interpretare. O asignare de valori
pentru variabile sub interpretarea I este o mapare
σI : V → D
■
Exemplul 7.2. Să considerăm interpretările I1 , I2 , I3 din Exemplul 7.1. Pentru următorii
termenii ((x ⊙ y) ⊙ a), (y ⊙ (a ⊙ b)):
• Considerăm υσI1 (x) = ′ 2′ , υσI1 (y) = ′ 4′ şi calculăm
Observaţi că am trecut complet în domeniul descris de limbaj, deci avem valoarea căutată.
Mai mult, în respectivul domeniu ′ +′ (′ +′ (′ 2′ , ′ 4′ ), ′ 0′ ) = ′ 6′ . Dar atenţie, în momentul
acesta nu mai operăm cu simboluri, ci direct în domeniul N cu numere naturale.
Folosim aici sintaxa relaxată pentru termeni, cu ⊙ simbol funcţional infix.
• Considerăm υσI3 (y) = '„”' (şirul de caractere vid) şi calculăm:
72
▲
Intuitiv, o formulă descrie o situaţie, valoarea unei formule spune daca situaţia are loc (este
„adevărată”) sau nu (este „falsă”).
Definiţie 7.4 (Domeniu de valori de adevăr). Alegem două valori distincte A, F (adevărat,
fals). Mulţimea de valori de adevăr este mulţimea {A, F}. Acest domeniu se mai numeşte
domeniu boolean. ■
Definiţie 7.5 (Funcţii de adevăr). Funcţiile de adevăr pentru conectorii logici sunt
definite în modul următor:
B¬ : {A, F} → {A, F}
B∧ , B∨ , B⇒ , B⇔ : {A, F} × {A, F} → {A, F}
■
Definiţie 7.6 (Valoarea formulelor). Fie I o interpretare şi σI o asignare de valori variabilelor.
Atunci valoarea de adevăr a unei formule, sub intepretarea I şi asignarea de valori
variabilelor σI , υσI este definită în modul următor:
• Dacă P/n ∈ P şi t1 , . . . , tn sunt termeni, atunci
υσI (P (t1 , . . . , tn )) = I(P )(υσI (t1 ), . . . , υσI (tn )).
73
• Considerăm υσI3 (x) = '„ceva”' şi calculăm:
▲
Observaţie (Semantica înseamnă rezolvare directă). Definiţiile 7.3 şi 7.6 „traduc” expresiile
din logica predicatelor (termeni, respectiv formule) în domeniul descris de limbaj. A determina
valoarea sub interpretare şi asignare de valori înseamnă a rezolva direct probleme în domeniul
descris.
O problemă apare la formulele cuantificate. Pentru ca formula universală să fie adevărată,
trebuie să verificăm că formula funcţionează pentru toate elementele din domeniu. La fel, pentru
ca formula existenţială să fie adevărată, trebuie sa verificăm elementele domeniului până când
găsim unul care face formula adevărată. În cazul în care domeniul este mare (infinit), acest lucru
nu este posibil. Aşadar, rezolvarea directă a problemelor, aşa cum este descrisă de semantică
se loveşte de un „zid infinit”. După cum vom vedea mai jos, lucrurile stau şi mai rău, când
considerăm întrebări tipice pe care le putem pune despre formule. ▲
P : ∃y(x = 2y).
74
– t este substituibil pentru x în (F □G) dacă şi numai dacă t este substituibil pentru x
în F şi în G, unde □ ∈ {∧, ∨, ⇒, ⇔}.
• Dacă x, y ∈ V, F este o formulă şi Q ∈ {∀, ∃}, atunci
– t este substituibil pentru x în QxF ,
– t este substituibil pentru x în QyF dacă şi numai dacă y nu este liberă în t şi t este
substituibili pentru x în F .
■
Substituţia nu este o problemă în termeni, pentru că aşa cum i-am definit, termenii conţin
numai variabile libere.
75
■
Definiţie 7.11 (Consecinţă logică în logica predicatelor). Fie F1 , . . . , Fn , G ∈ F(L, V).
Formula G este consecinţă logică a formulelor F1 , . . . , Fn , şi scriem F1 , . . . , Fn ⊨ G, dacă
şi numai dacă, pentru orice domeniu, D, orice interpretare I a limbajului L în D, orice asignare
de valori variabilelor σI , dacă
76
8. Raţionament în logica predicatelor
Vestea bună este că raţionamentul, aşa cum l-am descris în capitolul introductiv, este posibil
în logica predicatelor. În acest capitol vom introduce un sistem de raţionament pentru logica
predicatelor. Vom descrie modul în care se organizează raţionamentul, cunoştinţele, vom intro-
duce regulile de raţionament universale pentru logica predicatelor, şi apoi vom investiga reguli
speciale de raţionament (care funcţionează doar în anumite condiţii).
KB |= G iff KB ⊢ G.
• We will present here informally a particular calculus for reasoning in first order logic.
77
• A proof describes the necessary inference steps that transform the initial proof situation
into (one or more) trivial proof situations.
• (AND-OR) trees can be used to represent proofs.
∀xA[x]
• Prove ∀xA[x]:
– For proving ∀xA[x],
– show A[x0 ], where x0 is a new constant (which did not occur so far).
– Announcement in proofs:
“Let x0 be arbitrary but fixed (constant). We show A[x0 ].”
• Use ∀xA[x]:
– If ∀xA[x] is known,
– then one may conclude A[t] where t is an arbitrary term.
– Announcement in proofs: “Since we know that ∀xA[x], we know that, in particular,
A[t]”.
– Note that the choice of t is probably going to be suggested by the goal statement.
78
∃xA[x]
• Prove ∃xA[x]:
– For proving ∃xA[x],
– try to find a term t for which A[t] can be shown,
– Finding such a term t is many times nontrivial step, which needs creativity.
• Use ∃xA[x]:
– If ∃xA[x] is known, and B has to be proved,
– one may assume A[x0 ] where x0 is a new constant, and try to prove B.
– Announcement in proofs: “Since we know that ∃xA[x], let x0 be such that A[x0 ].
We have to prove B”.
A∧B
• Prove A ∧ B:
– For proving A ∧ B
– prove A and
– prove B.
• Use A ∧ B:
– If A ∧ B is known, then
– A is known and
– B is known.
A∨B
• Prove A ∨ B:
– For proving A ∨ B
– assume ¬A and
– prove B
– (or assume ¬B and
– prove A).
• Use A ∨ B:
– If A ∨ B is known, and C has to be proved then
– assume A and prove C and
– assume B and prove C.
– Announcement in proofs: “We prove by cases: Case A: We prove C. Case B: We
prove C.”
79
A⇒B
• Prove A ⇒ B:
– For proving A ⇒ B
– assume A and
– prove B.
• Use A ⇒ B:
– If B has to be proved
– then look for A ⇒ B (or something that “matches” it) and
– prove A.
– Announcement in proofs: “To prove B, since we know A ⇒ B, it suffices to prove
A”.
Also (“modus ponens”). . .
– If A and A ⇒ B are known,
– then B can be added to the knowledge.
– Announcement in proofs: “From A ⇒ B and A, by modus ponens, we get B.”
A⇔B
• Prove A ⇔ B:
– To prove A ⇔ B,
– assume A and
– prove B, then
– assume B and
– prove A.
• Use A ⇔ B:
– If C[A] has to be proved, and
– A ⇔ B is known, then
– try to prove C[B].
¬A
• Prove ¬A:
– To prove ¬A,
– assume A,
– and derive a contradiction, i.e.
– prove ¬C,
– where C is in the knowledge base.
80
P (t1 , . . . , tn )
• Prove P (t1 , . . . , tn ):
– To prove P (t1 , . . . , tn )
– look for an “explicit definition” ∀ P (x1 , . . . , xn ) ⇔ A[x1 , . . . , xn ]
x1 ,...,xn
– and prove A[t1 , . . . , tn ].
• Use P (t1 , . . . , tn ):
– If P (t1 , . . . , tn ) is known and the definition:
– ∀ P (x1 , . . . , xn ) ⇔ A[x1 , . . . , xn ] is in the knowledge base,
x1 ,...,xn
– then A[t1 , . . . , tn ] can be added to the knowledge base.
A[f (t1 , . . . , tn )]
• Prove A[f (t1 , . . . , tn )]:
– To prove A[f (t1 , . . . , tn )]
(a) “explicit definition” case:
∗ where the “explicit definition” of f :
81
8.1.4. Definitions in Predicate Logic
• Definitions allow the introduction of new concepts in terms of existing ones.
• They provide a facility for concise formalization of mathematics, but they are not essential,
i.e. they can be eliminated.
• However, they allow formulae to be shorter,
and help structuring the knowledge.
• Practical mathematics would hardly be conceivable without this facility.
Types of definitions
• (Explicit) definitions of predicate symbols. See Example 13.
• Explicit definitions of function symbols.
!
a11 a12
Example 14 (The determinant of a 2x2 matrix.). Let A = . Then |A| =
a21 a22
a11 a22 − a12 a21 .
• Implicit non–unique definitions of function symbols.
√
Example 15 (Implicit non–unique definition of ). The squareroot function can be defined
(e.g. in the complex numbers) by:
√
∀ x = such a y that y 2 = x.
x
√
Note that this (such a . . . that . . .) is syntactic sugar for: ∀ x = y ⇒ y2 = x .
x,y
82
Properties of definitions
• Definitions:
– are axioms,
– can always be “eliminated”,
– do not bring anything new to the power of the theory (conservative extensions),
– do not introduce contradictions.
• Correct definitions (watchlist):
– no extra variables in the definiens.
is-nice-sum(x + y) ⇔ x = 2y
(x, y) = (x1 , y1 ) ⇒ (x = x1 ∧ y = y1 ).
8.2. Theories
Structure of a Theory
• A (mathematical) theory T is described by its:
– language (symbols): LT = ⟨FT , PT , CT ⟩, i.e. its function, predicate and constant
symbols respectively. Note that, for any theory, id, = (the identity function and the
equality) can always be included in the language;
– knowledge base KB T , which contains facts (formulae over the language), i.e. axioms
and propositions (theorems, lemmata, corollaries, etc.).
– inference rules, IRT . The rules for predicate logic, as well as rules for equality
proving (rewriting) may be included in any theory. Additional rules may be included
(depending of the nature of objects in the theory), which make the theory more
powerful, in the sense that more facts may be proved using these additional rules.
These cannot be applied outside of the theory.
83
– constants, CPO = {} (no constants either).
• the knowledge base KB P O :
– Axioms describing strict partial orderings:
∀ (p(x, y) ∧ p(y, z) ⇒ p(x, z)),
x,y,z (transitivity)
∀¬p(x, x). (irref lexivity)
x
• The inference mechanism IRP O consists of the inference rules of predicate logic.
Development of a Theory
• Theories are not static, but are developed:
• from initial descriptions (such as in the previous example), where the knowledge base
contains axioms,
• by adding new components:
– new formulae to the knowledge base, i.e. consequences of the existing formulae,
proved using the mechanisms available,
– new symbols with their corresponding definitions (defining axioms, which are added
to the knowledge base),
– new inference rules, a very subtle point - lifting knowledge to the level of inference,
as these have to be proved correct
• Questions that arise in the development of theories include:
– how much of the theory is relevant? (not always all knowledge is needed, or even
useful)
– ...
8.2.1. Equality
• The binary predicate = (equality) plays a very important role in predicate logic: many
theories contain equality.
• The language symbols (vocabulary) of a theory of equality (or containing equality) consists
of = and an unspecified number of function, predicate and constant symbols.
• Any theory containing equality includes the axioms for equality:
∀ (x = y ∧ y = z ⇒ x = z) , (transitivity)
x,y,z
∀ (x = y ⇒ y = x) . (symmetry)
x,y
∀(x = x) (ref lexivity)
x
Now let f be any function symbol of arity k, p be any predicate symbol of arity l:
= y) ⇒
(x
∀ f (z1 , . . . , zi−1 , x, zi+1 , . . . , zk ) =
x, y, z1 , . . . , zi−1 , f (z1 , . . . , zi−1 , y, zi+1 , . . . , zk )
zi+1 , . . . , zk
(functional substitutivity)
84
i.e. functions applied to arguments that are equal (x and y) yield equal results.
• (functional substitutivity) is in fact an axiom scheme, that can be applied to any functions
of any arity.
• The corresponding proof technique is equality rewriting, i.e. chains of equalities from a
complex (in some measure) to a simpler (simplest) term.
• E.g. two terms are equal if they can be rewriten to the same simpler (simplest) term.
(x = y) ⇒
∀ p(z1 , . . . , zi−1 , x, zi+1 , . . . , zl ) ⇔
x, y, z1 , . . . , zi−1 , p(z1 , . . . , zi−1 , y, zi+1 , . . . , zk )
zi+1 , . . . , zl
(predicate substitutivity)
i.e. predicates applied to arguments that are equal (x and y) are equivalent.
• (predicate substitutivity) is in fact an axiom scheme, that can be applied to any predicates
of any arity.
• The corresponding proof technique is equivalence rewriting, i.e. chains of equivalences.
• E.g. two formulae are equivalent if there is a chain of equivalences between them.
8.3. Induction
• Induction is an inference rule used to prove (universal) properties of objects in domains
that are manageable,
• i.e. every object in the domain can be “constructed” in a finitary way from “basic” objects,
“smaller” objects,
• e.g. apply the successor function to a natural number to get the next one, and this is the
only way to construct natural numbers (they are all successors of 0),
• all concepts in such (i.e. inductive) theories will be defined in a way which reflects the
structure of the objects (inductive definitions, “recursive”),
• universal properties of inductive objects can be proved by corresponding induction infe-
rence rules, which again reflect the structure of the objects in the domain,
• induction is in general essential to prove in inductive theories, i.e. induction is stronger
than predicate logic,
• examples of inductive domains: natural numbers, strings, lists, trees, sets, bags, formulae,
proofs.
85
The theory of natural numbers
Example 21 (The theory of natural numbers N).
• Natural numbers start with 0, and any other natural number is obtained from 0 by suc-
cessive applications of the successor function +
• the symbols in the language:
– function symbols, FN = {+ } the unary successor function,
– predicate symbols,PN = {is-nat, =}, a unary predicate that detects natural numbers,
and equality, respectively
– constants, CN = {0}.
• the knowledge base KB N :
– generation axioms:
– uniqueness axioms:
∀ x+ ̸= 0 (zero)
is-nat(x)
∀ (x = y ) ⇔ (x = y) (succ.)
+ +
is-nat(x),is-nat(y)
• the inference mechanism IRN consists of the inference rules of predicate logic and rewri-
ting.
86
Inductive definitions
• In inductive domains, definitions of new concepts will reflect the inductive structure of
objects:
– the notion has to be defined for (all) the simplest objects (the base case(s)).
– the notion has to be defined for the complex objects, and it will be defined using the
notion for the simpler objects, i.e. recursion will be used.
Notice that for the simplest object (0) the value was given directly, and for a compound
object (y + ), it was given in terms of the notion (+) for the simpler object (y).
87
• Here is a definition of a new concept (predicate symbol ≤):
∀ x≤0⇔x=0 (zero)
is-nat(x)
∀ x ≤ y ⇔ (x = y ∨ x ≤ y) (succ.)
+ +
is-nat(x),is-nat(y)
88
Bibliografie
[BA12] M. Ben-Ari. Mathematical Logic for Computer Science. Springer London, 2012.
[Bou04] Nicolas Bourbaki. Description of Formal Mathematics. Springer, 2004.
[Buc91] Bruno Buchberger. Logic for computer science. Unpublished lecture notes, Copyright
Bruno Buchberger, 1991.
[Chu36] Alonzo Church. An unsolvable problem of elementary number theory. American
Journal of Mathematics, 58(2):345–363, 1936.
[Göd30] Kurt Gödel. Die vollständigkeit der axiome des logischen funktionenkalküls. Monat-
shefte für Mathematik, 1(37):349–360, 1930.
[Göd31] Kurt Gödel. Über formal unentscheidbare sätze der principia mathematica und ve-
rwandter systeme, I. Monatshefte für Mathematik und Physik, (38):173–198, 1931.
[H.G03] Jean H.Gallier. Logic for Computer Science, Foundations of Automated Theorem
Proving. Copyright Jean H. Gallier, 2003.
[KLRV49] E. L. Kaufman, M. W. Lord, T. W. Reese, and J. Volkmann. The discrimination of
visual number. The American Journal of Psychology, 62(4):498–525, 1949.
[KT06] Jon Kleinberg and Eva Tardos. Algorithm Design. Pearson International, Inc., 2006.
[Rus03] B. Russell. The Principles of Mathematics. Number vol. 1 in The Principles of
Mathematics. University Press, 1903.
[Sha38] Claude Elwood Shannon. A symbolic analysis of relay and switching circuits. Tran-
sactions of the American Institute of Electrical Engineers, 57, 1938.
[TA13] Andrew Tanenbaum and Todd Austin. Structured Computer Organization. Pearson,
6th edition edition, 2013.
[Tur37] Alan M Turing. On computable numbers, with an application to the entscheidungs-
problem. Proceedings of the London mathematical society, 2(1):230–265, 1937.
89