Está en la página 1de 88

Lambda clculo

modulo isomorfismo de tipos


Alejandro Daz-Caro
Departamento de Ciencia y Tecnologa
Universidad Nacional de Quilmes

Trabajo en conjunto con Gilles Dowek


INRIA Paris-Rocquencourt
XII Jornadas de Ciencias de la Computacin
15, 16 y 17 de Octubre de 2014 - Rosario, Santa Fe

Isomorfismos de tipos
Definicin

AB

prog1 : A B
prog2 : B A

prog2 prog1 = IdA


prof 1 prog2 = IdB

2 / 24

Isomorfismos de tipos
Definicin

AB

prog1 : A B
prog2 : B A

prog2 prog1 = IdA


prof 1 prog2 = IdB

Ejemplo
(A B) (B A)
swap0 : (B A) (A B)
swap0 hy , xi = hx, y i

swap : (A B) (B A)
swap hx, y i = hy , xi
swap0 swap ha, bi = ha, bi

swap swap0 hb, ai = hb, ai

2 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

3 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

3 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

assoc : ((A B) C ) (A (B C ))
assoc hx, y i = hfst x, hsnd x, y ii

assoc0 : (A (B C )) ((A B) C )
assoc0 hx, y i = hhx, fst y i, snd y i
assoc0 assoc hha, bi, ci = hha, bi, ci
assoc assoc0 ha, hb, cii = ha, hb, cii
3 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

3 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

curry : ((A B) C ) A B C
curry f x y = f hx, y i

uncurry : (A B C ) (A B) C
uncurry g x = g (fst x) (snd x)
uncurry curry f = f

curry uncurry g = g
3 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

3 / 24

Isomorfismos de tipos
Isomorfismos conocidos

Si slo tenemos y (funciones y pares)


I (A B) (B A)
I

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

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

[Bruce, Di Cosmo, Longo


MSCS 2(2), 231247, 1992]

parf : (A (B C )) ((A B) (A C ))
parf f = let g x = fst (f x) in
let h x = snd (f x) in hg , hi

fpar : ((A B) (A C )) A (B C )
fpar f x = h(fst f ) x, (snd f ) xi
fpar parf f = f

parf fpar g = g

3 / 24

Isomorfismos de tipos
Otros isomorfismos: composicin

ABC

BAC

porque
uncurry : (A B C ) ((A B) C )
conSwap : ((A B) C ) ((B A) C )
curry : ((B A) C ) (B A C )

uncurry conSwap curry f = f

4 / 24

Isomorfismos de tipos
Otros isomorfismos: composicin

ABC

BAC

porque
uncurry : (A B C ) ((A B) C )
conSwap : ((A B) C ) ((B A) C )
curry : ((B A) C ) (B A C )

uncurry conSwap curry f = f

Nuestro objetivo:

Convertir isomorfismos en equivalencias


Queremos que, por ejemplo, f hx, y i = f x y

4 / 24

Contenido de la charla

1. Una rapidsima introduccin al del c.c


Una rapidsima introduccin a -calculo
Una rapidsima introduccin al -calculo tipado
2. Convirtiendo isomorfismos en equivalencias
-calculo modulo isomorfismos
Normalizando
Computando
3. Conclusiones

5 / 24

Una rapidsima introduccin a -calculo


Historia e intuiciones

Introducido en 1936 por Alonzo Church (director de Alan Turing)


Motivacin: Investigar los fundamentos de la matemtica
(en particular, el concepto de recursin)

6 / 24

Una rapidsima introduccin a -calculo


Historia e intuiciones

Introducido en 1936 por Alonzo Church (director de Alan Turing)


Motivacin: Investigar los fundamentos de la matemtica
(en particular, el concepto de recursin)
Porqu an lo usamos?
I Las funciones recursivas son fundamentales en computacin
I Es el modelo ms simple para estudiar propiedades del cmputo

6 / 24

Una rapidsima introduccin a -calculo


Historia e intuiciones

Introducido en 1936 por Alonzo Church (director de Alan Turing)


Motivacin: Investigar los fundamentos de la matemtica
(en particular, el concepto de recursin)
Porqu an lo usamos?
I Las funciones recursivas son fundamentales en computacin
I Es el modelo ms simple para estudiar propiedades del cmputo
Dos simplificaciones fundamentales
I Anonimidad de funciones:
Ejemplo:
sumcuad(x, y ) = x 2 + y 2
se escribe annimamente como
(x, y ) 7 x 2 + y 2
Los nombres no son necesarios

6 / 24

Una rapidsima introduccin a -calculo


Historia e intuiciones

Introducido en 1936 por Alonzo Church (director de Alan Turing)


Motivacin: Investigar los fundamentos de la matemtica
(en particular, el concepto de recursin)
Porqu an lo usamos?
I Las funciones recursivas son fundamentales en computacin
I Es el modelo ms simple para estudiar propiedades del cmputo
Dos simplificaciones fundamentales
I Anonimidad de funciones:
Ejemplo:
sumcuad(x, y ) = x 2 + y 2
se escribe annimamente como
(x, y ) 7 x 2 + y 2
Los nombres no son necesarios
I Todas las funciones son de una sola variable:
Ejemplo:
(x, y ) 7 x 2 + y 2
se escribe como
x 7 (y 7 x 2 + y 2 )
Una funcin de 2 variables es una funcin de 1 variable que
retorna una funcin de 1 variable la cual hace el clculo
6 / 24

Una rapidsima introduccin a -calculo


Formalizacin

Lenguaje de trminos (gramtica)


t, r
I
I
I

::=

| x.t | t r

Una variable x Vars es un -trmino


Si t es un trmino, y x una variable, x.t es un trmino
(x 7 t)
Si t y r son trminos, t r es un trmino
(aplicacin)

Estos son todos los trminos posibles

7 / 24

Una rapidsima introduccin a -calculo


Formalizacin

Lenguaje de trminos (gramtica)


t, r
I
I
I

::=

| x.t | t r

Una variable x Vars es un -trmino


Si t es un trmino, y x una variable, x.t es un trmino
(x 7 t)
Si t y r son trminos, t r es un trmino
(aplicacin)

Estos son todos los trminos posibles


Una regla de reescritura (-reduccin)
(x.t) r t[r/x]

7 / 24

Una rapidsima introduccin a -calculo


Formalizacin

Lenguaje de trminos (gramtica)


t, r
I
I
I

::=

| x.t | t r

Una variable x Vars es un -trmino


Si t es un trmino, y x una variable, x.t es un trmino
(x 7 t)
Si t y r son trminos, t r es un trmino
(aplicacin)

Estos son todos los trminos posibles


Una regla de reescritura (-reduccin)
(x.t) r t[r/x]
Ejemplo: Sea x 2 + 1 un -trmino (con alguna codificacin)
f (x) = x 2 + 1

se escribe

x.x 2 + 1

7 / 24

Una rapidsima introduccin a -calculo


Formalizacin

Lenguaje de trminos (gramtica)


t, r
I
I
I

::=

| x.t | t r

Una variable x Vars es un -trmino


Si t es un trmino, y x una variable, x.t es un trmino
(x 7 t)
Si t y r son trminos, t r es un trmino
(aplicacin)

Estos son todos los trminos posibles


Una regla de reescritura (-reduccin)
(x.t) r t[r/x]
Ejemplo: Sea x 2 + 1 un -trmino (con alguna codificacin)
f (x) = x 2 + 1

se escribe

x.x 2 + 1

f (t) se escribe (x.x 2 + 1) t y -reduce a


(x 2 + 1)[t/x]

t2 + 1
7 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx)

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx) xx[x.xx/x]

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx) xx[x.xx/x] = (x.xx)(x.xx) =
As que

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx) xx[x.xx/x] = (x.xx)(x.xx) =
As que

Normalizacin
t est en forma normal, si no reescribe a nada

ej.

x.x

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx) xx[x.xx/x] = (x.xx)(x.xx) =
As que

Normalizacin
t est en forma normal, si no reescribe a nada
t es normalizante si puede terminar

ej.
ej.

x.x
(x.y .y )

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx) xx[x.xx/x] = (x.xx)(x.xx) =
As que

Normalizacin
t est en forma normal, si no reescribe a nada
t es normalizante si puede terminar
t es fuertemente normalizante si siempre termina

ej.
ej.
ej.

x.x
(x.y .y )
(x.x)(x.x)

8 / 24

Una rapidsima introduccin al -calculo


Formas normales

No todo cmputo termina bien. . .


Consideremos x.xx
(la funcin que toma un argumento y lo aplica a s mismo)
= (x.xx)(x.xx) xx[x.xx/x] = (x.xx)(x.xx) =
As que

Normalizacin
t est en forma normal, si no reescribe a nada
t es normalizante si puede terminar
t es fuertemente normalizante si siempre termina

ej.
ej.
ej.

x.x
(x.y .y )
(x.x)(x.x)

Cmo saber si un trmino es (fuertemente) normalizante?


8 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


Trminos
Tipos
I

es un tipo de base

t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B
I

A B es el tipo funcin

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


Trminos
Tipos
I

es un tipo de base

t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B
I

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


Trminos
Tipos
I

es un tipo de base

t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B
I

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


Trminos
Tipos
I

es un tipo de base

t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B
I

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
, x A ` x : A

ax

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B
` x A .t : A B

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B
` x A .t : A B

`t:AB
I

`r:A

`tr:B

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B

` x A .t : A B
Ejemplo de derivacin de tipo

`t:AB
I

`r:A

`tr:B
xA ` x : A

ax

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B

` x A .t : A B
Ejemplo de derivacin de tipo

`t:AB
I

`r:A

`tr:B
xA ` x : A

ax

` x A .x : A A

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B

` x A .t : A B
Ejemplo de derivacin de tipo
ax
y AA ` y : A A
` y AA .y : (A A) (A A)

`t:AB
I

`r:A

`tr:B
xA ` x : A

ax

` x A .x : A A

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B

` x A .t : A B
Ejemplo de derivacin de tipo
ax
y AA ` y : A A
` y AA .y : (A A) (A A)

`t:AB
I

`r:A

`tr:B
xA ` x : A

ax

` x A .x : A A

` (y AA .y ) (x A .x) : A A

I
E

9 / 24

Una rapidsima introduccin al -calculo tipado


Tipos simples

Clasificacin esttica de -trminos (o sea, sin reducirlos)


t, r, s ::= x A | x A .t | t r
A, B, C ::= | A B

Trminos
Tipos
I

es un tipo de base

A B es el tipo funcin

Contexto: conjunto de variables tipadas


= x1A1 , . . . , xnAn
`t:A
t tiene tipo A en el contexto
Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B

` x A .t : A B
Ejemplo de derivacin de tipo
ax
y AA ` y : A A
` y AA .y : (A A) (A A)

`t:AB
I

`r:A

`tr:B
xA ` x : A

ax

` x A .x : A A

` (y AA .y ) (x A .x) : A A

I
E

Verificacin: (y AA .y ) (x A .x) reescribe a x A .x (de tipo A A)


9 / 24

Una rapidsima introduccin al -calculo tipado


Normalizacin

no tiene tipo en esta teora

10 / 24

Una rapidsima introduccin al -calculo tipado


Normalizacin

no tiene tipo en esta teora


Ms an. . .

Theorem (Normalizacin fuerte)


Si t tiene tipo, t es fuertemente normalizante.

10 / 24

Una rapidsima introduccin al -calculo tipado


Normalizacin

no tiene tipo en esta teora


Ms an. . .

Theorem (Normalizacin fuerte)


Si t tiene tipo, t es fuertemente normalizante.
Eslogan: Well-typed programs cannot go wrong

[R. Milner78]

10 / 24

Cmo se relaciona esto con lgica?


Una palabra sobre la correspondencia de Curry-Howard

Lgica clsica: una proposicin se asume verdadera o falsa

11 / 24

Cmo se relaciona esto con lgica?


Una palabra sobre la correspondencia de Curry-Howard

Lgica clsica: una proposicin se asume verdadera o falsa


Lgica intuicionista: una proposicin es verdadera si hay una prueba
constructiva que muestre que lo es.
La ley del tercero excluido no es un axioma!
A A
(y tampoco se puede demostrar) en lgica intuicionista

11 / 24

Cmo se relaciona esto con lgica?


Una palabra sobre la correspondencia de Curry-Howard

Lgica clsica: una proposicin se asume verdadera o falsa


Lgica intuicionista: una proposicin es verdadera si hay una prueba
constructiva que muestre que lo es.
La ley del tercero excluido no es un axioma!
A A
(y tampoco se puede demostrar) en lgica intuicionista
Lgica intuicionista mnima
, A ` B
ax
I
, A ` A
`AB

`AB
`B

`A

11 / 24

Cmo se relaciona esto con lgica?


Una palabra sobre la correspondencia de Curry-Howard

Lgica clsica: una proposicin se asume verdadera o falsa


Lgica intuicionista: una proposicin es verdadera si hay una prueba
constructiva que muestre que lo es.
La ley del tercero excluido no es un axioma!
A A
(y tampoco se puede demostrar) en lgica intuicionista
Lgica intuicionista mnima
, A ` B
ax
I
, A ` A
`AB

`AB

`A

`B

Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B
` x A .t : A B

`t:AB
I

`r:A

`tr:B

11 / 24

Cmo se relaciona esto con lgica?


Una palabra sobre la correspondencia de Curry-Howard

Lgica clsica: una proposicin se asume verdadera o falsa


Lgica intuicionista: una proposicin es verdadera si hay una prueba
constructiva que muestre que lo es.
La ley del tercero excluido no es un axioma!
A A
(y tampoco se puede demostrar) en lgica intuicionista
Lgica intuicionista mnima
, A ` B
ax
I
, A ` A
`AB

`AB

`A

`B

Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B
` x A .t : A B

`t:AB
I

`r:A

`tr:B

El -trmino es la prueba de la propocisin


Curry y William Howard
Las pruebas. . . son programas! Haskellentre
1934 y 1969

Haskell Curry y William Howard,


entre 1934 y 1969

11 / 24

Cmo se relaciona esto con lgica?


Una palabra sobre la correspondencia de Curry-Howard

Lgica clsica: una proposicin se asume verdadera o falsa


Lgica intuicionista: una proposicin es verdadera si hay una prueba
constructiva que muestre que lo es.
La ley del tercero excluido no es un axioma!
A A
(y tampoco se puede demostrar) en lgica intuicionista
Lgica intuicionista mnima
, A ` B
ax
I
, A ` A
`AB

`AB

`A

`B

Reglas de tipado
A

, x ` x : A

ax

, x A ` t : B
` x A .t : A B

`t:AB
I

`r:A

`tr:B

El -trmino es la prueba de la propocisin


Curry y William Howard
Las pruebas. . . son programas! Haskellentre
1934 y 1969

Haskell Curry y William Howard,


entre 1934 y 1969

Lgicas ms complejas se corresponden a sistemas ms complejos


11 / 24

Contenido de la charla

1. Una rapidsima introduccin al del c.c


Una rapidsima introduccin a -calculo
Una rapidsima introduccin al -calculo tipado
2. Convirtiendo isomorfismos en equivalencias
-calculo modulo isomorfismos
Normalizando
Computando
3. Conclusiones

12 / 24

Equivalencia proposicional vs definicional


x.y .(x = y ) (par(x) = par(y ))

13 / 24

Equivalencia proposicional vs definicional


x.y .(x = y ) (par(x) = par(y )) (2 + 2 = 4) (par(2 + 2) = par(4))
(2 + 2 = 5) (par(2 + 2) = par(5))

13 / 24

Equivalencia proposicional vs definicional


x.y .(x = y ) (par(x) = par(y )) (2 + 2 = 4) (par(2 + 2) = par(4))
(2 + 2 = 5) (par(2 + 2) = par(5))
&

Proposicin

Computacin

13 / 24

Equivalencia proposicional vs definicional


x.y .(x = y ) (par(x) = par(y )) (2 + 2 = 4) (par(2 + 2) = par(4))
(2 + 2 = 5) (par(2 + 2) = par(5))
&

Proposicin

X .Y .(X Y ) (X Y )
&

Proposicional

Computacin

(A B) (A B)
(

Decidible! [DiCosmo y otros]


(en algunos casos)

13 / 24

Equivalencia proposicional vs definicional


x.y .(x = y ) (par(x) = par(y )) (2 + 2 = 4) (par(2 + 2) = par(4))
(2 + 2 = 5) (par(2 + 2) = par(5))
&

Proposicin

X .Y .(X Y ) (X Y )
&

Proposicional

Computacin

(A B) (A B)
(

Decidible! [DiCosmo y otros]


(en algunos casos)

Nosotros queremos ir ms lejos:


(A B) (t : A t : B)
El objetivo es igualar tipos isomorfos
13 / 24

La configuracin inicial
I

Tipos simples, con conjuncin e implicacin


A, B, C ::= | A B | A B

Una relacin de equivalencia de tipos (basada en los isomorfismos1 )


1.
2.
3.
4.

1 Bruce,

AB B A
A (B C ) (A B) C
(A B) C A B C
A (B C ) (A B) (A C )

(conm)
(aso)
(curry)
(distrib)

Di Cosmo, Longo, MSCS 2(2), 231247, 1992


14 / 24

La configuracin inicial
I

Tipos simples, con conjuncin e implicacin


A, B, C ::= | A B | A B

Una relacin de equivalencia de tipos (basada en los isomorfismos1 )


1.
2.
3.
4.

AB B A
A (B C ) (A B) C
(A B) C A B C
A (B C ) (A B) (A C )

(conm)
(aso)
(curry)
(distrib)

Queremos
[AB]

1 Bruce,

`r:A
`r:B

Di Cosmo, Longo, MSCS 2(2), 231247, 1992


14 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

AB
A (B C )
hr, si
Entonces
hr, hs, ti i

B A
(A B) C
 hs, ri
 h hr, si , ti

15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

AB
A (B C )
hr, si
Entonces
hr, hs, ti i

B A
(A B) C
 hs, ri
 h hr, si , ti

Y la eliminacin?
` hr, si : A B
` 1 hr, si : A

(e )

15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

AB
A (B C )
hr, si
Entonces
hr, hs, ti i

B A
(A B) C
 hs, ri
 h hr, si , ti

Y la eliminacin?
` hr, si : A B
` 1 hr, si : A
Ms an

(e )

` hr, si : B A
Pero A B = B A! ` 1 hr, si : B

hr, si = hs, ri

(e )

as que 1 hr, si = 1 hs, ri !!

15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

AB
A (B C )
hr, si
Entonces
hr, hs, ti i

B A
(A B) C
 hs, ri
 h hr, si , ti

Y la eliminacin?
` hr, si : A B
` 1 hr, si : A
Ms an

(e )

` hr, si : B A
Pero A B = B A! ` 1 hr, si : B

hr, si = hs, ri

(e )

as que 1 hr, si = 1 hs, ri !!

Solucin: Church-style Proyeccin con respecto al tipo


Si r : A entonces

A hr, si r

15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

AB
A (B C )
hr, si
Entonces
hr, hs, ti i

B A
(A B) C
 hs, ri
 h hr, si , ti

Y la eliminacin?
` hr, si : A B
` 1 hr, si : A

(e )

` hr, si : B A
Pero A B = B A! ` 1 hr, si : B

hr, si = hs, ri

Ms an

(e )

as que 1 hr, si = 1 hs, ri !!

Solucin: Church-style Proyeccin con respecto al tipo


Si r : A entonces

Si

A hr, si r

Esto induce no determinismo


r:A
A hr, si r
entonces
s:A
A hr, si s

15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` hr, si : A B

(i )

AB
A (B C )
hr, si
Entonces
hr, hs, ti i

B A
(A B) C
 hs, ri
 h hr, si , ti

Y la eliminacin?
` hr, si : A B
` 1 hr, si : A

(e )

` hr, si : B A
Pero A B = B A! ` 1 hr, si : B

hr, si = hs, ri

Ms an

(e )

as que 1 hr, si = 1 hs, ri !!

Solucin: Church-style Proyeccin con respecto al tipo


Si r : A entonces

Si

A hr, si r

Esto induce no determinismo


r:A
A hr, si r
entonces
s:A
A hr, si s

Si nos interesa la teora de la demostracin


tanto r como s son pruebas vlidas de A
15 / 24

Conjuncin asociativa y conmutativa


`r:A `s:B
` r+s :AB

(i )

Entonces

AB
A (B C )
r+s
r + (s + t)




B A
(A B) C
(s + r)
(r + s) + t

Y la eliminacin?
` r+s :AB
` 1 (r + s) : A
Ms an

(e )

` r+s :B A
Pero A B = B A! ` 1 (r + s) : B

r+s = s+r

(e )

as que 1 (r + s) = 1 (s + r) !!

Solucin: Church-style Proyeccin con respecto al tipo


Si r : A entonces A (r + s) r

Si

Esto induce no determinismo


r:A
A (r + s) r
entonces
s:A
A (r + s) s

Si nos interesa la teora de la demostracin


tanto r como s son pruebas vlidas de A
15 / 24

Curryficacin
(A B) C

ABC

induce
r(s + t)

rst

16 / 24

Curryficacin
(A B) C

ABC

induce
r(s + t)

rst

(x A .r) s

r[s/x]

16 / 24

Curryficacin
(A B) C

ABC

induce

Si s : A,

r(s + t)

rst

(x A .r) s

r[s/x]

16 / 24

Curryficacin
(A B) C

ABC

induce

Si s : A,

r(s + t)

rst

(x A .r) s

r[s/x]

Otras opciones:
x AB .t

y A .z B .t[y + z/x]

x A .y B .t

z AB .t[A (z)/x, B (z)/y ]

16 / 24

Distributividad de la implicacin sobre la conjuncin

A (B C )

(A B) (A C )

induce
x A .(r + s)  x A .r + x A .s

17 / 24

Distributividad de la implicacin sobre la conjuncin

A (B C )

(A B) (A C )

induce
x A .(r + s)  x A .r + x A .s

x A .B (r)  AB (x A .r)

17 / 24

Distributividad de la implicacin sobre la conjuncin

A (B C )

(A B) (A C )

induce
x A .(r + s)  x A .r + x A .s

x A .B (r)  AB (x A .r)

Ejemplo
` x AB .x : (A B) (A B)
` x

AB

.x : ((A B) A) ((A B) B)

` (AB)A (x AB .x) : (A B) A

()
(e )

(AB)A (x AB .x)  x AB .A (x)

17 / 24

Distributividad de la implicacin sobre la conjuncin


Otras opciones

A (B C )

(A B) (A C )

x A .(r + s)  x A .r + x A .s
x A .B (r)  AB (x A .r)

i , i
i , e

 i , i
 e , i

18 / 24

Distributividad de la implicacin sobre la conjuncin


Otras opciones

A (B C )

(A B) (A C )

x A .(r + s)  x A .r + x A .s
x A .B (r)  AB (x A .r)
(r + s)t  rt + st
AB (r)s  B (rs)

i , i
i , e

 i , i
 e , i

e , i
e , e

 i , e
 e , e

si r : A (B C )

18 / 24

-equivalencia y substitucin-

Reglas
I

Si A B, r  r[A/B]

Si r = r0 , r  r0

Ejemplo
A(C1 C2 )

Sea A B

}|
{
z
x A .r + y B .s

19 / 24

-equivalencia y substitucin-

Reglas
I

Si A B, r  r[A/B]

Si r = r0 , r  r0

Ejemplo
A(C1 C2 )

Sea A B

}|
{
z
x A .r + y B .s  x A .r + x A .s[x/y ][A/B]
 x A .(r + s[x/y ][A/B])

19 / 24

Normalizacin
r est en forma normal si slo puede seguir reduciendo con 

Forma normal
Red(r) = {s | r  r0 , s0  s}
r est en forma normal si Red(r) =

20 / 24

Normalizacin
r est en forma normal si slo puede seguir reduciendo con 

Forma normal
Red(r) = {s | r  r0 , s0  s}
r est en forma normal si Red(r) =

Theorem (Normalizacin fuerte)


Si ` r : A entonces

es fuertemente normalizante

Prueba. Mtodo de reducibilidad

20 / 24

Computando con este clculo


Pares

Nat (3, 4) 3

y Nat (3, 4) 4

Pero es posible encodear pares que se comporten de manera estndar

21 / 24

Computando con este clculo


Pares

Nat (3, 4) 3

y Nat (3, 4) 4

Pero es posible encodear pares que se comporten de manera estndar

Estndar
hr, si : A A
1 hr, si

Encodeado
x 1 .r + x 2 .s : 1 A 2 A
1A (x 1 .r + x 2 .s)y 1

{1Nat ([3]1 , [4]2 )}1 3

y {2Nat ([3]1 , [4]2 )}2 4

con

[r]A = x A .r
{r}A = ry A

21 / 24

Computando con este clculo


Booleanos

(x A .y A .x)rs  (x A .y A .x)(r, s)

Entonces
true false

 (x A .y A .x)(s, r)
 (x A .y A .x)sr s

22 / 24

Computando con este clculo


Booleanos

Entonces
true false

(x A .y A .x)rs  (x A .y A .x)(r, s)
 (x A .y A .x)(s, r)
A

 (x .y .x)sr s

AAA
es un singletn!

22 / 24

Computando con este clculo


Booleanos

Entonces
true false

(x A .y A .x)rs  (x A .y A .x)(r, s)
 (x A .y A .x)(s, r)
A

 (x .y .x)sr s

AAA
es un singletn!

Pero (A B) B B no lo es
As que tambin es posible encodear los booleanos

22 / 24

Contenido de la charla

1. Una rapidsima introduccin al del c.c


Una rapidsima introduccin a -calculo
Una rapidsima introduccin al -calculo tipado
2. Convirtiendo isomorfismos en equivalencias
-calculo modulo isomorfismos
Normalizando
Computando
3. Conclusiones

23 / 24

Resumen
Qu hicimos?
Definimos un nuevo clculo donde proposiciones isomorfas
tienen las mismas pruebas

24 / 24

Resumen
Qu hicimos?
Definimos un nuevo clculo donde proposiciones isomorfas
tienen las mismas pruebas
Porqu?

24 / 24

Resumen
Qu hicimos?
Definimos un nuevo clculo donde proposiciones isomorfas
tienen las mismas pruebas
Porqu?
Si A B, una prueba de A en una biblioteca
no debera ser distinguible de una prueba de B
A B
AB

B A son lo mismo!
B A

Si A B, y una funcin est definida sobre A


debera poder usarse como B
Si f ha, bi es vlido, tambin debera serlo f a b, o incluso f a.

24 / 24

También podría gustarte