Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Isomorfismos de tipos
Definicin
AB
prog1 : A B
prog2 : B A
2 / 24
Isomorfismos de tipos
Definicin
AB
prog1 : A B
prog2 : B A
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
2 / 24
Isomorfismos de tipos
Isomorfismos conocidos
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
3 / 24
Isomorfismos de tipos
Isomorfismos conocidos
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
3 / 24
Isomorfismos de tipos
Isomorfismos conocidos
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
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
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
3 / 24
Isomorfismos de tipos
Isomorfismos conocidos
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
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
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
3 / 24
Isomorfismos de tipos
Isomorfismos conocidos
((A B) C ) (A (B C ))
(A B) C A B C
A (B C ) (A B) (A C )
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 )
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 )
Nuestro objetivo:
4 / 24
Contenido de la charla
5 / 24
6 / 24
6 / 24
6 / 24
::=
| x.t | t r
7 / 24
::=
| x.t | t r
7 / 24
::=
| x.t | t r
se escribe
x.x 2 + 1
7 / 24
::=
| x.t | t r
se escribe
x.x 2 + 1
t2 + 1
7 / 24
8 / 24
8 / 24
8 / 24
8 / 24
Normalizacin
t est en forma normal, si no reescribe a nada
ej.
x.x
8 / 24
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
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
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)
9 / 24
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
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
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
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
ax
9 / 24
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, x ` x : A
ax
, x A ` t : B
` x A .t : A B
9 / 24
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, x ` x : A
ax
, x A ` t : B
` x A .t : A B
`t:AB
I
`r:A
`tr:B
9 / 24
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, 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
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, 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
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, 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
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, 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
Trminos
Tipos
I
es un tipo de base
A B es el tipo funcin
, 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
10 / 24
10 / 24
[R. Milner78]
10 / 24
11 / 24
11 / 24
`AB
`B
`A
11 / 24
`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
`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
`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
Contenido de la charla
12 / 24
13 / 24
13 / 24
Proposicin
Computacin
13 / 24
Proposicin
X .Y .(X Y ) (X Y )
&
Proposicional
Computacin
(A B) (A B)
(
13 / 24
Proposicin
X .Y .(X Y ) (X Y )
&
Proposicional
Computacin
(A B) (A B)
(
La configuracin inicial
I
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)
La configuracin inicial
I
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
(i )
15 / 24
(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
(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
(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 )
15 / 24
(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 )
A hr, si r
15 / 24
(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 )
Si
A hr, si r
15 / 24
(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 )
Si
A hr, si r
(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) !!
Si
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
16 / 24
A (B C )
(A B) (A C )
induce
x A .(r + s) x A .r + x A .s
17 / 24
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
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 )
17 / 24
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
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) =
es fuertemente normalizante
20 / 24
Nat (3, 4) 3
y Nat (3, 4) 4
21 / 24
Nat (3, 4) 3
y Nat (3, 4) 4
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
con
[r]A = x A .r
{r}A = ry A
21 / 24
(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
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
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
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
24 / 24