Logica Informatica Proofs-as-programs Riferimenti bibliografici La corrispondenza Curry-Howard Flavio Zelazek 4 luglio 2009 Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Introduzione La corrispondenza Curry-Howard e il paradigma proofs-as-programs (o formulae-as-types) da essa originatosi sono un importante esempio di transdisciplinarità, costituendo un notevole caso di interazione “spontanea” (scoperta a posteriori, non costruita ad hoc) tra due discipline scientifiche: LOGICA Teoria della dimostrazione Deduzione naturale Flavio Zelazek INFORMATICA Teoria dei tipi λ-calcolo tipato La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Introduzione La corrispondenza Curry-Howard e il paradigma proofs-as-programs (o formulae-as-types) da essa originatosi sono un importante esempio di transdisciplinarità, costituendo un notevole caso di interazione “spontanea” (scoperta a posteriori, non costruita ad hoc) tra due discipline scientifiche: LOGICA Teoria della dimostrazione Deduzione naturale Flavio Zelazek INFORMATICA Teoria dei tipi λ-calcolo tipato La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Introduzione La corrispondenza Curry-Howard e il paradigma proofs-as-programs (o formulae-as-types) da essa originatosi sono un importante esempio di transdisciplinarità, costituendo un notevole caso di interazione “spontanea” (scoperta a posteriori, non costruita ad hoc) tra due discipline scientifiche: LOGICA Teoria della dimostrazione Deduzione naturale Flavio Zelazek INFORMATICA Teoria dei tipi λ-calcolo tipato La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Contenuto 1 Logica L’interpretazione funzionale della logica La deduzione naturale 2 Informatica Il λ-calcolo I sistemi di tipi 3 Proofs-as-programs Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Denotazione e senso Due diverse concezioni del significato dei connettivi logici: Realista (Tarski): il significato di un enunciato è dato dalle sue condizioni di verità — l’enunciato A → B è vero quando se è vero A allora è vero B, cioè quando A è falso oppure B è vero (modelli – semantica – denotazione). Costruttivista (Heyting): il significato di un enunciato è dato dalle sue condizioni di asseribilità, cioè da cosa conta come una sua dimostrazione — una dimostrazione di A → B è una costruzione (ovvero, una funzione) che trasforma ogni dimostrazione di A in una dimostrazione di B (dimostrazioni – sintassi – senso). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Denotazione e senso Due diverse concezioni del significato dei connettivi logici: Realista (Tarski): il significato di un enunciato è dato dalle sue condizioni di verità — l’enunciato A → B è vero quando se è vero A allora è vero B, cioè quando A è falso oppure B è vero (modelli – semantica – denotazione). Costruttivista (Heyting): il significato di un enunciato è dato dalle sue condizioni di asseribilità, cioè da cosa conta come una sua dimostrazione — una dimostrazione di A → B è una costruzione (ovvero, una funzione) che trasforma ogni dimostrazione di A in una dimostrazione di B (dimostrazioni – sintassi – senso). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Estensione ed intensione Il concetto di funzione, a sua volta, può essere inteso in due modi: Estensionale: una funzione f da A a B va identificata col suo grafo in senso insiemistico, cioè l’insieme di tutte le coppie ordinate hx, y i dove x ∈ A e y = f (x) ∈ B. Intensionale: una funzione f da A a B è una regola (una procedura, un algoritmo, un programma) che prescrive una computazione da effettuare per ottenere f (x) da x, cioè che indica come trasformare un qualunque elemento di A in un elemento di B. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Estensione ed intensione Il concetto di funzione, a sua volta, può essere inteso in due modi: Estensionale: una funzione f da A a B va identificata col suo grafo in senso insiemistico, cioè l’insieme di tutte le coppie ordinate hx, y i dove x ∈ A e y = f (x) ∈ B. Intensionale: una funzione f da A a B è una regola (una procedura, un algoritmo, un programma) che prescrive una computazione da effettuare per ottenere f (x) da x, cioè che indica come trasformare un qualunque elemento di A in un elemento di B. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale La deduzione naturale L’oggetto di studio della deduzione naturale (e del calcolo dei sequenti) sono le dimostrazioni – e non solo la dimostrabilità. Nella deduzione naturale la regola di introduzione per un connettivo ne definisce il significato, mostrando quali sono le condizioni di asseribilità di un enunciato che ha quel connettivo come connettivo principale. La deduzione naturale è dunque il tipo si sistema logico maggiormente connesso con l’interpretazione funzionale della logica, su cui si basa la corrispondenza Curry-Howard. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Il sistema NJ→ Il sistema di deduzione naturale NJ→ è dato dalle seguenti regole di inferenza: x Ax .. . B A→B →I A→B B A →E Le dimostrazioni sono costruite a partire da assunzioni (etichettate dalle variabili x, y , z, . . . ) utilizzando le regole →I e →E. In un’applicazione della regola →I, tutte le assunzioni della forma A etichettate dalla variabile x vengono scaricate: la conclusione non dipende più da esse. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Il sistema NJ→ S x :A−A A SS Γ, x : A − B →I Γ−A→B Γ−A→B ∆ − A →E Γ, ∆ − B Γ−B W Γ, x : A − B Γ, x : A, y : A − B C Γ, z : A − B Figura: Deduzione naturale “in stile sequente” Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Normalizzazione La normalizzazione è la procedura che elimina certe “deviazioni” nelle dimostrazioni. Tali “deviazioni” consistono in applicazioni ridondanti di regole: tipicamente, l’introduzione di un connettivo seguita immediatamente da un’eliminazione di quello stesso connettivo. Le dimostrazioni normali hanno tutte la stessa forma (sono scomponibili in una parte analitica e in un a parte sintetica) e godono di importanti proprietà, tra cui la proprietà della sottoformula. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’interpretazione funzionale della logica La deduzione naturale Regole di conversione Una dimostrazione viene ridotta in forma normale mediante la ripetuta applicazione di certe regole di riscrittura, dette regole di conversione. Nel caso di NJ→ abbiamo quest’unica regola: →-conv: D1 A Ax D2 B x →I A → B →E B ; D1 A D2 B (la sottodimostrazione D1 viene sostituita al posto di ognuna delle 0 o più occorrenze di A etichettate con x) Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Contenuto 1 Logica L’interpretazione funzionale della logica La deduzione naturale 2 Informatica Il λ-calcolo I sistemi di tipi 3 Proofs-as-programs Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Il λ-calcolo Il λ-calcolo, nato come teoria generale delle funzioni, oggi è uno dei principali modelli di calcolo (insieme alla teoria della ricorsività e alle macchine di Turing), ovvero quegli insiemi di metodologie, modelli e teorie formali attraverso cui viene spiegato ed analizzato il concetto generale di computazione. Inoltre, grazie al suo misto di potenza espressiva e semplicità sintattica, esso funge da linguaggio paradigmatico di programmazione (soprattutto nel caso dei linguaggi di programmazione funzionale). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi La λ-notazione Gli oggetti studiati dal λ-calcolo sono i λ-termini, costruiti a partire da variabili mediante le seguenti operazioni: Astrazione: a partire dal termine t si può formare il termine λx. t astraendo dalla variabile x (di cui t contiene 0 o più occorrenze). Il termine λx. t rappresenta la funzione che, per ogni x, applicata a x dà come risultato t. Applicazione: a partire dai termini t e s si può formare il termine ts. Il termine ts rappresenta l’applicazione della funzione t all’argomento s. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi La β-riduzione La computazione (o β-riduzione) di un λ-termine ha luogo applicando ripetutamente ai suoi sottotermini della forma (λx. t)s (chiamati redex, ossia “espressioni riducibili”) la seguente regola di riscrittura, detta regola di β-conversione: (λx. t)s t[s/x] Un “passo di computazione” dunque consiste semplicemente nella sostituzione dell’argomento s al posto della variabile x nel corpo della funzione λx. t (cioè in t). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Programmare col λ-calcolo Per ogni n ∈ N, il numerale di Church n che rappresenta n è definito così: n ≡ λx. λy . x n y (t n s denota l’applicazione di t a s iterata n volte). La funzione (il programma) che calcola il successore di un numerale di Church è definita così: succ ≡ λn. λx. λy . x(nxy ) Un esempio di computazione: succ 1 ≡ succ λw. λz. wz λx. λy . x((λw. λz. wz)xy ) λx. λy . x((λz. xz)y ) λx. λy . x(xy ) ≡ 2 Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Tipi di dati Un tipo di dati è una classe di dati che hanno lo stesso “comportamento computazionale”. Per esempio, Int è il tipo degli interi, e Bool è il tipo dei booleani. Se A e B sono tipi, il tipo funzione A → B rappresenta lo spazio delle funzioni da A a B. Così, Int → Bool è il tipo di un programma che prende come input un intero e dà come output un booleano (per esempio il programma che calcola se un numero è primo oppure no). Il tipo di un programma ne costituisce dunque la specifica in un senso molto basilare. Questa permette di farlo interagire con altri programmi in modo coerente a prescindere dalla conoscenza del suo contenuto (il programma è un modulo, e il suo tipo è l’interfaccia del modulo). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Il type-checking Un sistema di tipi è una classificazione delle espressioni di un linguaggio di programmazione in base a tipi di dati, la quale serve a garantire che durante l’esecuzione di un programma non si verifichino certi errori di natura molto basilare, gli errori di tipo. Essi avvengono quando si fanno interagire due programmi con tipi incompatibili (per esempio quando si usa l’output di un programma di tipo Int → Bool come input di un programma di tipo Int → Int). Questo obiettivo è conseguito definendo delle regole di type-checking, che servono a calcolare i tipi delle espressioni che occorrono in un programma e a verificare che non ci siano delle discordanze tra essi. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Il λ-calcolo tipato È possibile arricchire il λ-calcolo con un sistema di tipi, ottenendo il λ-calcolo tipato, in cui a ciascun λ-termine viene associato un tipo (scelto tra i tipi atomici e quelli formati a partire da questi mediante i costruttori di tipo, ad es. →). Un giudizio di tipo è un’espressione della forma x1 : A1 , . . . , xn : An I t : B Il suo significato è che, assumendo che le variabili x1 , . . . , xn (che eventualmente occorrono libere in t) siano rispettivamente di tipo A1 , . . . , An , il λ-termine t è di tipo B. Una derivazione di tipo è una derivazione costruita mediante le regole di type-checking; essa corrisponde alla costruzione del λ-termine con cui si conclude, e all’assegnazione a questo di un tipo conformemente con esse. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi Il λ-calcolo tipato semplice λβ → x :AIx :A VAR Γ, x : A I t : B A BS Γ I λx. t : A → B ΓIt :A→B ∆Is:A A PP Γ, ∆ I ts : B ΓIt :B E NV-W Γ, x : A I t : B Γ, x : A, y : A I t : B E NV-C Γ, z : A I t[z/x, z/y ] : B Figura: Regole di type-checking per λβ → Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Il λ-calcolo I sistemi di tipi La β-riduzione in λβ → La β-riduzione nel λ-calcolo tipato semplice è sostanzialmente immutata; ma ora può esser meglio analizzata come trasformazione delle derivazioni di tipo: β-conv: Γ, x : A D1 t :B A BS λx. t : A → B (λx. t)s : B ∆ D2 s:A A PP Γ, ∆ D1 [D2 /x] t[s/x] : B (la notazione D1 [D2 /x] rappresenta la derivazione D1 in cui tutte le (eventuali) assunzioni etichettate con x sono state sostituite dalla derivazione D2 avente conclusione s : A) Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Contenuto 1 Logica L’interpretazione funzionale della logica La deduzione naturale 2 Informatica Il λ-calcolo I sistemi di tipi 3 Proofs-as-programs Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Nascita della corrispondenza Curry-Howard La corrispondenza Curry-Howard si articola, sia concettualmente che storicamente, nei seguenti quattro punti: 1 Interpretazione funzionale della logica, o interpretazione BHK (Brouwer-Heyting-Kolmogorov). 2 Corrispondenza tra formule e tipi (logica combinatoria di Curry; “interpretazione Dialectica” di Gödel). 3 Corrispondenza tra eliminazione del taglio (normalizzazione) e β-riduzione (Tait). 4 Corrispondenza tra dimostrazioni e λ-termini (Howard). La corrispondenza che sussiste non solo tra dimostrazioni e λ-termini, ma anche tra le operazioni che si possono svolgere su di essi (normalizzazione e β-riduzione), permette di individuare un vero e proprio isomorfismo: Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Nascita della corrispondenza Curry-Howard La corrispondenza Curry-Howard si articola, sia concettualmente che storicamente, nei seguenti quattro punti: 1 Interpretazione funzionale della logica, o interpretazione BHK (Brouwer-Heyting-Kolmogorov). 2 Corrispondenza tra formule e tipi (logica combinatoria di Curry; “interpretazione Dialectica” di Gödel). 3 Corrispondenza tra eliminazione del taglio (normalizzazione) e β-riduzione (Tait). 4 Corrispondenza tra dimostrazioni e λ-termini (Howard). La corrispondenza che sussiste non solo tra dimostrazioni e λ-termini, ma anche tra le operazioni che si possono svolgere su di essi (normalizzazione e β-riduzione), permette di individuare un vero e proprio isomorfismo: Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Nascita della corrispondenza Curry-Howard La corrispondenza Curry-Howard si articola, sia concettualmente che storicamente, nei seguenti quattro punti: 1 Interpretazione funzionale della logica, o interpretazione BHK (Brouwer-Heyting-Kolmogorov). 2 Corrispondenza tra formule e tipi (logica combinatoria di Curry; “interpretazione Dialectica” di Gödel). 3 Corrispondenza tra eliminazione del taglio (normalizzazione) e β-riduzione (Tait). 4 Corrispondenza tra dimostrazioni e λ-termini (Howard). La corrispondenza che sussiste non solo tra dimostrazioni e λ-termini, ma anche tra le operazioni che si possono svolgere su di essi (normalizzazione e β-riduzione), permette di individuare un vero e proprio isomorfismo: Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Nascita della corrispondenza Curry-Howard La corrispondenza Curry-Howard si articola, sia concettualmente che storicamente, nei seguenti quattro punti: 1 Interpretazione funzionale della logica, o interpretazione BHK (Brouwer-Heyting-Kolmogorov). 2 Corrispondenza tra formule e tipi (logica combinatoria di Curry; “interpretazione Dialectica” di Gödel). 3 Corrispondenza tra eliminazione del taglio (normalizzazione) e β-riduzione (Tait). 4 Corrispondenza tra dimostrazioni e λ-termini (Howard). La corrispondenza che sussiste non solo tra dimostrazioni e λ-termini, ma anche tra le operazioni che si possono svolgere su di essi (normalizzazione e β-riduzione), permette di individuare un vero e proprio isomorfismo: Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Nascita della corrispondenza Curry-Howard La corrispondenza Curry-Howard si articola, sia concettualmente che storicamente, nei seguenti quattro punti: 1 Interpretazione funzionale della logica, o interpretazione BHK (Brouwer-Heyting-Kolmogorov). 2 Corrispondenza tra formule e tipi (logica combinatoria di Curry; “interpretazione Dialectica” di Gödel). 3 Corrispondenza tra eliminazione del taglio (normalizzazione) e β-riduzione (Tait). 4 Corrispondenza tra dimostrazioni e λ-termini (Howard). La corrispondenza che sussiste non solo tra dimostrazioni e λ-termini, ma anche tra le operazioni che si possono svolgere su di essi (normalizzazione e β-riduzione), permette di individuare un vero e proprio isomorfismo: Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Nascita della corrispondenza Curry-Howard La corrispondenza Curry-Howard si articola, sia concettualmente che storicamente, nei seguenti quattro punti: 1 Interpretazione funzionale della logica, o interpretazione BHK (Brouwer-Heyting-Kolmogorov). 2 Corrispondenza tra formule e tipi (logica combinatoria di Curry; “interpretazione Dialectica” di Gödel). 3 Corrispondenza tra eliminazione del taglio (normalizzazione) e β-riduzione (Tait). 4 Corrispondenza tra dimostrazioni e λ-termini (Howard). La corrispondenza che sussiste non solo tra dimostrazioni e λ-termini, ma anche tra le operazioni che si possono svolgere su di essi (normalizzazione e β-riduzione), permette di individuare un vero e proprio isomorfismo: Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’isomorfismo Curry-Howard DEDUZIONE NATURALE formule dimostrazioni normalizzazione Flavio Zelazek λ-CALCOLO TIPATO tipi λ-termini β-riduzione La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’isomorfismo Curry-Howard DEDUZIONE NATURALE formule dimostrazioni normalizzazione Flavio Zelazek λ-CALCOLO TIPATO tipi λ-termini β-riduzione La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’isomorfismo Curry-Howard DEDUZIONE NATURALE formule dimostrazioni normalizzazione Flavio Zelazek λ-CALCOLO TIPATO tipi λ-termini β-riduzione La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici L’isomorfismo Curry-Howard DEDUZIONE NATURALE formule dimostrazioni normalizzazione Flavio Zelazek λ-CALCOLO TIPATO tipi λ-termini β-riduzione La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici La decorazione: dalle regole di NJ→ . . . x :A− Γ, x : A − B →I Γ− A→B A Γ− A SS A→B Γ, ∆ − ∆− B Γ, x : A, y : A − Γ, z : A − Γ− B W Γ, x : A − B Figura: Il sistema NJ→ S Flavio Zelazek La corrispondenza Curry-Howard A B B →E C Logica Informatica Proofs-as-programs Riferimenti bibliografici . . . alle regole di type-checking per λβ → x :A−x :A A SS Γ, x : A − t : B →I Γ − λx. t : A → B Γ−t :A→B ∆−s:A →E Γ, ∆ − ts : B Γ−t :B W Γ, x : A − t : B Γ, x : A, y : A − t : B C Γ, z : A − t[z/x, z/y ] : B Figura: Sistema di assegnazione di termini per NJ→ S Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Curry-Howard: importanza pratica Il paradigma proofs-as-programs permette una fruttuosa interazione tra logica e informatica (teorica), consistente nello “scambio” di risultati e metodi tra le due discipline: Sul versante della logica, ha fatto sì che essa venisse studiata sempre di più con gli strumenti della semantica denotazionale e della teoria delle categorie. In particolare, la semantica denotazionale (la quale modellizza il concetto di dimostrazione e non solo quello di dimostrabilità) è alla base della nascita della logica lineare. Sul versante dell’informatica, ha comportato un maggior rigore nella progettazione dei linguaggi di programmazione, dovuto al fatto che questa è sempre più “guidata” da un sistema logico sottostante. Inoltre, alcune tra le proprietà fondamentali dei linguaggi di programmazione (per esempio, la loro complessità computazionale) possono essere studiate come proprietà dei sistemi logici corrispondenti. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Curry-Howard: importanza pratica Il paradigma proofs-as-programs permette una fruttuosa interazione tra logica e informatica (teorica), consistente nello “scambio” di risultati e metodi tra le due discipline: Sul versante della logica, ha fatto sì che essa venisse studiata sempre di più con gli strumenti della semantica denotazionale e della teoria delle categorie. In particolare, la semantica denotazionale (la quale modellizza il concetto di dimostrazione e non solo quello di dimostrabilità) è alla base della nascita della logica lineare. Sul versante dell’informatica, ha comportato un maggior rigore nella progettazione dei linguaggi di programmazione, dovuto al fatto che questa è sempre più “guidata” da un sistema logico sottostante. Inoltre, alcune tra le proprietà fondamentali dei linguaggi di programmazione (per esempio, la loro complessità computazionale) possono essere studiate come proprietà dei sistemi logici corrispondenti. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Curry-Howard: importanza pratica Il paradigma proofs-as-programs permette una fruttuosa interazione tra logica e informatica (teorica), consistente nello “scambio” di risultati e metodi tra le due discipline: Sul versante della logica, ha fatto sì che essa venisse studiata sempre di più con gli strumenti della semantica denotazionale e della teoria delle categorie. In particolare, la semantica denotazionale (la quale modellizza il concetto di dimostrazione e non solo quello di dimostrabilità) è alla base della nascita della logica lineare. Sul versante dell’informatica, ha comportato un maggior rigore nella progettazione dei linguaggi di programmazione, dovuto al fatto che questa è sempre più “guidata” da un sistema logico sottostante. Inoltre, alcune tra le proprietà fondamentali dei linguaggi di programmazione (per esempio, la loro complessità computazionale) possono essere studiate come proprietà dei sistemi logici corrispondenti. Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Curry-Howard: rilevanza filosofica 1 I sistemi logici a bassa complessità (tra cui principalmente le logiche leggere, tutte basate sulla logica lineare) permettono di dare una caratterizzazione puramente logica, attraverso la corrispondenza Curry-Howard, di alcune classi di complessità – tra cui la classe P dei problemi algoritmici risolvibili in tempo polinomiale (ovvero in modo efficiente). . . 2 . . . La nostra via via maggiore comprensione della classe P ci avvicina alla soluzione di uno dei più affascinanti “problemi del ? millennio”, il problema P = NP. . . 3 . . . La soluzione di questo problema è strettamente collegata alla realizzabilità di una versione limitata del programma di Hilbert (cfr. lettera di Gödel a Von Neumann, 1956). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Curry-Howard: rilevanza filosofica 1 I sistemi logici a bassa complessità (tra cui principalmente le logiche leggere, tutte basate sulla logica lineare) permettono di dare una caratterizzazione puramente logica, attraverso la corrispondenza Curry-Howard, di alcune classi di complessità – tra cui la classe P dei problemi algoritmici risolvibili in tempo polinomiale (ovvero in modo efficiente). . . 2 . . . La nostra via via maggiore comprensione della classe P ci avvicina alla soluzione di uno dei più affascinanti “problemi del ? millennio”, il problema P = NP. . . 3 . . . La soluzione di questo problema è strettamente collegata alla realizzabilità di una versione limitata del programma di Hilbert (cfr. lettera di Gödel a Von Neumann, 1956). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Curry-Howard: rilevanza filosofica 1 I sistemi logici a bassa complessità (tra cui principalmente le logiche leggere, tutte basate sulla logica lineare) permettono di dare una caratterizzazione puramente logica, attraverso la corrispondenza Curry-Howard, di alcune classi di complessità – tra cui la classe P dei problemi algoritmici risolvibili in tempo polinomiale (ovvero in modo efficiente). . . 2 . . . La nostra via via maggiore comprensione della classe P ci avvicina alla soluzione di uno dei più affascinanti “problemi del ? millennio”, il problema P = NP. . . 3 . . . La soluzione di questo problema è strettamente collegata alla realizzabilità di una versione limitata del programma di Hilbert (cfr. lettera di Gödel a Von Neumann, 1956). Flavio Zelazek La corrispondenza Curry-Howard Logica Informatica Proofs-as-programs Riferimenti bibliografici Bibliografia [1] Jean Gallier. Constructive logics Part I: A tutorial on proof systems and typed -calculi. Theoretical Computer Science, 110:249–339, 1993. [2] Jean-Yves Girard, Paul Taylor, e Yves Lafont. Proofs and types. Cambridge University Press, 1989. [3] Benjamin C. Pierce. Types and Programming Languages. The MIT Press, 2002. [4] Steven Rudich. Complexity Theory: From Gödel to Feynman. In Computational Complexity. A cura di Steven Rudich e Avi Wigderson. American Mathematical Society, 2004. [5] Philip Wadler. Proofs are Programs: 19th Century Logic and 21st Century Computing. Reperibile su http://homepages.inf.ed.ac.uk/wadler/, 2000. Flavio Zelazek La corrispondenza Curry-Howard