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