Che cos’è l’isomorfismo di Curry-Howard Abstract La logica, o quantomeno la teoria della dimostrazione, è incentrata sulla formulazione di sistemi formali di prove. La computer science, invece, è focalizzata sulla comprensione della nozione di programma, la quale viene indagata esplicitamente attraverso sistemi di tipi, ovvero sistemi di “etichette” che permettono di isolare insiemi di programmi dotati di buone proprietà computazionali. Queste due scienze si incontrarono per la prima volta quando nel 1934 il logico e matematico americano Haskell Brooks Curry notò l’esistenza di una stretta corrispondenza tra il frammento implicativo della logica intuizionistica (il cui unico connettivo è appunto l’implicazione) e la teoria dei tipi semplici. Tuttavia, queste osservazioni vennero da lui stesso considerate come non più di una mera curiosità. Chi portò avanti l’intuizione di Curry fu un logico statunitense di nome Willam Alvin Howard, il quale nel 1969, in un manoscritto circolato privatamente e pubblicato solo nel 1980, approfondı̀ le corrispondenze tra i due sistemi . Questi prime e informali ricerche dei due logici americani divennero ben presto le pietre angolari del cosiddetto paradigma degli isomorfismi di CurryHoward, gettando cosı̀ le basi di una comprensione logica dei linguaggi di programmazione tanto quanto di una fondazione computazionale dei sistemi logici: in questo framework, le formule vengono viste come tipi, le prove come programmi, e la normalizzazione delle prove come computazione. A partire dagli anni settanta, il matematico canadese Joachim Lambek mostrò che queste corrispondenze potevano essere ulteriormente estese fino ad abbracciare particolari strutture studiate in teoria delle categorie: le categorie cartesianamente chiuse. Il lavoro di Lambek delineò dunque un quadro ancora più elaborato di quello tracciato da Curry e da Howard, oggi noto come paradigma degli isomorfismi di Curry-Howard-Lambek, il quale costituı̀ il background ideale per indagare il concetto di dimostrazione e di computazione sotto un profilo puramente matematico. In questa breve presentazione mostreremo le basi ormai consolidate di tali paradigmi. Dopo aver fornito qualche nozione di base sulla logica intuizionistica, concentreremo la nostra attenzione sul lambda calcolo, un modello di computazione alla base di ogni linguaggio di programmazione funzionale. Mostreremo come l’enorme espressività del lambda calcolo comporti inevitabilmente l’esistenza di programmi la cui esecuzione non termina. Per questo motivo, introdurremo la nozione di tipo, formulando il sistema di lambda calcolo tipato semplice. E’ a questo punto che faremo entrare in gioco gli 1 isomorfismi di Curry-Howard tra sistemi tipati e sistemi logici, cercando di esporre nel dettaglio le varie correlazioni. Inoltre, dopo aver introdotto qualche nozione di teoria delle categorie necessaria per poter definire la struttura delle categorie cartesianamente chiuse, parleremo dell’isomorfismo di Curry-Howard-Lambek, il quale aprirà la strada ad un’indagine semantica del concetto di programma. Infine, forniremo una fugace panoramica sugli sviluppi e sulle applicazioni degli isomorfismi di Curry-Howard-Lambek. In particolare, parleremo di contenuto computazionale di un sistema logico, delle semantiche denotazionali e delle recenti conquiste della logica lineare. La presentazione può essere cosı̀ sintetizzata: 1. Partiremo da un breve cappello introduttivo di tipo storico-concettuale sul paradigma; 2. Richiameremo alla memoria il frammento implicativo della logica intuizionistica, soffermandoci sulla proprietà di normalizzazione; 3. Definiremo la sintassi del lambda calcolo e la dinamica della beta riduzione; 4. Adotteremo un sistema di tipi, il lambda calcolo tipato semplice, il quale ci consentirà di isolare un insieme di programmi “sicuri”; 5. Enunceremo l’isomorfismo di Curry-Howard tra il sistema di tipi e il sistema logico precedentemente formulato; 6. Passeremo a fornire i lineamenti della teoria delle categorie per definire le categorie cartesianamente chiuse; 7. Enunceremo gli isomorfismi di Curry-Howard-Lambek, notando come il nuovo isomorfismo definisca una relazione non più sintattica, ma semantica; 8. Riformuleremo l’isomorfismo in termini di semantica categoriale per i programmi; 9. Forniremo una panoramica sugli sviluppi e sulle applicazioni di quanto abbiamo trattato. 2