3. La logica delle proposizioni: sintassi

annuncio pubblicitario
3. La logica delle proposizioni: sintassi
Le tavole di verità riguardano il valore di verità delle proposizioni e quindi sono oggetti semantici. Notiamo
come ormai con le lettere A, B, … indichiamo indifferentemente sia proposizioni elementari che proposizioni
complesse: sono tutte caratterizzate solo dal poter essere vere o false.
Ma i discorsi fatti nei tutorial precedenti ci ricordano che noi cerchiamo una via sintattica alla ‘verità’. La
prima idea di base, di natura semantica, è che può accadere che una certa proposizione sia ‘conseguenza
logica’ di altre proposizioni (premesse), nel senso che è necessariamente vera se le premesse sono vere. La
seconda idea di base è che tale consequenzialità deve avere anche un fondamento sintattico, dipendere cioè
solo dalla forma sintattica delle premesse e della conseguenza. Ad esempio se le premesse sono: {se piove
allora prendo l’ombrello} e {piove} la conseguenza sarà: {prendo l’ombrello}, come esempio della
consequenzialità sintattica (nota sin dalla antichità come modus ponens): dalle premesse {se A allora B} e {A}
discende la conseguenza {B}, per qualsiasi coppia di proposizioni A e B .
Tale consequenzialità sintattica è la base di quello che in matematica costituisce la dimostrazione. Ed è
importante osservare che tale via sintattica, diversamente da quella semantica delle tavole di verità, non solo
ci mostra la verità di una proposizione ma ci fornisce anche l’argomentazione che colloca tale verità
all’interno di una teoria.
CHE COS’E’ LA DIMOSTRAZIONE?
La dimostrazione è la spina dorsale dell’esperienza matematica sino dai grandi matematici Greci. E’ il
laboratorio della matematica ma anche il paradigma di ogni argomentazione razionale.
La sua origine è probabilmente nella costruzione geometrica delle figure: una proprietà evidente dalla figura,
costruita a partire da certe ipotesi, diveniva il teorema, e la descrizione della costruzione della figura diveniva
la sua dimostrazione. Esempio classico può essere quella che si suppone possa essere stata la dimostrazione
originale del teorema di Pitagora, semplicemente la costruzione geometrica di figure all’interno di due
quadrati uguali, nella quale la semplice evidenza visuale fornisce il risultato: sottraendo dai due quadrati
uguali i quattro triangoli rettangoli bianchi uguali si ottengono a sinistra il quadrato costruito sull’ipotenusa
del triangolo bianco, a destra i due quadrati costruiti sui suoi cateti
La costruzione della figura venne poi trascritta da altri matematici greci successivi in un testo, le cui righe
dovevano essere connesse logicamente tra di loro a imitazione della consequenzialità dei passi della
costruzione.
In verità la dimostrazione in matematica non è mai stata (neanche oggi) una via puramente sintattica, la
dimostrazione andava ‘capita’, bisognava cioè coglierne il ‘significato’. Ma con la nascita della logica
matematica alla fine del XIX secolo nasce l’idea di una dimostrazione puramente sintattica, la cui correttezza
doveva rispondere a regole puramente formali. La logica di Gottlob Frege introduceva una definizione
puramente sintattica di ‘dimostrazione’.
Una dimostrazione è una sequenza finita di formule ciascuna delle quali o è una premessa (assioma) o si
ricava dalle formule precedenti tramite regole di inferenza. L’ultima formula è detta il teorema.
Nell’esempio dalle premesse 1 e 2 la
regola 1 deduce la formula 4, dalla
premessa 3 e dalla formula 4 la regola 2
deduce la formula 5, e così via sino ad
ottenere come n-esima riga il teorema
da dimostrare.
1. premessa
2. premessa
regola1
3. premessa
4. formula
regola2
5. formula
n. teorema
In questa definizione parliamo di premesse. Che cosa sono? Sono formule che assumiamo per vere, e
all’interno di una teoria (ad esempio la geometria) useremo il termine assioma per intendere le premesse
{per due punti passa una e una sola retta} che la caratterizzano. Alcune premesse non valgono per una
scienza particolare ma in generale nella logica, ed hanno il carattere di tautologie, come il principio di non
contraddizione ed il terzo escluso.
Le regole di inferenza rispondono invece ad un’altra esigenza espressa nel tutorial precedente: che oltre ad
una idea statica di verità, se ne debba aggiungere una dinamica che dia conto della nostra capacità di
ragionare manipolando segni, di “ragionare senza comprendere”. A questo rispondono le regole di inferenza:
sono regole che, date certe formule (in genere una o due) con certe caratteristiche, ci permettono di
‘dedurne’ un’altra. La più celebre regole di inferenza è il cosiddetto modus ponens, che si descrive come
P
PQ
Q
Cioè se sappiamo che {il cielo è azzurro} e che {se il cielo è azzurro allora non piove}, possiamo dedurne che
{non piove} . Certo è banale, e fino all’ottocento le inferenze erano lasciate all’intuizione, ma nella logica
matematica l’inferenza è una forma di ragionamento puramente sintattica, che può essere realizzata anche
da chi non sa che cosa sia il cielo o la pioggia, ad esempio da un computer.
Infatti questa nostra definizione di dimostrazione permette anche ad un computer, con un semplice
programma, di dire se una sequenza di formule è una dimostrazione. In altri termini, quasi a smentire i nostri
vecchi professori di matematica, per scoprire se una dimostrazione è corretta non c’è bisogno di ‘capirla’,
basta verificarne meccanicamente la correttezza , cioè la corrispondenza con la definizione che ne abbiamo
dato.
In realtà le dimostrazioni vanno ‘capite’, poiché una dimostrazione puramente logica e quindi verificabile
meccanicamente sarebbe mostruosamente lunga, e nessun matematico infatti fa dimostrazioni puramente
logiche. Ci provarono Russell e Whitehead un secolo fa con i loro Principia Mathematica, ma qualcuno
obbiettò: “se servono 27 passaggi per dimostrare che 1 è un numero, quanti passaggi servono per dimostrare
qualcosa di interessante?”. Quindi in matematica dobbiamo ‘capire’ le dimostrazioni ma quando lavoriamo
col computer dobbiamo sapere che la correttezza di una dimostrazione si può verificare meccanicamente con
un programma.
E’ importante sottolineare che in questa concezione la dimostrazione è un oggetto nel contempo formale
(fatto di formule che sono oggetti puramente simbolici) e concreto (in quanto le formule possono essere
manipolate come oggetti).
Notiamo che la dimostrazione, come il connettivo , nel linguaggio comune, appare nella forma {se….
allora…}, ma ricordiamo che il connettivo rivela una connessione tra i soli valori di verità di antecedente e
conseguente, e per questa ragione possono apparire vere le proposizioni del tutto irragionevoli viste
precedentemente; mentre la dimostrazione (di natura schiettamente sintattica)richiede la costruzione di una
argomentazione che leghi premesse e teorema tramite i passi permessi dalle regole di inferenza. A tal fine
useremo, per dire che T può essere dimostrato dalle formule A1 , A2 , …. , An, la scrittura A1 , A2 , …. , An  T ,
laddove in questa terminologia le virgole si possono considerare delle congiunzioni: questo segue dalle regole
per -introduzione ed eliminazione. Useremo il simbolo  per indicare invece la mancanza di una
dimostrazione. Supporremo nel seguito che le Premesse siano in numero finito, e che quindi Premesse si
possa considerare tanto l’elenco delle premesse quando la loro congiunzione.
La definizione sintattica di dimostrazione richiede quindi la costruzione di una procedura che partendo dalle
premesse e utilizzando solo le regole di inferenza costruisca un teorema.
Il sistema delle regole di inferenza determina un calcolo logico, e la dimostrazione è un esempio di algoritmo
particolarmente complesso, in quanto pur essendo basato su regole di inferenza non ambigue, non sappiamo
con certezza quali e quando applicarle.
Spesso le premesse le chiameremo ‘assiomi’, quando vogliamo sottolineare che li riteniamo ‘veri’, ma questa
appare più che altro una esigenza semantica, mentre la nostra idea di dimostrazione è quella di un metodo
sintattico che porti a proposizioni ‘vere’ ogni qual volta le ‘premesse' sono proposizioni ‘vere’. In altri termini
nella dimostrazione consideriamo gli assiomi semplicemente come premesse che consideriamo vere, e quindi
anche semplici ‘fatti’ in una situazione reale dei quali vogliamo studiare le conseguenze possono essere
considerati come premesse, e posso considerare ‘vere’ proposizioni che descrivono fatti concreti nella stessa
situazione. Un calcolo in cui tutto ciò che è dimostrato è vero si dice corretto. Tuttavia poiché la nostra idea di
‘verità’ è un po’ più ambiziosa, spesso invece di ‘vero’ in una certa situazione useremo il termine ‘soddisfatto’
in una certa ‘interpretazione’. Così ad esempio <0 è il numero più piccolo> è una proposizione soddisfatta se
stiamo parlando dei numeri interi, non soddisfatta se stiamo parlando dei numeri relativi. Parleremo più
spesso di ‘premesse’ che di ‘assiomi’ poiché, parlando di sintassi, il concetto di ‘verità’ non ha più un ruolo
essenziale, ci interessa solo la procedura di deduzione, a prescindere dal valore di verità: l’unica cosa
importante è che, quando le premesse siano vere, sia tale anche il teorema.
Ma che cosa garantisce che un calcolo logico sia ‘corretto’? Occorre che i teoremi dimostrati siano veri (o
soddisfatti) almeno quando sono veri (o soddisfatti) gli assiomi. Siccome sono le regole di inferenza che
permettono di passare dagli assiomi ai teoremi , è necessario che le regole ‘conservino la verità’ (siano cioè
truth preserving), cioè che le conseguenze siano vere ogni qual volta le premesse sono vere, e diremo in tal
caso le regole ‘corrette’. Ad esempio per dimostrare la correttezza del modus ponens consideriamo la tavola
di verità della :
P Q
P Q
0
0
1
0
1
1
1
0
0
1
1
1
Le premesse del la regola sono P e P Q. Quando sono entrambe vere? Solo nella quarta interpretazione, ed
in tale caso anche Q è vera, e quindi il modus ponens è una regola corretta.
Un modo equivalente di dimostrarlo sarebbe mostrare che (P  (P Q) )  Q è una tautologia (verifica). In
generale una regola PREMESSE è corretta se e solo se è una tautologia la formula:
CONSEGUENZA
PREMESSE  CONSEGUENZA
Ed ovviamente un calcolo logico deve in definitiva formalizzare quello che hanno sempre fatto i
matematici nelle loro ‘dimostrazioni’. A tal fine sono stati proposti diversi ‘calcoli’ logici, spesso molto
artificiosi, il più semplice e chiaro probabilmente è la cosiddetta deduzione naturale.
LA DEDUZIONE NATURALE
Il punto di partenza è l’osservazione che un processo algoritmico che trasformi formule in formule, essendo
le lettere proposizionali non interpretate e quindi prive di un significato, deve lavorare sui connettivi, di fatto
introdurli o eliminarli. La deduzione naturale è quindi basata su regole di inferenza che introducono o
eliminano i connettivi, cercando di imitare il modo con cui questo viene fatto in matematica.
Così per introdurre l’ fra due proposizioni occorre averle già dimostrare singolarmente (se ho dimostrato
che <2 è un numero pari> e che <3 è un numero dispari> , posso dedurre che <2 è un numero pari e 3 è un
numero dispari>), e viceversa, data una congiunzione tra due proposizioni, entrambe si possono dedurre
isolatamente; abbiamo così le prime due regole per l’introduzione o l’eliminazione dell’:
AB
AB
A
B
-eliminazione
A
B
-introduzione
AB
Analogamente per introdurre l’ tra due proposizioni ci basta averne già dimostrata almeno una :
A
B
v-introduzione
AB
AB
ma per eliminarlo e ottenere una delle due proposizioni disgiunte occorre aver dimostrato la negazione
dell’altra proposizione (dalla proposizione <piove o tira vento>, per dedurre che <tira vento> devo anche aver
dimostrato che <non piove>):
AB
A
AB
B
v-eliminazione
B
A
L’eliminazione dell’ è semplicemente il nostro modus ponens.
La correttezza di queste regole si ricava dalle tavole di verità.
Probabilmente la deduzione naturale è il più ‘naturale’ dei calcoli logici, nel senso che ‘mima’ abbastanza
bene il nostro modo di costruire teoremi. Il suo uso pratico in generale riflette il modo ‘opportunistico’ con
cui anche noi operiamo: date le premesse ed il teorema da dimostrare, noi procediamo sia dalle premesse,
vedendo che cosa da esse possiamo dedurre, sia dal teorema finale chiedendoci da quali formule potremmo
ricavarlo. Se i due processi si incontrano ‘a metà strada’ otteniamo
la dimostrazione. Ad esempio: A  (B C), A  B  C.
A  (B C)
AB
Dobbiamo ‘riempire’ la dimostrazione:
C
Notiamo che C si può ricavare solo da B C , ma a tal fine serve
anche B. Come ricavarlo dalle premesse? Tra le premesse
c’è però A  B, da cui possiamo ricavarlo
A  (B C)
-elim
AB
B
-elim
 -elim
B C
C
Osserva: l’ nelle premesse può essere semplicemente sostituito da due premesse. Avremmo allora
equivalentemente: A, (B C), B  C
Osserva: non ti sembra che la A nelle ipotesi fosse del tutto inutile? In realtà abbiamo solo usato il modus
ponens.
Ma esistono regole di inferenza più complesse, le quali richiedono una argomentazione logica più articolata:
sono le sotto-derivazioni. Le sottoderivazioni sono dimostrazioni che hanno una premessa ‘locale’ detta
assunzione, possono importare formule dalla derivazione principale, e si possono chiudere quando si
verificano certe condizioni e in tal caso si può esportare una formula nella derivazione principale. Sono un po’
come le subroutines in un programma che eseguono un algoritmo importando risultati già ottenuti e poi
esportano il loro risultato nel programma principale.
La scriveremo nella dimostrazione con un rettangolo, aperto da un’assunzione, nel quale entrano degli
imports dalla dimostrazione principale ed esce un export.
A assunzione
L’introduzione dell’ richiede una sottoderivazione
import
che ci ricorda il ‘lemma’ nelle dimostrazioni matematiche,
B
AB
export
cioè una sotto-derivazione che dall’antecedente deduce il conseguente, utilizzando (‘importando’) risultati
già ottenuti nella dimostrazione principale ed esportando AB.
Da notare che in questa introduzione dell’  il “se…allora…” statico del connettivo viene ricavato dal “se….
allora….” dinamico della deduzione.
Le sottoderivazioni sono quindi in generale ‘dimostrazioni ausiliarie’ che possono essere usate da una
dimostrazione, nelle quali possiamo ‘assumere’ certe ipotesi e ‘importare’ risultati già ottenuti nella
dimostrazione e dalle quali alla fine possiamo esportare un risultato nella dimostrazione.
E la coppia di regole, il modus ponens come -eliminazione e la sottoderivazione della -introduzione, ci
fanno notare che derivare T da A equivale a dimostrare AT, e che, assumendo A, da AT si ottiene T.
Otteniamo quindi la interscambiabilità tra l’implicazione statica data dal connettivo  e quella dinamica data
dalla relazione di dimostrabilità . E’ quanto enunciato dal
TEOREMA DI DEDUZIONE:
“A1 , A2 , …. , An  T se e solo se, qualunque sia i, A1 , A2 , …. , Ai-1, Ai+1 ,…. An  Ai T”
E’ facile rendere rigorosa la nostra osservazione della interscambiabilità del connettivo e della
argomentazione dimostrativa. Supponiamo infatti di avere una dimostrazione di T dalle premesse A1 , A2 , ….
, An Notiamo che il nostro scopo è costruire una dimostrazione di Ai T, per un generico Ai . Dovremo quindi
effettuare una -introduzione con assunzione Ai e conclusione T. Prendiamo Ai considerandolo come ultima
premessa nella dimostrazione di partenza; prendiamo tutta la dimostrazione da Ai a T e consideriamola come
una sottoderivazione in cui Ai da premessa viene trasformato in un’assunzione. In tal caso questa
sottoderivazione funziona come un lemma che da Ai deriva T, e ci permette così di dimostrare AiT per introduzione, dalle premesse precedenti meno Ai
A1
A1
A1
A1
A2
A2
A2
A2
indica il posto vuoto lasciato da Ai
An
An
Ai
An
Ai
T
An
Ai
T
T
T
Ai T
Viceversa supponiamo di avere una dimostrazione di Ai T partendo dalle premesse A1 , A2 , …. , Ai-1, Ai+1 ,….
An. Per ottenere una dimostrazione di T dobbiamo eliminare l’. Se aggiungiamo alle premesse Ai : possiamo
da esso e da Ai T ottenere T tramite -eliminazione.
lemma
A1
Ai-1
Ai+1
An
Ai T
A1
A1
Ai-1
A2
Ai+1
An
An
Ai T
Ai
T
T
Anche qui la interscambiabilità tra implicazione e derivazione ha come conseguenza il fatto che c’è una
corrispondenza tra regole di inferenza e deduzioni, cioè tra
la tautologia PREMESSE  CONSEGUENZA,
(derivata)
PREMESSE
la dimostrazione PREMESSE  CONSEGUENZA
e la regola
CONSEGUENZA
Così ogni teorema può essere usato come regola derivata per nuovi teoremi.
Sono tutti e tre i casi enunciati sintattici, ma richiedono semanticamente che se le Premesse sono vere tale
deve essere anche la Conseguenza: quando questo accade si dice che CONSEGUENZA è conseguenza logica
delle PREMESSE, e si scrive PREMESSE  CONSEGUENZA; altrimenti l’implicazione è falsa, la dimostrazione
impossibile e la regola non corretta. Nelle tavole di verità questo significa che le interpretazioni in cui le
PREMESSE sono vere, è tale anche la CONSEGUENZA, e questo ci fornirà un algoritmo per decidere se una
formula è un teorema derivabile da certe premesse o no.
Un secondo tipo di sottoderivazione viene usato per l’introduzione e l’eliminazione del , ed è un’altra
tecnica classica della matematica: la dimostrazione per assurdo. Anche qui, per dimostrare A, apriamo una
sottoderivazione: assumiamo A , e possiamo uscire esportando semplicemente A se riusciamo a derivare
una contraddizione, ad esempio B B. Viceversa se vogliamo dimostrare A .
.
A
assunz.
A
assunz.
Import
import
B B assurdo
B B assurdo
A
A
Così il teorema P  Q, Q  P produce la regola, detta del modus tollens:
PQ
Q
(<se piove prendo l’ombrello>, ma <non prendo l’ombrello>, e quindi <non piove>)
P
Facile verificarlo con le tavole di verità, Dimostriamo invece il teorema:
PQ
Q
P
P  Q lemma usato per la introduzione del 
Q
Q
Q Q
P
Così da ogni equivalenza A  B derivano le due possibili regole
A
e
B
B
A
Se ogni teorema è una regola derivata corretta, allora esistono infinite possibili regole corrette. Quali
scegliere? Si scelgono quelle che appaiono più basilari sia perché più ovvie sia perché da esse si possono
ricavare tutti i teoremi. Ovviamente ogni regola può essere considerata come un teorema, e quindi la si
potrebbe voler dimostrare, ma questo porterebbe necessariamente ad un regresso infinito: occorre quindi
scegliere un set di regole di base indimostrate.
Notiamo infine che se le premesse fossero in numero infinito non potremmo scrivere né PREMESSE 
CONSEGUENZA né la regola associata, mentre potremmo ancora scrivere PREMESSE  CONSEGUENZA.
ESERCIZI
1. Dimostrare la regola di conversione: B C  C B
Mentre invece B C  B C e B C  C B (conversioni sbagliate, valide solo se
sostituiamo  con .
2. Dimostrare con le tavole di verità e con la deduzione naturale che vale per  la ‘proprietà transitiva’:
AB, BC  AC
LOGICA E MATEMATICA
Anche la dimostrazione appare una sorta di calcolo, l’esecuzione di un algoritmo, in quanto le regole
appaiono rigorose e ben definite. Purtuttavia lo è in un senso diverso dalle tavole di verità o dalla
applicazione di trasformazioni alle proposizioni. Le tavole di verità, come le operazioni, appaiono facilmente
meccanizzabili, l’ordine di applicazione delle regole fissato dalla struttura ad albero della proposizione, e la
procedura termina sempre rapidamente e col risultato esatto. Le trasformazioni di formule sono un po’ più
complesse, compare il problema del ‘controllo’ dell’ordine di esecuzione delle regole che può influire sul
tempo necessario per completare le procedure. La verifica che una dimostrazione è corretta è anch’essa,
come le tavole di verità, un algoritmo facilmente meccanizzabile e che fornisce sempre una rapida risposta in
tempo finito. La costruzione di una dimostrazione è invece un tipo di algoritmo molto più complesso, il
problema del controllo della esecuzione delle regole da applicare diventa decisivo, e richiede fantasia,
esperienza e abilità, può essere agevolato con euristiche ma non si può dare una procedura meccanica che in
ogni caso trovi la dimostrazione di un teorema se esiste o espliciti la sua non esistenza in caso contrario: è il
problema della decidibilità.
Quando si costruisce una teoria matematica si scelgono alcune proposizioni come premesse , dette Assiomi,
perché particolarmente evidenti o utili, e le conseguenze che ne derivano tramite l’uso iterato di regole
corrette sono dette Teoremi, e quindi la dimostrazione del teorema P è una deduzione del tipo:
Assiomi  Teorema.
Dobbiamo però sottolineare la distinzione tra due tipi di Assiomi (e quindi di teorie) :
a) quelli in cui gli assiomi non sono tutti tautologie: in tal caso i teoremi sono veri soltanto ogni qual
volta sono veri le premesse, e le teorie sono quelle matematiche
b) quelli in cui tutti gli assiomi sono tautologie: in tal caso i teoremi sono tutte tautologie. In logica tutte
le tautologie sono sempre considerate come possibili assiomi, e quindi non sempre vengono rese
esplicite tra le premesse, e in questo caso b) si può scrivere semplicemente  P . Questo è il caso di
un calcolo logico ‘puro’.
Quindi, tornando al caso a), tramite il teorema di deduzione da
le premesse sono in numero finito)
Assiomi  P
 Assiomi  P
Assiomi  P
si può ricavare (se
e quindi
è una tautologia.
Per esempio gli assiomi della geometria euclidea (Assiomi _Euclide)non sono tautologie e quindi siamo nel
caso a), e un teorema di geometria (Teorema _Pitagora) non è una tautologia, ma è vero ogni qual volta
sono validi gli assiomi di Euclide (Che succede infatti su una sfera come la Terra?). Tuttavia
Assiomi_Euclide  Teorema_Pitagora
è una tautologia.
In realtà, nell’oceano delle proposizioni le tautologie sono un’isola speciale, non solo perché sempre vere, e
perché da quelle tra di esse in forma di implicazione si possono ricavare le regole di inferenza derivate. Ma
anche perchè i teoremi che derivano da assiomi che non sono tautologie hanno (se le premesse sono in
numero finito) una loro ‘immagine’ (data da assiomiteorema) nell’isola delle tautologie, e quindi il caso a)
si può ricondurre al caso b).
A mano a mano che nella storia si è andata affermando la concezione formale della logica, si trovavano in
essa risultati sconcertanti; tra questi c’è il cosiddetto teorema dello Pseudo-Scoto (Duns Scoto era un logico
medievale, a cui era ascritto all’inizio un manoscritto medievale che si è rivelato invece opera di un altro
logico rimasto sconosciuto, chiamato dagli studiosi per questa ragione lo Pseudo-Scoto):
B, B  P .
In altre parole da una contraddizione si può dimostrare qualsiasi formula:
Per  introduzione
Per  eliminazione
B
premessa
B
premessa
BP
P
Potevamo ottenerlo anche tramite il teorema di deduzione dalla tautologia (B   B)  P
Dalla tautologia (P  P)  P possiamo ottenere analogamente il teorema (P  P)  P (la celebre
consequentia mirabilis). Ma che cosa c’è di ’mirabile’? C’è che un risultato non tautologico (P) viene
dimostrato praticamente senza nessuna premessa ad esso esterna, ma solo argomentando su P stesso.
Nella applicazione della logica alla matematica sono particolarmente importanti le distinzioni tra condizione
necessaria, condizione sufficiente e condizione necessaria e sufficiente.
A è ‘condizione necessaria’ per B si traduce in logica con B  A, ovvero  B  A, mentre A è ’condizione
sufficiente’ per B si traduce con A  B, ovvero  A  B, e infine A ‘condizione necessaria e sufficiente’ per B
si traduce con  A  B. Soprattutto la prima può trarre in inganno, poiché sembra strano che pur essendo A
una condizione per B, risulti come conseguente di B nella implicazione. Il paradosso nasce da fatto che
abbiamo una idea temporale o causale del “se… allora…”. Talora quindi invece di ‘condizione necessaria’ si
parla di ‘conseguenza necessaria’. Un esempio comunque chiarisce la questione: sappiamo che se un numero
è multiplo di 4 allora è pari, e quindi {essere multiplo di 4 è condizione sufficiente per essere pari} poiché
sapere che il numero è multiplo di 4 è sufficiente per garantirci che è pari, mentre {essere pari è condizione
necessaria per essere multiplo di 4} in quanto se il numero è multiplo di 4 necessariamente sarà pari.
CORRETTEZZA, COMPLETEZZA E DECIDIBILITA’ DI UN CALCOLO
La verità è quindi un concetto semantico, la dimostrazione invece è un concetto sintattico.
Ma coincidono? Cioè: ogni teorema è vero? E ogni verità è dimostrabile?
Nella geometria antica, come del resto oggi fino alle scuole superiori, non si fa differenza tra dimostrabilità e
verità. Eppure la differenza è evidente. Si consideri ad esempio la proposizione {in ogni triangolo la somma
degli angoli interni è due angoli retti}, la sua ‘dimostrazione’ stava nei vostri libri delle scuole medie, era una
paginetta di proposizioni concluse dalla frase ‘come volevasi dimostrare’, e dopo la quale non sussisteva
nessun dubbio sulla validità del teorema. Se volessimo stabilirne la ‘verità’ dovremmo invece prendere ‘tutti’
i triangoli (ritagliati sul cartoncino, costruiti tramite le punte dei campanili, delle montagne e anche usando
stelle e galassie) e calcolare su di essi la somma degli angoli interni. E poi magari non troveremmo sempre
180°, qualche volta potremmo trovare 179°59’59”. La verifica è sempre limitata e approssimata. Sono due
procedure del tutto diverse, la prima è unica anche se generale (su un triangolo ‘qualsiasi’) la seconda è
infinitaria su casi singoli (su ‘tutti’ i triangoli), la prima è assolutamente certa, la seconda è sempre
approssimata, etc. Questa è la differenza tra sintassi (la manipolazione delle proposizioni secondo regole
puramente formali e quindi indipendenti dal significato dei termini) e semantica (assegnazione del significato
ai singoli termini e conseguente costruzione del significato globale della proposizione). Perché mai i loro
risultati dovrebbero coincidere necessariamente? Tuttavia nella matematica elementare non si sottolinea
questa distinzione: ciò che è dimostrabile è vero e ciò che è vero è dimostrabile, eccezion fatta per assiomi e
postulati la cui verità deve essere del tutto evidente.
In logica consideriamo quindi due proprietà per un calcolo logico: la sua correttezza (ogni teorema è vero) e
la sua completezza (ogni verità è dimostrabile). Delle due la prima è facilmente dimostrabile per tutti i calcoli
logici. Dimostrare la correttezza è infatti banale se le nostre regole conservano le verità. Supponendo infatti
vere le premesse, ogni formula della dimostrazione o è una premessa (e quindi è vera) oppure è conseguenza
di una regola di inferenza. Ma se gli antecedenti delle regole sono veri devono essere vere sempre anche le
conseguenze, e quindi tutte le formule che appaiono nella dimostrazione sono vere (soddisfatte), almeno
quando le premesse sono vere (soddisfatte).
La completezza invece è più problematica. Infatti ci convinciamo facilmente che se un teorema l’abbiamo
dimostrato, allora è vero, ma non è assurdo pensare che ci possano essere verità non dimostrabili. Tuttavia in
passato questo non era considerato un vero problema. All’inizio perché la distinzione tra sintassi e semantica
non era neanche concepita, e poi perché si osservava che se ci fosse stata una verità non dimostrabile, allora
la si poteva aggiungere all’elenco delle premesse e così diventava dimostrabile: cioè se un calcolo era
incompleto era pur sempre ‘completabile’. Dagli esempi precedenti possiamo intuire che il calcolo delle
proposizioni è completo, oltre che corretto, anche se occorrerebbe dimostrarlo.
Un’altra proprietà importante, che abbiamo già citato, è la decidibilità, la quale discende immediatamente
dall’idea che la dimostrazione, essendo un fatto sintattico, si può verificare meccanicamente, dove
‘macchina’ è sinonimo di ‘algoritmo’. Ma se ho una formula T e gli assiomi, posso sempre meccanicamente
vedere se T è un teorema? Se si, il calcolo si dice decidibile: esiste cioè una ‘macchina’ (un algoritmo detto
General Thorem Prover) che in tempo finito ci dice se la formula è dimostrabile o no.
Assiomi  T
Assiomi, T
General Theorem Prover
Assiomi  T
Per il calcolo delle proposizioni esiste una tale macchina? La risposta è ovviamente si: è data dall’algoritmo
delle tavole di verità, che termina sempre dando la risposta: essendo il nostro calcolo completo, basta far
vedere che Assiomi  T è una tautologia, e a questo fine basta dimostrare che per tutte le interpretazioni
che soddisfano gli assiomi, anche T è soddisfatta. Curiosamente però in questo modo una questione
sintattica (l’esistenza della dimostrazione di T dagli assiomi) viene risolta semanticamente (T è soddisfatta in
tutti i modelli degli assiomi). Ad esempio ponendo Assiomi = { AB, AC } verifichiamo che Assiomi  BC, e
che Assiomi  C (Notiamo che un sistema di assiomi equivale alla congiunzione di essi).
A AB AC Assiomi BC C
A
B
C
0
0
0
1
0
1
0
0
1
0
0
1
1
0
1
0
1
0
0
1
0
1
1
1
1
1
1
0
1
1
1
1
1
1
1
0
1
0
0
0
1
0
0
0
1
1
0
1
0
1
1
1
1
0
1
1
0
0
1
0
0
1
1
1
1
1
0
1
1
1
1
0
Possiamo anche provare a dimostrare che Assiomi  BC, ma troveremo qualche difficoltà: la regola per la introduzione infatti non è molto utile. Una regola più utile risulta la regola derivata AB, AB  B .
Dimostrala (per assurdo).
Per logiche più potenti il general theorem prover si rivelerà solo semidecidibile, sarà cioè un algoritmo che si
ferma sempre quando la formula è un teorema, ma può non terminare se non lo è.
Assiomi  T
Assiomi, T
General Theorem Prover
Assiomi  T
Esercizio.
1. Prendiamo come Assiomi: {AB, CD, AC}.
Possiamo dimostrare per assurdo (usando le leggi di de Morgan): Assiomi  BD?
Possiamo dimostrare : Assiomi  BC ?
Verifica con le tavole di verità
Finora la semantica è stata per noi solo la teoria delle tavole di verità, ed abbiamo evitato di parlare di
‘significato’, così che la semantica è rimasta, difronte ad una idea abbastanza ben definita di sintassi,
qualcosa di molto vago. Ricordiamo che all’inizio abbiamo parlato di semantica ‘intensionale’ ed
‘estensionale’. Quella che abbiamo chiamato ‘intensione’ di una proposizione rimanda alla idea della ‘mente’,
difficile da trattare matematicamente. Ma più facile trattare matematicamente la semantica estensionale.
Infatti, sin dalle sue origini, la logica matematica ha avuto l’idea di un altro linguaggio oltre quello logico delle
proposizioni, delle proprietà, dei predicati: il linguaggio della ‘estensione’ che tra la fine dell’ottocento e
l’inizio del novecento è diventato il linguaggio della teoria degli insiemi.
PROBLEMI SVOLTI
1. Dimostrare con le tavole di verità e con la deduzione naturale il seguente teorema:
CB, A
 (AB)C .
Con le tavole di verità:
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C CB Premesse (AB) (AB)C .
0
1
0
1
0
1
1
0
1
1
0
0
0
1
0
1
1
0
1
1
0
1
1
0
1
1
1
1
0
1
0
0
0
1
0
1
1
1
1
1
In tutte le interpretazioni in cui le
Premesse sono vere è vera anche la
tesi, che è quindi conseguenza logica
delle Premesse ed è quindi anche un
teorema dimostrabile dalle Premesse.
Con la deduzione naturale:
CB
premessa
A
premessa
AB
assunzione in una sottoderivazione per la -introduzione
A
import
B
modus ponens dalle due righe precedenti
CB
import
C
or-eliminazione dalle due righe precedenti, chiusura della sottoderivazione
(AB)C
-introduzione
2. a) Dimostrare con la deduzione naturale che
BA, BC  AC
Suggerimenti: dimostrare per assurdo, usando anche regole derivate (modus tollens, de
Morgan)
b) verificalo tramite le tavole di verità.
a)
BA
BC
 (AC)
 A  C
A
C
BA
B
BC
B
B  B
premessa
premessa
assunzione
de Morgan
-eliminazione
-eliminazione
import
modus tollens
import
modus tollens
-introduzione, contraddizione
(AC)
Si può risolvere trasformando il teorema da dimostrare in AC e usando la -introduzione
b)
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
BA
0
0
1
1
1
1
1
1
BC
1
1
0
1
1
1
0
1
Premesse
0
0
0
1
1
1
0
1
AC
0
1
0
1
1
1
1
1
non si verifica mai che ci siano
premesse vere e formula da
dimostrare falsa
3. a) Dimostrare con le tavole di verità che non è vero che
A  B  (A  B)   A
A
0
0
1
1
B AB
0
1
1
1
0
0
1
1
(A  B)  A (A  B)   A
0
1
1
0
1
1
0
0
1
1
0
0

La quarta interpretazione dimostra la tesi in quanto la premessa è vera e la conseguenza
falsa.
AB
AB
assunzione
B
-eliminazione
A  B import
 A  B equival. riga preced.
A
-eliminazione
(A  B)   A -introduzione
b) Perché è sbagliata la derivazione al lato?
La -eliminazione non è corretta poiché
ci sarebbe stato bisogno di avere già dimostrato  B
4.
Dimostra che
e che
A(BC)
(AB)
A
A(BC) (AB)C
(AB)C  A(BC)
premessa
(AB)C
assunzione
premessa
A
assunzione
-eliminaz.
A(BC) import
B
assunzione
A
import
(BC)
-eliminaz.
(AB)
B
-eliminaz
(AB)C import
C
-eliminaz.
C
(AB)C
premessa
-introduz.
-introd.
-eliminaz.
(BC)
-introduz.
A(BC)
-introduz.
5. Dimostrare che la regola di inferenza
AB
AC
è corretta.
BC
Nei casi particolari in cui B oppure C sono contraddizioni come diventa la regola? La
conosci già? E se si, come viene chiamata?
La regola è corretta se trasforma verità in verità, e questo si verifica con le tavole di verità:
A B C A AB AC Premesse BC
0 0 0 1
0
1
0
0
0 0 1 1
0
1
0
1
0 1 0 1
1
1
1
1
0 1 1 1
1
1
1
1
1 0 0 0
1
0
0
0
1 0 1 0
1
1
1
1
1 1 0 0
1
0
0
1
1 1 1 0
1
1
1
1
Se B o C sono contraddizioni la regola diventa
In tutte le interpretazioni in cui le
premesse sono vere è vera anche
la conclusione e quindi la regola è
corretta
A
AC
C
oppure
A
AB
B
Regole della -eliminazione, oppure, riscrivendo AC come AC, modus ponens.
6. Dimostrare A(BC)  (AB) (AC)
a) Con le tavole di verità
ABC BC A(BC) AB AC (AB) (AC)
1
1
1
1
1
001
1
1
1
1
000 1
010 0
1
1
1
1
011 1
1
1
1
1
100 1
1
0
0
1
101 1
1
0
1
1
110 0
0
1
0
0
111 1
1
1
1
1
Non c’è nessuna interpretazione in cui la premessa sia vera e la formula da
dimostrare falsa, e quindi per completezza tale formula è dimostrabile
dalla premessa.
b) Con la deduzione naturale
A(BC)
AB
premessa
assunz. per (AB) (AC)
A
assunz. per AC
AB
import
B
-elim.
A(BC)
import
BC
-elim.
C
-elim.
export per -intro AC
AC
(AB) (AC)
export per -intro
c) Si può dire immediatamente se viceversa (AB) (AC) 
A(BC)
Si, basta guardare la tavola di verità per vedere che sono equivalenti.
7. Con le tavole di verità fai vedere che:
a) A B  C  A
b) A B  C  B A
A B C A
BC
ABC
BA
0 0 0
1
0
1
1
0 0 1
1
0
1
1
0 1 0
1
0
1
1
0 1 1
1
1
1
1
1 0 0
0
0
0
0
1 0 1
0
0
0
0
1 1 0
0
0
0
1
1 1 1
0
1
1
1
Scarica