Práctica 1 Lambda Cálculo Tipado Eduardo Bonelli TP para LP 2012C1 Ejercicio 1 Probar que el conjunto de las β-formas normales se pueden describir como sigue N ::= λx 1... λx n.y N 1... N m. Ejercicio 2 Dada la caracterización de β-formas normales del ejercicio anterior responder a las siguientes preguntas: 1. Probar (por inducción en el tamaño de la forma normal) que no existe N P tal que solamente puede tener ocurrencias de la variable libre x P P. 2. Probar (por inducción en el tamaño de la forma normal) que todas las N P tal que solamente puede tener ocurrencias de variables libres x P P y z P deben ser de la forma z P o bien x(... (x(xz))...). 3. Probar que todos los términos cerrados en β-forma normal de tipo (P P ) (P P ) son de la forma n P o λf P P.f P P. Ejercicio 3 1. Comprobar, utilizando ejemplos, que las siguientes operaciones se comportan como se espera: M + M M sg M sg = λx N y N f A A z A.x f (y f z) = λx N y N f A A.x (y f) = λx N f A A z A.x (λu A.f z) z = λx N f A A z A.x (λu A.z) (f z) 2. Probar que (n A f A A ) (m A f A A ) = β (n + m) A f A A y que n A m A = β nm A, donde M N = λz.m(n(z)). 3. Probar que las funciones representables son cerradas por composición (la noción general de composición de la teórica). 1
Ejercicio 4 Si permitimos numerales de Church de tipos arbitrarios (i.e. N A con A arbitrario en lugar de A variable proposicional), podemos representar más funciones. En particular, la exponenciación. Probar que n A A m A = β (m n ) A (n > 0). Ejercicio 5 Completar la prueba de confluencia de βη demostrando los siguientes resultados: 1. M βη N implica M βη N 2. M βη N implica M βη N 3. M βη N y P βη Q implica M{x := P } βη N{x := Q} 4. M βη N implica N βη M 5. DP( βη ) 6. CR( βη ) Ejercicio 6 Probar WN( β ) completando los detalles del esquema de prueba visto en clase. Nota: Puede ser de utilidad la siguiente noción de creación. Considere λ. Si M β N y R es un redex en N dos situaciones pueden producirse: el redex R proviene (es un residuo o copia) de un redex S en M, o bien el redex R es nuevo (fue creado pues no proviene de ningún redex en M). Aquí hay unos ejemplos, donde se han subrayado los redexes de N que son residuos de alguno de M. M = (λu.u(wu))(ia) β (Ia)(w Ia) = N M = (λu.iu)p β IP = N Pero en M = (λu.u) (λv.p ) Q β (λv.p )Q = N el redex subrayado en N fue creado, pues no es residuo de ningún redex en M. En su PhD tesis [Lév78], Lévy muestra que hay solamente tres formas de crear nuevos redexes: 1. (λu.u) (λv.p ) Q β (λv.p )Q 2. (λu.λv.p )QR β (λv.p {u := Q})R 3. (λu.c[uq])(λv.p ) β C [(λv.p ) Q ] donde C = C{u := λv.p } y Q = Q{u := λv.p }. Ejercicio 7 1. Probar que si M está en β-forma normal y M η N, entonces N también está en β-forma normal. 2
2. Probar WN( βη ). Ayuda: Usar inciso anterior y Ej 6. Ejercicio 8 Probar WN( λ, ). Indicar cómo se modifica el esquema de creación de redexes y cómo debe extenderse la noción de grado de un redex. Ejercicio 9 1. Probar η-postponement: Si M η N β P, entonces existe Q tal que M + β Q η P. 2. Probar que SN( βη ) a partir de SN( β ). Ejercicio 10 Completar los detalles de la prueba de SN para λ, basada en candidatos de reducibilidad. 1. Probar que RED A satisface P1-3, para todo A en λ,. 2. Si M A, N B son reducibles, entonces también lo es ( M A, N B ) A B. 3. Si para todo N A reducible, M B {x := N A } es reducible, entonces λx A.M B es reducible. 4. Γ M A implica Γ = M A. Ejercicio 11 Extender la prueba anterior a λ,,+. Para ello considerar la siguiente inición de conjuntos de reducibilidad: M RED A+B si toda vez que M inl(p A ), entonces P A RED A y, además, si toda vez que M inl(q B ), entonces Q B RED B. Los términos neutrales son aquellos que no son de la forma M, N, λx A.M, inl(m) ni inr(m). Es decir, son: x, M N, π 1 (M), π 2 (M) y δ M (x.p ) (y.q). Ayuda: probar el siguiente lema. Sean M, N, P reducibles. Si P 1.P 1 RED A implica M{u A := P 1 } RED C y P 2.P 2 RED B implica N{v B := P 2 } RED C, entonces δ P (u A.M) (v B.N) RED C. Ejercicio 12 Probar SN de lambda cálculo no tipado con β, π i aplicando el método de David (http://www.lama.univ-savoie.fr/~david/ftp/sn.ps). Ejercicio 13 Probar CR( λ, ). Ejercicio 14 Considerar el siguiente contracting map de tipos y términos de λp 1 a λ. 3
( ) (r t 1... t n ) (A B) ( a ι.a) ( a ι.a) (x) (λx A.M) (M N) (ɛ(m) A ) ((λa ι.m) aι.a ) ((M t) A{a := t} ) flat(m) ([t, M] aι.a ) (let [a, y A ] = M in N B ) = = r, variable proposicional = (A) (B) = (A) = (A) = x = λx (A). (M) = (M) (N) = ɛ( (M)) (A) = (M) = = (M) = (λy (A). (N)) (M) 1. Mostrar que conmuta con la sustitución: a) (A{a := t}) = (A) b) (M{a := t}) = (M) c) (M{u := N}) = (M){u := (N)} 2. preserva tipabilidad: λp1 Γ M A implica λ (Γ) (M) A 3. M λp1 N implica (M) λ (N). Además, si M N, entonces (M) λ (N) hace al menos un paso. 4. Concluir que SN( λp1 ). Ejercicio 15 Dar una derivación del siguiente juicio en λp : α :, P : α λx α.λp P x.p : x α.p x P x Ejercicio 16 Supongamos que Γ = {α :, f : α α, R : α α, h 1 : x α.r x (f x), h 2 : x α, y α, z α.r x y R y z R x z} Dar una derivación del juicio: Γ λx α.h 2 x (f x) (f(f x)) (h 1 x) (h 1 (f x)) : x α.r x (f(f x)) Ejercicio 17 Dar una derivación α :, R : α α ( x α y α.r x y (R y x )) ( x α.r x x ) 4
Nota: Una relación binaria antisimétrica es irreflexiva. Ejercicio 18 Supongamos que λp Γ A : y Γ contiene P : A y Q : A. Dar una derivación de: 1. Γ λx xa.p x Q x.λy xa.p x.λz A.xz(yz) : ( x A.P x Q x) ( x A.P x) x A.Q x Ejercicio 19 Probar que los siguientes esquemas de inferencia son admisibles en λp : Γ, x : A, M : B Γ N : A Γ, {x := N} M{x := N} : B{x := N} Γ, x : A, B : κ Γ N : A Γ, {x := N} B{x := N} : κ{x := N} Γ, x : A, κ : Γ N : A Γ, {x := N} κ{x := N} : Ejercicio 20 Dado Γ = {prop :, T : prop, impl : prop prop prop, impl I : x prop y prop.(t x T y) T (impl x y), impl E : x prop y prop.t (impl x y) T x T y} Construir derivaciones de los siguientes juicios en λp : 1. Γ, x : prop impl i x x (λp T x.p) : T (impl x x) 2. Γ, x, y : prop, h : T y impl I (impl (impl x y) x) x (λp T (impl (impl x y) x).impl E (impl I (λq T x.h))) : T (impl(impl (impl x y) x) x) Ejercicio 21 En la téorica se vió la codificación shallow del lambda cálculo no tipado en λp. La relación P = β Q del lambda cálculo no tipado también se puede codificar como: P = β Q = eq P Q donde eq : D D es un predicado nuevo. Este ejercicio consiste en inir constantes que permitan probar que dos términos están relacionados por el predicado eq. Dos de estos son: refl : x D.eq x x sym : x D, y D.eq x y eq y x 5
1. Dar constantes que reflejen transitividad, compatibilidad con aplicación, compatibilidad con abstracción y el axioma β. 2. Dar una prueba (representado como un término de λp bajo el contexto que contiene a las constantes declaradas arriba) de la fórmula x ((λy.y)z) = β x z. Ejercicio 22 Mirar las notas de curso de Frank Pfenning (http://www.cs. cmu.edu/~fp/courses/comp-ded/handouts/cd.pdf) donde codifica Mini-ML (sintaxis, tipado y semántica operacional) en Twelf (una implementación de LF). Referencias [Lév78] Jean-Jacques Lévy. Réductions correctes et optimales dans le lambdacalcul. PhD thesis, Paris 7, 1978. 6