Dispense del corso di Logica a.a. 2015/16: Problemi di primo livello

Dispense del corso di Logica a.a. 2015/16:
Problemi di primo livello
V. M. Abrusci
12 ottobre 2015
0.1
Problemi logici basilari sulle classi
Le classi sono uno dei temi della logica.
Esponiamo in questa sezione due problemi logici sulle classi, ai quali rispondono due teoremi che sono alla
base di una delle branche della logica matematica: la teoria degli insiemi.
I presupposti di questi problemi sono:
• l’uso della concezione classica delle proposizioni (concezione estensionale, bivalente, aspaziale e atemporale) e della concezione classica delle dimostrazioni e delle refutazioni, dei connettivi e dei quantificatori;
• la considerazione della relazione binaria di appartennza, con la quale si formano proposizioni della
forma a appartiene a b (o anche a è elemento di b), rappresentata da
a∈b
in cui il primo argomento della relazione è quello che precede appartiene e il secondo è quello che
segue appartiene ; la negazione di una proposizione a ∈ b è rappresentata da a ∈
/b;
• la decisione di ritenere che ciò che può essere primo argomento della relazione di appartenenza è un
oggetto (e le lettere minuscole x, y, z, . . . saranno usate come variabili per oggetti);
• la decisione di ritenere che ciò che può essere secondo argomento della relazione di appartenenza è una
classe ( e le lettere maiuscole X, Y, Z, . . . saranno usate come variabili per classi);
• l’accettazione del principio di estensionalità (due classi sono uguali quando hanno gli stessi elementi),
ossia si assume che
X = Y ↔ ∀x(x ∈ X ↔ x ∈ Y )
• l’accettazione del principio di comprensione (ad ogni proprietà corrisponde una classe, la classe - unica,
per il principio di estensionalità, degli oggetti che hanno quella proprietà), ossia si assume che
∀P ∃X∀x(x ∈ X ↔ P (x)).
Questi presupposti sono largamente accettati nella pratica della ricerca matematica.
A proposito della concezione classica delle proposizioni e dei connettivi, adotteremo in questo volume una
concezione della negazione delle proposizioni che è ispirata dalla logica lineare. Preferiamo trattare la negazione di una proposizione, non tanto e non solo come “l’applicazione del connettivo negazione” a quella
proposizione, quanto come “la proposizione che è il duale della proposizione data”, “la proposizione guardata
dall’altro punto di vista”; e in particolare vedere la dimostrazione di una proposizione come la refutazione
della sua negazione, e la refutazione di una proposizione come la dimostrazione della sua negazione.
0.1.1
Tutte le classi sono insiemi?
assiomatica degli insiemi
Risposta negativa.
L’avvio della teoria
Chiamiamo insiemi le classi che sono oggetti, ossia che possono appartenere a qualche classe; dunque la
proprietà essere un insieme è una proprieà sulle classi; le classi che non sono insiemi sono chiamate spesso
classi proprie.
E confrontiamo il concetto di insieme e quello di classe.
È innanzitutto evidente che sono vere le seguenti proposizioni
2
• ogni insieme è una classe, e dunque il concetto di insieme è incluso nel concetto di classe;
• ci sono insiemi, ossia esistono classi che sono insiemi, esistono classi che possono appartenere come
elementi a qualche classe, e dunque la proprietà di essere una classe non è vuota.
La prima proposizione è vera per la definizione di insieme, e la verità della seconda proposizione è data dal
fatto che altrimenti dovremmo rigettare tutta quella parte della matematica - e della conoscenza - nella quale
con successo alcune classi sono considerate come oggetti e cioè come elementi di qualche classe.
Viene naturale e legittimo, quando un concetto non vuoto è incluso in un altro, domandarsi se vale anche
l’inverso. In questo caso, nel rapporto tra insiemi e classi, è legittimo e naturale domandarsi se sia vero
l’inverso della prima proposizione, e dunque porsi il problema seguente.
Problema 1. Tutte le classi sono insiemi?
Credere che valga l’inverso di un’inclusione valida è spesso (come in questo caso) collegato ad un desiderio
di semplificazione che può rivelarsi però inaccettabile.
La risposta negativa al problema “tutte le classi sono insiemi?” è data dal teorema seguente, la cui dimostrazione piuttosto facile si basa sul fatto che trattiamo le classi usando i principi della logica classica e i
principi di estensionalità e di comprensione:
Teorema 1 (Teorema dell’esistenza di classi che non sono insiemi; Antinomia di Russell). Ci sono classi
che non sono insiemi
Dimostrazione. Si consideri la proprietà di “essere una classe che non appartiene a se stessa”, dunque la
proprietà espressa da x ∈
/ x. Per il principio di comprensione esiste una classe che ha come elementi tutte
le cose x per le quali vale x ∈
/ x, e per il principio di estensionalità tale classe è unica: la chiamiamo a, e
dunque per a vale ∀x(x ∈ a ↔ x ∈
/ x). Questa classe a non è un insieme: infatti, dall’ipotesi che a sia un
insieme si ricava una falsità (se a è un insieme e dunque una cosa, deve valere a ∈ a ↔ a ∈
/ a che in logica
classica è una proposizione falsa).
È chiaro che questa risposta negativa al problema 1 comporta che anche la classe totale, la classe di tutti gli
insiemi, non sia un insieme: infatti,è naturale pensare che le parti di una classe che è insieme devono essere
insiemi, e la classe degli insiemi che non sono elementi di se stessi è una parte della classe totale.
La teoria assiomatica degli insiemi può essere vista come la teoria nella quale ci si limita a considerare
soltanto le classi per le quali si può assumere senza arrivare a una falsità l’ipotesi che siano oggetti, ossia che
possano appartenere a qualche classe; dunque solo quelle classi che non sono un controesempio al problema
1. È questa la via giusta da seguire dopo la scoperta del teorema 1?
Potremo discutere su tale questione una volta che verrà presentata adeguatamente questa teoria.
0.1.2
Tutti gli insiemi infiniti sono equipotenti? Risposta negativa. L’avvio
della teoria dei cardinali transfiniti.
Consideriamo:
• la suddivisione degli insiemi in insiemi finiti e insiemi infiniti, ossia la suddivisione degli insiemi sulla
base di due interessanti proprietà delle quali ciascuna è negazione dell’altra;
• la relazione di equipotenza tra insiemi (due insiemi X e Y si dicono equipotenti quando X ha tanti
elementi quanti Y ).
3
Supponiamo inoltre:
• di accettare l’esistenza di insiemi finiti e di insiemi infiniti,
• di specificare la relazione intuitiva di equipotenza come segue: X è equipotente a Y se e soltanto se
esiste una corrispondenza biunivoca (ossia, una funzione totale, iniettiva e suriettiva) da X a Y .
.
Si noti che l’esistenza di una funzione f totale e iniettiva da un insieme X a un insieme Y assicura che Y non
può avere meno elementi di X poiché la funzione f deve mandare elementi diversi di X in elementi diversi
di Y , mentre l’esistenza di una funzione f totale e suriettiva da X a Y assicura che Y non ha più elementi
di X poiché ogni elemento di Y è raggiunto da questa funzione f .
La prima scoperta che si fa quando si considerano gli insiemi infiniti è proprio quella che - mentre l’aggiunta
di qualcosa ad un insieme finito X produce ancora un insieme finito che però non è più equipotente ad X
- aggiungendo elementi, anche infiniti elementi, ad un insieme infinito X si ottiene ancora un insieme che
è equipotente ad X; e questa scoperta porta a congetturare che fra gli insiemi infiniti non ci sia più modo
di distinguere tra insiemi equipotenti ed insiemi non equipotenti. Possiamo quindi domandarci se questa
congettura sia fondata, ossia a porre il problema seguente:
Problema 2. Tutti gli insiemi infiniti sono equipotenti?
Non è necessario - per la formulazione di questo problema - fornire una particolare definizione delle proprietà
essere un insieme finito e essere un insieme infinito. È sufficiente avere una definizione di insieme finito e di
insieme infinito, compatibile con tutto quanto abbiamo indicato nelle premesse.
La risposta negativa al problema 2 costituisce uno dei primi grandi teoremi della logica matematica, e la
sua dimostrazione può essere fatta sia mostrando due insiemi infiniti che non sono equipotenti (ad esempio,
l’insieme dei numeri reali compresi tra 0 e 1, e l’insieme dei numeri naturali) oppure in una maniera veramente
logica mostrando come trovare coppie di insiemi infiniti non equipotenti.
Teorema 2 (Teorema dell’esistenza di infinità non equipotenti; Cantor). Esistono insiemi infiniti che non
sono equipotenti.
Dimostrazione. Si mostra come, dato un qualunque insieme X, debba esistere anche un insieme Y tale che
c’è una funzione totale iniettiva da X a Y ma non c’è alcuna funzione totale suriettiva da X a Y , ossia un
insieme Y non equipotente ad X; e dunque se X è infinito allora anche Y lo è) (poiché c’è una funzione
totale iniettiva da X a Y ) e i due insiemi infiniti non sono equipotenti.
Dato un insieme X, l’insieme Y che deve esistere è l’insieme di tutte le parti di X, denotato da ℘(X).
La funzione totale iniettiva da X a ℘(X) è la funzione che ad ogni elemento x di X associa il suo singoletto
x che è una parte di X e dunque un elemento di ℘(X).
Per stabilire che non esiste alcuna funzione totale iniettiva e suriettiva da X a ℘(X) si mostra come ogniqualvolta viene data una funzione totale ed iniettiva da X a ℘(X) - essa non è suriettiva.
Sia f una funzione totale ed iniettiva da X a ℘(X). Si consideri l’insieme a = [x|x ∈ X ∧ x ∈
/ f (x)] che è una
parte di X e dunque un elemento di ℘(X). f non è suriettiva poiché non c’è alcun elemento z di X tale che
f (z) = a: altrimenti, poiché vale z ∈ a ↔ z ∈
/ f (z), varrebbe anche z ∈ a ↔ z ∈
/ a che è una proposizione
falsa.
La risposta data dal teorema 2 ha aperto la strada allo studio dei livelli di infinità, ossia allo studio dei
cardinali transfiniti, della aritmetica transfinita e di alcuni importanti problemi che essa produce in maniera
naturale quando si considerano tipici insiemi matematici; fra essi spicca il seguente problema, noto come
problema del continuo.
4
Problema 3. L’infinità dei numeri reali costituisce la più piccola infinità dopo quella dell’insieme dei numeri
naturali?
La risposta a questo problema è ancora ignota. Si sa soltanto quanto espresso dal teorema seguente.
Teorema 3 (Indipendenza del problema del continuo dagli assiomi della teoria assiomatica degli insiemi di
Zermelo-Fraenkel; Gödel e Cohen). Sia la risposta positiva che quella negativa al problema 3 sono compatibili
(non sono in contraddizione) con gli assiomi della teoria assiomatica degli insiemi di Zermelo-Fraenkel.
Dimostrazione. Disponibile nei manuali di teoria assiomatica degli insiemi.
0.2
Problemi logici basilari su macchine e programmi
Esponiamo in questa sezione due problemi logici che riguardano il tema del calcolo meccanico, ossia sul
concetto logico di macchina e sul concetto logico di programma, e che sono basilari perché connessi alla
nascita e allo sviluppo di un’altra branca della logica matematica: la teoria della calcolabilità, o teoria della
recursione.
I presupposti di questi problemi sono:
• la considerazione del concetto intuitivo di funzione da un insieme X ad un insieme Y (qualcosa che,
applicata ad un elemento di X per il quale a funzione è definita, associa a tale oggetto un elemento di
Y)
• la rigorizzazione del concetto di funzione da un insieme X ad un insieme Y , fornita entro la teoria degli
insiemi (un sottoinsieme del prodotto cartesiano di X e Y , in cui non ci sono coppie ordinate diverse
con la prima componente uguale; idealmente il sottoinsieme del prodotto cartesiano di X e Y costituito
dalle coppie ordinate formate da un elemento di X per il quale la funzione è definita e dall’elemento
di Y che la funzione associa a tale oggetto)
• la considerazione del concetto intuitivo di funzione calcolabile (una funzione che possiede una programma per essere calcolata, una funzione che può essere calcolata da una macchina), e dunque della
propriet à di essere calcolabile che si può attribuire alle funzioni;
• la rigorizzazione del concetto di funzione calcolabile da numeri naturali a numeri naturali, e dunque
della proprietà di essere calcolabile sulla classe delle funzioni da numeri naturali a numeri naturali, cos
ì come è fornita in uno delle tre maniere equivalenti scoperte all’inizio della teoria della calcolabilità
(calcolabile da una Macchina di Turing, rappresentabile come un termine del λ - calcolo, funzione
ricorsiva parziale);
• la tesi di Church, ossia la tesi che ogni funzione calcolabile da numeri naturali a numeri naturali sia
anche calcolabile da una Macchina di Turing, che costituisce la tesi secondo cui il concetto intuitivo
di funzione calcolabile da numeri naturali a numeri naturali può esser ovunque rimpiazzato da quello
rigorizzato;
• la possibilità di codificare ciascuna funzione calcolabile g mediante un numero naturale pgq, una possibilità stabilita rigorosamente per le funzioni calcolabili da numeri a numeri quando si assume la tesi
di Church ossia quando si assume la definizione rigorosa di funzione calcolabile;
• la considerazione del concetto intuitivo di problema risolvibile - ossia, di problema per il quale esiste
un programma che lo risolve - e della rigorizzazione di tale concetto, ossia il concetto di problema
risolvibile da una Macchina di Turing - ossia di problema per il qual esiste una Macchina di Turing
che lo risolve;
5
• la considerazione di due classi di programmi:
– i programmi deterministici, che possono essere eseguiti da una sola macchina o da un solo agente
senza dover compiere alcuna scelta (e quindi programmi che non contengono istruzioni che dicono
di svolgere atti diversi in una stessa situazione),
– i programmi non-deterministici, che richiedono di essere eseguiti da più agenti o da una sola
macchina o da un solo agente che sia in grado di compiere scelte (perché contengono istruzioni
che dicono di svolgere atti diversi in una stessa situazione)
• la considerazione che la tesi di Church si riferisce a Macchine di Turing deterministiche, ossia a Macchin
di Turing che hanno un programma deterministico.
0.2.1
Tutte le funzioni sono calcolabili? Risposta negativa. L’avvio della teoria
della calcolabilità
È evidente - anche senza alcuna rigorizzazione dei concetti di funzione e di funzione calcolabile - che esistono
funzioni che sono calcolabili, ossia funzioni che hanno un programma di calcolo, funzioni che possono essere
calcolate da una macchina.
Viene quindi naturale porsi il problema seguente:
Problema 4. Tutte le funzioni sono calcolabili?
La risposta a questo problema potrebbe essere banalmente positiva, se si sottintende che ogni funzione sia
data da una procedura di calcolo: ma è proprio questa concezione di funzione che viene superata - per ragioni
connesse allo sviluppo della matematica - dalla rigorizzazione insiemistica del concetto di funzione.
Così̀, dato il concetto insiemistico di funzione, non è̀ affatto evidente che ogni per ogni funzione debba esserci
un programma che la calcola, una macchina che la calcola.
Questo problema diviene quindi non banale quando si assume la nozione insiemistica di funzione e si assume
la tesi di Church, ossia la definizione rigorosa di funzione calcolabile da numeri naturali a numeri naturali.
La risposta negativa a questo problema è fornita dal seguente teorema che mostra come - partendo dalle
funzioni calcolabili da numeri naturali a numeri naturali, e assumendo tutte ciò che abbiamo indicato come
premessa a questa sezione - si possa definire una funzione da numeri naturali a numeri naturali che non è
più calcolabile.
Teorema 4 (Teorema dell’esistenza di funzioni non calcolabili; Turing). Esistono funzioni che non sono
calcolabili, e tali funzioni possono essere definite.
Dimostrazione. Se ci si limita a dimostrare che esistono funzioni non calcolabili senza mostrane una non
calcolabile, basta riflettere che l’insieme delle funzioni da numeri naturali a numeri naturali ha una cardinalità
infinita superiore a quella dei numeri naturali, mentre l’insieme delle funzioni calcolabili ha una cardinalità
pari a quella dei numeri naturali (poiché ogni programma può essere codificato da un numero naturale).
Se si vuol anche mostrare un esempio di funzione non calcolabile, si può considerare la seguente funzione
totale f da numeri naturali a numeri naturali, così definita:
• se g è una funzione calcolabile e g(pgq) è definita, allora f (pgq) = g(pgq) + 1
• altrimenti (ossia se m non è codice di una funzione calcolabile oppure se m = pgq per una funzione
calcolabile g ma g(pgq) non è definita), f (m) = 0
6
La funzione f non è calcolabile: se lo fosse, essa avrebbe un codice pf q, f (pf q) sarebbe definita perché f è
totale, e si avrebbe allora che f (pf q) = f (pf q) + 1, ossia una falsità.
Questo teorema, che stabilisce i limiti della calcolabilità, è alla base concettuale e storica della teoria della
calcolabilità (essa ha senso perchè ci sono funzioni non calcolabili) e dell’informatica.
In particolare, il teorema 4 stabilisce che non è calcolabile la funzione h che, data una funzione calcolabile g
e un numero naturale m, assegna valore 1 se g(m) è definita (ossia se la macchina che calcola g partendo da
m si fermerà raggiungendo il risultato) e valore 0 se g(m) non è definita (ossia se la macchina che calcola g
partendo da m non si fermerà mai), cioé non è calcolabile la funzione che risolve il cosiddetto “problema della
fermata delle macchine di calcolo”. Infatti, altrimenti sarebbe calcolabile anche la funzione f considerata nella
dimostrazione del teorema 4 poichè la proprietà che “g(pgq) è definita” sarebbe rimpiazzata da h(pgq) = 1
e la proprietà “g(pgq) non è definita” sarebbe rimpiazzata da h(pgq) = 0.
0.2.2
P = N P ? I problemi risolvibili in tempo polinomiale e in maniera non
deterministica possono essere risolti anche in maniera deterministica e in
tempo polinomiale? Un problema che è la riproposizione moderna di un
antico problema logico, ed è ancora aperto.
Si tratta di un problema intorno ai problemi risolvibili, e nasce dall’attenzione a come si risolvono i problemi.
Si ricordi che i programmi che possono essere eseguiti da una sola macchina, senza compiere scelte, sono quelli
deterministici; i programmi non deterministici esigono per la loro esecuzione la presenza di più macchine.
Innanzitutto, si cerca di mettere a confronto i problemi che possono essere risolti mediante programmi
deterministici e i problemi che possono essere risolti mediante programmi non-deterministici. È evidente che
ogni problema che è risolvibile con un programma deterministico può anche essere risolto con un programma
non-deterministico (introducendo istruzioni superflue che contengono scelte !). E l’inverso? Ossia, si può
fare a meno del non-determinismo nella risoluzione dei problemi? Si tratta di una questione logica che - sia
pure in termini diversi - è stata considerata anche in tempi antichi.
Ebbene, assumendo la tesi di Church, questo antico problema logico riceve immediatamente una risposta
positiva: tutti i problemi che sono risolvibili in maniera non-deterministica sono risolvibili - sotto la tesi di
Church - da una Macchina di Turing la quale ha un programma deterministico, e dunque sono risolvibili in
maniera deterministica.
Ma il problema diventa non banale quando il confronto tra problemi risolvibili mediante programmi deterministici e problemi risolvibili mediante programmi non-deterministici viene fatto non entro la classe dei
problemi risolvibili (cioè i problemi per i quali esiste un programma che li risolve) ma entro una classe più
ristretta, quella dei programmi fattibili.
Intuitivamente, un problema è fattibili quando esiste un programma che riesce a risolvere il problema in
tempo ragionevole, in un numero non troppo grande di passi.
Rigorosamente, i problemi “fattibili” sono quelli “risolvibili in tempo polinomiale”, ossia i problemi per i
quali esiste un programma che li risolve in tempo polinomiale, un programmi cioé in cui il numero dei passi
necessari per trovare l’output dipende in modo polinomiale dall’input del programma stesso (ad esempio, un
programma che per trovare l’output partendo da un input n hanno bisogno di al massimo m × n passi per
un certo intero m). Saranno pertanto considerati “non fattibili” i problemi risolvibili in tempo esponenziale,
ossia i problemi per i quali esistono solo programmi in cui il numero di passi per trovare l’output cresce in
modo esponenziale in dipendenza dell’input (ad esempio, i programmi che per trovare l’output in dipendenza
da un input n hanno bisogno di 2n passi).
7
All’interno della classe dei problemi fattibili, ossia dei problemi eseguibili in tempo polinomiale, si distinguono
due classi:
• la classe P , ossia la classe dei problemi che si possono risolvere in maniera deterministica, oltre che in
tempo polinomiale; si tratta di problemi che possono essere risolti da una sola macchina;
• la classe N P , ossia la classe dei problemi che si possono risolvere in maniera non-deterministica ma
sempre in tempo polinomiale; in sostanza, si tratta di problemi che si risolvono richiedendo la presenza
di più macchine.
È facile ed immediato rendersi conto che P è inclusa entro N P : ciò che può essere risolto da una sola macchina
può essere risolto da più macchine senza uscire dalla classe dei problemi risolvibili in tempo polinomiale.
L’inverso costituisce il problema seguente:
Problema 5. La classe N P è inclusa nella classe P ?
Se la risposta a questo problema fosse positiva, si avrebbe che P = N P . Se la risposta a questo problema
fosse negativa, si avrebbe che P 6= N P .
Quale delle due risposte è vera?
Alla data di oggi non c’è alcuna dimostrazione della risposta positiva, e nessuna dimostrazione della risposta
negativa. Dunque, il problema è ancora aperto.
La soluzione di questo problema darà un notevole contributo alla chiarificaziuone del rapporto tra determinismo e non-determinismo nella computazione, e intorno alla necessità o meno della presenza di più macchine
nella computazione perché essa si svolga in tempo polinomiale, ossia perchè essa sia fattibile.
8