La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Fundamentos de Lenguajes de Programación

Presentaciones similares


Presentación del tema: "Fundamentos de Lenguajes de Programación"— Transcripción de la presentación:

1 Fundamentos de Lenguajes de Programación
Calculo lambda Clase 2

2 Sustitución Asumiendo que M y N son términos-λ y x una variable, la expresión M[x := N] se lee: sustituir las ocurrencias libres de la variable x por N en M. En algunos libros también se representa mediante {N/x}M.

3 Sustitución Definición inductiva de M[x := N]
x[x := N] ≡ N; para cualquier variable x y[x := N] ≡ y siempre que x ≡ y; c[x := N] ≡ c para alguna constante c (PQ)[x := N] ≡ (P[x := N])(Q[x := N]); (λx.P)[x := N] ≡ (λx.P); (λy.P)[x := N] ≡ λy.(P[x := N]); siempre que y ≡ x, y VF(N); (λy.P)[x := N] ≡ λz.(P[y:=z][x := N]); siempre que y ≡ x, y ∈ VF(N), siempre que z ≡ x, z VF(P N); Ejemplos λ y.yz[z := λ x.wx] λ y.yz[z := λ x.yx]

4 Ejercicio (λy. (λf. f x ) y ) [x := f y]
= (λz. ((λf. f x ) z ) [x := f y] por g) y ∈ FV(f y) = λz. ((λf. f x ) [x := f y] z [x := f y] ) por d) = λz. ((λf. f x ) [x := f y] z ) por b) = λz. (λg. (g x ) [x := f y]) z por g) f ∈ FV(f y) = λz. (λg. g ( f y )) z por d), b) y a)

5 Ejercicio (λx. (λy. y z ) (λw.w) z x ) [z := y]
(λx. (λy. y y ) z (λw.w) x ) [z := f x]

6 Cambio de Variable Cambio de variables acotadas
M’ se genera a partir de M por un cambio de las variables acotadas si M ≡ λx.N y M’ ≡ λ y.(N[x := y]) donde y no ocurre para nada en N.

7 Axioma β (λx.M) N = M[x:=N] Para todo M, N lambda termino
Otros axiomas lógicos o reglas: Igualdad M = M M = N N=M M=N, N=L M=L Otras reglas M = M ’ MZ = M’ Z M= M’ Z M = Z M’ M =M’ λx.M = λ x.M’ axioma eta

8 Axioma α conversión (λx.M) = λy.M[x:=y]
Términos que difieren sólo en el nombre de las variables acotadas. (λx.M) = λy.M[x:=y] Ejercicio: cuales son α-conversión λx.xy = λz.zy λx.xy = λx.yy Λxyz.x(λy.yz)w) = λtuv.t (λz.zv)w

9 Regla para la sustitución
Si se desea sustituir M[x := N] no importando que términos denotan M y N, verifique que todas las variables acotadas de M sean diferentes de las variables libres de N. Si lo anterior no se cumple, aplique un cambio de variable en N o bien sustituya a M por un término α-congruente, hasta que se cumpla el criterio anterior. Posteriormente se pueden aplicar las reglas de sustitución

10 Regla para la sustitución
Ejemplos: λy.yz [z:= λx.yx] λxyz.xyz [x:= λxz.x]

11 Teoría ecuacional del cálculo-λ
Combinadores estandar I ≡λx.x; K ≡λxy.x; K* ≡ λxy.y; S ≡ λxyz.xz(yz); demostrar si las siguientes ecuaciones son válidas en el cálculo lambda: IM = M; KMN = M; K*MN = N; SMNL = ML(NL);

12 Ejercicio w≡λx.x x; 1 ≡λyz.yz; w1 ≡ (λx.x x) (λyz.yz)
= (λyz.yz)(λyz.yz) = λz. (λyz.yz) z ≡ λz. (λyz’.yz’) z = λzz’.zz’ ≡ λyz.yz ≡ 1


Descargar ppt "Fundamentos de Lenguajes de Programación"

Presentaciones similares


Anuncios Google