Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Prove e Tipi: Un’introduzione all’isomorfismo di Curry-Howard Dipartimento di Matematica ed Informatica, Universit`a di Cagliari 9 maggio 2012
Paolo Di Giamberardino
[email protected]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Referenze
J.Y. Girard, Y. Lafont, P. Taylor : Proofs and Types. Cambridge University, 1989. L. Tortora di Falco: Sulla struttura logica del calcolo. Rendiconti di Matematica e delle sue applicazioni (vol. 26, serie VII - pagg. 367-404), 2006. Le slides sono disponibili sul sito del gruppo di ricerca Trustworthy Computational Societies, all’indirizzo http://tcs.unica.it
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Indice
1
Introduzione: logica e informatica
2
Il λ-calcolo e la programmazione funzionale
3
La deduzione naturale e la corrispondenza prove-programmi
4
Potere espressivo: Sistema F e polimorfismo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Indice
1
Introduzione: logica e informatica
2
Il λ-calcolo e la programmazione funzionale
3
La deduzione naturale e la corrispondenza prove-programmi
4
Potere espressivo: Sistema F e polimorfismo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa c’entra la logica con l’informatica?
David Hilbert
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La questione dei fondamenti Teoria degli insiemi (Cantor): L’insieme R dei numeri reali non `e numerabile i.e. non pu` o essere messo in corrispondenza biunivoca con l’insieme N dei numeri naturali: la sua cardinalit`a `e strettamente superiore.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La questione dei fondamenti Teoria degli insiemi (Cantor): L’insieme R dei numeri reali non `e numerabile i.e. non pu` o essere messo in corrispondenza biunivoca con l’insieme N dei numeri naturali: la sua cardinalit`a `e strettamente superiore. Geometrie non euclidee (Riemann): Scoperte nel tentativo di fornire una dimostrazione per assurdo del V postulato di Euclide (“Per un punto passa una e una sola retta parallela ad una retta data), sono geometrie costruite negando il V postulato.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La questione dei fondamenti Teoria degli insiemi (Cantor): L’insieme R dei numeri reali non `e numerabile i.e. non pu` o essere messo in corrispondenza biunivoca con l’insieme N dei numeri naturali: la sua cardinalit`a `e strettamente superiore. Geometrie non euclidee (Riemann): Scoperte nel tentativo di fornire una dimostrazione per assurdo del V postulato di Euclide (“Per un punto passa una e una sola retta parallela ad una retta data), sono geometrie costruite negando il V postulato. Secondo problema di Hilbert: E’ possibile dimostrare la consistenza della matematica?.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Entscheidungsproblem
Problema della decisione (Hilbert-Ackermann, 1928): Dato un enunciato dell’ l’aritmetica, esiste una procedura meccanica effettiva capace di stabilire se l’enunciato in questione sia deducibile o meno dagli assiomi?
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Entscheidungsproblem
Problema della decisione (Hilbert-Ackermann, 1928): Dato un enunciato dell’ l’aritmetica, esiste una procedura meccanica effettiva capace di stabilire se l’enunciato in questione sia deducibile o meno dagli assiomi? Es: “ogni numero pari maggiore di 2 pu` o essere scritto come somma di due numeri primi” (congettura di Goldbach)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Entscheidungsproblem
Problema della decisione (Hilbert-Ackermann, 1928): Dato un enunciato dell’ l’aritmetica, esiste una procedura meccanica effettiva capace di stabilire se l’enunciato in questione sia deducibile o meno dagli assiomi? Es: “ogni numero pari maggiore di 2 pu` o essere scritto come somma di due numeri primi” (congettura di Goldbach) La procedura prende in input l’enunciato e restituisce in output una risposta, “S`ı” o “No”, in un numero finito di passi.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Entscheidungsproblem
Problema della decisione (Hilbert-Ackermann, 1928): Dato un enunciato dell’ l’aritmetica, esiste una procedura meccanica effettiva capace di stabilire se l’enunciato in questione sia deducibile o meno dagli assiomi?
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Entscheidungsproblem
Problema della decisione (Hilbert-Ackermann, 1928): Dato un enunciato dell’ l’aritmetica, esiste una procedura meccanica effettiva capace di stabilire se l’enunciato in questione sia deducibile o meno dagli assiomi? Modello di calcolo: Definizione matematica rigorosa della nozione intuitiva di procedura meccanica di calcolo.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le funzioni ricorsive
Kurt Godel
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le funzioni ricorsive
Modello assiomatico: la classe delle funzioni ricorsive `e la piu piccola classe contenente :
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le funzioni ricorsive
Modello assiomatico: la classe delle funzioni ricorsive `e la piu piccola classe contenente : alcune funzioni di base (funzioni zero, successore, proiezioni)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le funzioni ricorsive
Modello assiomatico: la classe delle funzioni ricorsive `e la piu piccola classe contenente : alcune funzioni di base (funzioni zero, successore, proiezioni) chiusa rispetto a certe operazioni (composizione, ricorsione...)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le funzioni ricorsive
Modello assiomatico: la classe delle funzioni ricorsive `e la piu piccola classe contenente : alcune funzioni di base (funzioni zero, successore, proiezioni) chiusa rispetto a certe operazioni (composizione, ricorsione...)
Pro: Definizione matematicamente elegante.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le funzioni ricorsive
Modello assiomatico: la classe delle funzioni ricorsive `e la piu piccola classe contenente : alcune funzioni di base (funzioni zero, successore, proiezioni) chiusa rispetto a certe operazioni (composizione, ricorsione...)
Pro: Definizione matematicamente elegante. Contro: manca una nozione esplicita di passo di calcolo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le macchine di Turing
Alan Turing
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le macchine di Turing
Modello “concreto”: una macchina di Turing `e costituita da : un nastro infinito;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le macchine di Turing
Modello “concreto”: una macchina di Turing `e costituita da : un nastro infinito; una testina in grado di leggere, scrivere e spostarsi sul nastro;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le macchine di Turing
Modello “concreto”: una macchina di Turing `e costituita da : un nastro infinito; una testina in grado di leggere, scrivere e spostarsi sul nastro; un insieme di istruzioni, che descrive come la macchina passa da un determinato stato ad un altro.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le macchine di Turing
Modello “concreto”: una macchina di Turing `e costituita da : un nastro infinito; una testina in grado di leggere, scrivere e spostarsi sul nastro; un insieme di istruzioni, che descrive come la macchina passa da un determinato stato ad un altro.
Pro: nozione precisa di passo di calcolo, evidentemente meccanizzabile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: le macchine di Turing
Modello “concreto”: una macchina di Turing `e costituita da : un nastro infinito; una testina in grado di leggere, scrivere e spostarsi sul nastro; un insieme di istruzioni, che descrive come la macchina passa da un determinato stato ad un altro.
Pro: nozione precisa di passo di calcolo, evidentemente meccanizzabile. Contro: Difficile dimostrare propriet`a astratte in questo modello.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: il λ-calcolo
Alonzo Church
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: il λ-calcolo
Prende il meglio dei due mondi:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: il λ-calcolo
Prende il meglio dei due mondi: Definizione matematicamente elegante: si basa unicamente sulla nozione di funzione e di applicazione di funzioni.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: il λ-calcolo
Prende il meglio dei due mondi: Definizione matematicamente elegante: si basa unicamente sulla nozione di funzione e di applicazione di funzioni. Possiede una nozione esplicita di “passo di calcolo” (per quanto non cos`ı elementare come quella della macchina di Turing)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modelli di calcolo: il λ-calcolo
Prende il meglio dei due mondi: Definizione matematicamente elegante: si basa unicamente sulla nozione di funzione e di applicazione di funzioni. Possiede una nozione esplicita di “passo di calcolo” (per quanto non cos`ı elementare come quella della macchina di Turing) E’ il nucleo di base di tutti i linguaggi di programmazione funzionali (Lisp, ML, etc)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Equivalenza dei modelli di calcolo Teorema Data una qualsiasi funzione f da interi a interi, f `e Turing-calcolabile se e solo se `e ricorsiva se e solo se `e λ-calcolabile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Equivalenza dei modelli di calcolo Teorema Data una qualsiasi funzione f da interi a interi, f `e Turing-calcolabile se e solo se `e ricorsiva se e solo se `e λ-calcolabile. Tesi di Church-Turing Ogni funzione per cui esiste una procedura effettiva di calcolo `e Turing-calcolabile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Equivalenza dei modelli di calcolo Teorema Data una qualsiasi funzione f da interi a interi, f `e Turing-calcolabile se e solo se `e ricorsiva se e solo se `e λ-calcolabile. Tesi di Church-Turing Ogni funzione per cui esiste una procedura effettiva di calcolo `e Turing-calcolabile. La tesi non `e dimostrabile (la nozione di procedura effettiva non `e formale);
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Equivalenza dei modelli di calcolo Teorema Data una qualsiasi funzione f da interi a interi, f `e Turing-calcolabile se e solo se `e ricorsiva se e solo se `e λ-calcolabile. Tesi di Church-Turing Ogni funzione per cui esiste una procedura effettiva di calcolo `e Turing-calcolabile. La tesi non `e dimostrabile (la nozione di procedura effettiva non `e formale); l’evidenza “empirica” conferma la tesi di Church-Turing.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E l’Entscheidungsproblem ? Teorema di Church Non esiste una macchina di Turing che dato un enunciato dell’aritmetica sia capace di determinare se esso sia o meno dimostrabile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E l’Entscheidungsproblem ? Teorema di Church Non esiste una macchina di Turing che dato un enunciato dell’aritmetica sia capace di determinare se esso sia o meno dimostrabile. Problema della fermata (Turing) Non esiste una macchina di Turing capace di decidere se, a partire da un input arbitrario, un programma termini.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E l’Entscheidungsproblem ? Teorema di Church Non esiste una macchina di Turing che dato un enunciato dell’aritmetica sia capace di determinare se esso sia o meno dimostrabile. Problema della fermata (Turing) Non esiste una macchina di Turing capace di decidere se, a partire da un input arbitrario, un programma termini. Secondo teorema di incompletezza (Godel) Non `e possibile dimostrare la coerenza dell’aritmetica con metodi finiti.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Nascita dei moderni calcolatori
John Von Neumann
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
A volte i problemi sono pi`u interessanti delle soluzioni.... I know that in or about 1943 or ’44 von Neumann was well aware of the fundamental importance of Turing’s paper of 1936 ... Von Neumann introduced me to that paper and at his urging I studied it with care. Many people have acclaimed von Neumann as the ”father of the computer” (in a modern sense of the term) but I am sure that he would never have made that mistake himself. He might well be called the midwife, perhaps, but he firmly emphasized to me, and to others I am sure, that the fundamental conception is owing to Turing. Stan Frankel, collega di Von Neumann a Los Alamos.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Indice
1
Introduzione: logica e informatica
2
Il λ-calcolo e la programmazione funzionale
3
La deduzione naturale e la corrispondenza prove-programmi
4
Potere espressivo: Sistema F e polimorfismo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista estensionale
Una funzione `e una “legge” che associa ad ogni elemento del dominio di f (l’insieme dei valori di input X ) un elemento del codominio di f (l’insieme dei valori di output Y )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista estensionale
Una funzione `e una “legge” che associa ad ogni elemento del dominio di f (l’insieme dei valori di input X ) un elemento del codominio di f (l’insieme dei valori di output Y ) Piu formalmente, una funzione `e un sottoinsieme del prodotto cartesiano X × Y tale che per ogni x ∈ X esiste un unico y ∈ Y tale che (x, y ) ∈ f .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista estensionale
Una funzione `e una “legge” che associa ad ogni elemento del dominio di f (l’insieme dei valori di input X ) un elemento del codominio di f (l’insieme dei valori di output Y ) Piu formalmente, una funzione `e un sottoinsieme del prodotto cartesiano X × Y tale che per ogni x ∈ X esiste un unico y ∈ Y tale che (x, y ) ∈ f . L’esistenza e l’unicit`a rendono possibile la notazione f (x) = y ; ogni elemento del dominio di f determina in modo univoco un elemento del codominio di f .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista estensionale
Una funzione dal punto di vista estensionale `e completamente definita dal suo grafico : f = {(x, f (x)) : x ∈ X } ⊆ X × Y .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista estensionale
Una funzione dal punto di vista estensionale `e completamente definita dal suo grafico : f = {(x, f (x)) : x ∈ X } ⊆ X × Y . Dal punto di vista estensionale, non siamo interessati a sapere in che modo la funzione calcola i suoi valori; ci interessa solo conoscere i valori in entrata, i valori in uscita e la relazione tra di essi (chi corrisponde a chi).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista estensionale
Una funzione dal punto di vista estensionale `e completamente definita dal suo grafico : f = {(x, f (x)) : x ∈ X } ⊆ X × Y . Dal punto di vista estensionale, non siamo interessati a sapere in che modo la funzione calcola i suoi valori; ci interessa solo conoscere i valori in entrata, i valori in uscita e la relazione tra di essi (chi corrisponde a chi). Es. Le funzioni Sum(x, y ) = x + y e Mus(x, y ) = y + x sono estensionalmente equivalenti (anche se calcolano i loro valori in maniera differente).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista intensionale
Una funzione f `e una procedura effettiva che prende in input un x ∈ X e produce un output y ∈ Y in un numero finito di passi elementari.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista intensionale
Una funzione f `e una procedura effettiva che prende in input un x ∈ X e produce un output y ∈ Y in un numero finito di passi elementari. Dal punto di vista intensionale, siamo interessati a capire in che modo la funzione f produce il suo risultato: non ci basta conoscere il risultato.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Cosa `e una funzione? Il punto di vista intensionale
Una funzione f `e una procedura effettiva che prende in input un x ∈ X e produce un output y ∈ Y in un numero finito di passi elementari. Dal punto di vista intensionale, siamo interessati a capire in che modo la funzione f produce il suo risultato: non ci basta conoscere il risultato. Es. Le funzioni Sum(x, y ) = x + y e Mus(x, y ) = y + x sono intensionalmente differenti (anche se estensionalmente si comportano allo stesso modo).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t La funzione f dove f (x) = t.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
f (3) = 3 ∗ 3 = 9
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
f (3) = 3 ∗ 3 = 9 Calcolare = sostituire ( e rendere esplicito)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t La funzione f dove f (x) = t.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t La funzione f dove f (x) = t.
λx.t
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t La funzione f dove f (x) = t.
λx.t passo di calcolo: (λx.t)(u) ⇒ t[u/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = t La funzione f dove f (x) = t.
λx.t passo di calcolo: (λx.t)(u) ⇒ t[u/x] t[u/x] `e il termine ottenuto rimpiazzando in t ogni occorrenza libera di x con u.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
λx.x ∗ x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
λx.x ∗ x passo di calcolo: (λx.x ∗ x)(3) ⇒ x ∗ x[3/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (x) = x ∗ x La funzione f dove f (x) = x ∗ x.
λx.x ∗ x passo di calcolo: (λx.x ∗ x)(3) ⇒ x ∗ x[3/x]
x ∗ x[3/x] = 3 ∗ 3 = 9
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (y ) = y + 1
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (y ) = y + 1 La funzione f dove f (y ) = y + 1.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (y ) = y + 1 La funzione f dove f (y ) = y + 1.
λy .y + 1
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (y ) = y + 1 La funzione f dove f (y ) = y + 1.
λy .y + 1 passo di calcolo: (λy .y + 1)(3) ⇒ y + 1[3/y ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione
f (y ) = y + 1 La funzione f dove f (y ) = y + 1.
λy .y + 1 passo di calcolo: (λy .y + 1)(3) ⇒ y + 1[3/y ]
y + 1[3/y ] = 3 + 1 = 4
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione f (z) = z + 1
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione f (z) = z + 1 La funzione f dove f (z) = z + 1.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione f (z) = z + 1 La funzione f dove f (z) = z + 1.
λz.z + 1
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione f (z) = z + 1 La funzione f dove f (z) = z + 1.
λz.z + 1 passo di calcolo: (λz.z + 1)(3) ⇒ z + 1[3/z]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione f (z) = z + 1 La funzione f dove f (z) = z + 1.
λz.z + 1 passo di calcolo: (λz.z + 1)(3) ⇒ z + 1[3/z]
z + 1[3/z] = 3 + 1 = 4
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La λ-notazione f (z) = z + 1 La funzione f dove f (z) = z + 1.
λz.z + 1 passo di calcolo: (λz.z + 1)(3) ⇒ z + 1[3/z]
z + 1[3/z] = 3 + 1 = 4 λz.z + 1 ≡ λy .y + 1
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono piu riduzioni?
(λx.x ∗ x)((λy .y + 1)(2))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono piu riduzioni?
(λx.x ∗ x)((λy .y + 1)(2)) .
&
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono piu riduzioni?
(λx.x ∗ x)((λy .y + 1)(2)) . (λx.x ∗ x)(2 + 1)
& ((λy .y + 1)(2))∗ ((λy .y + 1)(2))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono piu riduzioni?
(λx.x ∗ x)((λy .y + 1)(2)) . (λx.x ∗ x)(2 + 1) &
& ((λy .y + 1)(2))∗ ((λy .y + 1)(2)) .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono piu riduzioni?
(λx.x ∗ x)((λy .y + 1)(2)) . (λx.x ∗ x)(2 + 1)
& ((λy .y + 1)(2))∗ ((λy .y + 1)(2)) .
& (2 + 1) ∗ (2 + 1)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y Currificazione: Una funzione a due argomenti pu`o essere rappresentata da una funzione sul primo argomento che restituisce una funzione sul secondo argomento
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y Currificazione: Una funzione a due argomenti pu`o essere rappresentata da una funzione sul primo argomento che restituisce una funzione sul secondo argomento g (3, 4) = 3 ∗ 3 + 4 ∗ 4 = 25
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y Currificazione: Una funzione a due argomenti pu`o essere rappresentata da una funzione sul primo argomento che restituisce una funzione sul secondo argomento g (3, 4) = 3 ∗ 3 + 4 ∗ 4 = 25 ((λx.λy .x ∗ x + y ∗ y )(3))(4)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y Currificazione: Una funzione a due argomenti pu`o essere rappresentata da una funzione sul primo argomento che restituisce una funzione sul secondo argomento g (3, 4) = 3 ∗ 3 + 4 ∗ 4 = 25
⇒
((λx.λy .x ∗ x + y ∗ y )(3))(4) (λy .3 ∗ 3 + y ∗ y )(4)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y Currificazione: Una funzione a due argomenti pu`o essere rappresentata da una funzione sul primo argomento che restituisce una funzione sul secondo argomento g (3, 4) = 3 ∗ 3 + 4 ∗ 4 = 25
⇒ ⇒
((λx.λy .x ∗ x + y ∗ y )(3))(4) (λy .3 ∗ 3 + y ∗ y )(4) 3∗3+4∗4
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
E quando ci sono pi`u argomenti? g (x, y ) = x ∗ x + y ∗ y Currificazione: Una funzione a due argomenti pu`o essere rappresentata da una funzione sul primo argomento che restituisce una funzione sul secondo argomento g (3, 4) = 3 ∗ 3 + 4 ∗ 4 = 25
⇒ ⇒ ⇒
((λx.λy .x ∗ x + y ∗ y )(3))(4) (λy .3 ∗ 3 + y ∗ y )(4) 3∗3+4∗4 25
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
g (f (z))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
g (f (z)) Composizione: Una funzione che prende due funzioni f e g come argomenti e restituisce una funzione che prende un argomento z, applica la prima funzione all’argomento, e applica la seconda funzione al risultato
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
g (f (z)) Composizione: Una funzione che prende due funzioni f e g come argomenti e restituisce una funzione che prende un argomento z, applica la prima funzione all’argomento, e applica la seconda funzione al risultato
λf .λg .λz.g (f (z))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
⇒
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2) (λg .λz.g ((λy .y + 1)(z)))(λx.x ∗ x)(2)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
⇒ ⇒
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2) (λg .λz.g ((λy .y + 1)(z)))(λx.x ∗ x)(2) (λz.(λx.x ∗ x)((λy .y + 1)(z)))(2)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
⇒ ⇒ ⇒
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2) (λg .λz.g ((λy .y + 1)(z)))(λx.x ∗ x)(2) (λz.(λx.x ∗ x)((λy .y + 1)(z)))(2) (λx.x ∗ x)((λy .y + 1)(2))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
⇒ ⇒ ⇒ ⇒
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2) (λg .λz.g ((λy .y + 1)(z)))(λx.x ∗ x)(2) (λz.(λx.x ∗ x)((λy .y + 1)(z)))(2) (λx.x ∗ x)((λy .y + 1)(2)) (2 + 1) ∗ (2 + 1)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
⇒ ⇒ ⇒ ⇒ ⇒
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2) (λg .λz.g ((λy .y + 1)(z)))(λx.x ∗ x)(2) (λz.(λx.x ∗ x)((λy .y + 1)(z)))(2) (λx.x ∗ x)((λy .y + 1)(2)) (2 + 1) ∗ (2 + 1) 9
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Composizione di funzioni
⇒ ⇒ ⇒ ⇒ ⇒
(λf .λg .λz.g (f (z)))(λy .y + 1)(λx.x ∗ x)(2) (λg .λz.g ((λy .y + 1)(z)))(λx.x ∗ x)(2) (λz.(λx.x ∗ x)((λy .y + 1)(z)))(2) (λx.x ∗ x)((λy .y + 1)(2)) (2 + 1) ∗ (2 + 1) 9
Una funzione pu`o prendere in argomento funzioni e restituire come valore una funzione
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
λ-calcolo, in due parole
λ-calcolo: linguaggio di programmazione funzionale; termini del λ-calcolo: programmi; regola di riduzione: passo di calcolo (esecuzione del programma) Tutto `e una funzione
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sintassi del λ-calcolo
M ::= x
| λx.M | MM
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sintassi del λ-calcolo
M ::= x
Un λ-termine M `e :
| λx.M | MM
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sintassi del λ-calcolo
M ::= x
| λx.M | MM
Un λ-termine M `e : una variabile x presa da un insieme infinito numerabile V di variabili (denoteremo le variabili con x, y , z, . . .);
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sintassi del λ-calcolo
M ::= x
| λx.M | MM
Un λ-termine M `e : una variabile x presa da un insieme infinito numerabile V di variabili (denoteremo le variabili con x, y , z, . . .); oppure una λ-astrazione λx.M;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sintassi del λ-calcolo
M ::= x
| λx.M | MM
Un λ-termine M `e : una variabile x presa da un insieme infinito numerabile V di variabili (denoteremo le variabili con x, y , z, . . .); oppure una λ-astrazione λx.M; oppure una applicazione MM di un λ-termine ad un altro.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sintassi del λ-calcolo
M ::= x
| λx.M | MM
Un λ-termine M `e : una variabile x presa da un insieme infinito numerabile V di variabili (denoteremo le variabili con x, y , z, . . .); oppure una λ-astrazione λx.M; oppure una applicazione MM di un λ-termine ad un altro. L’applicazione associa a sinistra: M1 M2 M3 = ((M1 M2 )M3 )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
α-equivalenza
M = (λx.y x)x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
α-equivalenza
M = (λx.y x)x x `e vincolata in M; x, y sono libere in M.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
α-equivalenza
M = (λx.y x)x x `e vincolata in M; x, y sono libere in M. le variabili vincolate sono mute.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
α-equivalenza
M = (λx.y x)x x `e vincolata in M; x, y sono libere in M. le variabili vincolate sono mute. λx.M ≡α λy .(M[y /x])
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
α-equivalenza
M = (λx.y x)x x `e vincolata in M; x, y sono libere in M. le variabili vincolate sono mute. λx.M ≡α λy .(M[y /x]) Es. λx.(xy ) ≡α λz.(zy )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
α-equivalenza
M = (λx.y x)x x `e vincolata in M; x, y sono libere in M. le variabili vincolate sono mute. λx.M ≡α λy .(M[y /x]) Es. λx.(xy ) ≡α λz.(zy ) Due funzioni α-equivalenti rappresentano la stessa funzione.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x] la sostituzione `e definita modulo α-equivalenza;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x] la sostituzione `e definita modulo α-equivalenza; (λx.M)N `e chiamato redesso, M[N/x] `e chiamato ridotto.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x] la sostituzione `e definita modulo α-equivalenza; (λx.M)N `e chiamato redesso, M[N/x] `e chiamato ridotto. Se M →β M 0 allora si dice che M β-riduce in un passo a M 0 .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x] la sostituzione `e definita modulo α-equivalenza; (λx.M)N `e chiamato redesso, M[N/x] `e chiamato ridotto. Se M →β M 0 allora si dice che M β-riduce in un passo a M 0 . Es. (λx.xx)(λy .y ) →β (λy .y )(λy .y )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x] la sostituzione `e definita modulo α-equivalenza; (λx.M)N `e chiamato redesso, M[N/x] `e chiamato ridotto. Se M →β M 0 allora si dice che M β-riduce in un passo a M 0 . Es. (λx.xx)(λy .y ) →β (λy .y )(λy .y ) Es. (λx.z)(λy .y ) →β z
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
(λx.M)N →β M[N/x] la sostituzione `e definita modulo α-equivalenza; (λx.M)N `e chiamato redesso, M[N/x] `e chiamato ridotto. Se M →β M 0 allora si dice che M β-riduce in un passo a M 0 . Es. (λx.xx)(λy .y ) →β (λy .y )(λy .y ) Es. (λx.z)(λy .y ) →β z nello stesso termine possono comparire piu redessi. Es: (λx.z)((λy .y )(z)).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
La β-riduzione (denotata →∗β ) `e la chiusura riflessiva e transitiva della relazione →β .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
La β-riduzione (denotata →∗β ) `e la chiusura riflessiva e transitiva della relazione →β . M →∗β M 0 se e solo se se esiste una successione M0 , M1 , . . . , Mn−1 , Mn tale che M = M0 , M 0 = Mn , e Mi →β Mi+1 per 1 ≤ i ≤ n − 1 (con n ≥ 0).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
β-riduzione
La β-riduzione (denotata →∗β ) `e la chiusura riflessiva e transitiva della relazione →β . M →∗β M 0 se e solo se se esiste una successione M0 , M1 , . . . , Mn−1 , Mn tale che M = M0 , M 0 = Mn , e Mi →β Mi+1 per 1 ≤ i ≤ n − 1 (con n ≥ 0). un λ-termine M `e detto in forma normale se e solo se non contiene redessi, i.e. non esiste nessun λ-termine M 0 tale che M →∗β M 0 .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il λ-calcolo come linguaggio di programmazione: un intuizione
(λx1 . . . λxn .M)N1 . . . Nn corrisponde ad un programma M che attende n argomenti, applicato agli input N1 , . . . , Nn ;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il λ-calcolo come linguaggio di programmazione: un intuizione
(λx1 . . . λxn .M)N1 . . . Nn corrisponde ad un programma M che attende n argomenti, applicato agli input N1 , . . . , Nn ; La β-riduzione corrisponde all’esecuzione di un programma: se M →∗β M 0 allora M 0 rappresenta uno stadio pi` u avanzato nell’esecuzione del programma M;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il λ-calcolo come linguaggio di programmazione: un intuizione
(λx1 . . . λxn .M)N1 . . . Nn corrisponde ad un programma M che attende n argomenti, applicato agli input N1 , . . . , Nn ; La β-riduzione corrisponde all’esecuzione di un programma: se M →∗β M 0 allora M 0 rappresenta uno stadio pi` u avanzato nell’esecuzione del programma M; un λ-termine in forma normale corrisponde all’output del programma.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’η-equivalenza
λx.(Mx) ≡η M, se x non occorre libera in M.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’η-equivalenza
λx.(Mx) ≡η M, se x non occorre libera in M. Due λ-termini M, M 0 sono η-equivalenti (o estensionalmente equivalenti) se si comportano allo stesso modo, una volta applicati ad un argomento.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’η-equivalenza
λx.(Mx) ≡η M, se x non occorre libera in M. Due λ-termini M, M 0 sono η-equivalenti (o estensionalmente equivalenti) se si comportano allo stesso modo, una volta applicati ad un argomento. Per ogni N, (λx.(Mx))N →β (Mx)[N/x] = MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte
un λ-termine `e detto normalizzabile (o debolmente normalizzabile) se esiste un λ-termine M 0 normale tale che M →∗β M 0 ; si dice allora che M 0 `e una forma normale di M.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte
un λ-termine `e detto normalizzabile (o debolmente normalizzabile) se esiste un λ-termine M 0 normale tale che M →∗β M 0 ; si dice allora che M 0 `e una forma normale di M. un λ-termine `e detto fortemente normalizzabile se non esiste alcuna successione infinita Mi∈N tale che M = M0 e Mi →β Mi+1 per ogni i ∈ N.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte
un λ-termine `e detto normalizzabile (o debolmente normalizzabile) se esiste un λ-termine M 0 normale tale che M →∗β M 0 ; si dice allora che M 0 `e una forma normale di M. un λ-termine `e detto fortemente normalizzabile se non esiste alcuna successione infinita Mi∈N tale che M = M0 e Mi →β Mi+1 per ogni i ∈ N. un λ-termine non normalizzabile corrisponde ad un programma che cicla all’infinito.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.x) `e fortemente normalizzabile: l’unica sequenza di riduzioni possibile termina.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.x) `e fortemente normalizzabile: l’unica sequenza di riduzioni possibile termina. (λx.xx)(λx.x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.x) `e fortemente normalizzabile: l’unica sequenza di riduzioni possibile termina.
→β
(λx.xx)(λx.x) x[λx.x/x]x[λx.x/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.x) `e fortemente normalizzabile: l’unica sequenza di riduzioni possibile termina.
→β →β
(λx.xx)(λx.x) x[λx.x/x]x[λx.x/x] (λx.x)(λx.x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.x) `e fortemente normalizzabile: l’unica sequenza di riduzioni possibile termina.
→β →β →β
(λx.xx)(λx.x) x[λx.x/x]x[λx.x/x] (λx.x)(λx.x) x[λx.x/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.x) `e fortemente normalizzabile: l’unica sequenza di riduzioni possibile termina.
→β →β →β =
(λx.xx)(λx.x) x[λx.x/x]x[λx.x/x] (λx.x)(λx.x) x[λx.x/x] λx.x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.xx) non `e normalizzabile: l’unica sequenza di riduzioni possibile non termina.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.xx) non `e normalizzabile: l’unica sequenza di riduzioni possibile non termina. (λx.xx)(λx.xx)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.xx) non `e normalizzabile: l’unica sequenza di riduzioni possibile non termina.
→β
(λx.xx)(λx.xx) x[λx.xx/x]x[λx.xx/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.xx) non `e normalizzabile: l’unica sequenza di riduzioni possibile non termina.
→β →β
(λx.xx)(λx.xx) x[λx.xx/x]x[λx.xx/x] (λx.xx)(λx.xx)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λx.xx)(λx.xx) non `e normalizzabile: l’unica sequenza di riduzioni possibile non termina.
→β →β →β
(λx.xx)(λx.xx) x[λx.xx/x]x[λx.xx/x] (λx.xx)(λx.xx) .. .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. (λz.y )((λx.xx)λx.xx)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. →β
(λz.y )((λx.xx)λx.xx) y [(λx.xx)λx.xx/z]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. →β =
(λz.y )((λx.xx)λx.xx) y [(λx.xx)λx.xx/z] y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. (λz.y )((λx.xx)λx.xx)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. →β
(λz.y )((λx.xx)λx.xx) (λz.y )(x[λx.xx/x]x[λx.xx/x])
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. →β →β
(λz.y )((λx.xx)λx.xx) (λz.y )(x[λx.xx/x]x[λx.xx/x]) (λz.y )((λx.xx)λx.xx)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione debole e forte: esempi
(λz.y )((λx.xx)λx.xx) `e normalizzabile, ci sono sequenze di riduzioni che terminano e altre no. →β →β →β
(λz.y )((λx.xx)λx.xx) (λz.y )(x[λx.xx/x]x[λx.xx/x]) (λz.y )((λx.xx)λx.xx) .. .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Teorema di Church-Rosser Un λ-termine ha un unica forma normale?
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Teorema di Church-Rosser Un λ-termine ha un unica forma normale? Church-Rosser Per ogni λ-termine M, M1 , M2 tali che M →∗β M1 e M →∗β M2 esiste un λ-termine N tale che M1 →∗β N ed M2 →∗β N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Teorema di Church-Rosser Un λ-termine ha un unica forma normale? Church-Rosser Per ogni λ-termine M, M1 , M2 tali che M →∗β M1 e M →∗β M2 esiste un λ-termine N tale che M1 →∗β N ed M2 →∗β N Corollario Per ogni λ-termine M, se M1 , M2 sono due forme normali di M allora M1 = M2 .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Teorema di Church-Rosser Un λ-termine ha un unica forma normale? Church-Rosser Per ogni λ-termine M, M1 , M2 tali che M →∗β M1 e M →∗β M2 esiste un λ-termine N tale che M1 →∗β N ed M2 →∗β N Corollario Per ogni λ-termine M, se M1 , M2 sono due forme normali di M allora M1 = M2 . Dim. M →∗β M1 e M →∗β M2 quindi per la confluenza esiste N tale che M1 →∗β N ed M2 →∗β N; ora poiche M1 , M2 sono due forme normali, M1 = N = M2 .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione identit`a: λx.x (λx.x)M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione identit`a: λx.x →β
(λx.x)M x[M/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione identit`a: λx.x →β =
(λx.x)M x[M/x] M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione costante: λx.N dove x non `e libera in N. (λx.N)M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione costante: λx.N dove x non `e libera in N. →β
(λx.N)M N[M/x]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione costante: λx.N dove x non `e libera in N. →β =
(λx.N)M N[M/x] N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione proiezione i-esima: λx1 . . . λxn .xi (con 1 ≤ i ≤ n). (λx1 . . . λxn .xi )M1 . . . Mn
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione proiezione i-esima: λx1 . . . λxn .xi (con 1 ≤ i ≤ n). →∗β
(λx1 . . . λxn .xi )M1 . . . Mn (λxi+1 . . . λxn .Mi )Mi+1 . . . Mn
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
Funzione proiezione i-esima: λx1 . . . λxn .xi (con 1 ≤ i ≤ n). →∗β →∗β
(λx1 . . . λxn .xi )M1 . . . Mn (λxi+1 . . . λxn .Mi )Mi+1 . . . Mn Mi
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
True: λxλy .x (λxλy .x)MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
True: λxλy .x
→β
(λxλy .x)MN (λy .M)N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
True: λxλy .x
→β →β
(λxλy .x)MN (λy .M)N M[N/y ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
True: λxλy .x
→β →β =
(λxλy .x)MN (λy .M)N M[N/y ] M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
False: λxλy .y (λxλy .y )MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
False: λxλy .y
→β
(λxλy .y )MN (λy .y )N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
False: λxλy .y
→β →β
(λxλy .y )MN (λy .y )N y [N/y ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
False: λxλy .y
→β →β =
(λxλy .y )MN (λy .y )N y [N/y ] N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y (λpλxλy .p x y )True MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y
→β
(λpλxλy .p x y )True MN (λxλy .True x y )MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y
→β →∗β
(λpλxλy .p x y )True MN (λxλy .True x y )MN True MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y
→β →∗β →∗β
(λpλxλy .p x y )True MN (λxλy .True x y )MN True MN M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y (λpλxλy .p x y )False MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y
→β
(λpλxλy .p x y )False MN (λxλy . False x y )MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y
→β →∗β
(λpλxλy .p x y )False MN (λxλy . False x y )MN False MN
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
If Then Else: λpλxλy .p x y
→β →∗β →∗β
(λpλxλy .p x y )False MN (λxλy . False x y )MN False MN N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Gli interi di Church: n volte
z }| { n := λf λx.f x = λf λx f (f · · · (f x) · · · ) n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Gli interi di Church: n volte
z }| { n := λf λx.f x = λf λx f (f · · · (f x) · · · ) n
0 := λf λx.x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Gli interi di Church: n volte
z }| { n := λf λx.f x = λf λx f (f · · · (f x) · · · ) n
0 := λf λx.x 1 := λf λx.f x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Gli interi di Church: n volte
z }| { n := λf λx.f x = λf λx f (f · · · (f x) · · · ) n
0 := λf λx.x 1 := λf λx.f x 2 := λf λx.f (f x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
In generale, un intero n `e interpretato come una funzione che itera n volte la funzione che gli viene applicata:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
In generale, un intero n `e interpretato come una funzione che itera n volte la funzione che gli viene applicata: (λf λx.f n x)PQ
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
In generale, un intero n `e interpretato come una funzione che itera n volte la funzione che gli viene applicata:
→β
(λf λx.f n x)PQ (λx.P n x)Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
In generale, un intero n `e interpretato come una funzione che itera n volte la funzione che gli viene applicata:
→β →β
(λf λx.f n x)PQ (λx.P n x)Q P nQ
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
In generale, un intero n `e interpretato come una funzione che itera n volte la funzione che gli viene applicata:
→β →β
(λf λx.f n x)PQ (λx.P n x)Q P nQ
=
z }| { P(P · · · (P Q) · · · )
n volte
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Succ: λnλf λx.f (n f x) Succ n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Succ: λnλf λx.f (n f x)
=
Succ n (λnλf λx.f (n f x))n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Succ: λnλf λx.f (n f x)
= →β
Succ n (λnλf λx.f (n f x))n λf λx.f (n f x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Succ: λnλf λx.f (n f x)
= →β →β
Succ n (λnλf λx.f (n f x))n λf λx.f (n f x) λf λx.f ( f n x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Succ: λnλf λx.f (n f x)
= →β →β =
Succ n (λnλf λx.f (n f x))n λf λx.f (n f x) λf λx.f ( f n x) λf λx.f n+1 x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Succ: λnλf λx.f (n f x)
= →β →β = =
Succ n (λnλf λx.f (n f x))n λf λx.f (n f x) λf λx.f ( f n x) λf λx.f n+1 x n+1
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x) Sum m n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
=
Sum m n (λmλnλf λx.m f (n f x))m n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
= →β
Sum m n (λmλnλf λx.m f (n f x))m n (λnλf λx.m f (n f x))n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
= →β →β
Sum m n (λmλnλf λx.m f (n f x))m n (λnλf λx.m f (n f x))n λf λx.m f (n f x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
= →β →β =
Sum m n (λmλnλf λx.m f (n f x))m n (λnλf λx.m f (n f x))n λf λx.m f (n f x) λf λx.m f ( f n x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
= →β →β = =
Sum m n (λmλnλf λx.m f (n f x))m n (λnλf λx.m f (n f x))n λf λx.m f (n f x) λf λx.m f ( f n x) λf λx.f m ( f n x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
= →β →β = = =
Sum m n (λmλnλf λx.m f (n f x))m n (λnλf λx.m f (n f x))n λf λx.m f (n f x) λf λx.m f ( f n x) λf λx.f m ( f n x) λf λx.f m+n x
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
La funzione Sum: λmλnλf λx.m f (n f x)
= →β →β = = = =
Sum m n (λmλnλf λx.m f (n f x))m n (λnλf λx.m f (n f x))n λf λx.m f (n f x) λf λx.m f ( f n x) λf λx.f m ( f n x) λf λx.f m+n x m+n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Data una funzione f da X a X , un punto fisso di f `e un x ∈ X tale che x = f (x).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Data una funzione f da X a X , un punto fisso di f `e un x ∈ X tale che x = f (x). Un λ-termine Y si dice combinatore di punto fisso se per ogni λ-termine F Y (F ) →∗β F (Y (F ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Data una funzione f da X a X , un punto fisso di f `e un x ∈ X tale che x = f (x). Un λ-termine Y si dice combinatore di punto fisso se per ogni λ-termine F Y (F ) →∗β F (Y (F )) Combinatore di punto fisso di Turing Se A = λaλf .f (a a f ), allora Θ := A A `e un combinatore di punto fisso.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo Data una funzione f da X a X , un punto fisso di f `e un x ∈ X tale che x = f (x). Un λ-termine Y si dice combinatore di punto fisso se per ogni λ-termine F Y (F ) →∗β F (Y (F )) Combinatore di punto fisso di Turing Se A = λaλf .f (a a f ), allora Θ := A A `e un combinatore di punto fisso. Dim. Θ = (λaλf .f (a a f ))A →β λf .f (A A f ) = λf .f (Θ f ). Ora per ogni F , Θ F →β (λf .f (Θ f ))F →β F (Θ F ).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
I combinatori di punto fisso nel λ-calcolo sono fondamentali per rappresentare le funzioni definite per ricorsione, che a loro volta permettono di definire in maniera funzionale i cicli while dei linguaggi di programmazione standard.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Programmare con il λ-calcolo
I combinatori di punto fisso nel λ-calcolo sono fondamentali per rappresentare le funzioni definite per ricorsione, che a loro volta permettono di definire in maniera funzionale i cicli while dei linguaggi di programmazione standard. Es. il fattoriale n! `e definito per ricorsione: ( 1, se n = 0 n! = n ∗ (n − 1)!, altrimenti
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Indice
1
Introduzione: logica e informatica
2
Il λ-calcolo e la programmazione funzionale
3
La deduzione naturale e la corrispondenza prove-programmi
4
Potere espressivo: Sistema F e polimorfismo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La logica e l’argomentazione
La logica (dal greco λoγoς, logos, ovvero ”parola”, ”pensiero”, ”idea”, ”argomento”, ”ragione”, da cui poi λoγικη,) `e lo studio del ragionamento e dell’argomentazione e, in particolare, dei procedimenti inferenziali, rivolto a chiarire quali procedimenti di pensiero siano validi e quali non validi. Wikipedia
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se piove, allora prendo l’ombrello.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se piove, allora prendo l’ombrello. Piove.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se piove, allora prendo l’ombrello. Piove. Prendo l’ombrello.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se n `e un numero intero maggiore di 1, allora n pu`o essere espresso in maniera univoca come prodotto di numeri primi.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se n `e un numero intero maggiore di 1, allora n pu`o essere espresso in maniera univoca come prodotto di numeri primi. 6396 `e un numero intero maggiore di 1.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se n `e un numero intero maggiore di 1, allora n pu`o essere espresso in maniera univoca come prodotto di numeri primi. 6396 `e un numero intero maggiore di 1. 6396 pu`o essere espresso in maniera univoca come prodotto di numeri primi.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se Roma `e la capitale dell’Italia, allora Babbo Natale `e verde.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se Roma `e la capitale dell’Italia, allora Babbo Natale `e verde. Roma `e la capitale dell’Italia.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Modus Ponens
Se Roma `e la capitale dell’Italia, allora Babbo Natale `e verde. Roma `e la capitale dell’Italia. Babbo Natale `e verde.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Modus Ponens
A⇒B B Se A allora B. A. dunque B.
A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert) Tutte e sole le proposizioni classicamente valide sono dimostrabili usando :
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert) Tutte e sole le proposizioni classicamente valide sono dimostrabili usando : i seguenti schemi d’assioma: H1 A ⇒ (B ⇒ A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert) Tutte e sole le proposizioni classicamente valide sono dimostrabili usando : i seguenti schemi d’assioma: H1 A ⇒ (B ⇒ A) H2 (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert) Tutte e sole le proposizioni classicamente valide sono dimostrabili usando : i seguenti schemi d’assioma: H1 A ⇒ (B ⇒ A) H2 (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C )) H3 (¬B ⇒ ¬A) ⇒ (A ⇒ B)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert) Tutte e sole le proposizioni classicamente valide sono dimostrabili usando : i seguenti schemi d’assioma: H1 A ⇒ (B ⇒ A) H2 (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C )) H3 (¬B ⇒ ¬A) ⇒ (A ⇒ B) la seguente regola di inferenza : A⇒B B
A
MP
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert)
A⇒A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert)
A⇒A H2) (A ⇒ (A ⇒ A) ⇒ A) ⇒ ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert)
A⇒A H2) (A ⇒ (A ⇒ A) ⇒ A) ⇒ ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A)) H1) A ⇒ (A ⇒ A) ⇒ A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert)
A⇒A H2) (A ⇒ (A ⇒ A) ⇒ A) ⇒ ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A)) H1) A ⇒ (A ⇒ A) ⇒ A MP) ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert)
A⇒A H2) (A ⇒ (A ⇒ A) ⇒ A) ⇒ ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A)) H1) A ⇒ (A ⇒ A) ⇒ A MP) ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A)) H1) A ⇒ (A ⇒ A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La Logica classica (Sistema di Hilbert)
A⇒A H2) (A ⇒ (A ⇒ A) ⇒ A) ⇒ ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A)) H1) A ⇒ (A ⇒ A) ⇒ A MP) ((A ⇒ (A ⇒ A)) ⇒ (A ⇒ A)) H1) A ⇒ (A ⇒ A) MP) A ⇒ A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sul calcolo
Costruire una dimostrazione nel sistema alla Hilbert `e una procedura piuttosto involuta...;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sul calcolo
Costruire una dimostrazione nel sistema alla Hilbert `e una procedura piuttosto involuta...; La struttura di una derivazione `e estremamente povera, contiene pochissime informazioni;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sul calcolo
Costruire una dimostrazione nel sistema alla Hilbert `e una procedura piuttosto involuta...; La struttura di una derivazione `e estremamente povera, contiene pochissime informazioni; La derivazione non rispecchia il procedere naturale del ragionamento matematico.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) A: Siano c e d due angoli opposti al vertice;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) A: Siano c e d due angoli opposti al vertice; B : c e d sono congruenti.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) A: Siano c e d due angoli opposti al vertice; B : c e d sono congruenti. Dimostriamo A ⇒ B in maniera indiretta: assumiamo che c e d siano non siano congruenti (¬B);
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) A: Siano c e d due angoli opposti al vertice; B : c e d sono congruenti. Dimostriamo A ⇒ B in maniera indiretta: assumiamo che c e d siano non siano congruenti (¬B); se da ¬B (c e d non sono congruenti) riesco a dimostrare ¬A ( c e d non sono opposti al vertice), cio´e se riesco a dimostrare ¬B ⇒ ¬A per [H3] e Modus Ponens posso concludere A ⇒ B, cvd.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) ¬¬A ⇒ A Ragionamento per assurdo: Dalla falsita di ¬A segue la verita di A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) ¬¬A ⇒ A Ragionamento per assurdo: Dalla falsita di ¬A segue la verita di A. Principio non costruttivo: per dimostrare l’esistenza di un oggetto matematico non `e sufficiente dimostrare che ammettere il contrario porta a contraddizione; bisogna esibire l’oggetto in questione.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Osservazioni sulla logica classica [H3] (¬B ⇒ ¬A) ⇒ (A ⇒ B) ¬¬A ⇒ A Ragionamento per assurdo: Dalla falsita di ¬A segue la verita di A. Principio non costruttivo: per dimostrare l’esistenza di un oggetto matematico non `e sufficiente dimostrare che ammettere il contrario porta a contraddizione; bisogna esibire l’oggetto in questione. Logica intuizionista Logica che non ammette il ragionamento per assurdo (Brouwer, Prawitz).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui: le formule corrispondono ai nodi;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui: le formule corrispondono ai nodi; le ipotesi corrispondono alle foglie;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui: le formule corrispondono ai nodi; le ipotesi corrispondono alle foglie; la conclusione corrisponde alla radice.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui: le formule corrispondono ai nodi; le ipotesi corrispondono alle foglie; la conclusione corrisponde alla radice. le formule sono collegate assieme da regole di inferenza
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui: le formule corrispondono ai nodi; le ipotesi corrispondono alle foglie; la conclusione corrisponde alla radice. le formule sono collegate assieme da regole di inferenza
le regole di inferenza sono divise in due tipi: le regole di introduzione, che specificano il modo in cui una particolare formula viene dedotta a partire da un certo numero di premesse;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La deduzione naturale intuizionista di Gentzen (ND) Le dimostrazioni in deduzione naturale sono alberi in cui: le formule corrispondono ai nodi; le ipotesi corrispondono alle foglie; la conclusione corrisponde alla radice. le formule sono collegate assieme da regole di inferenza
le regole di inferenza sono divise in due tipi: le regole di introduzione, che specificano il modo in cui una particolare formula viene dedotta a partire da un certo numero di premesse; le regole di eliminazione, che specificano il modo in cui una particolare formula pu` o essere utilizzata per derivare altre formule.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: l’ipotesi
A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: l’ipotesi
A Sotto l’ipotesi A `e possibile concludere A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ⇒ I
A .. . B Supponiamo di avere dimostrato la formula B utilizzando un certo numero di volte l’ipotesi A;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ⇒ I
[A] .. . B ⇒I A⇒B Supponiamo di avere una dimostrazione della formula B che usa un certo numero di volte l’ipotesi A; allora possiamo “consumare” un determinato numero di volte l’ipotesi A per produrre una dimostrazione di A ⇒ B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ⇒ E
.. . A⇒B
.. . A
Supponiamo di avere due dimostrazioni indipendenti rispettivamente di A ⇒ B e di A;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ⇒ E
.. . A⇒B B
.. . A
⇒E
Supponiamo di avere due dimostrazioni indipendenti rispettivamente di A ⇒ B e di A; allora possiamo comporre le due dimostrazioni per produrre una dimostrazione di B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∧I
.. . A
.. . B
Supponiamo di avere due dimostrazioni indipendenti rispettivamente di A e di B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∧I
.. .. . . A B ∧I A∧B Supponiamo di avere due dimostrazioni indipendenti rispettivamente di A e di B; allora possiamo comporre le due dimostrazioni per produrre una dimostrazione di A ∧ B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∧E1
.. . A∧B Supponiamo di avere una dimostrazione della formula A ∧ B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∧E1
.. . A∧B ∧E1 A Supponiamo di avere una dimostrazione della formula A ∧ B; allora possiamo “selezionare” il primo elemento della congiunzione ed ottenere cos`ı una dimostrazione di A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∧E2
.. . A∧B Supponiamo di avere una dimostrazione della formula A ∧ B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∧E2
.. . A∧B ∧E2 B Supponiamo di avere una dimostrazione della formula A ∧ B; allora possiamo “selezionare” il secondo elemento della congiunzione ed ottenere cos`ı una dimostrazione di B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
A⇒A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A] A ⇒I A⇒A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A] ⇒I A⇒A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
A ⇒ (B ⇒ A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A] B⇒A ⇒I A ⇒ (B ⇒ A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A]
[B]
A ⇒I B⇒A ⇒I A ⇒ (B ⇒ A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A] ⇒I B⇒A ⇒I A ⇒ (B ⇒ A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
(A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )] (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )]
[A ⇒ B]
A⇒C ⇒I (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )]
[A]
[A ⇒ B]
C ⇒I A⇒C ⇒I (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )] B⇒C
[A]
⇒E
[A ⇒ B]
C ⇒I A⇒C ⇒I (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )] B⇒C
[A]
⇒E
[A ⇒ B]
[A]
C ⇒I A⇒C ⇒I (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )] B⇒C
[A]
⇒E
[A ⇒ B] B
[A]
⇒E
C ⇒I A⇒C ⇒I (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[A ⇒ (B ⇒ C )] B⇒C
[A]
⇒E
[A ⇒ B] B
[A] ⇒E
⇒E
C ⇒I A⇒C ⇒I (A ⇒ B) ⇒ (A ⇒ C ) ⇒I (A ⇒ (B ⇒ C )) ⇒ ((A ⇒ B) ⇒ (A ⇒ C ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una dimostrazione arzigogolata...
[B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una dimostrazione arzigogolata...
[B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B”
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una dimostrazione arzigogolata...
[B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B” {A, B} ` A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La propriet`a della sottoformula Sia Γ un (multi-)insieme di formule:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La propriet`a della sottoformula Sia Γ un (multi-)insieme di formule: Γ`A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La propriet`a della sottoformula Sia Γ un (multi-)insieme di formule: Γ`A “Dalle ipotesi in Γ segue A”
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
La propriet`a della sottoformula Sia Γ un (multi-)insieme di formule: Γ`A “Dalle ipotesi in Γ segue A” Propriet`a della sottoformula Una prova π di Γ ` A rispetta la propriet`a della sottoformula se le formule che compaiono in π sono tutte e sole e formule che compaiono in Γ, A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il taglio [B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il taglio [B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
Taglio: L’introduzione di una formula seguita immediatamente dalla sua eliminazione.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il taglio [B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
Taglio: L’introduzione di una formula seguita immediatamente dalla sua eliminazione. E’ possibile trasformare, riscrivere una prova in maniera da ottenere una prova senza tagli, preservando conclusione ed ipotesi ?
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Eliminazione del taglio: il caso ⇒
[A] .. . B ⇒I A⇒B B
π .. .
π .. . A
⇒E
A .. . B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Eliminazione del taglio: il caso ∧
π1 π2 .. .. . . A B ∧I A∧B ∧E1 A
π1 .. . A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Eliminazione del taglio: il caso ∧
π1 π2 .. .. . . A B ∧I A∧B ∧E2 B
π2 .. . B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Riduzione di una prova
[B ∧ A] [B ∧ A] ∧E2 ∧E1 A B ∧I A∧B ⇒I (B ∧ A) ⇒ (A ∧ B) A∧B
B A ∧I B ∧A ⇒E
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Riduzione di una prova
B A B A ∧I ∧I B ∧A B ∧A ∧E2 ∧E1 A B ∧I A∧B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Riduzione di una prova
B A B A ∧I ∧I B ∧A B ∧A ∧E2 ∧E1 A B ∧I A∧B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Riduzione di una prova
B A ∧I B ∧A ∧E1 A B ∧I A∧B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Riduzione di una prova
A B ∧I A∧B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Riduzione di una prova
A B ∧I A∧B “Dall’ ipotesi A e dall’ipotesi B segue A ∧ B” {A, B} ` A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il teorema di eliminazione del taglio Teorema di eliminazione del taglio, Gentzen Per ogni prova π di Γ ` A in deduzione naturale, esiste una prova π 0 di Γ ` A senza tagli.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il teorema di eliminazione del taglio Teorema di eliminazione del taglio, Gentzen Per ogni prova π di Γ ` A in deduzione naturale, esiste una prova π 0 di Γ ` A senza tagli. Corollario Per ogni prova π di Γ ` A in deduzione naturale, esiste una prova π 0 di Γ ` A in cui occorrono solo sottoformule delle formule in Γ, A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il teorema di eliminazione del taglio Teorema di eliminazione del taglio, Gentzen Per ogni prova π di Γ ` A in deduzione naturale, esiste una prova π 0 di Γ ` A senza tagli. Corollario Per ogni prova π di Γ ` A in deduzione naturale, esiste una prova π 0 di Γ ` A in cui occorrono solo sottoformule delle formule in Γ, A. La procedura di trasformazione delle dimostrazioni sembra ricordare un processo di calcolo....
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
λ-calcolo e normalizzazione forte Consideriamo il λ-termine considerato il “prototipo” della non-terminazione: λx.xx
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
λ-calcolo e normalizzazione forte Consideriamo il λ-termine considerato il “prototipo” della non-terminazione: λx.xx Cosa fa λx.xx? Prende in input un termine e lo applica a se stesso.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
λ-calcolo e normalizzazione forte Consideriamo il λ-termine considerato il “prototipo” della non-terminazione: λx.xx Cosa fa λx.xx? Prende in input un termine e lo applica a se stesso. Ora cosa succede se diamo in input a λx.xx se stesso? (λx.xx)λx.xx →β ∗(λx.xx)λx.xx →β ∗ . . .
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
λ-calcolo e normalizzazione forte Consideriamo il λ-termine considerato il “prototipo” della non-terminazione: λx.xx Cosa fa λx.xx? Prende in input un termine e lo applica a se stesso. Ora cosa succede se diamo in input a λx.xx se stesso? (λx.xx)λx.xx →β ∗(λx.xx)λx.xx →β ∗ . . . La radice della non-terminazione `e l’autoapplicazione! Come impedirla?
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il λ-calcolo semplicemente tipato
λ-termini:
M ::= x
| λx.M | MM | hMMi | fst M | snd M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il λ-calcolo semplicemente tipato
λ-termini:
M ::= x
| λx.M | MM | hMMi | fst M | snd M
“Zucchero sintattico”: fsthM1 M2 i →β M1 sndhM1 M2 i →β M2
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I tipi semplici
Sia data una infinit`a numerabile di variabili A, B, C ... dette variabili di tipo:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I tipi semplici
Sia data una infinit`a numerabile di variabili A, B, C ... dette variabili di tipo: 1
Una variabile di tipo A `e un tipo semplice;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I tipi semplici
Sia data una infinit`a numerabile di variabili A, B, C ... dette variabili di tipo: 1 2
Una variabile di tipo A `e un tipo semplice; Se A `e un tipo semplice e B `e un tipo semplice, allora A → B `e un tipo semplice;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I tipi semplici
Sia data una infinit`a numerabile di variabili A, B, C ... dette variabili di tipo: 1 2
3
Una variabile di tipo A `e un tipo semplice; Se A `e un tipo semplice e B `e un tipo semplice, allora A → B `e un tipo semplice; Se A `e un tipo semplice e B `e un tipo semplice, allora A × B `e un tipo semplice;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile di tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A → B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile di tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A → B; Se M `e un termine di tipo A → B e N `e un termine di tipo A allora M N `e un termine di tipo B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile di tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A → B; Se M `e un termine di tipo A → B e N `e un termine di tipo A allora M N `e un termine di tipo B. Se M `e un termine di tipo A e N `e un termine di tipo B allora hMNi `e un termine di tipo A × B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile di tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A → B; Se M `e un termine di tipo A → B e N `e un termine di tipo A allora M N `e un termine di tipo B. Se M `e un termine di tipo A e N `e un termine di tipo B allora hMNi `e un termine di tipo A × B. Se M `e un termine di tipo A × B, allora fst M `e un termine di tipo A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile di tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A → B; Se M `e un termine di tipo A → B e N `e un termine di tipo A allora M N `e un termine di tipo B. Se M `e un termine di tipo A e N `e un termine di tipo B allora hMNi `e un termine di tipo A × B. Se M `e un termine di tipo A × B, allora fst M `e un termine di tipo A. Se M `e un termine di tipo A × B, allora snd M `e un termine di tipo B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile di tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A → B; Se M `e un termine di tipo A → B e N `e un termine di tipo A allora M N `e un termine di tipo B. Se M `e un termine di tipo A e N `e un termine di tipo B allora hMNi `e un termine di tipo A × B. Se M `e un termine di tipo A × B, allora fst M `e un termine di tipo A. Se M `e un termine di tipo A × B, allora snd M `e un termine di tipo B. M A (o anche M : A): il termine M ha tipo A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Le regole di riduzione nel λ-calcolo semplicemente tipato
((λx A .M B )A→B N A )B →β M B [N A /x A ] (fst(hM1A M2B i)A×B )A →β M1A (snd(hM1A M2B i)A×B )B →β M2B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Le regole di riduzione nel λ-calcolo semplicemente tipato
((λx A .M B )A→B N A )B →β M B [N A /x A ] (fst(hM1A M2B i)A×B )A →β M1A (snd(hM1A M2B i)A×B )B →β M2B Non `e possibile assegnare un tipo al termine λx.xx nel λ-calcolo semplicemente tipato: infatti non si pu` o assegnare ad x allo stesso tempo il tipo A → B e A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Propriet`a fondamentali del λ-calcolo semplicemente tipato
Subject reduction Se M `e un termine di tipo A del λ-calcolo semplicemente tipato e M →β M 0 , allora M 0 `e un termine di tipo A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Propriet`a fondamentali del λ-calcolo semplicemente tipato
Subject reduction Se M `e un termine di tipo A del λ-calcolo semplicemente tipato e M →β M 0 , allora M 0 `e un termine di tipo A. Normalizzazione forte Se M `e un termine del λ-calcolo semplicemente tipato, allora M `e fortemente normalizzabile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Formule / Tipi Formule A
Tipi A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Formule / Tipi Formule A
Tipi A
A⇒B
A→B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Formule / Tipi Formule A
Tipi A
A⇒B
A→B
A∧B
A×B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: l’ipotesi
x :A
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: l’ipotesi
x :A Sotto l’ipotesi che x ha tipo A `e possibile concludere che x ha tipo A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ⇒ I
x :A .. . M:B Supponiamo di avere un λ-termine M di tipo B in cui compare un certo numero di volte la variabile libera x di tipo A;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ⇒ I
[x : A] .. . M:B ⇒I λx.M : A ⇒ B Supponiamo di avere un λ-termine M di tipo B in cui compare un certo numero di volte la variabile libera x di tipo A; allora possiamo “catturare” le occorrenze libere della variabile x di tipo A con una λ-astrazione, ottenendo un termine λx.M di tipo A ⇒ B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ⇒ E
.. . M:A⇒B
.. . N:A
Supponiamo di avere un λ-termine M di tipo A ⇒ B e un λ termine N di tipo A;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ⇒ E
.. .. . . M:A⇒B N:A ⇒E (M N) : B Supponiamo di avere un λ-termine M di tipo A ⇒ B e un λ-termine N di tipo A; allora possiamo applicare la funzione M al suo argomento N per produrre un λ-termine di tipo B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ∧I
.. . M:A
.. . N:B
Supponiamo di avere due λ-termini M e N rispettivamente di tipo A e B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ∧I
.. .. . . M:A N:B ∧I hM Ni : A ∧ B Supponiamo di avere due λ-termini M e N rispettivamente di tipo A e B; allora possiamo comporre i due λ-termini per ottenere la coppia hM Ni di tipo A ∧ B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ∧E1
.. . M :A∧B Supponiamo di avere un λ-termine di tipo A ∧ B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ∧E1
.. . M :A∧B ∧E1 (fst M) : A Supponiamo di avere un λ-termine di tipo A ∧ B; allora possiamo “selezionare” il primo elemento di M ed ottenere cos`ı un λ-termine fst M di tipo A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ∧E2
.. . M :A∧B Supponiamo di avere un λ-termine di tipo A ∧ B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Regole di deduzione e derivazione di tipo: la regola di ∧E2
.. . M :A∧B ∧E2 (snd M) : B Supponiamo di avere un λ-termine di tipo A ∧ B; allora possiamo “selezionare” il secondo elemento di M ed ottenere cos`ı un λ-termine snd M di tipo B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Regole di deduzione / Costrutti del λ-calcolo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Regole di deduzione / Costrutti del λ-calcolo Regole ⇒I
Costrutti λ-astrazione
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Regole di deduzione / Costrutti del λ-calcolo Regole ⇒I
Costrutti λ-astrazione
⇒E
applicazione
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Regole di deduzione / Costrutti del λ-calcolo Regole ⇒I
Costrutti λ-astrazione
⇒E
applicazione
∧I
coppia
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Regole di deduzione / Costrutti del λ-calcolo Regole ⇒I
Costrutti λ-astrazione
⇒E
applicazione
∧I
coppia
∧E1, ∧E2
prima e seconda proiezione
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
[z : B ∧ A] [z : B ∧ A] ∧E2 ∧E1 snd z : A fst z : B ∧I h(snd z)(fst z)i : A ∧ B y :B x :A ⇒I ∧I λz.h(snd z)(fst z)i : (B ∧ A) ⇒ (A ∧ B) hy xi : B ∧ A ⇒E (λz.h(snd z)(fst z)i)hy xi : A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
[z : B ∧ A] [z : B ∧ A] ∧E2 ∧E1 snd z : A fst z : B ∧I h(snd z)(fst z)i : A ∧ B y :B x :A ⇒I ∧I λz.h(snd z)(fst z)i : (B ∧ A) ⇒ (A ∧ B) hy xi : B ∧ A ⇒E (λz.h(snd z)(fst z)i)hy xi : A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
[z : B ∧ A] [z : B ∧ A] ∧E2 ∧E1 snd z : A fst z : B ∧I h(snd z)(fst z)i : A ∧ B y :B x :A ⇒I ∧I λz.h(snd z)(fst z)i : (B ∧ A) ⇒ (A ∧ B) hy xi : B ∧ A ⇒E (λz.h(snd z)(fst z)i)hy xi : A ∧ B I redessi corrispondono ai tagli!
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
y :B x :A y :B x :A ∧I ∧I hy xi : B ∧ A hy xi : B ∧ A ∧E2 ∧E1 snd hy xi : A fst hy xi : B ∧I h(snd hy xi)(fst hy xi)i : A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
y :B x :A y :B x :A ∧I ∧I hy xi : B ∧ A hy xi : B ∧ A ∧E2 ∧E1 snd hy xi : A fst hy xi : B ∧I h(snd hy xi)(fst hy xi)i : A ∧ B Un passo di β-riduzione corrisponde ad un passo di eliminazione del taglio !
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
y :B x :A y :B x :A ∧I ∧I hy xi : B ∧ A hy xi : B ∧ A ∧E2 ∧E1 snd hy xi : A fst hy xi : B ∧I h(snd hy xi)(fst hy xi)i : A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
y :B x :A ∧I hy xi : B ∧ A ∧E1 x :A fst hy xi : B ∧I h(x)(fst hy xi)i : A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
x :A y :B ∧I hx y i : A ∧ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
x :A y :B ∧I hx y i : A ∧ B Un λ-termine in forma normale corrisponde ad una dimostrazione senza tagli !
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Un λ-termine corrisponde ad una prova in deduzione naturale!
M −−−−→ y
M0 y
π −−−−→ π 0
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Deduzione Naturale Formule
λ-calcolo Tipi
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Deduzione Naturale Formule
λ-calcolo Tipi
Prove
λ-termini
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Deduzione Naturale Formule
λ-calcolo Tipi
Prove
λ-termini
Eliminazione del Taglio
β-riduzione
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
L’isomorfismo di Curry-Howard Esiste una corrispondenza stretta tra termini del λ calcolo semplicemente tipato e prove della deduzione naturale intuizionista. Deduzione Naturale Formule
λ-calcolo Tipi
Prove
λ-termini
Eliminazione del Taglio
β-riduzione
Prove senza tagli
λ-termini in forma normale
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Costruire un programma da una prova
Supponiamo di volere calcolare una determinata funzione f sugli interi, definita mediante un sistema di equazioni Eq;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Costruire un programma da una prova
Supponiamo di volere calcolare una determinata funzione f sugli interi, definita mediante un sistema di equazioni Eq; Costruiamo una prova π in deduzione naturale della proposizione “ Se x `e un intero, allora f (x) `e un intero” (cio´e dimostriamo che la funzione f `e totale);
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Costruire un programma da una prova
Supponiamo di volere calcolare una determinata funzione f sugli interi, definita mediante un sistema di equazioni Eq; Costruiamo una prova π in deduzione naturale della proposizione “ Se x `e un intero, allora f (x) `e un intero” (cio´e dimostriamo che la funzione f `e totale); Utilizzando la corrispondenza prove/programmi, associamo alla dimostrazione π il λ termine Mf : in questo modo otteniamo un programma capace di calcolare la funzione f !
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Vantaggi del calcolare con le prove
Qualunque sia la strategia utilizzata per eseguire un programma associato ad una prova l’esecuzione termina (teorema di normalizzazione forte).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Vantaggi del calcolare con le prove
Qualunque sia la strategia utilizzata per eseguire un programma associato ad una prova l’esecuzione termina (teorema di normalizzazione forte). Due strategie diverse di esecuzione di un programma associato ad una prova conducono allo stesso risultato (teorema di confluenza).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Vantaggi del calcolare con le prove
Qualunque sia la strategia utilizzata per eseguire un programma associato ad una prova l’esecuzione termina (teorema di normalizzazione forte). Due strategie diverse di esecuzione di un programma associato ad una prova conducono allo stesso risultato (teorema di confluenza). Un programma associato ad una prova `e sempre corretto, nel senso che il programma Mf estratto dalla prova π calcola effettivamente i valori della funzione definita da Eq (teorema di correttezza).
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Oltre i tipi semplici
Il λ-calcolo semplicemente tipato ha un espressivit`a limitata...
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Oltre i tipi semplici
Il λ-calcolo semplicemente tipato ha un espressivit`a limitata...
Estensione dei tipi: il λ-calcolo con tipi polimorfi corrisponde alla logica intuizionista del secondo ordine.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Oltre i tipi semplici
Il λ-calcolo semplicemente tipato ha un espressivit`a limitata...
Estensione dei tipi: il λ-calcolo con tipi polimorfi corrisponde alla logica intuizionista del secondo ordine. Estensione del linguaggio : il λ-calcolo con operatori di controllo corrisponde alla logica classica.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Oltre i tipi semplici
Il λ-calcolo semplicemente tipato ha un espressivit`a limitata...
Estensione dei tipi: il λ-calcolo con tipi polimorfi corrisponde alla logica intuizionista del secondo ordine. Estensione del linguaggio : il λ-calcolo con operatori di controllo corrisponde alla logica classica.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Indice
1
Introduzione: logica e informatica
2
Il λ-calcolo e la programmazione funzionale
3
La deduzione naturale e la corrispondenza prove-programmi
4
Potere espressivo: Sistema F e polimorfismo
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sul potere espressivo dei tipi semplici
Possiamo individuare due limiti fondamentali al sistema dei tipi semplici:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sul potere espressivo dei tipi semplici
Possiamo individuare due limiti fondamentali al sistema dei tipi semplici: Non `e possibile fare astrazione sui tipi (es. ogni tipo A ha la ”sua” funzione identit`a λx.x : A ⇒ A);
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Sul potere espressivo dei tipi semplici
Possiamo individuare due limiti fondamentali al sistema dei tipi semplici: Non `e possibile fare astrazione sui tipi (es. ogni tipo A ha la ”sua” funzione identit`a λx.x : A ⇒ A); non `e possibile applicare un termine a se stesso ( x x non `e tipabile, perch´e x non pu´ o avere al tempo stesso il tipo A ⇒ B e il tipo A)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Logica del secondo ordine
Sia data una proposizione P ; allora vale che P ⇒ P. Come esprimere questa propriet`a nella logica?
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Logica del secondo ordine
Sia data una proposizione P ; allora vale che P ⇒ P. Come esprimere questa propriet`a nella logica? Sia data un’infinit`a numerabile di variabili proposizionali X , Y , Z , . . .;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Logica del secondo ordine
Sia data una proposizione P ; allora vale che P ⇒ P. Come esprimere questa propriet`a nella logica? Sia data un’infinit`a numerabile di variabili proposizionali X , Y , Z , . . .; per ogni X , X ⇒ X ;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Logica del secondo ordine
Sia data una proposizione P ; allora vale che P ⇒ P. Come esprimere questa propriet`a nella logica? Sia data un’infinit`a numerabile di variabili proposizionali X , Y , Z , . . .; per ogni X , X ⇒ X ; ∀X X ⇒ X ;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∀2 I
.. . A 2 ∀X A ∀ I Supponiamo di avere una dimostrazione della formula A, dove la variabile proposizionale X non occora libera nelle ipotesi (cio`e sto usando la variabile X in modo generico);
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∀2 I
.. . A 2 ∀X A ∀ I Supponiamo di avere una dimostrazione della formula A, dove la variabile proposizionale X non occora libera nelle ipotesi (cio`e sto usando la variabile X in modo generico); allora posso ”astrarre” rispetto ad X e concludere ∀X A.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∀2 E
.. . ∀X A ∀2 E A[B/X ] Supponiamo di avere una dimostrazione della formula ∀X A;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Deduzione naturale: la regola di ∀2 E
.. . ∀X A ∀2 E A[B/X ] Supponiamo di avere una dimostrazione della formula ∀X A; allora posso ”usare” questa dimostrazione sostituendo in A ogni occorrenza di X con una qualsiasi formula B, poich´e X viene usata in A in modo generico.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Eliminazione del taglio: il caso ∀2
π1 .. . A 2 ∀X A ∀ I ∀2 E A[B/X ]
π1 .. . A[B/X ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
X
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[X ] ⇒I X ⇒X
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[X ] ⇒I X ⇒X 2 ∀X X ⇒ X ∀ I
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Esempio
[X ] ⇒I X ⇒X 2 ∀X X ⇒ X ∀2 I ∀ E B⇒B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Sistema F: tipi
Sia data una infinit`a numerabile di variabili X , Y , Z . . . dette variabili di tipo:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Sistema F: tipi
Sia data una infinit`a numerabile di variabili X , Y , Z . . . dette variabili di tipo: 1
Una variabile di tipo X `e un tipo;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Sistema F: tipi
Sia data una infinit`a numerabile di variabili X , Y , Z . . . dette variabili di tipo: 1 2
Una variabile di tipo X `e un tipo; Se A `e un tipo e B `e un tipo, allora A ⇒ B `e un tipo;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Sistema F: tipi
Sia data una infinit`a numerabile di variabili X , Y , Z . . . dette variabili di tipo: 1 2 3
Una variabile di tipo X `e un tipo; Se A `e un tipo e B `e un tipo, allora A ⇒ B `e un tipo; Se A `e un tipo e X `e una variabile di tipo, allora ∀X A `e un tipo.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il Sistema F: termini
Tipi:
U ::= X
| U ⇒ U | ∀X U
λ-termini:
M ::= x
| λx.M | M M | ΛX .M | M U
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile con tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A ⇒ B;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile con tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A ⇒ B; Se M `e un termine di tipo A ⇒ B e N `e un termine di tipo A allora M N `e un termine di tipo B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile con tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A ⇒ B; Se M `e un termine di tipo A ⇒ B e N `e un termine di tipo A allora M N `e un termine di tipo B. Se M `e un termine di tipo A, e se la variabile di tipo X non occorre libera nel tipo di una variabile libera di M, allora ΛX .M `e un termine di tipo ∀XA;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Assegnazione di un tipo ad un termine Ogni variabile x ha assegnato un tipo A: Se x `e una variabile con tipo A e M `e un termine di tipo B allora λx.M `e un termine di tipo A ⇒ B; Se M `e un termine di tipo A ⇒ B e N `e un termine di tipo A allora M N `e un termine di tipo B. Se M `e un termine di tipo A, e se la variabile di tipo X non occorre libera nel tipo di una variabile libera di M, allora ΛX .M `e un termine di tipo ∀XA; Se M `e un termine di tipo ∀XA e se B `e un tipo, allora M B `e un termine di tipo A[B/X ].
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Le regole di riduzione nel Sistema F
((λx A .M B )A⇒B N A )B →β M B [N A /x A ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Le regole di riduzione nel Sistema F
((λx A .M B )A⇒B N A )B →β M B [N A /x A ] ((ΛX .M A )∀XA B)A[B/X ] →β M A[B/X ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Isomorfismo di Curry-Howard: la regola di ∀2 I
.. . M:A Supponiamo di avere un λ-termine M di tipo A, e che nel tipo delle variabili libere di M (i.e. le ipotesi) non occorra la variabile di tipo X ;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Isomorfismo di Curry-Howard: la regola di ∀2 I
.. . M:A ∧I ΛX .M : ∀XA Supponiamo di avere un λ-termine M di tipo A, e che nel tipo delle variabili libere di M (i.e. le ipotesi) non occorra la variabile di tipo X ; allora possiamo astrarre rispetto alla variabile di tipo X ed ottenere un termine ΛX .M di tipo ∀XA.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Isomorfismo di Curry-Howard: la regola di ∀2 E
.. . M : ∀XA Supponiamo di avere un λ-termine M di tipo ∀XA;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Isomorfismo di Curry-Howard: la regola di ∀2 E
.. . M : ∀XA ∀2 E M B : A[B/X ] Supponiamo di avere un λ-termine M di tipo ∀XA; allora possiamo instanziare le occorrenze della variabile di tipo X con un tipo B a nostra scelta.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Eliminazione del taglio e riduzione
π1 .. . M:A 2 ΛX .M : ∀X A ∀ I 2 ∀ E ΛX .M B : A[B/X ]
π1 .. . M : A[B/X ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Polimorfismo
x :X
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Polimorfismo
[x : X ] ⇒I λx.x : X ⇒ X
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Polimorfismo
[x : X ] ⇒I λx.x : X ⇒ X 2 ΛX .λx.x : ∀X X ⇒ X ∀ I
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Polimorfismo
[x : X ] ⇒I λx.x : X ⇒ X 2 ΛX .λx.x : ∀X X ⇒ X ∀2 I ΛX .λx.x B : B ⇒ B ∀ E
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Polimorfismo
[x : B] ⇒I λx.x : B ⇒ B
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Auto applicazione
[x : ∀X (X ⇒ X )] x ∀X (X ⇒ X ) : (∀X (X ⇒ X )) ⇒ (∀X (X ⇒ X ))
∀2 E
[x : ∀X (X ⇒ X )]
(x ∀X (X ⇒ X )) x : ∀X (X ⇒ X ) λx.((x ∀X (X ⇒ X )) x) : (∀X (X ⇒ X )) ⇒ (∀X (X ⇒ X )) . ..
⇒I
⇒E
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Auto applicazione
[y : X ] ⇒I λy .y : X ⇒ X ∀2 I ΛX .λy .y : ∀X X ⇒ X ⇒E (λx.((x ∀X (X ⇒ X )) x)) ΛX .λy .y : ∀X X ⇒ X
.. . λx.((x ∀X (X ⇒ X )) x) : (∀X (X ⇒ X )) ⇒ (∀X (X ⇒ X ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Auto applicazione
(λx.((x ∀X (X ⇒ X )) x)) ΛX .λy .y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Auto applicazione
→β
(λx.((x ∀X (X ⇒ X )) x)) ΛX .λy .y (ΛX .λy .y ∀X (X ⇒ X )) ΛX .λy .y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Auto applicazione
→β →β
(λx.((x ∀X (X ⇒ X )) x)) ΛX .λy .y (ΛX .λy .y ∀X (X ⇒ X )) ΛX .λy .y (λy .y ) ΛX .λy .y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Auto applicazione
→β →β →β
(λx.((x ∀X (X ⇒ X )) x)) ΛX .λy .y (ΛX .λy .y ∀X (X ⇒ X )) ΛX .λy .y (λy .y ) ΛX .λy .y ΛX .λy .y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Il funtore ”smemorato”
(λx.((x ∀X (X ⇒ X )) x)) ΛX .λy .y −−−−→ ΛX .λy .y y y (λx.((x) x)) λy .y
−−−−→
λy .y
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool Bool = ∀X (X ⇒ (X ⇒ X ))
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool Bool = ∀X (X ⇒ (X ⇒ X )) Costruttori: True = ΛX .λx X .λy X .x : Bool
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool Bool = ∀X (X ⇒ (X ⇒ X )) Costruttori: True = ΛX .λx X .λy X .x : Bool False = ΛX .λx X .λy X .y : Bool Distruttore : siano M, N, T di tipo rispettivamente U, U e Bool; If T then M else N = T U M N : U
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If True then M else N
=
(ΛX .λx X .λy X .x) U M N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If True then M else N
= →β
(ΛX .λx X .λy X .x) U M N (λx U .λy U .x) M N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If True then M else N
= →β →β
(ΛX .λx X .λy X .x) U M N (λx U .λy U .x) M N (λy U .M) N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If True then M else N
= →β →β →β
(ΛX .λx X .λy X .x) U M N (λx U .λy U .x) M N (λy U .M) N M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If False then M else N
=
(ΛX .λx X .λy X .y ) U M N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If False then M else N
= →β
(ΛX .λx X .λy X .y ) U M N (λx U .λy U .y ) M N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If False then M else N
= →β →β
(ΛX .λx X .λy X .y ) U M N (λx U .λy U .y ) M N (λy U .y ) N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Bool
If False then M else N
= →β →β →β
(ΛX .λx X .λy X .y ) U M N (λx U .λy U .y ) M N (λy U .y ) N N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia U × V = ∀X (U ⇒ V ⇒ X ) ⇒ X
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia U × V = ∀X (U ⇒ V ⇒ X ) ⇒ X Costruttore: hM Ni = ΛX .λx U⇒V ⇒X .x M N : U × V
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia U × V = ∀X (U ⇒ V ⇒ X ) ⇒ X Costruttore: hM Ni = ΛX .λx U⇒V ⇒X .x M N : U × V Distruttori : Sia P di tipo U × V : π 1 P = P U(λx U .λy V .x) : U
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia U × V = ∀X (U ⇒ V ⇒ X ) ⇒ X Costruttore: hM Ni = ΛX .λx U⇒V ⇒X .x M N : U × V Distruttori : Sia P di tipo U × V : π 1 P = P U(λx U .λy V .x) : U π 2 P = P V (λx U .λy V .y ) : V
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 1 hM Ni
=
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 1 hM Ni
= →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .x) (λx U⇒V ⇒U .x M N)(λx U .λy V .x)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 1 hM Ni
= →β →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .x) (λx U⇒V ⇒U .x M N)(λx U .λy V .x) (λx U .λy V .x) M N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 1 hM Ni
= →β →β →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .x) (λx U⇒V ⇒U .x M N)(λx U .λy V .x) (λx U .λy V .x) M N (λy V .M) N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 1 hM Ni
= →β →β →β →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .x) (λx U⇒V ⇒U .x M N)(λx U .λy V .x) (λx U .λy V .x) M N (λy V .M) N M
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 2 hM Ni
=
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .y )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 2 hM Ni
= →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .y ) (λx U⇒V ⇒U .x M N)(λx U .λy V .y )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 2 hM Ni
= →β →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .y ) (λx U⇒V ⇒U .x M N)(λx U .λy V .y ) (λx U .λy V .y ) M N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 2 hM Ni
= →β →β →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .y ) (λx U⇒V ⇒U .x M N)(λx U .λy V .y ) (λx U .λy V .y ) M N (λy V .y ) N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo coppia
π 2 hM Ni
= →β →β →β →β
(ΛX .λx U⇒V ⇒X .x M N) U(λx U .λy V .y ) (λx U⇒V ⇒U .x M N)(λx U .λy V .y ) (λx U .λy V .y ) M N (λy V .y ) N N
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo ⊥
⊥= ∀X X Il tipo ⊥ non `e abitato.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat Nat = ∀X (X ⇒ ((X ⇒ X ) ⇒ X )) Costruttori: 0 = ΛX .λx X .λy X ⇒X .x : Nat
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat Nat = ∀X (X ⇒ ((X ⇒ X ) ⇒ X )) Costruttori: 0 = ΛX .λx X .λy X ⇒X .x : Nat Dato N di tipo Nat allora Succ N = ΛX .λx.X .λy X ⇒X .y (N X x y ) : Nat
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat Nat = ∀X (X ⇒ ((X ⇒ X ) ⇒ X )) Costruttori: 0 = ΛX .λx X .λy X ⇒X .x : Nat Dato N di tipo Nat allora Succ N = ΛX .λx.X .λy X ⇒X .y (N X x y ) : Nat Distruttori: Sia P di tipo U, Q di tipo U ⇒ U ed N di tipo Nat: It P Q N = N U P Q : U
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
n volte X
n := ΛX .λx λy
X ⇒X
z }| { . y (y · · · (y x) · · · )
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
n volte X
n := ΛX .λx λy
X ⇒X
z }| { . y (y · · · (y x) · · · )
0 := 0 n + 1 := Succ n
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q 0 =
=
(ΛX .λx X .λy X ⇒X .x) U P Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q 0 =
= →β
(ΛX .λx X .λy X ⇒X .x) U P Q (λx U .λy U⇒U .x) P Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q 0 =
= →β →β
(ΛX .λx X .λy X ⇒X .x) U P Q (λx U .λy U⇒U .x) P Q (λy U⇒U .P) Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q 0 =
= →β →β →β
(ΛX .λx X .λy X ⇒X .x) U P Q (λx U .λy U⇒U .x) P Q (λy U⇒U .P) Q P
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q (Succ N)
=
(ΛX .λx.X .λy X ⇒X .y (N X x y )) U P Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q (Succ N)
= →β
(ΛX .λx.X .λy X ⇒X .y (N X x y )) U P Q (λx.U .λy U⇒U .y (N U x y )) P Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q (Succ N)
= →β →β
(ΛX .λx.X .λy X ⇒X .y (N X x y )) U P Q (λx.U .λy U⇒U .y (N U x y )) P Q (λy U⇒U .y (N U P y )) Q
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q (Succ N)
= →β →β →β
(ΛX .λx.X .λy X ⇒X .y (N X x y )) U P Q (λx.U .λy U⇒U .y (N U x y )) P Q (λy U⇒U .y (N U P y )) Q Q(N U P Q)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: il tipo Nat
It P Q (Succ N)
= →β →β →β =
(ΛX .λx.X .λy X ⇒X .y (N X x y )) U P Q (λx.U .λy U⇒U .y (N U x y )) P Q (λy U⇒U .y (N U P y )) Q Q(N U P Q) Q(It P Q N)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste List U = ∀X X ⇒ (U ⇒ X ⇒ X ) ⇒ X
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste List U = ∀X X ⇒ (U ⇒ X ⇒ X ) ⇒ X Costruttori: nil = ΛX .λX .λy U⇒X ⇒X .x : List U
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste List U = ∀X X ⇒ (U ⇒ X ⇒ X ) ⇒ X Costruttori: nil = ΛX .λX .λy U⇒X ⇒X .x : List U Sia M di tipo U e N di tipo List U. Allora cons M N = ΛX .λx X .λy U⇒X ⇒X .y M (N X x y ) : List U
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste List U = ∀X X ⇒ (U ⇒ X ⇒ X ) ⇒ X Costruttori: nil = ΛX .λX .λy U⇒X ⇒X .x : List U Sia M di tipo U e N di tipo List U. Allora cons M N = ΛX .λx X .λy U⇒X ⇒X .y M (N X x y ) : List U Distruttori: Sia W un tipo, P un termine di tipo W , F di tipo U ⇒ W ⇒ W , ed N di tipo List U: It P F N = N W P F : W
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste
[u1 , . . . un ]
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste
[u1 , . . . un ] ΛX .λy U⇒X ⇒X .y u1 (y u2 . . . (y un x) . . .)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati: Liste
[u1 , . . . un ] ΛX .λy U⇒X ⇒X .y u1 (y u2 . . . (y un x) . . .) cons u1 (cons u2 . . . (cons un nil) . . .)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati : Liste
It P F nil
→β
P
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Tipi di dati : Liste
It P F nil
→β
P
It P F cons M N
→β
F M (It P F N)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte nel Sistema F Modulo l’isomorfismo di Curry-Howard, la normalizzazione forte di F implica la propriet`a di eliminazione del taglio per la logica intuzionista del secondo ordine;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte nel Sistema F Modulo l’isomorfismo di Curry-Howard, la normalizzazione forte di F implica la propriet`a di eliminazione del taglio per la logica intuzionista del secondo ordine; L’eliminazione del taglio della logica intuizionista del secondo ordine implica la coerenza della logica intuizionista del secondo ordine;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte nel Sistema F Modulo l’isomorfismo di Curry-Howard, la normalizzazione forte di F implica la propriet`a di eliminazione del taglio per la logica intuzionista del secondo ordine; L’eliminazione del taglio della logica intuizionista del secondo ordine implica la coerenza della logica intuizionista del secondo ordine; Il sistema F (i.e. la logica intuizionista del secondo ordine) `e un sistema formale sufficientemente espressivo da poter rappresentare l’aritmetica di Peano;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte nel Sistema F Modulo l’isomorfismo di Curry-Howard, la normalizzazione forte di F implica la propriet`a di eliminazione del taglio per la logica intuzionista del secondo ordine; L’eliminazione del taglio della logica intuizionista del secondo ordine implica la coerenza della logica intuizionista del secondo ordine; Il sistema F (i.e. la logica intuizionista del secondo ordine) `e un sistema formale sufficientemente espressivo da poter rappresentare l’aritmetica di Peano; per il secondo teorema di Godel, il Sistema F non pu`o dimostrare la sua propria coerenza con metodi finiti.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte nel Sistema F Modulo l’isomorfismo di Curry-Howard, la normalizzazione forte di F implica la propriet`a di eliminazione del taglio per la logica intuzionista del secondo ordine; L’eliminazione del taglio della logica intuizionista del secondo ordine implica la coerenza della logica intuizionista del secondo ordine; Il sistema F (i.e. la logica intuizionista del secondo ordine) `e un sistema formale sufficientemente espressivo da poter rappresentare l’aritmetica di Peano; per il secondo teorema di Godel, il Sistema F non pu`o dimostrare la sua propria coerenza con metodi finiti. Dimostrare la forte normalizzazione del Sistema F non pu`o essere banale...
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Per ogni tipo A definiamo la nozione di termine riducibile di tipo A:
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Per ogni tipo A definiamo la nozione di termine riducibile di tipo A: Se A `e un tipo atomico, un termine t di tipo A `e riducibile sse t `e fortemente normalizzante;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Per ogni tipo A definiamo la nozione di termine riducibile di tipo A: Se A `e un tipo atomico, un termine t di tipo A `e riducibile sse t `e fortemente normalizzante; Un termine t di tipo A ⇒ B `e riducibile sse per tutti i termini reducibili u di tipo A, t u `e riducibile di tipo B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Per ogni tipo A definiamo la nozione di termine riducibile di tipo A: Se A `e un tipo atomico, un termine t di tipo A `e riducibile sse t `e fortemente normalizzante; Un termine t di tipo A ⇒ B `e riducibile sse per tutti i termini reducibili u di tipo A, t u `e riducibile di tipo B. Un termine `e semplice quando non comincia per λ.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Propriet`a della riducibilit`a R1 Ogni termine riducibile `e fortemente normalizzante;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Propriet`a della riducibilit`a R1 Ogni termine riducibile `e fortemente normalizzante; R2 Se t `e riducibile e t si riduce a t 0 allora t 0 `e riducibile,
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Propriet`a della riducibilit`a R1 Ogni termine riducibile `e fortemente normalizzante; R2 Se t `e riducibile e t si riduce a t 0 allora t 0 `e riducibile, R3 Se t `e semplice e tutti i ridotti immediati di t sono riducibili allora t `e riducibile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Propriet`a della riducibilit`a R1 Ogni termine riducibile `e fortemente normalizzante; R2 Se t `e riducibile e t si riduce a t 0 allora t 0 `e riducibile, R3 Se t `e semplice e tutti i ridotti immediati di t sono riducibili allora t `e riducibile. Proposizione 1 Se t `e un termine di tipo B e se per tutti i termine riducibili u di tipo A, t[u/x A ] `e riducibile, allora λx A .t `e riducibile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici Teorema 1 (W.W. Tait) Tutti i λ-termini semplicemente tipati sono riducibili
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici Teorema 1 (W.W. Tait) Tutti i λ-termini semplicemente tipati sono riducibili Si dimostra, per induzione sul termine t che se si sostituiscono le variabili libere di t con termini riducibili di tipo opportuno, si ottiene un termine riducibile. Nel caso t sia una variabile `e immediato; se t `e una λ-astrazione, la propriet`a vale per la Proposizione 1, mentre nel caso t sia un’applicazione, per definizione di reducibilit`a. Dato che le variabili sono riducibili per R3, per sostituzione identica il teorema segue.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Corollario 1 Tutti i λ-termini semplicemente tipati sono fortemente normalizzabili.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Normalizzazione forte per i tipi semplici
Corollario 1 Tutti i λ-termini semplicemente tipati sono fortemente normalizzabili. Per il Teorema 1 e per R1.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una generalizzazione sbagliata Proviamo ad estendere la nozione di riducibilit`a ai tipi universali: Un termine t di tipo ∀XA `e riducibile sse per tutti i tipi B, t B `e riducibile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una generalizzazione sbagliata Proviamo ad estendere la nozione di riducibilit`a ai tipi universali: Un termine t di tipo ∀XA `e riducibile sse per tutti i tipi B, t B `e riducibile. Sia t di tipo ∀X (X ⇒ X ); allora t B `e di tipo B ⇒ B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una generalizzazione sbagliata Proviamo ad estendere la nozione di riducibilit`a ai tipi universali: Un termine t di tipo ∀XA `e riducibile sse per tutti i tipi B, t B `e riducibile. Sia t di tipo ∀X (X ⇒ X ); allora t B `e di tipo B ⇒ B. t `e riducibile sse per ogni tipo B e per ogni termine riducibile u di tipo B, (t B) u di tipo B `e riducibile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
Una generalizzazione sbagliata Proviamo ad estendere la nozione di riducibilit`a ai tipi universali: Un termine t di tipo ∀XA `e riducibile sse per tutti i tipi B, t B `e riducibile. Sia t di tipo ∀X (X ⇒ X ); allora t B `e di tipo B ⇒ B. t `e riducibile sse per ogni tipo B e per ogni termine riducibile u di tipo B, (t B) u di tipo B `e riducibile. Definizione circolare: la riducibilit`a del singolo universale presuppone la riducibilit`a di tutti i tipi (dunque anche dell’universale stesso!)
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I candidati di riducibilit`a
Candidati di riducibilit`a (J.Y. Girard) Sia A un tipo: un candidato di riducibilit`a di tipo A `e un insieme C di termini di A, che gode delle seguenti proprie t`a: CR1 se t appartiene a C `e fortemente normalizzante;
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I candidati di riducibilit`a
Candidati di riducibilit`a (J.Y. Girard) Sia A un tipo: un candidato di riducibilit`a di tipo A `e un insieme C di termini di A, che gode delle seguenti proprie t`a: CR1 se t appartiene a C `e fortemente normalizzante; CR2 Se t appartiene a C e t si riduce a t 0 allora t 0 appartiene a C,
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I candidati di riducibilit`a
Candidati di riducibilit`a (J.Y. Girard) Sia A un tipo: un candidato di riducibilit`a di tipo A `e un insieme C di termini di A, che gode delle seguenti proprie t`a: CR1 se t appartiene a C `e fortemente normalizzante; CR2 Se t appartiene a C e t si riduce a t 0 allora t 0 appartiene a C, CR3 Se t `e semplice e tutti i ridotti immediati di t appartengono a C allora t appartiene a C.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I candidati di riducibilit`a
Sia t di tipo ∀X (X ⇒ X ); allora t B `e di tipo B ⇒ B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I candidati di riducibilit`a
Sia t di tipo ∀X (X ⇒ X ); allora t B `e di tipo B ⇒ B. t `e riducibile sse per ogni tipo B e per ogni candidato di reducibilit`a B di tipo B, se u appartiene a B, allora (t B) u appartiene a B.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I candidati di riducibilit`a
Sia t di tipo ∀X (X ⇒ X ); allora t B `e di tipo B ⇒ B. t `e riducibile sse per ogni tipo B e per ogni candidato di reducibilit`a B di tipo B, se u appartiene a B, allora (t B) u appartiene a B. Definizione non circolare: appartenere ad un candidato di reducibilit`a non coincide a priori con l’essere riducibile.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I termini del Sistema F sono fortemente normalizzanti
Una volta definita la nozione di reducibilit`a usando i candidati di riducibilit`a, la prova segue (a meno di dettagli tecnici) lo stesso pattern della prova di Tait.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I termini del Sistema F sono fortemente normalizzanti
Una volta definita la nozione di reducibilit`a usando i candidati di riducibilit`a, la prova segue (a meno di dettagli tecnici) lo stesso pattern della prova di Tait. Teorema 2 Tutti i termini del sistema F sono riducibili.
Indice Introduzione: logica e informatica Il λ-calcolo e la programmazione funzionale La deduzione naturale e la corrispondenza prove-programmi Potere espressivo: Sistema F e polimorfismo
I termini del Sistema F sono fortemente normalizzanti
Una volta definita la nozione di reducibilit`a usando i candidati di riducibilit`a, la prova segue (a meno di dettagli tecnici) lo stesso pattern della prova di Tait. Teorema 2 Tutti i termini del sistema F sono riducibili. Corollario 2 Tutti i termini del sistema F sono fortemente normalizzanti.