Angela Bonazza Tesina d’informatica Il Problema dell’Indecidibilità Analisi e confronto dei risultati di Kurt Gödel e Alan Turing Tra i problemi che assillarono i matematici del XX la questione sui fondamenti della matematica fu uno più discussi. Tutto ebbe origine dal famoso “assioma delle parallele”:per un punto esterno ad una retta passa una ed una sola retta parallela alla retta data. È possibile dimostrare tale asserzione? Una dimostrazione nel senso moderno del termine è una deduzione di una tesi a partire da certe premesse dette ipotesi date per vere o a loro volta dimostrate in precedenza.Ci chiediamo dunque è possibile dedurre tale proposizione dagli assiomi della geometria euclidea? Dopo secoli di tentativi,nel XIX secolo fu dimostrata l’impossibilità di dimostrare tale asserzione .Si trassero dunque due conclusioni: 1. è possibile dare una dimostrazione dell’impossibilità proposizioni a partire da certe premesse; 2. l’insieme degli assiomi euclidei è incompleto. di dimostrare certe Tali conseguenza aprirono le porte ad un campo d’indagine prima ignorato attorno ad una domanda fondamentale:esiste un numero finito di assiomi da cui sia possibile generare tutta la matematica?Ovvero la matematica è assiomatizzabile? Queste domande ed altre ancora rientrano in un programma più vasto noto come programma di Hilbert. L’approccio formalista di Hilbert alla questione Il tentativo di assiomatizzazione dell’intera matematica pretendeva di racchiudere l’intera conoscenza fino ad allora raggiunta entro i limiti di un sistema formale. In linea generale,un sistema formale è costituito da: un alfabeto:insieme di simboli astratti,svuotati di ogni significato. Così,ad esempio, se nel mio alfabeto compaiono i simboli 0 e 1,questi non saranno i numeri 0 e 1,ma i numerali 0 e 1. un numero finito di stringhe (cioè successioni finite di simboli dell’alfabeto) prese come assiomi del sistema,ovvero verità indimostrabili. un numero finito di regole di trasformazione che specificano le operazioni ammesse nella manipolazione di tali assiomi. Dimostrare qualcosa all’interno di un sistema formale vorrà dire perciò partire dagli assiomi e applicare una successione finita di trasformazioni: l’ultima stringa è detta teorema del sistema formale. A titolo d’esempio,una regola di trasformazione è quella del modus ponens: dalla veridicità delle proposizioni P (ipotesi) e P→Q,deduciamo la veridicità di Q (tesi) . Notiamo l’importanza di svuotare i simboli dal loro significato: da questa operazione di svuotamento deriva l’aggettivo formale; in questo modo la validità della dimostrazione poggia sulla struttura della affermazioni piuttosto che sul loro contenuto. Ad un sistema formale che assiomatizzi l’intera conoscenza matematica si richiedono due qualità principali: 2 1. Coerenza: un sistema non deve produrre al tempo stesso la proposizione P e la sua negazione ~P. 2. Completezza: dato un qualsiasi enunciato matematico esso deve poter essere dimostrato oppure refutato a partire dagli assiomi del sistema. Hilbert era pronto a scommettere che tale sistema coerente e completo esistesse e anzi riteneva che un possibile candidato fossero i Principia Matematica di Russel e Whitehead. Ma non era così. I RISULTATI DI GÖDEL Il teorema di incompletezza Le speranze di Hilbert vennero presto deluse dal grande logico Kurt Gödel (1906-1978). Gödel riuscì a dimostrare che dato un sistema coerente di assiomi concernenti l’aritmetica che fosse abbastanza potente da produrre proposizioni autoreferenziali,esistono delle proposizioni aritmetiche vere che tuttavia non possono essere dedotte a partire dall’insieme di assiomi considerato. Tali proposizioni sono dunque indecidibili e il sistema è incompleto. L’enunciato del teorema di incompletezza di Gödel è il seguente: “Ogni sistema coerente è incompleto” CENNI ALLA DIMOSTRAZIONE Nella sua dimostrazione Gödel s’ispirò al classico paradosso logico d’Epimenide. Consideriamo l’enunciato “Questa proposizione è falsa” Chi può dire se tale affermazione è vera o falsa? I casi sono due: 1) se diciamo che è vera,allora è vero che è falsa; 2) se diciamo che è falsa,allora è vero che è vera perché affermiamo la veridicità della sua negazione. La proposizione sopra enunciata è autoreferenziale nel senso che afferma qualcosa circa se stessa; se di se stessa afferma che è falsa allora essa è anche in decidibile, nel senso che non possiamo stabilire se è vera o falsa. Il problema di Gödel era tradurre questa proposizione in linguaggio matematico. Per raggiungere tale scopo,innanzitutto considerò una leggera variazione sostituendo “falsa” con “indimostrabile” e poi notò che la proposizione così ottenuta (chiamiamola P) era una proposizione metamatematica, inerente cioè ad un linguaggio che descrive la matematica dall’esterno. 3 Nella sua ricerca, anche Hilbert si occupò di distinguere tra la matematica,intesa come sistema formale di simboli “senza significato”, e la metamatematica,affermazioni cioè dotate di significato attorno ai segni che intevengono nel calcolo , alla loro disposizione e alle relazioni tra essi. Ad esempio,l’espressione 2+7=9,è un’espressione che concerne l’aritmetica composta interamente da segni aritmetici elementari; mentre invece l’affermazione: “‘2+7=9’ è una formula aritmetica” non appartiene al linguaggio dell’aritmetica ma alla metamatematica. Di per sé le affermazioni metamatematiche non appartengono al sistema dato perché lo scrutano dall’esterno;ma poiché l’indecidibilità risiedeva proprio in una di tali proposizioni, Gödel si rese conto dell’importanza tradurle in proposizioni aritmetiche del sistema stesso. Questo processo di traduzione è noto come numerazione di Gödel o godelizzazione. Gödel cominciò con l’assegnare ad ogni segno, ad ogni formula (cioè combinazione di segni) e ad ogni successione di formule un numero in maniera univoca,fissando innanzitutto 10 costanti elementari che riporto nella tabella sotto,numerate da 1 a 10. Assegnò inoltre alle variabili numeriche dette x,y,z,etc.. il numerale corrispondente ai numeri primi superiori a 10. ~ V → Э = 0 s SIMBOLI non oppure se..allora esiste eguale a zero successore ( ) , x y z …… NUMERO 1 2 3 4 5 6 7 8 9 10 11 13 17 ….. Consideriamo ad esempio la formula ( Э x )( x = s y ) ↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓ ↓ 8 4 11 9 8 11 5 7 13 9 Naturalmente vorremmo che tale formula, che a parole può essere espressa con “esiste x tale che x è successore di y”, fosse rappresentata da un unico numero di Gödel. Il numero associato a tale formula viene ricavato nel seguente modo: è dato dal prodotto dei primi 10 primi elevati alla potenza del numero di Gödel elementare corrispondente. Creiamo così il numero m che non ci conviene calcolare: 4 2^8×3^4×5^11×7^9×11^8×13^9×17^5×19^7×23^13×29^9 In questo modo Gödel creò una corrispondenza biunivoca tra le espressioni del calcolo e certi sottoinsiemi dei numeri naturali. Il passo successivo è dunque l’aritmetizzazione della metamatematica:l’idea è che se ad ogni espressione del calcolo è associato un numero,una proposizione attorno a tali espressioni e alle loro relazioni può essere costruita come una proposizione attorno ai numeri corrispondenti. Gödel focalizzò la sua attenzione sulla proposizione P : “la sequenza di formule con numero di Gödel x è una dimostrazione della formula con numero di Gödel z” L’idea è quella di associare a tale proposizione una formula che esprima una relazione puramente aritmetica fra x e z. Per quanto complessa tale formula esiste e la denoteremo con Dim(x,z). Notiamo che la proposizione P è vera se e solo se il numero di Gödel x sta a z nella relazione Dim. Consideriamo ora la proposizione : “Per ogni x,la sequenza d formule con numero di Gödel x non dimostra la formula con numero di Gödel z” La formula corrispondente a tale proposizione metamatematica è : (x)~Dim(x,z) Che in pratica afferma che non esiste alcun dimostrazione della formula espressa da z. Al posto di z mettiamo ora il numero che indichiamo con sost(y,13,y) ,che è il numero di Gödel della formula ottenuta sostituendo nella formula con numero di Gödel y alla variabile con numero di Gödel 13 il numerale corrispondente a y. Stiamo allora dicendo. (x)~Dim[x,sost(y,13,y)] (1) Cioè la formula con numero di Gödel sost(y,13,y) non è dimostrabile. La formula 1 appartiene al sistema in quanto rappresenta una proposizione metamatematica che esprime relazioni tra numeri di Gödel, rappresentazioni di certe espressioni matematiche; dunque anch’essa avrà un numero di Gödel:diciamo n. Sostituiamo ora alla variabile con numero di Gödel 13 (cioè y) nella formula (1) che ha numero di Gödel n, il numerale corrispondente a n. Otteniamo così una nuova proposizione che chiameremo G, con numero di Gödel sost(n,13,n) che recita (x)~Dim[x,sost(n,13,n)] Ovvero in parole: “la formula con numero di Gödel sost(n,13,n) non è dimostrabile” 5 Cioè “Non sono dimostrabile” Con non poca fatica abbiamo trovato quindi non solo un enunciato del sistema autoreferenziale ,ma anche che dice di se stesso di non essere dimostrabile. È ora inevitabile cadere nel paradosso di Epimenide che dice che tale proposizione è in decidibile .Infatti G è vera se e soltanto se anche ~G lo è. Nonostante G sia in decidibile a partire da qualsiasi insieme di assiomi dato, per ragionamenti metamatematici si riesce anche a dimostrare che G è vera: cioè che esprime una proprietà numerica complicata ma vera per ogni numero naturale. Dunque abbiamo una proposizione vera ma non dimostrabile né refutabile all’interno del sistema. Conclusione:se ammettiamo che il sistema sia coerente,esso è necessariamente incompleto. I risultati di Gödel mostrarono anche che, qualora si volesse completare il sistema aggiungendo al numero degli assiomi altri assiomi o la stessa proposizione G, avremmo un altro sistema di assiomi in cui comunque potremmo trovare una proposizione in decidibile H dello stesso tipo di G:dunque l’aritmetica non solo è incompleta ma è essenzialmente incompleta. Inoltre Gödel descrisse la maniera in cui costruire una formula aritmetica A che rappresenti la proposizione metamatematica “l’aritmetica è coerente” e dimostrò che la formula A→G è formalmente dimostrabile. Infine dimostrò che la formula A non è dimostrabile,perché se lo fosse allora la regola del modus ponens affermerebbe che G è dimostrabile in quanto A→G è dimostrabile;ma G è indimostrabile; conclusione: - se l’aritmetica è coerente,essa è incompleta (A→G); - la coerenza dell’aritmetica non è dimostrabile all’interno del sistema dell’aritmetica stessa:non esiste nessun sistema formale che descriva l’aritmetica in grado di provare la sua coerenza anche se questo non esclude una qualche dimostrazione metamatematica Schema riassuntivo dei passi della dimostrazione : 1. Numerazione di Gödel : schema di codifica che permette di trasformare ogni formula logica o sequenza dimostrativa riguardante la matematica in un’asserzione attorno ai numeri naturali. 2. Paradosso di Epimenide : si considera la proposizione “Questa asserzione è indimostrabile”. 3. Costruzione di G : si costruisce una formula logica che sia l’equivalente del paradosso di Epimenide, 4. Incompletezza : si nota che G è indecidibile qualunque siano gli assiomi del sistema e quindi se il sistema è coerente per forza sarà incompleto. 5. Essenziale incompletezza : si dimostra che anche se aggiungessimo altri assiomi al sistema o la stessa G,comunque il nuovo sistema produrrebbe una proposizione equivalente a G e quindi indecidibile . 6. Coerenza : l’aritmetica come sistema formale è troppo debole per provare la sua coerenza ma un sistema è coerente allora è incompleto. 6 TURING e L’ENTSCHEIDUNG PROBLEM Anche Turing,quasi contemporaneamente a Gödel si occupò del problema della decidibilità delle proposizioni all’interno di un dato sistema.Ciò che di meccanico aveva l’idea di Hilbert di dimostrazione come manipolazione di simboli gli suggerì la creazione di un oggetto matematico astratto battezzato poi col nome di macchina di Turing. Ciò che spinse Turing ad elaborare tale macchina concettuale era il cosiddetto Problema della Decisione che rientrava nel programma di Hilbert:esiste un metodo definito che applicato a qualsiasi asserto ci dia delle informazioni sulla verità o falsità di tale asserto?in pratica all’interno di un sistema formale per ogni proposizione P considerata,tale proposizione è decidibile?Dai risultati di Godel sappiamo già la risposta:esiste almeno un asserto non decidibile in qualunque sistema formale coerente. Turing arrivò alla risposta passando attraverso la macchina di Turing. Descrizione della macchina di Turing In generale: Una macchina di Turing consiste in un nastro di estensione infinita suddiviso in caselle ciascuna delle quali è occupata da un singolo simbolo di un alfabeto finito. Un dispositivo di lettura-scrittura opera a passi discreti,cioè in ogni istante si trova davanti a una ed una sola di tali caselle.Tale dispositivo può: -scrivere un nuovo o simbolo oppure mantenere quello che legge nella casella che ha davanti: -spostarsi a destra o sinistra oppure fermarsi. Se chiamiamo Ω l’alfabeto della macchina e Ψ l’insieme degli stati della macchina possiamo vedere il comportamento come una funzione: F: Ω x Ψ → Ω x Ψ x {←,→} che alla coppia (stato, simbolo) associa una terna (stato ,simbolo, sx o dx). Un esempio: Consideriamo la macchina di Turing tale che Ω:={0,1,x},vogliamo che tale macchina sommi i due numeri 1 che scriviamo sul nastro:l’idea è quella di decrementare di 1 il secondo ad ogni passaggio e incrementare di 1 il primo. Si ferma quando il secondo è tutto 0. x 1 1 0 x 1 1 0 x x x x x x Riassumiamo il comportamento della macchina in una tabella dove sono rappresentati gli stati possibili a seconda del simbolo letto dalla testina. Le frecce indicano gli spostamenti a dx o a sx. Decrementa (S1) Cerca a sx (S2) Incrementa (S3) Cerca a dx (S4) S5 0 1 , S1 , ← 0 , S2 , ← 1 , S4 , → 0 , S4 , → 0 , S5 , → 1 0 , S2 , ← 1 , S2 , ← 0 , S3 , ← 1 , S4 , → 1 , S5 , → Lo stato X rappresenta la casella vuota. 7 X X , Halt , ← X , S3 , ← 1 , S4 , → X , S5 , → X , S1 , ← La prima riga della tabella descrive la macchina nello stato di decremento del numero che sta sulla destra del nastro (la testina parte a leggere da dx a sx): -se incontra uno 0,deve trasformarlo in 1 e passare alla casella successiva sulla sinistra; -se incontra 1 deve trasformarlo in 0 e passare a cercare l’altro numero,quindi allo stato S2, -se incontra una casella vuota,vuol dire che ha finito di decrementare,quindi si ferma. Supponiamo abbia incontrato un 1;siamo allora nello stato S2. Stiamo cercando il numero a sx;se troviamo una casella vuota,vuol dire che la nostra ricerca è finita e possiamo passare allo stato S3 spostandoci a sx.Ora dobbiamo incrementare di uno il nostro nuovo numero;dunque se incontro 0 o una casella x (vuota) lo trasformo in uno e passo di nuovo a dx ; finché non incontro una casella vuota,cioè finché non scorro tutto il numero permango nello stato S4;poi passo allo stato S5 che mi permette di scorrere il numero a dx senza variarlo. Macchina di Turing universale accettare come input non solo dati ma anche programmi o algoritmi per la manipolazione di questi. In pratica possiamo dire che la macchina di Turing non è altro che un programma o algoritmo;se riusciamo a codificare tale programma in linguaggio macchina possiamo scriverlo sul nastro di un’altra macchina di Turing che sarà quindi detta macchina di Turing universale (MTU).Tale processo di codificazione è simile alla enumerazione di Godel .Infatti,Turing mostrò che qualsiasi algoritmo matematico poteva essere descritto da una MT . A questo punto bastava associare ad ogni MT un intero:una MTU dunque avrebbe accettato come input il cosiddetto numero di descrizione dell’algoritmo per elaborare i dati. Ad una MTU veniva dunque richiesto: -la lettura dei numeri di trascrizione; -le loro codificazione in tavole di istruzione che descrivessero le MT corrispondenti; -l’esecuzione di tali istruzioni sui dati in ingresso. Turing elaborò anche l’idea per una macchina immaginaria molto più potente che potesse Avendo ridotto la dimostrazione di un enunciato matematico ad un processo puramente meccanico,Turing avanzò l’ipotesi per cui qualunque calcolo matematico può essere svolto da una particolare MT (tesi di Church-Turing):dunque ad ogni formula matematica corrispondeva una data tavola e quindi un numero di descrizione. Come lo stesso Godel aveva fatto in precedenza il problema veniva dunque spostato dalle operazioni sui numeri ai numeri stessi,perché la MTU avrebbe manipolato solo numeri. L’Halting Problem e la soluzione di Turing Supponiamo di voler calcolare lo sviluppo decimale di л;esiste sicuramente un algoritmo matematico in grado di farlo e quindi una MT associata a tale algoritmo;naturalmente per calcolare tale sviluppo ci vorrà un tempo infinito perché л è un numero irrazionale,quindi con infinite cifre dopo la virgola:una MTU che accettasse in input il programma per calcolare л non terminerebbe mai. Una domanda interessante può essere allora: esiste una procedura definita che ci dice se un programma terminerà o meno?Ovvero,dato un qualsiasi programma P per una MT e un insieme di dati I come input,esiste una MT che accetti P e I come input e ci dica se P si fermerà o meno dopo un numero finito di passi con I come input?Questa è una formulazione del Problema dell’Arresto. 8 Turing mostrò che tale procedura non esiste, tramite una dimostrazione per assurdo. Usò come aveva fatto Godel l’argomento dell’autoreferenza. La soluzione di Turing Supponiamo dunque che esista una macchina di Turing (o equivalentemente un programma scritto in qualche linguaggio,C ad esempio) che accetti come input una funzione F e i dati su cui tale funzione deve lavorare (in questo caso la funzione stessa rappresenterà un qualche algoritmo matematico e quindi una MT corrispondente) e sia in grado di dirci se tale funzione F applicata ai dati in input I termina oppure no;chiamiamo questa supposta macchina HALT. Se fosse un programma in “C” probabilmente avrebbe il seguente aspetto: char* HALT(char* s) /*funzione che accetti una stringa e restituisca una stringa/ s=”char*F(…){…}$..I.” /*stringa che passeremo alla funzione HALT contenente F e I/ { char*f=parte della stringa che contiene F; char*x=parte della stringa che contiene I; if(f(x) termina) return YES; else return NO; } Costruiamo ora un programma G che accetti come input una stringa contenente la funzione HALT e il suo argomento che sarà F(I).Tale programma G sarà costruito in modo tale che: -se la funzione HALT mi dice che F(I) termina,allora il programma G entra in un ciclo infinito e quindi non termina; -se la funzione HALT mi dice che F(I) non termina,allora il programma G terminerà rispondendo “NO”. Supponendo di costruire tale programma G in “C” avremo una cosa del genere: char*G(char*s) /*funzione che accetta e restituisce una stringa s=”char*F(….){…}$..I” /*stringa che descrive a sua volta una funzione F e i dati a cui F va applicata { If (HALT(s) restituisce YES) /*se HALT mi dice che la funzione F(I) termina while(1) /*entra in un ciclo while infinito,cioè G non termina else return NO; /*altrimenti restituisci NO e quindi G termina } 9 Supponiamo ora di passare alla funzione G una stringa contenente non una funzione qualsiasi ma la stessa G;chiamiamo tale stringa g. Cosa ci dirà il programma?G(g) termina oppure no?per saperlo applichiamo la funzione HALT: -se HALT(G(g)) risponde “YES” cioè G(g) termina,allora per come è costruito il programma G,G non termina. -se HALT(G(g)) risponde “NO”,cioè G(g) non termina,allora per come è costruito il programma G,G termina. Conclusione:esiste almeno un caso di indecidibilità per la funzione HALT comunque essa sia costruita e quindi tale funzione non esiste!! Turing parlò anche (e soprattutto) di numeri computabili;il concetto era il seguente:un qualsiasi numero reale che fosse definito da qualche regola definita deve poter essere calcolato da una MT.Ad esempio ci sarà una MT in grado di calcolare lo sviluppo decimale di л;tale processo ovviamente non avrà mai fine ma le operazioni necessarie per il calcolo saranno finitamente descritte.Turing mostrò l’esistenza di numeri non computabili usando l’analogo del ragionamento diagonale di Cantor per la dimostrazione dell’esistenza dei numeri irrazionali. Supponiamo che esista una macchina in grado di produrre un numero diagonale non computabile e supponiamo anche di aver codificato i procedimenti matematici per il calcolo di tutti i numeri computabili tramite tavole di descrizione numerate a partire da 1. La macchina dovrebbe (secondo il procedimento di Cantor) calcolare il numero corrispondente alla prima tavola fino alla prima cifra e aumentare questa di 1,passare poi alla seconda tavola,calcolare il numero corrispondente fino alla seconda cifra e aumentare questa di 1 e così via…produrremo quindi un numero che differisce dai precedenti per una cifra ma che non è computabile in quanto abbiamo supposto di elencare tutti i numeri computabili all’inizio del nostro ragionamento. Il Problema dell’Arresto poteva essere riformulato nel seguente modo:era possibile prevedere il comportamento di una MT nel calcolo di tale numero?Possiamo sapere in anticipo se la MT calcolerà il numero oppure si metterà a ripetere all’infinito le stesse operazioni senza produrre un bel niente?La riposta è che ogni previsione è impossibile. E quindi la macchina che simula il procedimento di Cantor,pur descrivendo un processo meccanico per il calcolo di un numero non esiste. ANALOGIE TRA I RISULTATI DI GÖDEL E QUELLI DI TURING I risultati di Gödel e quelli di Turing presentano impressionanti analogie;lo stesso Turing mostrò l’equivalenza tra una MTU e un sistema formale:arrivò ad affermare che dato una qualunque MTU,detta C, dotata di memoria illimitata (che quindi lavori su un nastro infinito) possiamo trovare un sistema formale F tale che i possibili output di C coincidano con i teoremi generati dal sistema formale F e viceversa. Possiamo ad esempio creare una funzione in C che generi tutti i programmi in C esistenti;ci troviamo all’interno di un sistema formale che abbia come alfabeto il codice ASCII e che accetti come teoremi del sistema tutte le stringhe in C che il compilatore accetta;la compilazione sarà la nostra regola di deduzione di una stringa dall’altra,naturalmente tale programma non terminerà mai perché i programmi C sono numerabili ma infiniti (sono numerabili in quanto il numero di simboli nel codice ASCII è finito,126). Supponiamo di aver creato un MTU che accetti come input la macchina di Turing associata ad una compilatore e come dati in ingresso le stringhe scritte in codice ASCII su cui deve operare il compilatore;;tale MT simulerà il comportamento del programma descritto e genererà a partire da una stringa iniziale tutte le stringhe in codice ASCII che sono programmi in C,cioè tutti i teoremi del sistema. Riformuliamo nel seguente modo le scoperte di Gödel e quelle di Turing per cogliere meglio le analogie: 10 Teorema di Gödel:per ogni sistema formale F che si proponga di decidere (cioè dimostrare o refutare) tutte le asserzioni dell’aritmetica,esiste una proposizione aritmetica che non può essere né dimostrata né refutata all’interno del sistema stesso.Dunque il sistema F è incompleto. Teorema dell’Arresto:per ogni programma H che si proponga di decidere se un qualunque programma termina o non termina,esistono un programma G e un input I tali che H non riesce determinare se G si arresterà o meno quando elabora i dati I CONCLUSIONI Dopo le scoperte di Gödel e Turing si parlò di crisi dei fondamenti della matematica. Ci troviamo infatti di fronte ad un bivio : ammettendo la coerenza della matematica viene meno la sua completezza. Le conseguenze dei risultati di Gödel e Turing on vanno però vissute in maniera così tragica;è chiaro che il sogno hilbertiano di assiomatizzazione dell’intera matematica non è realizzabile;ciononostante le proposizioni non dimostrabili sono all’origine di nuova matematica,ad esempio quando venne dimostrato che l’assioma delle parallele era effettivamente tale,vennero esplorate nuove geometrie non euclidee. Secondo lo stesso Gödel,chiudere la matematica nei limiti di un sistema formale avrebbe sì avuto il pregio di avere il pieno e totale controllo della disciplina ma ne avrebbe limitato notevolmente l’espansione. Inoltre il fatto che i ragionamenti della mente umana nell’ambito della dimostrazione di un qualsiasi teorema non possano essere ridotti a puro meccanicismo è consolante:ciò vuol dire che la struttura e la potenza della mente umana sono di gran lunga più complicate e sottili di quelle di qualunque macchina finora costruita,anche se i risultati di Gödel non vietano né affermano che un giorno tale macchina possa esistere. Bibliografia La prova di Gödel, E.Nagel,J.R.Newman,Bollati Boringhieri,Torino 1992 Gödel,l’eccentrica vita di un genio, John L.Casti,Werner DePauli,Raffaello Cortina editore,2001 Storia di un enigma,vita di Alan Turing ,Andrew Hodges,Bollati Boringhieri,1991 11 12