Prove e Tipi: Un’introduzione all’isomorfismo di Curry-Howard

491
Indice 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]

Transcript of Prove e Tipi: Un’introduzione all’isomorfismo di Curry-Howard

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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, Universita diCagliari

9 maggio 2012

Paolo Di [email protected]

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 TrustworthyComputational Societies, all’indirizzo http://tcs.unica.it

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Cosa c’entra la logica con l’informatica?

David Hilbert

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 enumerabile i.e. non puo essere messo incorrispondenza biunivoca con l’insieme N dei numerinaturali: la sua cardinalita e strettamente superiore.

Geometrie non euclidee (Riemann): Scoperte nel tentativo difornire una dimostrazione per assurdo del V postulatodi Euclide (“Per un punto passa una e una sola rettaparallela ad una retta data), sono geometrie costruitenegando il V postulato.

Secondo problema di Hilbert:

E’ possibile dimostrare la consistenza della matematica?.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 enumerabile i.e. non puo essere messo incorrispondenza biunivoca con l’insieme N dei numerinaturali: la sua cardinalita e strettamente superiore.

Geometrie non euclidee (Riemann): Scoperte nel tentativo difornire una dimostrazione per assurdo del V postulatodi Euclide (“Per un punto passa una e una sola rettaparallela ad una retta data), sono geometrie costruitenegando il V postulato.

Secondo problema di Hilbert:

E’ possibile dimostrare la consistenza della matematica?.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 enumerabile i.e. non puo essere messo incorrispondenza biunivoca con l’insieme N dei numerinaturali: la sua cardinalita e strettamente superiore.

Geometrie non euclidee (Riemann): Scoperte nel tentativo difornire una dimostrazione per assurdo del V postulatodi Euclide (“Per un punto passa una e una sola rettaparallela ad una retta data), sono geometrie costruitenegando il V postulato.

Secondo problema di Hilbert:

E’ possibile dimostrare la consistenza della matematica?.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 procedurameccanica effettiva capace di stabilire se l’enunciato in questionesia deducibile o meno dagli assiomi?

Es: “ogni numero pari maggiore di 2 puo essere scritto comesomma di due numeri primi” (congettura di Goldbach)

La procedura prende in input l’enunciato e restituisce inoutput una risposta, “Sı” o “No”, in un numero finito di passi.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 procedurameccanica effettiva capace di stabilire se l’enunciato in questionesia deducibile o meno dagli assiomi?

Es: “ogni numero pari maggiore di 2 puo essere scritto comesomma di due numeri primi” (congettura di Goldbach)

La procedura prende in input l’enunciato e restituisce inoutput una risposta, “Sı” o “No”, in un numero finito di passi.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 procedurameccanica effettiva capace di stabilire se l’enunciato in questionesia deducibile o meno dagli assiomi?

Es: “ogni numero pari maggiore di 2 puo essere scritto comesomma di due numeri primi” (congettura di Goldbach)

La procedura prende in input l’enunciato e restituisce inoutput una risposta, “Sı” o “No”, in un numero finito di passi.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 procedurameccanica effettiva capace di stabilire se l’enunciato in questionesia deducibile o meno dagli assiomi?

Modello di calcolo:

Definizione matematica rigorosa della nozione intuitiva diprocedura meccanica di calcolo.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 procedurameccanica effettiva capace di stabilire se l’enunciato in questionesia deducibile o meno dagli assiomi?

Modello di calcolo:

Definizione matematica rigorosa della nozione intuitiva diprocedura meccanica di calcolo.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Modelli di calcolo: le funzioni ricorsive

Kurt Godel

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 piupiccola 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 piupiccola 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 piupiccola 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 piupiccola 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 piupiccola 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Modelli di calcolo: le macchine di Turing

Alan Turing

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 passada un determinato stato ad un altro.

Pro: nozione precisa di passo di calcolo, evidentementemeccanizzabile.

Contro: Difficile dimostrare proprieta astratte in questomodello.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 passada un determinato stato ad un altro.

Pro: nozione precisa di passo di calcolo, evidentementemeccanizzabile.

Contro: Difficile dimostrare proprieta astratte in questomodello.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 passada un determinato stato ad un altro.

Pro: nozione precisa di passo di calcolo, evidentementemeccanizzabile.

Contro: Difficile dimostrare proprieta astratte in questomodello.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 passada un determinato stato ad un altro.

Pro: nozione precisa di passo di calcolo, evidentementemeccanizzabile.

Contro: Difficile dimostrare proprieta astratte in questomodello.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 passada un determinato stato ad un altro.

Pro: nozione precisa di passo di calcolo, evidentementemeccanizzabile.

Contro: Difficile dimostrare proprieta astratte in questomodello.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Modelli di calcolo: il λ-calcolo

Alonzo Church

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unicamentesulla nozione di funzione e di applicazione di funzioni.

Possiede una nozione esplicita di “passo di calcolo” (perquanto non cosı elementare come quella della macchina diTuring)

E’ il nucleo di base di tutti i linguaggi di programmazionefunzionali (Lisp, ML, etc)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unicamentesulla nozione di funzione e di applicazione di funzioni.

Possiede una nozione esplicita di “passo di calcolo” (perquanto non cosı elementare come quella della macchina diTuring)

E’ il nucleo di base di tutti i linguaggi di programmazionefunzionali (Lisp, ML, etc)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unicamentesulla nozione di funzione e di applicazione di funzioni.

Possiede una nozione esplicita di “passo di calcolo” (perquanto non cosı elementare come quella della macchina diTuring)

E’ il nucleo di base di tutti i linguaggi di programmazionefunzionali (Lisp, ML, etc)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unicamentesulla nozione di funzione e di applicazione di funzioni.

Possiede una nozione esplicita di “passo di calcolo” (perquanto non cosı elementare come quella della macchina diTuring)

E’ il nucleo di base di tutti i linguaggi di programmazionefunzionali (Lisp, ML, etc)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 eTuring-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 eTuring-calcolabile.

La tesi non e dimostrabile (la nozione di procedura effettivanon e formale);

l’evidenza “empirica” conferma la tesi di Church-Turing.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 eTuring-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 eTuring-calcolabile.

La tesi non e dimostrabile (la nozione di procedura effettivanon e formale);

l’evidenza “empirica” conferma la tesi di Church-Turing.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 eTuring-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 eTuring-calcolabile.

La tesi non e dimostrabile (la nozione di procedura effettivanon e formale);

l’evidenza “empirica” conferma la tesi di Church-Turing.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 eTuring-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 eTuring-calcolabile.

La tesi non e dimostrabile (la nozione di procedura effettivanon e formale);

l’evidenza “empirica” conferma la tesi di Church-Turing.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 enunciatodell’aritmetica sia capace di determinare se esso sia o menodimostrabile.

Problema della fermata (Turing)

Non esiste una macchina di Turing capace di decidere se, a partireda un input arbitrario, un programma termini.

Secondo teorema di incompletezza (Godel)

Non e possibile dimostrare la coerenza dell’aritmetica con metodifiniti.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 enunciatodell’aritmetica sia capace di determinare se esso sia o menodimostrabile.

Problema della fermata (Turing)

Non esiste una macchina di Turing capace di decidere se, a partireda un input arbitrario, un programma termini.

Secondo teorema di incompletezza (Godel)

Non e possibile dimostrare la coerenza dell’aritmetica con metodifiniti.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 enunciatodell’aritmetica sia capace di determinare se esso sia o menodimostrabile.

Problema della fermata (Turing)

Non esiste una macchina di Turing capace di decidere se, a partireda un input arbitrario, un programma termini.

Secondo teorema di incompletezza (Godel)

Non e possibile dimostrare la coerenza dell’aritmetica con metodifiniti.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Nascita dei moderni calcolatori

John Von Neumann

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

A volte i problemi sono piu interessanti delle soluzioni....

I know that in or about 1943 or ’44 von Neumann waswell aware of the fundamental importance of Turing’spaper of 1936 ... Von Neumann introduced me to thatpaper and at his urging I studied it with care. Manypeople have acclaimed von Neumann as the ”father ofthe computer” (in a modern sense of the term) but I amsure that he would never have made that mistake himself.He might well be called the midwife, perhaps, but hefirmly emphasized to me, and to others I am sure, thatthe fundamental conception is owing to Turing.

Stan Frankel, collega di Von Neumann a Los Alamos.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 deldominio di f (l’insieme dei valori di input X ) un elemento delcodominio di f (l’insieme dei valori di output Y )

Piu formalmente, una funzione e un sottoinsieme del prodottocartesiano X × Y tale che per ogni x ∈ X esiste un unicoy ∈ Y tale che (x , y) ∈ f .

L’esistenza e l’unicita rendono possibile la notazione f (x) = y ;ogni elemento del dominio di f determina in modo univoco unelemento del codominio di f .

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 deldominio di f (l’insieme dei valori di input X ) un elemento delcodominio di f (l’insieme dei valori di output Y )

Piu formalmente, una funzione e un sottoinsieme del prodottocartesiano X × Y tale che per ogni x ∈ X esiste un unicoy ∈ Y tale che (x , y) ∈ f .

L’esistenza e l’unicita rendono possibile la notazione f (x) = y ;ogni elemento del dominio di f determina in modo univoco unelemento del codominio di f .

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 deldominio di f (l’insieme dei valori di input X ) un elemento delcodominio di f (l’insieme dei valori di output Y )

Piu formalmente, una funzione e un sottoinsieme del prodottocartesiano X × Y tale che per ogni x ∈ X esiste un unicoy ∈ Y tale che (x , y) ∈ f .

L’esistenza e l’unicita rendono possibile la notazione f (x) = y ;ogni elemento del dominio di f determina in modo univoco unelemento del codominio di f .

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 completamentedefinita dal suo grafico : f = {(x , f (x)) : x ∈ X} ⊆ X × Y .

Dal punto di vista estensionale, non siamo interessati a saperein che modo la funzione calcola i suoi valori; ci interessa soloconoscere i valori in entrata, i valori in uscita e la relazione tradi essi (chi corrisponde a chi).

Es. Le funzioni Sum(x , y) = x + y e Mus(x , y) = y + x sonoestensionalmente equivalenti (anche se calcolano i loro valoriin maniera differente).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 completamentedefinita dal suo grafico : f = {(x , f (x)) : x ∈ X} ⊆ X × Y .

Dal punto di vista estensionale, non siamo interessati a saperein che modo la funzione calcola i suoi valori; ci interessa soloconoscere i valori in entrata, i valori in uscita e la relazione tradi essi (chi corrisponde a chi).

Es. Le funzioni Sum(x , y) = x + y e Mus(x , y) = y + x sonoestensionalmente equivalenti (anche se calcolano i loro valoriin maniera differente).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 completamentedefinita dal suo grafico : f = {(x , f (x)) : x ∈ X} ⊆ X × Y .

Dal punto di vista estensionale, non siamo interessati a saperein che modo la funzione calcola i suoi valori; ci interessa soloconoscere i valori in entrata, i valori in uscita e la relazione tradi essi (chi corrisponde a chi).

Es. Le funzioni Sum(x , y) = x + y e Mus(x , y) = y + x sonoestensionalmente equivalenti (anche se calcolano i loro valoriin maniera differente).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 inputun x ∈ X e produce un output y ∈ Y in un numero finito dipassi elementari.

Dal punto di vista intensionale, siamo interessati a capire inche modo la funzione f produce il suo risultato: non ci bastaconoscere il risultato.

Es. Le funzioni Sum(x , y) = x + y e Mus(x , y) = y + x sonointensionalmente differenti (anche se estensionalmente sicomportano allo stesso modo).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 inputun x ∈ X e produce un output y ∈ Y in un numero finito dipassi elementari.

Dal punto di vista intensionale, siamo interessati a capire inche modo la funzione f produce il suo risultato: non ci bastaconoscere il risultato.

Es. Le funzioni Sum(x , y) = x + y e Mus(x , y) = y + x sonointensionalmente differenti (anche se estensionalmente sicomportano allo stesso modo).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 inputun x ∈ X e produce un output y ∈ Y in un numero finito dipassi elementari.

Dal punto di vista intensionale, siamo interessati a capire inche modo la funzione f produce il suo risultato: non ci bastaconoscere il risultato.

Es. Le funzioni Sum(x , y) = x + y e Mus(x , y) = y + x sonointensionalmente differenti (anche se estensionalmente sicomportano allo stesso modo).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 occorrenzalibera di x con u.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 occorrenzalibera di x con u.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 occorrenzalibera di x con u.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 occorrenzalibera di x con u.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 occorrenzalibera di x con u.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

E quando ci sono piu argomenti?

g(x , y) = x ∗ x + y ∗ y

Currificazione: Una funzione a due argomenti puo essererappresentata 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 comeargomenti e restituisce una funzione che prende un argomento z,

applica la prima funzione all’argomento, e applica la secondafunzione al risultato

λf .λg .λz .g(f (z))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 comeargomenti e restituisce una funzione che prende un argomento z,

applica la prima funzione all’argomento, e applica la secondafunzione al risultato

λf .λg .λz .g(f (z))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 comeargomenti e restituisce una funzione che prende un argomento z,

applica la prima funzione all’argomento, e applica la secondafunzione al risultato

λf .λg .λz .g(f (z))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo prendere in argomento funzioni e restituire comevalore una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 delprogramma)

Tutto e una funzione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 divariabili (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: M1M2M3 = ((M1M2)M3)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 divariabili (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: M1M2M3 = ((M1M2)M3)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 divariabili (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: M1M2M3 = ((M1M2)M3)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 divariabili (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: M1M2M3 = ((M1M2)M3)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 divariabili (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: M1M2M3 = ((M1M2)M3)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 divariabili (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: M1M2M3 = ((M1M2)M3)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

α-equivalenza

M = (λx .yx)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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

α-equivalenza

M = (λx .yx)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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

α-equivalenza

M = (λx .yx)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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

α-equivalenza

M = (λx .yx)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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

α-equivalenza

M = (λx .yx)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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

α-equivalenza

M = (λx .yx)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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ allora si dice che M β-riduce in un passo a M ′.

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)).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

β-riduzione

La β-riduzione (denotata →∗β) e la chiusura riflessiva e transitivadella relazione →β.

M →∗β M ′ se e solo se se esiste una successioneM0,M1, . . . ,Mn−1,Mn tale che M = M0,M

′ = Mn, eMi →β Mi+1 per 1 ≤ i ≤ n − 1 (con n ≥ 0).

un λ-termine M e detto in forma normale se e solo se noncontiene redessi, i.e. non esiste nessun λ-termine M ′ tale cheM →∗β M ′.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

β-riduzione

La β-riduzione (denotata →∗β) e la chiusura riflessiva e transitivadella relazione →β.

M →∗β M ′ se e solo se se esiste una successioneM0,M1, . . . ,Mn−1,Mn tale che M = M0,M

′ = Mn, eMi →β Mi+1 per 1 ≤ i ≤ n − 1 (con n ≥ 0).

un λ-termine M e detto in forma normale se e solo se noncontiene redessi, i.e. non esiste nessun λ-termine M ′ tale cheM →∗β M ′.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

β-riduzione

La β-riduzione (denotata →∗β) e la chiusura riflessiva e transitivadella relazione →β.

M →∗β M ′ se e solo se se esiste una successioneM0,M1, . . . ,Mn−1,Mn tale che M = M0,M

′ = Mn, eMi →β Mi+1 per 1 ≤ i ≤ n − 1 (con n ≥ 0).

un λ-termine M e detto in forma normale se e solo se noncontiene redessi, i.e. non esiste nessun λ-termine M ′ tale cheM →∗β M ′.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il λ-calcolo come linguaggio di programmazione: unintuizione

(λx1 . . . λxn.M)N1 . . .Nn corrisponde ad un programma M cheattende n argomenti, applicato agli input N1, . . . ,Nn;

La β-riduzione corrisponde all’esecuzione di un programma: seM →∗β M ′ allora M ′ rappresenta uno stadio piu avanzatonell’esecuzione del programma M;

un λ-termine in forma normale corrisponde all’output delprogramma.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il λ-calcolo come linguaggio di programmazione: unintuizione

(λx1 . . . λxn.M)N1 . . .Nn corrisponde ad un programma M cheattende n argomenti, applicato agli input N1, . . . ,Nn;

La β-riduzione corrisponde all’esecuzione di un programma: seM →∗β M ′ allora M ′ rappresenta uno stadio piu avanzatonell’esecuzione del programma M;

un λ-termine in forma normale corrisponde all’output delprogramma.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il λ-calcolo come linguaggio di programmazione: unintuizione

(λx1 . . . λxn.M)N1 . . .Nn corrisponde ad un programma M cheattende n argomenti, applicato agli input N1, . . . ,Nn;

La β-riduzione corrisponde all’esecuzione di un programma: seM →∗β M ′ allora M ′ rappresenta uno stadio piu avanzatonell’esecuzione del programma M;

un λ-termine in forma normale corrisponde all’output delprogramma.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ sono η-equivalenti (o estensionalmenteequivalenti) se si comportano allo stesso modo, una voltaapplicati ad un argomento.

Per ogni N, (λx .(Mx))N →β (Mx)[N/x ] = MN

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ sono η-equivalenti (o estensionalmenteequivalenti) se si comportano allo stesso modo, una voltaapplicati ad un argomento.

Per ogni N, (λx .(Mx))N →β (Mx)[N/x ] = MN

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ′ sono η-equivalenti (o estensionalmenteequivalenti) se si comportano allo stesso modo, una voltaapplicati ad un argomento.

Per ogni N, (λx .(Mx))N →β (Mx)[N/x ] = MN

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione debole e forte

un λ-termine e detto normalizzabile (o debolmentenormalizzabile) se esiste un λ-termine M ′ normale tale cheM →∗β M ′; si dice allora che M ′ e una forma normale di M.

un λ-termine e detto fortemente normalizzabile se non esistealcuna successione infinita Mi∈N tale che M = M0 eMi →β Mi+1 per ogni i ∈ N.

un λ-termine non normalizzabile corrisponde ad unprogramma che cicla all’infinito.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione debole e forte

un λ-termine e detto normalizzabile (o debolmentenormalizzabile) se esiste un λ-termine M ′ normale tale cheM →∗β M ′; si dice allora che M ′ e una forma normale di M.

un λ-termine e detto fortemente normalizzabile se non esistealcuna successione infinita Mi∈N tale che M = M0 eMi →β Mi+1 per ogni i ∈ N.

un λ-termine non normalizzabile corrisponde ad unprogramma che cicla all’infinito.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione debole e forte

un λ-termine e detto normalizzabile (o debolmentenormalizzabile) se esiste un λ-termine M ′ normale tale cheM →∗β M ′; si dice allora che M ′ e una forma normale di M.

un λ-termine e detto fortemente normalizzabile se non esistealcuna successione infinita Mi∈N tale che M = M0 eMi →β Mi+1 per ogni i ∈ N.

un λ-termine non normalizzabile corrisponde ad unprogramma che cicla all’infinito.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sequenzadi 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sequenzadi 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sequenzadi 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sequenzadi 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sequenzadi 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sequenzadi 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni possibile non termina.

(λx .xx)(λx .xx)→β x [λx .xx/x ]x [λx .xx/x ]→β (λx .xx)(λx .xx)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni possibile non termina.

(λx .xx)(λx .xx)

→β x [λx .xx/x ]x [λx .xx/x ]→β (λx .xx)(λx .xx)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni possibile non termina.

(λx .xx)(λx .xx)→β x [λx .xx/x ]x [λx .xx/x ]

→β (λx .xx)(λx .xx)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni possibile non termina.

(λx .xx)(λx .xx)→β x [λx .xx/x ]x [λx .xx/x ]→β (λx .xx)(λx .xx)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni possibile non termina.

(λx .xx)(λx .xx)→β x [λx .xx/x ]x [λx .xx/x ]→β (λx .xx)(λx .xx)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni che terminano e altre no.

(λz .y)((λx .xx)λx .xx)→β y [(λx .xx)λx .xx/z ]= y

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni che terminano e altre no.

(λz .y)((λx .xx)λx .xx)

→β y [(λx .xx)λx .xx/z ]= y

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni che terminano e altre no.

(λz .y)((λx .xx)λx .xx)→β y [(λx .xx)λx .xx/z ]

= y

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni che terminano e altre no.

(λz .y)((λx .xx)λx .xx)→β y [(λx .xx)λx .xx/z ]= y

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni 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)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni 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)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni 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)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 diriduzioni 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)

→β...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Mallora M1 = M2.

Dim. M →∗β M1 e M →∗β M2 quindi per la confluenza esiste N taleche M1 →∗β N ed M2 →∗β N; ora poiche M1,M2 sono due formenormali, M1 = N = M2.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Mallora M1 = M2.

Dim. M →∗β M1 e M →∗β M2 quindi per la confluenza esiste N taleche M1 →∗β N ed M2 →∗β N; ora poiche M1,M2 sono due formenormali, M1 = N = M2.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Mallora M1 = M2.

Dim. M →∗β M1 e M →∗β M2 quindi per la confluenza esiste N taleche M1 →∗β N ed M2 →∗β N; ora poiche M1,M2 sono due formenormali, M1 = N = M2.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Mallora M1 = M2.

Dim. M →∗β M1 e M →∗β M2 quindi per la confluenza esiste N taleche M1 →∗β N ed M2 →∗β N; ora poiche M1,M2 sono due formenormali, M1 = N = M2.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Funzione identita: λx .x

(λx .x)M

→β x [M/x ]= M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Funzione identita: λx .x

(λx .x)M→β x [M/x ]

= M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Funzione identita: λx .x

(λx .x)M→β x [M/x ]= M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Gli interi di Church:

n := λf λx .f nx = λf λx

n volte︷ ︸︸ ︷f (f · · · (f x) · · · )

0 := λf λx .x

1 := λf λx .f x

2 := λf λx .f (f x)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Gli interi di Church:

n := λf λx .f nx = λf λx

n volte︷ ︸︸ ︷f (f · · · (f x) · · · )

0 := λf λx .x

1 := λf λx .f x

2 := λf λx .f (f x)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Gli interi di Church:

n := λf λx .f nx = λf λx

n volte︷ ︸︸ ︷f (f · · · (f x) · · · )

0 := λf λx .x

1 := λf λx .f x

2 := λf λx .f (f x)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Programmare con il λ-calcolo

Gli interi di Church:

n := λf λx .f nx = λf λx

n volte︷ ︸︸ ︷f (f · · · (f x) · · · )

0 := λf λx .x

1 := λf λx .f x

2 := λf λx .f (f x)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 cheitera n volte la funzione che gli viene applicata:

(λf λx .f nx)PQ→β (λx .Pnx)Q→β PnQ

=

n volte︷ ︸︸ ︷P(P · · · (P Q) · · · )

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 cheitera n volte la funzione che gli viene applicata:

(λf λx .f nx)PQ

→β (λx .Pnx)Q→β PnQ

=

n volte︷ ︸︸ ︷P(P · · · (P Q) · · · )

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 cheitera n volte la funzione che gli viene applicata:

(λf λx .f nx)PQ→β (λx .Pnx)Q

→β PnQ

=

n volte︷ ︸︸ ︷P(P · · · (P Q) · · · )

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 cheitera n volte la funzione che gli viene applicata:

(λf λx .f nx)PQ→β (λx .Pnx)Q→β PnQ

=

n volte︷ ︸︸ ︷P(P · · · (P Q) · · · )

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 cheitera n volte la funzione che gli viene applicata:

(λf λx .f nx)PQ→β (λx .Pnx)Q→β PnQ

=

n volte︷ ︸︸ ︷P(P · · · (P Q) · · · )

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unx ∈ 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 puntofisso.

Dim. Θ = (λaλf .f (a a f ))A→β λf .f (A A f ) = λf .f (Θ f ). Oraper ogni F , Θ F →β (λf .f (Θ f ))F →β F (Θ F ).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unx ∈ 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 puntofisso.

Dim. Θ = (λaλf .f (a a f ))A→β λf .f (A A f ) = λf .f (Θ f ). Oraper ogni F , Θ F →β (λf .f (Θ f ))F →β F (Θ F ).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unx ∈ 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 puntofisso.

Dim. Θ = (λaλf .f (a a f ))A→β λf .f (A A f ) = λf .f (Θ f ). Oraper ogni F , Θ F →β (λf .f (Θ f ))F →β F (Θ F ).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unx ∈ 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 puntofisso.

Dim. Θ = (λaλf .f (a a f ))A→β λf .f (A A f ) = λf .f (Θ f ). Oraper ogni F , Θ F →β (λf .f (Θ f ))F →β F (Θ F ).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fondamentaliper rappresentare le funzioni definite per ricorsione, che a lorovolta permettono di definire in maniera funzionale i cicliwhile dei linguaggi di programmazione standard.

Es. il fattoriale n! e definito per ricorsione:

n! =

{1, se n = 0

n ∗ (n − 1)!, altrimenti

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fondamentaliper rappresentare le funzioni definite per ricorsione, che a lorovolta permettono di definire in maniera funzionale i cicliwhile dei linguaggi di programmazione standard.

Es. il fattoriale n! e definito per ricorsione:

n! =

{1, se n = 0

n ∗ (n − 1)!, altrimenti

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 edell’argomentazione e, in particolare, dei procedimentiinferenziali, rivolto a chiarire quali procedimenti dipensiero siano validi e quali non validi.

Wikipedia

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo essereespresso in maniera univoca come prodotto di numeri primi.

6396 e un numero intero maggiore di 1.

6396 puo essere espresso in maniera univoca come prodotto dinumeri primi.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo essereespresso in maniera univoca come prodotto di numeri primi.

6396 e un numero intero maggiore di 1.

6396 puo essere espresso in maniera univoca come prodotto dinumeri primi.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 puo essereespresso in maniera univoca come prodotto di numeri primi.

6396 e un numero intero maggiore di 1.

6396 puo essere espresso in maniera univoca come prodotto dinumeri primi.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Modus Ponens

A⇒ B AB

Se A allora B.

A.

dunque B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dimostrabiliusando :

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 AMP

B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dimostrabiliusando :

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 AMP

B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dimostrabiliusando :

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 AMP

B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dimostrabiliusando :

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 AMP

B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dimostrabiliusando :

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 AMP

B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Osservazioni sul calcolo

Costruire una dimostrazione nel sistema alla Hilbert e unaprocedura piuttosto involuta...;

La struttura di una derivazione e estremamente povera,contiene pochissime informazioni;

La derivazione non rispecchia il procedere naturale delragionamento matematico.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Osservazioni sul calcolo

Costruire una dimostrazione nel sistema alla Hilbert e unaprocedura piuttosto involuta...;

La struttura di una derivazione e estremamente povera,contiene pochissime informazioni;

La derivazione non rispecchia il procedere naturale delragionamento matematico.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Osservazioni sul calcolo

Costruire una dimostrazione nel sistema alla Hilbert e unaprocedura piuttosto involuta...;

La struttura di una derivazione e estremamente povera,contiene pochissime informazioni;

La derivazione non rispecchia il procedere naturale delragionamento matematico.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ed 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), cioe se riesco adimostrare ¬B ⇒ ¬A per [H3] e Modus Ponens possoconcludere A⇒ B, cvd.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ed 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), cioe se riesco adimostrare ¬B ⇒ ¬A per [H3] e Modus Ponens possoconcludere A⇒ B, cvd.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ed 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), cioe se riesco adimostrare ¬B ⇒ ¬A per [H3] e Modus Ponens possoconcludere A⇒ B, cvd.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ed 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), cioe se riesco adimostrare ¬B ⇒ ¬A per [H3] e Modus Ponens possoconcludere A⇒ B, cvd.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ed 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), cioe se riesco adimostrare ¬B ⇒ ¬A per [H3] e Modus Ponens possoconcludere A⇒ B, cvd.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 veritadi A.

Principio non costruttivo: per dimostrare l’esistenza di unoggetto matematico non e sufficiente dimostrare cheammettere il contrario porta a contraddizione; bisogna esibirel’oggetto in questione.

Logica intuizionista Logica che non ammette il ragionamentoper assurdo (Brouwer, Prawitz).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 veritadi A.

Principio non costruttivo: per dimostrare l’esistenza di unoggetto matematico non e sufficiente dimostrare cheammettere il contrario porta a contraddizione; bisogna esibirel’oggetto in questione.

Logica intuizionista Logica che non ammette il ragionamentoper assurdo (Brouwer, Prawitz).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 veritadi A.

Principio non costruttivo: per dimostrare l’esistenza di unoggetto matematico non e sufficiente dimostrare cheammettere il contrario porta a contraddizione; bisogna esibirel’oggetto in questione.

Logica intuizionista Logica che non ammette il ragionamentoper assurdo (Brouwer, Prawitz).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 veritadi A.

Principio non costruttivo: per dimostrare l’esistenza di unoggetto matematico non e sufficiente dimostrare cheammettere il contrario porta a contraddizione; bisogna esibirel’oggetto in questione.

Logica intuizionista Logica che non ammette il ragionamentoper assurdo (Brouwer, Prawitz).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;

le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unaparticolare formula viene dedotta a partire da un certo numerodi premesse;le regole di eliminazione, che specificano il modo in cui unaparticolare formula puo essere utilizzata per derivare altreformule.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 uncerto numero di volte l’ipotesi A;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 cheusa un certo numero di volte l’ipotesi A;

allora possiamo “consumare” un determinato numero di voltel’ipotesi A per produrre una dimostrazione di A⇒ B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 indipendentirispettivamente di A⇒ B e di A;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Deduzione naturale: la regola di ⇒ E

...A⇒ B

...A ⇒ E

B

Supponiamo di avere due dimostrazioni indipendentirispettivamente di A⇒ B e di A;

allora possiamo comporre le due dimostrazioni per produrreuna dimostrazione di B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 indipendentirispettivamente di A e di B;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 indipendentirispettivamente di A e di B;

allora possiamo comporre le due dimostrazioni per produrreuna dimostrazione di A ∧ B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dellacongiunzione ed ottenere cosı una dimostrazione di A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 dellacongiunzione ed ottenere cosı una dimostrazione di B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

A⇒ A

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A]

A ⇒ IA⇒ A

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A]⇒ I

A⇒ A

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

A⇒ (B ⇒ A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A]

B ⇒ A ⇒ IA⇒ (B ⇒ A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A] [B]

A ⇒ IB ⇒ A ⇒ I

A⇒ (B ⇒ A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A]⇒ I

B ⇒ A ⇒ IA⇒ (B ⇒ A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

(A⇒ (B ⇒ C ))⇒ ((A⇒ B)⇒ (A⇒ C ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A⇒ (B ⇒ C )] [A] [A⇒ B]

C ⇒ IA⇒ C ⇒ I

(A⇒ B)⇒ (A⇒ C )⇒ I

(A⇒ (B ⇒ C ))⇒ ((A⇒ B)⇒ (A⇒ C ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A⇒ (B ⇒ C )] [A]⇒ E

B ⇒ C[A⇒ B]

C ⇒ IA⇒ C ⇒ I

(A⇒ B)⇒ (A⇒ C )⇒ I

(A⇒ (B ⇒ C ))⇒ ((A⇒ B)⇒ (A⇒ C ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A⇒ (B ⇒ C )] [A]⇒ E

B ⇒ C[A⇒ B] [A]

C ⇒ IA⇒ C ⇒ I

(A⇒ B)⇒ (A⇒ C )⇒ I

(A⇒ (B ⇒ C ))⇒ ((A⇒ B)⇒ (A⇒ C ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A⇒ (B ⇒ C )] [A]⇒ E

B ⇒ C

[A⇒ B] [A]⇒ E

BC ⇒ I

A⇒ C ⇒ I(A⇒ B)⇒ (A⇒ C )

⇒ I(A⇒ (B ⇒ C ))⇒ ((A⇒ B)⇒ (A⇒ C ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[A⇒ (B ⇒ C )] [A]⇒ E

B ⇒ C

[A⇒ B] [A]⇒ E

B ⇒ EC ⇒ I

A⇒ C ⇒ I(A⇒ B)⇒ (A⇒ C )

⇒ I(A⇒ (B ⇒ C ))⇒ ((A⇒ B)⇒ (A⇒ C ))

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una dimostrazione arzigogolata...

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B”

{A,B} ` A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una dimostrazione arzigogolata...

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B”

{A,B} ` A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una dimostrazione arzigogolata...

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B”

{A,B} ` A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

La proprieta della sottoformula

Sia Γ un (multi-)insieme di formule:

Γ ` A

“Dalle ipotesi in Γ segue A”

Proprieta della sottoformula

Una prova π di Γ ` A rispetta la proprieta della sottoformula se leformule che compaiono in π sono tutte e sole e formule checompaiono in Γ,A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

La proprieta della sottoformula

Sia Γ un (multi-)insieme di formule:

Γ ` A

“Dalle ipotesi in Γ segue A”

Proprieta della sottoformula

Una prova π di Γ ` A rispetta la proprieta della sottoformula se leformule che compaiono in π sono tutte e sole e formule checompaiono in Γ,A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

La proprieta della sottoformula

Sia Γ un (multi-)insieme di formule:

Γ ` A

“Dalle ipotesi in Γ segue A”

Proprieta della sottoformula

Una prova π di Γ ` A rispetta la proprieta della sottoformula se leformule che compaiono in π sono tutte e sole e formule checompaiono in Γ,A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

La proprieta della sottoformula

Sia Γ un (multi-)insieme di formule:

Γ ` A

“Dalle ipotesi in Γ segue A”

Proprieta della sottoformula

Una prova π di Γ ` A rispetta la proprieta della sottoformula se leformule che compaiono in π sono tutte e sole e formule checompaiono in Γ,A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il taglio

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

Taglio: L’introduzione di una formula seguitaimmediatamente dalla sua eliminazione.

E’ possibile trasformare, riscrivere una prova in maniera daottenere una prova senza tagli, preservando conclusione edipotesi ?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il taglio

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

Taglio: L’introduzione di una formula seguitaimmediatamente dalla sua eliminazione.

E’ possibile trasformare, riscrivere una prova in maniera daottenere una prova senza tagli, preservando conclusione edipotesi ?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il taglio

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

Taglio: L’introduzione di una formula seguitaimmediatamente dalla sua eliminazione.

E’ possibile trasformare, riscrivere una prova in maniera daottenere una prova senza tagli, preservando conclusione edipotesi ?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Eliminazione del taglio: il caso ⇒

[A]

...B ⇒ I

A⇒ B

π...A ⇒ E

B

π...A...B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Eliminazione del taglio: il caso ∧

π1

...A

π2

...B ∧I

A ∧ B ∧E1A

π1

...A

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Eliminazione del taglio: il caso ∧

π1

...A

π2

...B ∧I

A ∧ B ∧E2B

π2

...B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Riduzione di una prova

[B ∧ A]∧E2

A

[B ∧ A]∧E1

B ∧IA ∧ B ⇒ I

(B ∧ A)⇒ (A ∧ B)B A ∧IB ∧ A

⇒ EA ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Riduzione di una prova

B A ∧IB ∧ A ∧E2

A

B A ∧IB ∧ A ∧E1

B ∧IA ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Riduzione di una prova

B A ∧IB ∧ A ∧E2

A

B A ∧IB ∧ A ∧E1

B ∧IA ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Riduzione di una prova

A

B A ∧IB ∧ A ∧E1

B ∧IA ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Riduzione di una prova

A B ∧IA ∧ B

“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B”

{A,B} ` A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Riduzione di una prova

A B ∧IA ∧ B

“Dall’ ipotesi A e dall’ipotesi B segue A ∧ B”

{A,B} ` A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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π′ di Γ ` A senza tagli.

Corollario

Per ogni prova π di Γ ` A in deduzione naturale, esiste una provaπ′ di Γ ` A in cui occorrono solo sottoformule delle formule in Γ,A.

La procedura di trasformazione delle dimostrazioni sembraricordare un processo di calcolo....

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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π′ di Γ ` A senza tagli.

Corollario

Per ogni prova π di Γ ` A in deduzione naturale, esiste una provaπ′ di Γ ` A in cui occorrono solo sottoformule delle formule in Γ,A.

La procedura di trasformazione delle dimostrazioni sembraricordare un processo di calcolo....

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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π′ di Γ ` A senza tagli.

Corollario

Per ogni prova π di Γ ` A in deduzione naturale, esiste una provaπ′ di Γ ` A in cui occorrono solo sottoformule delle formule in Γ,A.

La procedura di trasformazione delle dimostrazioni sembraricordare un processo di calcolo....

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

λ-calcolo e normalizzazione forte

Consideriamo il λ-termine considerato il “prototipo” dellanon-terminazione:

λx .xx

Cosa fa λx .xx? Prende in input un termine e lo applica a sestesso.

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! Comeimpedirla?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

λ-calcolo e normalizzazione forte

Consideriamo il λ-termine considerato il “prototipo” dellanon-terminazione:

λx .xx

Cosa fa λx .xx? Prende in input un termine e lo applica a sestesso.

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! Comeimpedirla?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

λ-calcolo e normalizzazione forte

Consideriamo il λ-termine considerato il “prototipo” dellanon-terminazione:

λx .xx

Cosa fa λx .xx? Prende in input un termine e lo applica a sestesso.

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! Comeimpedirla?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

λ-calcolo e normalizzazione forte

Consideriamo il λ-termine considerato il “prototipo” dellanon-terminazione:

λx .xx

Cosa fa λx .xx? Prende in input un termine e lo applica a sestesso.

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! Comeimpedirla?

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il λ-calcolo semplicemente tipato

λ-termini:

M ::= x | λx .M | MM | 〈MM〉 | fst M | snd M

“Zucchero sintattico”:

fst〈M1M2〉 →β M1

snd〈M1M2〉 →β M2

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il λ-calcolo semplicemente tipato

λ-termini:

M ::= x | λx .M | MM | 〈MM〉 | fst M | snd M

“Zucchero sintattico”:

fst〈M1M2〉 →β M1

snd〈M1M2〉 →β M2

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I tipi semplici

Sia data una infinita numerabile di variabili A, B, C ...

dette variabili di tipo:

1 Una variabile di tipo A e un tipo semplice;2 Se A e un tipo semplice e B e un tipo semplice, allora A→ B e

un tipo semplice;3 Se A e un tipo semplice e B e un tipo semplice, allora A× B e

un tipo semplice;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I tipi semplici

Sia data una infinita numerabile di variabili A, B, C ...

dette variabili di tipo:

1 Una variabile di tipo A e un tipo semplice;

2 Se A e un tipo semplice e B e un tipo semplice, allora A→ B eun tipo semplice;

3 Se A e un tipo semplice e B e un tipo semplice, allora A× B eun tipo semplice;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I tipi semplici

Sia data una infinita numerabile di variabili A, B, C ...

dette variabili di tipo:

1 Una variabile di tipo A e un tipo semplice;2 Se A e un tipo semplice e B e un tipo semplice, allora A→ B e

un tipo semplice;

3 Se A e un tipo semplice e B e un tipo semplice, allora A× B eun tipo semplice;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I tipi semplici

Sia data una infinita numerabile di variabili A, B, C ...

dette variabili di tipo:

1 Una variabile di tipo A e un tipo semplice;2 Se A e un tipo semplice e B e un tipo semplice, allora A→ B e

un tipo semplice;3 Se A e un tipo semplice e B e un tipo semplice, allora A× B e

un tipo semplice;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈MN〉 e un termine di tipo A× B.

Se M e un termine di tipo A× B, allora fst M e un termine ditipo A.

Se M e un termine di tipo A× B, allora snd M e un termine ditipo B.

MA (o anche M : A): il termine M ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Le regole di riduzione nel λ-calcolo semplicemente tipato

((λxA.MB)A→BNA)B →β MB[NA/xA]

(fst(〈MA1 MB

2 〉)A×B)A →β MA1

(snd(〈MA1 MB

2 〉)A×B)B →β MB2

Non e possibile assegnare un tipo al termine λx .xx nel λ-calcolosemplicemente tipato: infatti non si puo assegnare ad x allo stessotempo il tipo A→ B e A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Le regole di riduzione nel λ-calcolo semplicemente tipato

((λxA.MB)A→BNA)B →β MB[NA/xA]

(fst(〈MA1 MB

2 〉)A×B)A →β MA1

(snd(〈MA1 MB

2 〉)A×B)B →β MB2

Non e possibile assegnare un tipo al termine λx .xx nel λ-calcolosemplicemente tipato: infatti non si puo assegnare ad x allo stessotempo il tipo A→ B e A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Proprieta fondamentali del λ-calcolo semplicemente tipato

Subject reduction

Se M e un termine di tipo A del λ-calcolo semplicemente tipato eM →β M ′, allora M ′ e un termine di tipo A.

Normalizzazione forte

Se M e un termine del λ-calcolo semplicemente tipato, allora M efortemente normalizzabile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Proprieta fondamentali del λ-calcolo semplicemente tipato

Subject reduction

Se M e un termine di tipo A del λ-calcolo semplicemente tipato eM →β M ′, allora M ′ e un termine di tipo A.

Normalizzazione forte

Se M e un termine del λ-calcolo semplicemente tipato, allora M efortemente normalizzabile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Formule / Tipi

Formule TipiA A

A⇒ B A→ B

A ∧ B A× B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Formule / Tipi

Formule TipiA A

A⇒ B A→ B

A ∧ B A× B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Formule / Tipi

Formule TipiA A

A⇒ B A→ B

A ∧ B A× B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Formule / Tipi

Formule TipiA A

A⇒ B A→ B

A ∧ B A× B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 chex ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 chex ha tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 compareun certo numero di volte la variabile libera x di tipo A;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 compareun certo numero di volte la variabile libera x di tipo A;

allora possiamo “catturare” le occorrenze libere della variabilex di tipo A con una λ-astrazione, ottenendo un termine λx .Mdi tipo A⇒ B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Nper produrre un λ-termine di tipo B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ditipo A e B;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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〈M N〉 : A ∧ B

Supponiamo di avere due λ-termini M e N rispettivamente ditipo A e B;

allora possiamo comporre i due λ-termini per ottenere lacoppia 〈M N〉 di tipo A ∧ B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 edottenere cosı un λ-termine fst M di tipo A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 edottenere cosı un λ-termine snd M di tipo B.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Regole di deduzione / Costrutti del λ-calcolo

Regole Costrutti⇒ I λ-astrazione

⇒ E applicazione

∧I coppia

∧E1, ∧E2 prima e seconda proiezione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Regole di deduzione / Costrutti del λ-calcolo

Regole Costrutti⇒ I λ-astrazione

⇒ E applicazione

∧I coppia

∧E1, ∧E2 prima e seconda proiezione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Regole di deduzione / Costrutti del λ-calcolo

Regole Costrutti⇒ I λ-astrazione

⇒ E applicazione

∧I coppia

∧E1, ∧E2 prima e seconda proiezione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Regole di deduzione / Costrutti del λ-calcolo

Regole Costrutti⇒ I λ-astrazione

⇒ E applicazione

∧I coppia

∧E1, ∧E2 prima e seconda proiezione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Regole di deduzione / Costrutti del λ-calcolo

Regole Costrutti⇒ I λ-astrazione

⇒ E applicazione

∧I coppia

∧E1, ∧E2 prima e seconda proiezione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Regole di deduzione / Costrutti del λ-calcolo

Regole Costrutti⇒ I λ-astrazione

⇒ E applicazione

∧I coppia

∧E1, ∧E2 prima e seconda proiezione

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

[z : B ∧ A]∧E2

snd z : A

[z : B ∧ A]∧E1

fst z : B ∧I〈(snd z)(fst z)〉 : A ∧ B⇒ I

λz .〈(snd z)(fst z)〉 : (B ∧ A)⇒ (A ∧ B)

y : B x : A∧I〈y x〉 : B ∧ A⇒ E

(λz .〈(snd z)(fst z)〉)〈y x〉 : A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

[z : B ∧ A]∧E2

snd z : A

[z : B ∧ A]∧E1

fst z : B ∧I〈(snd z)(fst z)〉 : A ∧ B⇒ I

λz .〈(snd z)(fst z)〉 : (B ∧ A)⇒ (A ∧ B)

y : B x : A∧I〈y x〉 : B ∧ A⇒ E

(λz .〈(snd z)(fst z)〉)〈y x〉 : A ∧ B

I redessi corrispondono ai tagli!

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

[z : B ∧ A]∧E2

snd z : A

[z : B ∧ A]∧E1

fst z : B ∧I〈(snd z)(fst z)〉 : A ∧ B⇒ I

λz .〈(snd z)(fst z)〉 : (B ∧ A)⇒ (A ∧ B)

y : B x : A∧I〈y x〉 : B ∧ A⇒ E

(λz .〈(snd z)(fst z)〉)〈y x〉 : A ∧ B

I redessi corrispondono ai tagli!

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

y : B x : A∧I〈y x〉 : B ∧ A∧E2

snd 〈y x〉 : A

y : B x : A∧I〈y x〉 : B ∧ A∧E1

fst 〈y x〉 : B∧I〈(snd 〈y x〉)(fst 〈y x〉)〉 : A ∧ B

Un passo di β-riduzione corrisponde ad un passo di eliminazionedel taglio !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

y : B x : A∧I〈y x〉 : B ∧ A∧E2

snd 〈y x〉 : A

y : B x : A∧I〈y x〉 : B ∧ A∧E1

fst 〈y x〉 : B∧I〈(snd 〈y x〉)(fst 〈y x〉)〉 : A ∧ B

Un passo di β-riduzione corrisponde ad un passo di eliminazionedel taglio !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

y : B x : A∧I〈y x〉 : B ∧ A∧E2

snd 〈y x〉 : A

y : B x : A∧I〈y x〉 : B ∧ A∧E1

fst 〈y x〉 : B∧I〈(snd 〈y x〉)(fst 〈y x〉)〉 : A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

x : A

y : B x : A∧I〈y x〉 : B ∧ A∧E1

fst 〈y x〉 : B∧I〈(x)(fst 〈y x〉)〉 : A ∧ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

x : A y : B∧I〈x y〉 : A ∧ B

Un λ-termine in forma normale corrisponde ad una dimostrazionesenza tagli !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

x : A y : B∧I〈x y〉 : A ∧ B

Un λ-termine in forma normale corrisponde ad una dimostrazionesenza tagli !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Un λ-termine corrisponde ad una prova in deduzionenaturale!

M −−−−→ M ′y yπ −−−−→ π′

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Deduzione Naturale λ-calcoloFormule Tipi

Prove λ-termini

Eliminazione del Taglio β-riduzione

Prove senza tagli λ-termini in forma normale

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Deduzione Naturale λ-calcoloFormule Tipi

Prove λ-termini

Eliminazione del Taglio β-riduzione

Prove senza tagli λ-termini in forma normale

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Deduzione Naturale λ-calcoloFormule Tipi

Prove λ-termini

Eliminazione del Taglio β-riduzione

Prove senza tagli λ-termini in forma normale

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Deduzione Naturale λ-calcoloFormule Tipi

Prove λ-termini

Eliminazione del Taglio β-riduzione

Prove senza tagli λ-termini in forma normale

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 λ calcolosemplicemente tipato e prove della deduzione naturale intuizionista.

Deduzione Naturale λ-calcoloFormule Tipi

Prove λ-termini

Eliminazione del Taglio β-riduzione

Prove senza tagli λ-termini in forma normale

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fsugli interi, definita mediante un sistema di equazioni Eq;

Costruiamo una prova π in deduzione naturale dellaproposizione “ Se x e un intero, allora f (x) e un intero” (cioedimostriamo che la funzione f e totale);

Utilizzando la corrispondenza prove/programmi, associamoalla dimostrazione π il λ termine Mf : in questo modootteniamo un programma capace di calcolare la funzione f !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fsugli interi, definita mediante un sistema di equazioni Eq;

Costruiamo una prova π in deduzione naturale dellaproposizione “ Se x e un intero, allora f (x) e un intero” (cioedimostriamo che la funzione f e totale);

Utilizzando la corrispondenza prove/programmi, associamoalla dimostrazione π il λ termine Mf : in questo modootteniamo un programma capace di calcolare la funzione f !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fsugli interi, definita mediante un sistema di equazioni Eq;

Costruiamo una prova π in deduzione naturale dellaproposizione “ Se x e un intero, allora f (x) e un intero” (cioedimostriamo che la funzione f e totale);

Utilizzando la corrispondenza prove/programmi, associamoalla dimostrazione π il λ termine Mf : in questo modootteniamo un programma capace di calcolare la funzione f !

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unprogramma associato ad una prova l’esecuzione termina(teorema di normalizzazione forte).

Due strategie diverse di esecuzione di un programma associatoad una prova conducono allo stesso risultato (teorema diconfluenza).

Un programma associato ad una prova e sempre corretto, nelsenso che il programma Mf estratto dalla prova π calcolaeffettivamente i valori della funzione definita da Eq (teoremadi correttezza).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unprogramma associato ad una prova l’esecuzione termina(teorema di normalizzazione forte).

Due strategie diverse di esecuzione di un programma associatoad una prova conducono allo stesso risultato (teorema diconfluenza).

Un programma associato ad una prova e sempre corretto, nelsenso che il programma Mf estratto dalla prova π calcolaeffettivamente i valori della funzione definita da Eq (teoremadi correttezza).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 unprogramma associato ad una prova l’esecuzione termina(teorema di normalizzazione forte).

Due strategie diverse di esecuzione di un programma associatoad una prova conducono allo stesso risultato (teorema diconfluenza).

Un programma associato ad una prova e sempre corretto, nelsenso che il programma Mf estratto dalla prova π calcolaeffettivamente i valori della funzione definita da Eq (teoremadi correttezza).

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Oltre i tipi semplici

Il λ-calcolo semplicemente tipato ha un espressivita limitata...

Estensione dei tipi: il λ-calcolo con tipi polimorfi corrispondealla logica intuizionista del secondo ordine.

Estensione del linguaggio : il λ-calcolo con operatori dicontrollo corrisponde alla logica classica.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Oltre i tipi semplici

Il λ-calcolo semplicemente tipato ha un espressivita limitata...

Estensione dei tipi: il λ-calcolo con tipi polimorfi corrispondealla logica intuizionista del secondo ordine.

Estensione del linguaggio : il λ-calcolo con operatori dicontrollo corrisponde alla logica classica.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Oltre i tipi semplici

Il λ-calcolo semplicemente tipato ha un espressivita limitata...

Estensione dei tipi: il λ-calcolo con tipi polimorfi corrispondealla logica intuizionista del secondo ordine.

Estensione del linguaggio : il λ-calcolo con operatori dicontrollo corrisponde alla logica classica.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Oltre i tipi semplici

Il λ-calcolo semplicemente tipato ha un espressivita limitata...

Estensione dei tipi: il λ-calcolo con tipi polimorfi corrispondealla logica intuizionista del secondo ordine.

Estensione del linguaggio : il λ-calcolo con operatori dicontrollo corrisponde alla logica classica.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 tipisemplici:

Non e possibile fare astrazione sui tipi (es. ogni tipo A ha la”sua” funzione identita λx .x : A⇒ A);

non e possibile applicare un termine a se stesso ( x x non etipabile, perche x non puo avere al tempo stesso il tipoA⇒ B e il tipo A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 tipisemplici:

Non e possibile fare astrazione sui tipi (es. ogni tipo A ha la”sua” funzione identita λx .x : A⇒ A);

non e possibile applicare un termine a se stesso ( x x non etipabile, perche x non puo avere al tempo stesso il tipoA⇒ B e il tipo A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 tipisemplici:

Non e possibile fare astrazione sui tipi (es. ogni tipo A ha la”sua” funzione identita λx .x : A⇒ A);

non e possibile applicare un termine a se stesso ( x x non etipabile, perche x non puo avere al tempo stesso il tipoA⇒ B e il tipo A)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 proprieta nella logica?

Sia data un’infinita numerabile di variabili proposizionaliX ,Y ,Z , . . .;

per ogni X , X ⇒ X ;

∀X X ⇒ X ;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 proprieta nella logica?

Sia data un’infinita numerabile di variabili proposizionaliX ,Y ,Z , . . .;

per ogni X , X ⇒ X ;

∀X X ⇒ X ;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 proprieta nella logica?

Sia data un’infinita numerabile di variabili proposizionaliX ,Y ,Z , . . .;

per ogni X , X ⇒ X ;

∀X X ⇒ X ;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 proprieta nella logica?

Sia data un’infinita numerabile di variabili proposizionaliX ,Y ,Z , . . .;

per ogni X , X ⇒ X ;

∀X X ⇒ X ;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Deduzione naturale: la regola di ∀2I

...A ∀2I∀X A

Supponiamo di avere una dimostrazione della formula A, dovela variabile proposizionale X non occora libera nelle ipotesi(cioe sto usando la variabile X in modo generico);

allora posso ”astrarre” rispetto ad X e concludere ∀X A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Deduzione naturale: la regola di ∀2I

...A ∀2I∀X A

Supponiamo di avere una dimostrazione della formula A, dovela variabile proposizionale X non occora libera nelle ipotesi(cioe sto usando la variabile X in modo generico);

allora posso ”astrarre” rispetto ad X e concludere ∀X A.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Deduzione naturale: la regola di ∀2E

...∀X A ∀2E

A[B/X ]

Supponiamo di avere una dimostrazione della formula ∀X A;

allora posso ”usare” questa dimostrazione sostituendo in Aogni occorrenza di X con una qualsiasi formula B, poiche Xviene usata in A in modo generico.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Deduzione naturale: la regola di ∀2E

...∀X A ∀2E

A[B/X ]

Supponiamo di avere una dimostrazione della formula ∀X A;

allora posso ”usare” questa dimostrazione sostituendo in Aogni occorrenza di X con una qualsiasi formula B, poiche Xviene usata in A in modo generico.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Eliminazione del taglio: il caso ∀2

π1

...A ∀2I∀X A ∀2E

A[B/X ]

π1

...A[B/X ]

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[X ]⇒ I

X ⇒ X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[X ]⇒ I

X ⇒ X ∀2I∀X X ⇒ X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Esempio

[X ]⇒ I

X ⇒ X ∀2I∀X X ⇒ X ∀2EB ⇒ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il Sistema F: tipi

Sia data una infinita numerabile di variabili X ,Y ,Z . . . dettevariabili di tipo:

1 Una variabile di tipo X e un tipo;2 Se A e un tipo e B e un tipo, allora A⇒ B e un tipo;3 Se A e un tipo e X e una variabile di tipo, allora ∀X A e un

tipo.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il Sistema F: tipi

Sia data una infinita numerabile di variabili X ,Y ,Z . . . dettevariabili di tipo:

1 Una variabile di tipo X e un tipo;

2 Se A e un tipo e B e un tipo, allora A⇒ B e un tipo;3 Se A e un tipo e X e una variabile di tipo, allora ∀X A e un

tipo.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il Sistema F: tipi

Sia data una infinita numerabile di variabili X ,Y ,Z . . . dettevariabili di tipo:

1 Una variabile di tipo X e un tipo;2 Se A e un tipo e B e un tipo, allora A⇒ B e un tipo;

3 Se A e un tipo e X e una variabile di tipo, allora ∀X A e untipo.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Il Sistema F: tipi

Sia data una infinita numerabile di variabili X ,Y ,Z . . . dettevariabili di tipo:

1 Una variabile di tipo X e un tipo;2 Se A e un tipo e B e un tipo, allora A⇒ B e un tipo;3 Se A e un tipo e X e una variabile di tipo, allora ∀X A e un

tipo.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Ballora λ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 Aallora M N e un termine di tipo B.

Se M e un termine di tipo A, e se la variabile di tipo X nonoccorre 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 eun termine di tipo A[B/X ].

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Ballora λ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 Aallora M N e un termine di tipo B.

Se M e un termine di tipo A, e se la variabile di tipo X nonoccorre 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 eun termine di tipo A[B/X ].

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Ballora λ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 Aallora M N e un termine di tipo B.

Se M e un termine di tipo A, e se la variabile di tipo X nonoccorre 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 eun termine di tipo A[B/X ].

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Ballora λ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 Aallora M N e un termine di tipo B.

Se M e un termine di tipo A, e se la variabile di tipo X nonoccorre 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 eun termine di tipo A[B/X ].

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 Ballora λ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 Aallora M N e un termine di tipo B.

Se M e un termine di tipo A, e se la variabile di tipo X nonoccorre 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 eun termine di tipo A[B/X ].

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Le regole di riduzione nel Sistema F

((λxA.MB)A⇒BNA)B →β MB [NA/xA]

((ΛX .MA)∀XAB)A[B/X ] →β MA[B/X ]

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Le regole di riduzione nel Sistema F

((λxA.MB)A⇒BNA)B →β MB [NA/xA]

((ΛX .MA)∀XAB)A[B/X ] →β MA[B/X ]

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Isomorfismo di Curry-Howard: la regola di ∀2I

...M : A

Supponiamo di avere un λ-termine M di tipo A, e che nel tipodelle variabili libere di M (i.e. le ipotesi) non occorra lavariabile di tipo X ;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Isomorfismo di Curry-Howard: la regola di ∀2I

...M : A ∧I

ΛX .M : ∀XA

Supponiamo di avere un λ-termine M di tipo A, e che nel tipodelle variabili libere di M (i.e. le ipotesi) non occorra lavariabile di tipo X ;

allora possiamo astrarre rispetto alla variabile di tipo X edottenere un termine ΛX .M di tipo ∀XA.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Isomorfismo di Curry-Howard: la regola di ∀2E

...M : ∀XA

Supponiamo di avere un λ-termine M di tipo ∀XA;

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Isomorfismo di Curry-Howard: la regola di ∀2E

...M : ∀XA ∀2E

M B : A[B/X ]

Supponiamo di avere un λ-termine M di tipo ∀XA;

allora possiamo instanziare le occorrenze della variabile di tipoX con un tipo B a nostra scelta.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Eliminazione del taglio e riduzione

π1

...M : A ∀2IΛX .M : ∀X A ∀2E

ΛX .M B : A[B/X ]

π1

...M : A[B/X ]

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Polimorfismo

x : X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Polimorfismo

[x : X ]⇒ I

λx .x : X ⇒ X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Polimorfismo

[x : X ]⇒ I

λx .x : X ⇒ X ∀2IΛX .λx .x : ∀X X ⇒ X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Polimorfismo

[x : X ]⇒ I

λx .x : X ⇒ X ∀2IΛX .λx .x : ∀X X ⇒ X ∀2EΛX .λx .x B : B ⇒ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Polimorfismo

[x : B]⇒ I

λx .x : B ⇒ B

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Auto applicazione

[x : ∀X (X ⇒ X )]∀2E

x ∀X (X ⇒ X ) : (∀X (X ⇒ X ))⇒ (∀X (X ⇒ X )) [x : ∀X (X ⇒ X )]⇒ E

(x ∀X (X ⇒ X )) x : ∀X (X ⇒ X )⇒ I

λx .((x ∀X (X ⇒ X )) x) : (∀X (X ⇒ X ))⇒ (∀X (X ⇒ X ))

...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 ))

[y : X ]⇒ I

λy .y : X ⇒ X∀2I

ΛX .λy .y : ∀X X ⇒ X⇒ E

(λx .((x ∀X (X ⇒ X )) x)) ΛX .λy .y : ∀X X ⇒ X

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .yy y(λx .((x) x)) λy .y −−−−→ λy .y

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λxX .λyX .x : Bool

False = ΛX .λxX .λyX .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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λxX .λyX .x : Bool

False = ΛX .λxX .λyX .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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λxX .λyX .x : Bool

False = ΛX .λxX .λyX .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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If True then M else N = (ΛX .λxX .λyX .x) U M N

→β (λxU .λyU .x) M N→β (λyU .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If True then M else N = (ΛX .λxX .λyX .x) U M N→β (λxU .λyU .x) M N

→β (λyU .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If True then M else N = (ΛX .λxX .λyX .x) U M N→β (λxU .λyU .x) M N→β (λyU .M) N

→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If True then M else N = (ΛX .λxX .λyX .x) U M N→β (λxU .λyU .x) M N→β (λyU .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If False then M else N = (ΛX .λxX .λyX .y) U M N

→β (λxU .λyU .y) M N→β (λyU .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If False then M else N = (ΛX .λxX .λyX .y) U M N→β (λxU .λyU .y) M N

→β (λyU .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If False then M else N = (ΛX .λxX .λyX .y) U M N→β (λxU .λyU .y) M N→β (λyU .y) N

→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Bool

If False then M else N = (ΛX .λxX .λyX .y) U M N→β (λxU .λyU .y) M N→β (λyU .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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:

〈M N〉 = ΛX .λxU⇒V⇒X .x M N : U × V

Distruttori :Sia P di tipo U × V :

π1P = P U(λxU .λyV .x) : U

π2P = P V (λxU .λyV .y) : V

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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:

〈M N〉 = ΛX .λxU⇒V⇒X .x M N : U × V

Distruttori :Sia P di tipo U × V :

π1P = P U(λxU .λyV .x) : U

π2P = P V (λxU .λyV .y) : V

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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:

〈M N〉 = ΛX .λxU⇒V⇒X .x M N : U × V

Distruttori :Sia P di tipo U × V :

π1P = P U(λxU .λyV .x) : U

π2P = P V (λxU .λyV .y) : V

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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:

〈M N〉 = ΛX .λxU⇒V⇒X .x M N : U × V

Distruttori :Sia P di tipo U × V :

π1P = P U(λxU .λyV .x) : U

π2P = P V (λxU .λyV .y) : V

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π1〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .x)

→β (λxU⇒V⇒U .x M N)(λxU .λyV .x)→β (λxU .λyV .x) M N→β (λyV .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π1〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .x)→β (λxU⇒V⇒U .x M N)(λxU .λyV .x)

→β (λxU .λyV .x) M N→β (λyV .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π1〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .x)→β (λxU⇒V⇒U .x M N)(λxU .λyV .x)→β (λxU .λyV .x) M N

→β (λyV .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π1〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .x)→β (λxU⇒V⇒U .x M N)(λxU .λyV .x)→β (λxU .λyV .x) M N→β (λyV .M) N

→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π1〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .x)→β (λxU⇒V⇒U .x M N)(λxU .λyV .x)→β (λxU .λyV .x) M N→β (λyV .M) N→β M

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π2〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .y)

→β (λxU⇒V⇒U .x M N)(λxU .λyV .y)→β (λxU .λyV .y) M N→β (λyV .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π2〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .y)→β (λxU⇒V⇒U .x M N)(λxU .λyV .y)

→β (λxU .λyV .y) M N→β (λyV .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π2〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .y)→β (λxU⇒V⇒U .x M N)(λxU .λyV .y)→β (λxU .λyV .y) M N

→β (λyV .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π2〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .y)→β (λxU⇒V⇒U .x M N)(λxU .λyV .y)→β (λxU .λyV .y) M N→β (λyV .y) N

→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo coppia

π2〈M N〉 = (ΛX .λxU⇒V⇒X .x M N) U(λxU .λyV .y)→β (λxU⇒V⇒U .x M N)(λxU .λyV .y)→β (λxU .λyV .y) M N→β (λyV .y) N→β N

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λxX .λyX⇒X .x : Nat

Dato N di tipo Nat allora

Succ N = ΛX .λx .X .λyX⇒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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λxX .λyX⇒X .x : Nat

Dato N di tipo Nat allora

Succ N = ΛX .λx .X .λyX⇒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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λxX .λyX⇒X .x : Nat

Dato N di tipo Nat allora

Succ N = ΛX .λx .X .λyX⇒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

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo Nat

n := ΛX .λxXλyX⇒X .

n volte︷ ︸︸ ︷y(y · · · (y x) · · · )

0 := 0

n + 1 := Succ n

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo Nat

n := ΛX .λxXλyX⇒X .

n volte︷ ︸︸ ︷y(y · · · (y x) · · · )

0 := 0

n + 1 := Succ n

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo Nat

It P Q 0 = = (ΛX .λxX .λyX⇒X .x) U P Q

→β (λxU .λyU⇒U .x) P Q→β (λyU⇒U .P) Q→β P

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo Nat

It P Q 0 = = (ΛX .λxX .λyX⇒X .x) U P Q→β (λxU .λyU⇒U .x) P Q

→β (λyU⇒U .P) Q→β P

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo Nat

It P Q 0 = = (ΛX .λxX .λyX⇒X .x) U P Q→β (λxU .λyU⇒U .x) P Q→β (λyU⇒U .P) Q

→β P

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: il tipo Nat

It P Q 0 = = (ΛX .λxX .λyX⇒X .x) U P Q→β (λxU .λyU⇒U .x) P Q→β (λyU⇒U .P) Q→β P

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyX⇒X .y(N X x y)) U P Q

→β (λx .U .λyU⇒U .y(N U x y)) P Q→β (λyU⇒U .y(N U P y)) Q→β Q(N U P Q)= Q(It P Q N)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyX⇒X .y(N X x y)) U P Q→β (λx .U .λyU⇒U .y(N U x y)) P Q

→β (λyU⇒U .y(N U P y)) Q→β Q(N U P Q)= Q(It P Q N)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyX⇒X .y(N X x y)) U P Q→β (λx .U .λyU⇒U .y(N U x y)) P Q→β (λyU⇒U .y(N U P y)) Q

→β Q(N U P Q)= Q(It P Q N)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyX⇒X .y(N X x y)) U P Q→β (λx .U .λyU⇒U .y(N U x y)) P Q→β (λyU⇒U .y(N U P y)) Q→β Q(N U P Q)

= Q(It P Q N)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyX⇒X .y(N X x y)) U P Q→β (λx .U .λyU⇒U .y(N U x y)) P Q→β (λyU⇒U .y(N U P y)) Q→β Q(N U P Q)= Q(It P Q N)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyU⇒X⇒X .x : List U

Sia M di tipo U e N di tipo List U. Allora

cons M N = ΛX .λxX .λyU⇒X⇒X .y M (N X x y) : List U

Distruttori:Sia W un tipo, P un termine di tipo W , F di tipoU ⇒W ⇒W , ed N di tipo List U:

It P F N = N W P F : W

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyU⇒X⇒X .x : List U

Sia M di tipo U e N di tipo List U. Allora

cons M N = ΛX .λxX .λyU⇒X⇒X .y M (N X x y) : List U

Distruttori:Sia W un tipo, P un termine di tipo W , F di tipoU ⇒W ⇒W , ed N di tipo List U:

It P F N = N W P F : W

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyU⇒X⇒X .x : List U

Sia M di tipo U e N di tipo List U. Allora

cons M N = ΛX .λxX .λyU⇒X⇒X .y M (N X x y) : List U

Distruttori:Sia W un tipo, P un termine di tipo W , F di tipoU ⇒W ⇒W , ed N di tipo List U:

It P F N = N W P F : W

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 .λyU⇒X⇒X .x : List U

Sia M di tipo U e N di tipo List U. Allora

cons M N = ΛX .λxX .λyU⇒X⇒X .y M (N X x y) : List U

Distruttori:Sia W un tipo, P un termine di tipo W , F di tipoU ⇒W ⇒W , ed N di tipo List U:

It P F N = N W P F : W

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Liste

[u1, . . . un]

ΛX .λyU⇒X⇒X .y u1(y u2 . . . (y un x) . . .)

cons u1(cons u2 . . . (cons un nil) . . .)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Liste

[u1, . . . un]

ΛX .λyU⇒X⇒X .y u1(y u2 . . . (y un x) . . .)

cons u1(cons u2 . . . (cons un nil) . . .)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Tipi di dati: Liste

[u1, . . . un]

ΛX .λyU⇒X⇒X .y u1(y u2 . . . (y un x) . . .)

cons u1(cons u2 . . . (cons un nil) . . .)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 normalizzazioneforte di F implica la proprieta di eliminazione del taglio per lalogica intuzionista del secondo ordine;

L’eliminazione del taglio della logica intuizionista del secondoordine implica la coerenza della logica intuizionista delsecondo ordine;

Il sistema F (i.e. la logica intuizionista del secondo ordine) eun sistema formale sufficientemente espressivo da poterrappresentare l’aritmetica di Peano;

per il secondo teorema di Godel, il Sistema F non puodimostrare la sua propria coerenza con metodi finiti.

Dimostrare la forte normalizzazione del Sistema F non puo esserebanale...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 normalizzazioneforte di F implica la proprieta di eliminazione del taglio per lalogica intuzionista del secondo ordine;

L’eliminazione del taglio della logica intuizionista del secondoordine implica la coerenza della logica intuizionista delsecondo ordine;

Il sistema F (i.e. la logica intuizionista del secondo ordine) eun sistema formale sufficientemente espressivo da poterrappresentare l’aritmetica di Peano;

per il secondo teorema di Godel, il Sistema F non puodimostrare la sua propria coerenza con metodi finiti.

Dimostrare la forte normalizzazione del Sistema F non puo esserebanale...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 normalizzazioneforte di F implica la proprieta di eliminazione del taglio per lalogica intuzionista del secondo ordine;

L’eliminazione del taglio della logica intuizionista del secondoordine implica la coerenza della logica intuizionista delsecondo ordine;

Il sistema F (i.e. la logica intuizionista del secondo ordine) eun sistema formale sufficientemente espressivo da poterrappresentare l’aritmetica di Peano;

per il secondo teorema di Godel, il Sistema F non puodimostrare la sua propria coerenza con metodi finiti.

Dimostrare la forte normalizzazione del Sistema F non puo esserebanale...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 normalizzazioneforte di F implica la proprieta di eliminazione del taglio per lalogica intuzionista del secondo ordine;

L’eliminazione del taglio della logica intuizionista del secondoordine implica la coerenza della logica intuizionista delsecondo ordine;

Il sistema F (i.e. la logica intuizionista del secondo ordine) eun sistema formale sufficientemente espressivo da poterrappresentare l’aritmetica di Peano;

per il secondo teorema di Godel, il Sistema F non puodimostrare la sua propria coerenza con metodi finiti.

Dimostrare la forte normalizzazione del Sistema F non puo esserebanale...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 normalizzazioneforte di F implica la proprieta di eliminazione del taglio per lalogica intuzionista del secondo ordine;

L’eliminazione del taglio della logica intuizionista del secondoordine implica la coerenza della logica intuizionista delsecondo ordine;

Il sistema F (i.e. la logica intuizionista del secondo ordine) eun sistema formale sufficientemente espressivo da poterrappresentare l’aritmetica di Peano;

per il secondo teorema di Godel, il Sistema F non puodimostrare la sua propria coerenza con metodi finiti.

Dimostrare la forte normalizzazione del Sistema F non puo esserebanale...

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sset e fortemente normalizzante;

Un termine t di tipo A⇒ B e riducibile sse per tutti i terminireducibili u di tipo A, t u e riducibile di tipo B.

Un termine e semplice quando non comincia per λ.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sset e fortemente normalizzante;

Un termine t di tipo A⇒ B e riducibile sse per tutti i terminireducibili u di tipo A, t u e riducibile di tipo B.

Un termine e semplice quando non comincia per λ.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sset e fortemente normalizzante;

Un termine t di tipo A⇒ B e riducibile sse per tutti i terminireducibili u di tipo A, t u e riducibile di tipo B.

Un termine e semplice quando non comincia per λ.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 sset e fortemente normalizzante;

Un termine t di tipo A⇒ B e riducibile sse per tutti i terminireducibili u di tipo A, t u e riducibile di tipo B.

Un termine e semplice quando non comincia per λ.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione forte per i tipi semplici

Proprieta della riducibilita

R1 Ogni termine riducibile e fortemente normalizzante;

R2 Se t e riducibile e t si riduce a t ′ allora t ′ e riducibile,

R3 Se t e semplice e tutti i ridotti immediati di t sonoriducibili allora t e riducibile.

Proposizione 1

Se t e un termine di tipo B e se per tutti i termine riducibili u ditipo A, t[u/xA] e riducibile, allora λxA.t e riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione forte per i tipi semplici

Proprieta della riducibilita

R1 Ogni termine riducibile e fortemente normalizzante;

R2 Se t e riducibile e t si riduce a t ′ allora t ′ e riducibile,

R3 Se t e semplice e tutti i ridotti immediati di t sonoriducibili allora t e riducibile.

Proposizione 1

Se t e un termine di tipo B e se per tutti i termine riducibili u ditipo A, t[u/xA] e riducibile, allora λxA.t e riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione forte per i tipi semplici

Proprieta della riducibilita

R1 Ogni termine riducibile e fortemente normalizzante;

R2 Se t e riducibile e t si riduce a t ′ allora t ′ e riducibile,

R3 Se t e semplice e tutti i ridotti immediati di t sonoriducibili allora t e riducibile.

Proposizione 1

Se t e un termine di tipo B e se per tutti i termine riducibili u ditipo A, t[u/xA] e riducibile, allora λxA.t e riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Normalizzazione forte per i tipi semplici

Proprieta della riducibilita

R1 Ogni termine riducibile e fortemente normalizzante;

R2 Se t e riducibile e t si riduce a t ′ allora t ′ e riducibile,

R3 Se t e semplice e tutti i ridotti immediati di t sonoriducibili allora t e riducibile.

Proposizione 1

Se t e un termine di tipo B e se per tutti i termine riducibili u ditipo A, t[u/xA] e riducibile, allora λxA.t e riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 levariabili libere di t con termini riducibili di tipo opportuno, siottiene un termine riducibile. Nel caso t sia una variabile eimmediato; se t e una λ-astrazione, la proprieta vale per laProposizione 1, mentre nel caso t sia un’applicazione, perdefinizione di reducibilita.Dato che le variabili sono riducibili per R3, per sostituzioneidentica il teorema segue.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 levariabili libere di t con termini riducibili di tipo opportuno, siottiene un termine riducibile. Nel caso t sia una variabile eimmediato; se t e una λ-astrazione, la proprieta vale per laProposizione 1, mentre nel caso t sia un’applicazione, perdefinizione di reducibilita.Dato che le variabili sono riducibili per R3, per sostituzioneidentica il teorema segue.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fortementenormalizzabili.

Per il Teorema 1 e per R1.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 fortementenormalizzabili.

Per il Teorema 1 e per R1.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una generalizzazione sbagliata

Proviamo ad estendere la nozione di riducibilita 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 ditipo B, (t B) u di tipo B e riducibile.

Definizione circolare: la riducibilita del singolo universalepresuppone la riducibilita di tutti i tipi (dunque anchedell’universale stesso!)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una generalizzazione sbagliata

Proviamo ad estendere la nozione di riducibilita 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 ditipo B, (t B) u di tipo B e riducibile.

Definizione circolare: la riducibilita del singolo universalepresuppone la riducibilita di tutti i tipi (dunque anchedell’universale stesso!)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una generalizzazione sbagliata

Proviamo ad estendere la nozione di riducibilita 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 ditipo B, (t B) u di tipo B e riducibile.

Definizione circolare: la riducibilita del singolo universalepresuppone la riducibilita di tutti i tipi (dunque anchedell’universale stesso!)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

Una generalizzazione sbagliata

Proviamo ad estendere la nozione di riducibilita 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 ditipo B, (t B) u di tipo B e riducibile.

Definizione circolare: la riducibilita del singolo universalepresuppone la riducibilita di tutti i tipi (dunque anchedell’universale stesso!)

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I candidati di riducibilita

Candidati di riducibilita (J.Y. Girard)

Sia A un tipo: un candidato di riducibilita di tipo A e un insieme Cdi termini di A, che gode delle seguenti proprie ta:

CR1 se t appartiene a C e fortemente normalizzante;

CR2 Se t appartiene a C e t si riduce a t ′ allora t ′

appartiene a C,

CR3 Se t e semplice e tutti i ridotti immediati di tappartengono a C allora t appartiene a C.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I candidati di riducibilita

Candidati di riducibilita (J.Y. Girard)

Sia A un tipo: un candidato di riducibilita di tipo A e un insieme Cdi termini di A, che gode delle seguenti proprie ta:

CR1 se t appartiene a C e fortemente normalizzante;

CR2 Se t appartiene a C e t si riduce a t ′ allora t ′

appartiene a C,

CR3 Se t e semplice e tutti i ridotti immediati di tappartengono a C allora t appartiene a C.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I candidati di riducibilita

Candidati di riducibilita (J.Y. Girard)

Sia A un tipo: un candidato di riducibilita di tipo A e un insieme Cdi termini di A, che gode delle seguenti proprie ta:

CR1 se t appartiene a C e fortemente normalizzante;

CR2 Se t appartiene a C e t si riduce a t ′ allora t ′

appartiene a C,

CR3 Se t e semplice e tutti i ridotti immediati di tappartengono a C allora t appartiene a C.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I candidati di riducibilita

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 reducibilitaB di tipo B, se u appartiene a B, allora (t B) u appartiene a B.

Definizione non circolare: appartenere ad un candidato direducibilita non coincide a priori con l’essere riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I candidati di riducibilita

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 reducibilitaB di tipo B, se u appartiene a B, allora (t B) u appartiene a B.

Definizione non circolare: appartenere ad un candidato direducibilita non coincide a priori con l’essere riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa deduzione naturale e la corrispondenza prove-programmi

Potere espressivo: Sistema F e polimorfismo

I candidati di riducibilita

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 reducibilitaB di tipo B, se u appartiene a B, allora (t B) u appartiene a B.

Definizione non circolare: appartenere ad un candidato direducibilita non coincide a priori con l’essere riducibile.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 reducibilita usando i candidati diriducibilita, la prova segue (a meno di dettagli tecnici) lo stessopattern 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 reducibilita usando i candidati diriducibilita, la prova segue (a meno di dettagli tecnici) lo stessopattern 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.

IndiceIntroduzione: logica e informatica

Il λ-calcolo e la programmazione funzionaleLa 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 reducibilita usando i candidati diriducibilita, la prova segue (a meno di dettagli tecnici) lo stessopattern 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.