Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lambda:
Introducción
𝜆
Asignatura: Modelos Avanzados
Doctorado en Ingeniería
Énfasis: Ciencias de la Computación
Universidad Tecnológica de Pereira
Presentación elaborada por: Christian Andrés Candela Uribe y Luis Eduardo Sepúlveda Rodríguez
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 1
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 2
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 3
1. Definición
| Cálculo 𝜆 | 1. Definición |
• El cálculo λ fue introducido en la década de 1930 por Alonzo Church como una
manera de formalizar el concepto de computabilidad efectiva.
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 4
1. Definición
| Cálculo 𝜆 | 1. Definición |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 5
1. Definición
| Cálculo 𝜆 | 1. Definición | Expresión |
Expresión
• Una expresión puede ser rodeada con paréntesis para mayor claridad, es
decir, si E es una expresión, (E) es la misma expresión.
• Las únicas palabras clave utilizadas en el lenguaje son los símbolos lambda
(λ) y el punto (.).
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 6
1. Definición
| Cálculo 𝜆 | 1. Definición | Expresión |
Expresión
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 7
1. Definición
| Cálculo 𝜆 | 1. Definición | Función |
Función
λx.x
• La expresión después del punto “.” (en este caso una sola x) se llama el
"cuerpo" de la definición.
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 8
1. Definición
| Cálculo 𝜆 | 1. Definición | Aplicación |
Aplicación
(λx.x) y
(λx.x) y = [y / x] x = y
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 9
1. Definición
| Cálculo 𝜆 | 1. Definición | Aplicación |
Aplicación
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 10
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 11
1.1. Variables libres y enlazadas
| Cálculo 𝜆 | 1. Definición | 1.1 Variables libres y enlazadas |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 12
1.1. Variables libres y enlazadas
| Cálculo 𝜆 | 1. Definición | 1.1 Variables libres y enlazadas |
• Ejemplo:
◦ (λx.x) (λy.yx)
◦ La x en el cuerpo de la primera expresión desde la izquierda está
enlazada a la primera λ.
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 13
1.1. Variables libres y enlazadas
| Cálculo 𝜆 | 1. Definición | 1.1 Variables libres y enlazadas |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 14
1.1. Variables libres y enlazadas
| Cálculo 𝜆 | 1. Definición | 1.1 Variables libres y enlazadas |
(λx.xy) (λy.y)
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 15
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 16
1.2. Sustituciones
| Cálculo 𝜆 | 1. Definición | 1.2 Sustituciones |
• Cada vez que queremos aplicar una función, escribimos toda la definición de
función y luego procedemos a evaluarla.
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 17
1.2. Sustituciones
| Cálculo 𝜆 | 1. Definición | 1.2 Sustituciones |
II ≡ (λx.x) (λz.z)
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 18
1.2. Sustituciones
| Cálculo 𝜆 | 1. Definición | 1.2 Sustituciones |
( λx. ( λy.xy ) ) y
( λy.yy ) ß Error
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 19
1.2. Sustituciones
| Cálculo 𝜆 | 1. Definición | 1.2 Sustituciones |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 20
1.2. Sustituciones
| Cálculo 𝜆 | 1. Definición | 1.2 Sustituciones |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 21
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 22
2. Aritmética
| Cálculo 𝜆 | 2. Aritmética |
λs.(λz.z)
0 ≡ λsz.z
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 23
2. Aritmética
| Cálculo 𝜆 | 2. Aritmética |
S ≡ λwyx.y(wyx)
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 24
2. Aritmética
| Cálculo 𝜆 | 2. Aritmética |
0 ≡ λsz . z
1 ≡ λsz . s (z)
2 ≡ λsz . s (s (z))
3 ≡ λsz . s (s (s (z)))
4 ≡ λsz . s (s (s (s (z))))
5 ≡ λsz . s (s (s (s (s (z)))))
6 ≡ λsz . s (s (s (s (s (s (z))))))
• y así sucesivamente.
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 25
2. Aritmética
| Cálculo 𝜆 | 2. Aritmética |
(λwyx.y(wyx)) (λsz.z)
[(λsz.z)/w] (λwyx.y(wyx))
(λyx.y((λsz.z)yx))
(λyx.y((λsz.z)yx))
(λyx.y([y/s](λsz.z)x))
(λyx.y(λz.z)x)
(λyx.y[x/z](λz.z))
(λyx.y(x))
Es decir, obtenemos la representación del número 1.
(λyx.y(x)) ≡ λsz.s(z) ≡ 1
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 26
2. Aritmética
| Cálculo 𝜆 | 2. Aritmética |
• S1 ≡ (λwyx.y (wyx)) (λsz.s (z)) = λyx.y ( (λsz.s (z)) yx) = λyx.y (y (x)) ≡ 2
• Procedimiento:
S1 ≡ (λwyx.y (wyx)) (λsz.s (z))
= [(λsz.s (z)) / w] (λwyx.y (wyx))
= λyx.y ((λsz.s (z))yx)
= λyx.y ([y/s] λsz.s (z) ) x)
= λyx.y ((λz.y (z)) x)
= λyx.y ([x/z] (λz.y (z) ) )
= λyx.y (y (x) ) ≡ λsz.s (s (z) ) ≡ 2
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 27
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad e independencia
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 28
2.1. Adición
| Cálculo 𝜆 | 2. Aritmética | 2.1. Adición |
1 ≡ λsz .s (z)
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 29
2.1. Adición
| Cálculo 𝜆 | 2. Aritmética | 2.1. Adición |
2 S 3
2S3 ≡ (λsz.s(s(z))) (λwyx.y(wyx)) (λuv.u(u(u(v))))
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 30
2.1. Adición
| Cálculo 𝜆 | 2. Aritmética | 2.1. Adición |
[(λwyx.y(wyx))/s](λsz.s(s(z))) (λuv.u(u(u(v))))
[(λuv.u(u(u(v))))/z](λz. (λwyx.y(wyx))((λwyx.y(wyx))(z)))
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 31
2.1. Adición
| Cálculo 𝜆 | 2. Aritmética | 2.1. Adición |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 32
2.1. Adición
| Cálculo 𝜆 | 2. Aritmética | 2.1. Adición |
• Ejemplo:
• Verificando que S4 reduce a 5 ≡ (λwyx.y ((wy) x)) (λuv.v (u (u (u (v)))):
λyx. y ( y (y (y (y (x)) ) ) ) ≡ 5
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 33
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 34
2.2. Multiplicación
| Cálculo 𝜆 | 2. Aritmética | 2.2. Multiplicación |
( λxyz.x ( yz))
◦ ( λxyz.x (yz) ) 2 2
◦ Se reduce a
◦ ( λz. 2 ( 2z ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 35
2.2. Multiplicación
| Cálculo 𝜆 | 2. Aritmética | 2.2. Multiplicación |
◦ ( λxyz.x (yz)) 2 2
◦ = [2/x]( λxyz.x (yz) ) 2
◦ = ( λyz.2 (yz) ) 2
◦ = [2/y]( λyz.2 (yz) )
◦ = λz.2 ( 2 z )
◦ Para evitar confusión en la sustitución cambiamos variables así:
◦ λz.2 ( 2 z ) ≡ λt. 2 ( 2 t )
◦ Reemplazamos el símbolo 2 en términos de la función que lo representa así:
◦ 2 ≡ λsz . s ( s ( z ) ) y tenemos lo siguiente:
◦ λt. 2 (2 t) ≡ λt. λsz . s ( s ( z ) ) λsz . s ( s ( z ) ) t
◦ λt. λsz . s ( s ( z ) ) λsz . s ( s ( z ) ) t
◦ λt. λsz . s ( s ( z ) ) [t /s] λsz . s ( s ( z ) )
◦ λt. λsz . s ( s ( z ) ) λz . t ( t ( z ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 36
2.2. Multiplicación
| Cálculo 𝜆 | 2. Aritmética | 2.2. Multiplicación |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 37
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 38
3. Condicionales
| Cálculo 𝜆 | 3. Condicionales |
T ≡ λxy.x
• y "falso” (False)
F ≡ λxy.y
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 39
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 40
3.1. Operaciones lógicas
| Cálculo 𝜆 | 3. Condicionales | 3.1. Operaciones lógicas |
• La función AND:
• La función OR:
• La función negación:
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 41
3.1. Operaciones lógicas
| Cálculo 𝜆 | 3. Condicionales | 3.1. Operaciones lógicas |
• Ejemplo:
◦ Se reduce a:
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 42
3.1. Operaciones lógicas
| Cálculo 𝜆 | 3. Condicionales | 3.1. Operaciones lógicas |
• Demostración: ¬T ≡ F
◦ [(λuv.v)/c] (λcd.c)(λab.a)
◦ (λd. (λuv.v))(λab.a)
◦ [(λab.a)/d](λd. (λuv.v))
◦ (λuv.v) ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 43
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 44
3.2. Una prueba condicional
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional |
Z ≡ λx.xF¬F
0fa ≡ (λsz.z) fa = a
Fa ≡ (λxy.y) a = λy.y ≡ I
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 45
3.2. Una prueba condicional
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional |
• Z0 ≡ (λx.xF¬F) 0
• = 0 F ¬F
• = ¬F
• = T
• Z0 ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 46
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional |
• Ejemplo, evaluación de 0 en Z:
Z0 ≡ T
Z0 ≡ (λx.xF¬F) (λsz.z)
= [(λsz.z)/x](λx.xF¬F)
= (λsz.z) F ¬ F
= (λsz.z) (λab.b) ((λx.x (λuv.v) (λab.a)) (λcd.d))
= [(λab.b) /s] (λsz.z) ((λx.x (λuv.v) (λab.a)) (λcd.d))
= (λz.z) ((λx.x (λuv.v) (λab.a)) (λcd.d))
= [((λx.x (λuv.v) (λab.a)) (λcd.d)) / z](λz.z)
= (λx.x (λuv.v) (λab.a)) (λcd.d)
= [(λcd.d)/x](λx.x (λuv.v) (λab.a))
= (λcd.d) (λuv.v) (λab.a) ≡ FFV
= [(λuv.v) /c](λcd.d) (λab.a)
= (λd.d) (λab.a)
= [(λab.a)/d](λd.d)
= (λab.a) ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 47
3.2. Una prueba condicional
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional |
ZN ≡ (λx.xF¬F) N = NF ¬F = IF = F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 48
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 49
3.2. Una prueba condicional
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
∧ T T ≡ T
∧ T F ≡ F
∧ F T ≡ F
∧ F F ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 50
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
∧ T T ≡ T
• (λcd.c) ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 51
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
∧ T F ≡ F
• (λcd.d) ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 52
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
∧ F T ≡ F
• [(λcd.c)/a](λab.b) (λuv.v))
• λb. b (λuv.v)
• [(λuv.v)/b] λb. b )
• (λuv.v) ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 53
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
∧ F F ≡ F
• [(λcd.d)/a](λab.b) (λuv.v)
• λb. b (λuv.v)
• [(λuv.v)/b] λb. b)
• (λuv.v) ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 54
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
⋎ T T ≡ T
⋎ T F ≡ T
⋎ F T ≡ T
⋎ F F ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 55
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
⋎ T T ≡ T
• [(λuv.u)/a](λab.a) (λcd.c)
• [(λcd.c)/b](λb. (λuv.u))
• (λuv.u) ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 56
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
⋎ T F ≡ T
• [(λuv.u)/a](λab.a) (λcd.d)
• [(λcd.d)/b](λb. (λuv.u))
• (λuv.u) ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 57
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
⋎ F T ≡ T
• [(λuv.u)/a](λab.b) (λcd.c)
• (λb. b) (λcd.c)
• [(λcd.c)/b] (λb. b)
• (λcd.c) ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 58
Tablas de verdad
| Cálculo 𝜆 | 3. Condicionales | 3.2. Una prueba condicional | Ejemplos |
⋎ F F ≡ F
• [(λuv.u)/a](λab.b) (λcd.d)
• (λb. b) (λcd.d)
• [(λcd.d)/b](λb. b)
• (λcd.d) ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 59
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 60
3.3. La función predecesora
| Cálculo 𝜆 | 3. Condicionales | 3.3. La función predecesora |
• Para extraer el primer elemento del par de la expresión se aplica esta función
a T así:
◦ (λz.zab) T = Tab = a
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 61
3.3. La función predecesora
| Cálculo 𝜆 | 3. Condicionales | 3.3. La función predecesora |
• La siguiente función genera a partir del par (n, n-1) (que es el argumento p en
la función) el par (n+1, n):
P ≡ (λn.n Φ (λz.z00)F)
• Observe que con este enfoque el predecesor de cero es cero. Esta propiedad es
útil para la definición de otras funciones.
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 62
3.3. La función predecesora
| Cálculo 𝜆 | 3. Condicionales | 3.3. La función predecesora |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 63
3.3. La función predecesora
| Cálculo 𝜆 | 3. Condicionales | 3.3. La función predecesora |
Ejemplo 1:
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 64
3.3. La función predecesora
| Cálculo 𝜆 | 3. Condicionales | 3.3. La función predecesora |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 65
3.3. La función predecesora
| Cálculo 𝜆 | 3. Condicionales | 3.3. La función predecesora |
Ejemplo 2: P0 ≡ F 0 0
F retorna el segundo parámetro por lo que F 0 0 es 0
Es importante tener en cuenta que si se llama la P0 ≡ 0
función predecesora con cero como parámetro, el Entonces predecesor de 0 es 0
resultado es 0. Entonces predecesor de 0 es 0
Al evaluar P 0 tenemos
P0 ≡ ( 𝜆n.n Φ ( 𝜆z.z0 0 ) F ) 0
Se remplaza 0 en n
P0 ≡ [ 0 / n ] ( 𝜆n.n Φ ( 𝜆z.z0 0 ) F )
P0 ≡ 0 Φ ( 𝜆z.z0 0 ) F
Sustituyendo 0 por su función lambda (λsr.r) tenemos
P0 ≡ λsr.r Φ ( 𝜆z.z0 0 ) F
Remplazamos Φ en s
P0 ≡ [ Φ / s ] λsr.r ( 𝜆z.z0 0 ) F
P0 ≡ λr.r ( 𝜆z.z0 0 ) F
Remplazamos ( 𝜆z.z0 0 ) en r
P0 ≡ [ ( 𝜆z.z0 0 ) / r ] λr.r F
P0 ≡ ( 𝜆z.z0 0 ) F
Remplazamos F en z
P0 ≡ [ F / z ] ( 𝜆z.z0 0 )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 66
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 67
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor o igual que |
G ≡ ( 𝜆xy. Z ( xPy ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 68
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor o igual que |
Ejemplos: G 4 4 ≡ Z( P( P ( 2 ) ) )
Como P(2) es 1 entonces
• Evaluar a >= b cuando a es 4 y b es 4 G 4 4 ≡ Z( P( 1 ) )
Como P(1) es 0 entonces
G 4 4 ≡ ( 𝜆xy. Z ( xPy ) ) 4 4 G 4 4 ≡ Z( 0 )
Remplazar 4 en x Z0 es T entonces
G 4 4 ≡ [ 4 / x ] ( 𝜆xy. Z ( xPy ) ) 4 G 4 4 ≡ T
G 4 4 ≡ ( 𝜆y.Z( 4Py ) ) 4
Remplazar 4 en y
G 4 4 ≡ [ 4 / y ] ( 𝜆y. Z ( 4Py ) )
G 4 4 ≡ Z ( 4P4 )
4 P 4 es P( P ( P ( P ( 4 ) ) ) )
G 4 4 ≡ Z( P( P ( P ( P ( 4 ) ) ) ) )
Como P (4) es 3 entonces
G 4 4 ≡ Z ( P ( P ( P ( 3 ) ) ) )
Como P(3) es 2 entonces
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 69
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor o igual que |
Ejemplos: G 4 5 ≡ Z ( P ( P ( 3 ) ) )
Como P(3) es 2 entonces
• Evaluar a >= b cuando a es 4 y b es 5 G 4 5 ≡ Z ( P ( 2 ) )
Como P(2) es 1 entonces
G 4 5 ≡ ( 𝜆xy. Z ( xPy ) ) 4 5 G 4 5 ≡ Z ( 1 )
Remplazar 4 en x Z1 es F entonces
G 4 5 ≡ [ 4 / x ] ( 𝜆xy. Z ( xPy ) ) 5 G 4 5 ≡ F
G 4 5 ≡ ( 𝜆y. Z ( 4Py ) ) 5
Remplazar 5 en y
G 4 5 ≡ [ 5 / y ] ( 𝜆y. Z ( 4Py ) )
G 4 5 ≡ Z ( 4P5 )
Cómo ( 4 P 5 ) es P( P ( P ( P ( 5 ) ) ) )
G 4 5 ≡ Z ( P ( P ( P ( P ( 5 ) ) ) ) )
Como P(5) es 4 entonces
G 4 5 ≡ Z ( P ( P ( P ( 4 ) ) ) )
Como P(4) es 3 entonces
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 70
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor o igual que |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 71
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor o igual que |
Ejemplos: G 4 5 ≡ Z ( P ( P ( 3 ) ) )
P ( 3 ) es 2 entonces
• Evaluar a >= b cuando a es 4 y b es 5 G 4 5 ≡ Z ( P( 2 ) )
P ( 2 ) es 1 entonces
G 4 5 ≡ ( 𝜆xy. Z ( xPy ) ) 4 5 G 4 5 ≡ Z ( 1 )
Remplazar 4 en x Z 1 es F entonces
G 4 5 ≡ [ 4 / x ] ( 𝜆xy. Z ( xPy ) ) 5 G 4 5 ≡ F
G 4 5 ≡ ( 𝜆y. Z ( 4Py ) ) 5
Remplazar 5 en y
G 4 5 ≡ [ 5 / y ] ( 𝜆y. Z ( 4Py ) )
G 4 5 ≡ Z ( 4P5 )
Como 4 P 5 es P ( P ( P ( P ( 5 ) ) ) )
G 4 5 ≡ Z ( P ( P ( P ( P ( 5 ) ) ) ) )
Como P ( 5 ) es 4 entonces
G 4 5 ≡ Z ( P ( P ( P ( 4 ) ) ) )
Como P ( 4 ) es 3 entonces
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 72
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función igual que |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 73
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función igual que |
Ejemplos:
• Evaluar a = b cuando a es 4 y b es 4
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 74
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función igual que |
Ejemplos:
• Evaluar a = b cuando a es 4 y b es 5
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 75
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función diferente de |
≠ ≡ ¬ ( E x y )
≠ ≡ ( 𝜆xy. ¬ ( E x y ) )
≠ ≡ ( 𝜆xy. ¬ ( ⋏ ( Z( xPy ) ) ( Z( yPx ) ) ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 76
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función diferente de |
Ejemplos:
≠ 3 4 ≡ ( 𝜆xy. ¬ ( E x y ) ) 3 4
Remplazando 3 en x
≠ 3 4 ≡ [ 3 / x ] ( 𝜆xy. ¬ ( ( E x y ) ) ) 4
≠ 3 4 ≡ ( 𝜆y. ¬ ( ( E 3 y ) ) ) 4
Remplazando 4 en y
≠ 3 4 ≡ [ 4 / y ] ( 𝜆y. ¬ ( ( E 3 y ) ) )
≠ 3 4 ≡ ¬ ( ( E 3 4 ) )
Como E 3 4 es F entonces
≠ 3 4 ≡ ¬ ( F )
Como ¬ ( F ) es T
≠ 3 4 ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 77
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función diferente de |
Ejemplos:
≠ 4 4 ≡ ( 𝜆xy. ¬ ( ( E x y ) ) ) 4 4
Remplazando 4 en x
≠ 4 4 ≡ [ 4 / x ] ( 𝜆xy. ¬ ( ( E x y ) ) ) 4
≠ 4 4 ≡ ( 𝜆y. ¬ ( ( E 4 y ) ) ) 4
Remplazando 4 en y
≠ 4 4 ≡ [ 4 / y ] ( 𝜆y. ¬ ( ( E 4 y ) ) )
≠ 4 4 ≡ ¬ ( ( E 4 4 ) ) )
Como E 4 4 que es T entonces
≠ 4 4 ≡ ¬ ( T )
Como ¬ ( T ) es F entonces
≠ 4 4 ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 78
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor que |
> ≡ ⋏ (G xy) ( ≠ xy )
> ≡ ( 𝜆xy.⋏ ( G x y ) ( ≠ x y ) )
> ≡ ( 𝜆xy.⋏ ( Z( xPy ) ) ( ¬ ( ⋏ ( Z( xPy ) ) ( Z( yPx ) ) ) ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 79
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor que |
Ejemplos:
> 4 3 ≡ ( 𝜆xy. ⋏ ( G x y ) ( ≠ x y ) ) 4 3
Remplazando 4 en x
> 4 3 ≡ [ 4 / x ] ( 𝜆xy. ⋏ ( G x y ) ( ≠ x y ) ) 3
> 4 3 ≡ ( 𝜆y. ⋏ ( G 4 y ) ( ≠ 4 y ) ) 3
Remplazando 3 en y
> 4 3 ≡ [ 3 / y ] ( 𝜆y. ⋏ ( G 4 y ) ( ≠ 4 y ) )
> 4 3 ≡ ⋏ ( G 4 3 ) ( ≠ 4 3 )
Como G 4 3 es T entonces
> 4 3 ≡ ⋏ ( T ) ( ≠ 4 3 )
Como ≠ 4 3 es T entonces
> 4 3 ≡ ⋏ ( T ) ( T )
Como ⋏ ( T ) ( T ) es T entonces
> 4 3 ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 80
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función mayor que |
Ejemplos:
> 4 4 ≡ ( 𝜆xy. ⋏ ( G x y ) ( ≠ x y ) ) 4 4
Remplazando 4 en x
> 4 4 ≡ [ 4 / x ] ( 𝜆xy. ⋏ ( G x y ) ( ≠ x y ) ) 4
> 4 4 ≡ ( 𝜆y. ⋏ ( G 4 y ) ( ≠ 4 y ) ) 4
Remplazando 4 en y
> 4 4 ≡ [ 4 / y ] ( 𝜆y. ⋏ ( G 4 y ) ( ≠ 4 y ) )
> 4 4 ≡ ⋏ ( G 4 4 ) ( ≠ 4 4 )
Como G 4 4 es T entonces
> 4 4 ≡ ⋏ ( T ) ( ≠ 4 4 )
Como ≠ 4 4 es F entonces
> 4 4 ≡ ⋏ ( T ) ( F )
Como ⋏ ( T ) ( F ) es F entonces
> 4 4 ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 81
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor que |
< ≡ ¬ ( G x y )
< ≡ ( 𝜆xy.¬ ( G x y ) )
< ≡ ( 𝜆xy.¬ ( Z( xPy ) ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 82
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor que |
Ejemplos:
< 3 4 ≡ ( 𝜆xy. ¬ ( G x y ) ) 3 4
Remplazar 3 en x
< 3 4 ≡ [ 3 / x ] ( 𝜆xy. ¬ ( G x y ) ) 4
< 3 4 ≡ ( 𝜆y. ¬ ( G 3 y ) ) 4
Remplazar 4 en y
< 3 4 ≡ [4 / y] ( 𝜆y. ¬ ( G 3 y ) )
< 3 4 ≡ ¬ ( G 3 4 )
Como G 3 4 es F entonces
< 3 4 ≡ ¬ ( F )
Como ¬ ( F ) es T entonces
< 3 4 ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 83
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor que |
Ejemplos:
< 4 3 ≡ ( 𝜆xy.¬ ( G x y ) ) 4 3
Remplazar 4 en x
< 4 3 ≡ [ 4 / x ] ( 𝜆xy. ¬ ( G x y ) ) 3
< 4 3 ≡ ( 𝜆y.¬ ( G 4 y ) ) 3
Remplazar 3 en y
< 4 3 ≡ [ 3 / y] ( 𝜆y. ¬ ( G 4 y ) )
< 4 3 ≡ ¬ ( G 4 3 )
Como G 4 3 es T entonces
< 4 3 ≡ ¬ ( T )
Como ¬ ( T ) es F entonces
< 4 3 ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 84
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor o igual que |
≤ ≡ ⋎ ( < x y ) ( E x y )
≤ ≡ ⋎ ( ¬ ( G x y ) ) ( E x y )
≤ ≡ ( 𝜆xy. ⋎ ( < x y ) ( E x y ) )
≤ ≡ ( 𝜆xy. ⋎ ( ¬ ( Z( xPy ) ) ) ( ⋏ ( Z( xPy ) ) ( Z( yPx ) ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 85
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor o igual que |
Ejemplos:
≤ 4 4 ≡ ( 𝜆xy. ⋎ ( < x y ) ( E x y ) ) 4 4
Remplazamos 4 en x
≤ 4 4 ≡ [ 4 / x ] ( 𝜆xy. ⋎ ( < x y ) ( E x y ) ) 4
≤ 4 4 ≡ ( 𝜆y. ⋎ ( < 4 y ) ( E 4 y ) ) 4
Remplazamos 4 en y
≤ 4 4 ≡ [ 4 / y ] ( 𝜆y. ⋎ ( < 4 y ) ( E 4 y ) )
≤ 4 4 ≡ ⋎ ( < 4 4 ) ( E 4 4 )
Como < 4 4 es F entonces
≤ 4 4 ≡ ⋎ ( F ) ( E 4 4 )
Como E 4 4 es T entonces
≤ 4 4 ≡ ⋎ ( F ) ( T )
Como ⋎ ( F ) ( T ) es T entonces
≤ 4 4 ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 86
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor o igual que |
Ejemplos:
≤ 3 4 ≡ ( 𝜆xy. ⋎ ( < x y ) ( E x y ) ) 3 4
Remplazamos 3 en x
≤ 3 4 ≡ [ 3 / x ] ( 𝜆xy. ⋎ ( < x y ) ( E x y ) ) 4
≤ 3 4 ≡ ( 𝜆y. ⋎ ( < 3 y ) ( E 3 y ) ) 4
Remplazamos 4 en y
≤ 3 4 ≡ [ 4 / y ] ( 𝜆y. ⋎ ( < 3 y ) ( E 3 y ) )
≤ 3 4 ≡ ⋎ ( < 3 4 ) ( E 3 4 )
Como < 3 4 es T entonces
≤ 3 4 ≡ ⋎ ( T ) ( E 3 4 )
Como E 3 4 es F entonces
≤ 3 4 ≡ ⋎ ( T ) ( F )
Como ⋎ ( T ) ( F ) es T entonces
≤ 3 4 ≡ T
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 87
3.4. Igualdad y desigualdades
| Cálculo 𝜆 | 3. Condicionales | 3.4. Igualdad y desigualdades | Función menor o igual que |
Ejemplos:
≤ 5 4 ≡ ( 𝜆xy. ⋎ ( < x y ) ( E x y ) ) 5 4
Remplazamos 5 en x
≤ 5 4 ≡ [ 5 / x ] ( 𝜆xy. ⋎ ( < x y ) ( E x y ) ) 4
≤ 5 4 ≡ ( 𝜆y. ⋎ ( < 5 y ) ( E 5 y ) ) 4
Remplazamos 4 en y
≤ 5 4 ≡ [ 4 / y ] ( 𝜆y. ⋎ ( < 5 y ) ( E 5 y ) )
≤ 5 4 ≡ ⋎ ( < 5 4 ) ( E 5 4 )
Como < 5 4 es F entonces
≤ 5 4 ≡ ⋎ ( F ) ( E 5 4 )
Como (E 5 4) es F entonces
≤ 5 4 ≡ ⋎ ( F ) ( F )
Como ⋎ ( F ) ( F ) es F entonces
≤ 5 4 ≡ F
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 88
Contenido
| Cálculo 𝜆 | Contenido |
1. Definición
1.1. Variables libres y enlazadas
1.2. Sustituciones
2. Aritmética
2.1. Adición
2.2. Multiplicación
3. Condicionales
3.1. Operaciones lógicas
3.2. Una prueba condicional
3.3. La función predecesora
3.4. Igualdad y desigualdades
4. Recursividad
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 89
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Recursividad |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 90
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Ejemplos | Ejemplos |
Ejemplo 1: YR3 ≡ Z 3 0 ( 3 S ( YR ( P 3 ) ) )
Como en Z 3, 3 es diferente de 0 se tiene que Z 3 ≡ F
entonces
Sea R la función recursiva que calcula la sumatoria de
YR3 ≡ F 0 ( 3 S ( YR ( P 3 ) ) )
i cuando i va desde 0 hasta n ( ∑𝑛𝑖=0 𝑖 ) å la cual se
puede escribir como n + ∑𝑛−1 Falso retorna el segundo parámetro entonces
𝑖=0 𝑖
YR3 ≡ ( 3 S ( YR ( P 3 ) ) )
Como P 3 ≡ 2 entonces
Entonces la función recursiva sería así:
YR3 ≡ 3 S ( YR 2 ) (pendiente por reemplazar)
R ≡ (𝜆rn. Z n 0 ( n S ( r ( P n ) ) ) ) Resolviendo YR 2 se tiene
YR2 ≡ R ( YR ) 2
Si queremos calcular ( ∑𝑛𝑖=0 𝑖 ) cuando n = 3 Remplazamos la primera R por su función 𝜆
tendríamos YR2 ≡ 𝜆rn. Z n 0 ( n S ( r ( P n ) ) ) ( YR ) 2
YR3 Remplazamos r por YR
Pero YR es R( YR ) YR2 ≡ [ YR / r ] 𝜆rn. Z n 0 ( n S ( r ( P n ) ) ) 2
YR3 ≡ R( YR ) 3 YR2 ≡ 𝜆n. Z n 0 ( n S ( YR ( P n ) ) ) 2
Remplazamos la primera R por su función 𝜆 Remplazamos n por 2
YR3 ≡ 𝜆rn. Z n 0 ( n S ( r ( P n ) ) ) (YR) 3 YR2 ≡ [ 2 / n ] 𝜆n. Z n 0 ( n S ( YR ( P n ) ) )
Remplazamos YR por r YR2 ≡ Z 2 0 ( 2 S ( YR( P 2 ) ) )
YR3 ≡ [ YR / r ] 𝜆rn. Z n 0 ( n S ( r ( P n ) ) ) 3 … (continua)
YR3 ≡ 𝜆n. Z n 0 ( n S ( YR ( P n ) ) ) 3
Remplazamos 3 por n
YR3 ≡ [ 3 / n ] 𝜆n. Z n 0 ( n S ( Y R ( P n ) ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 91
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Ejemplos | Ejemplos |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 92
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Ejemplos | Ejemplos |
Ejemplo 1: (continuación)
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 93
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Ejemplos | Ejemplos |
Ejemplo 2: YR4 ≡ Z 4 1 ( M 4 YR ( P 4 ) )
Si se quiere programar la función factorial se parte de Como en Z 4, 4 es diferente de 0, se tiene que Z 4 ≡ F
lo siguiente: YR4 ≡ F 1 ( M 4 YR( P 4 ) )
F(x) = x * F( x -1 ) Falso retorna el segundo parámetro entonces
Sea M la función multiplicación YR4 ≡ M 4 YR( P 4 )
M ≡ ( 𝜆xyz.x( yz ) ) Como P 4 ≡ 3, entonces
Se podría definir la función R así: YR4 ≡ M 4 YR3 (pendiente por reemplazar)
Resolviendo YR3 tenemos
R ≡ (𝜆rn. Z n 1 ( M n r( P n ) ) ) YR es R( YR )
YR3 ≡ R( YR ) 3
Si queremos calcular el factorial de n cuando n = 4 Remplazamos la primera R por su formula 𝜆
tendríamos lo siguiente: YR3 ≡ 𝜆rn. Z n 1 ( M n r( Pn ) ) (YR) 3
YR4 Remplazamos YR por r.
YR es R ( YR ) YR3 ≡ [ YR / r ] 𝜆rn. Z n 1 ( M n r( Pn ) ) 3
YR4 ≡ R ( YR ) 4 YR3 ≡ 𝜆n. Z n 1 ( M n YR ( P n ) ) 3
Remplazamos la primera R por su función 𝜆 Remplazamos 3 por n
YR4 ≡ 𝜆rn. Z n 1 ( M n r ( P n ) ) ( YR ) 4 YR3 ≡ [ 3 / n ] 𝜆n. Z n 1 ( M n YR( P n ) )
Remplazamos YR por r YR3 ≡ Z 3 1 ( M 3 YR( P 3 ) )
YR4 ≡ [ YR / r ] 𝜆rn. Z n 1 ( M n r ( P n ) ) 4 … (continua)
YR4 ≡ 𝜆n. Z n 1 ( M n YR ( P n ) ) 4
Remplazamos 4 por n
YR4 ≡ [ 4 / n ] 𝜆n. Z n 1 ( M n YR ( P n ) )
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 94
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Recursividad | Ejemplos |
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 95
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Ejemplos | Ejemplos |
Ejemplo 2: (Continuación)
Remplazamos 0 por n
Remplazamos 1 por n YR0 ≡ [ 0 / n ] 𝜆n. Z n 1 ( M n YR ( P n ) )
YR1 ≡ [ 1 / n ] 𝜆n. Z n 1 ( M n YR ( P n ) ) YR0 ≡ Z 0 1 ( M 0 YR ( P 0 ) )
YR1 ≡ Z 1 1 ( M 1 YR ( P 1 ) ) Como Z 0 ≡ T entonces
Como en Z 1, 1 es diferente de 0, se tiene que Z 1 ≡ F, YR0 ≡ T 1 ( M 0 YR ( P 0 ) )
entonces Como verdadero retorna el primer parámetro,
YR1 ≡ F 1 ( M 1 YR ( P 1 ) ) entonces
Falso retorna el segundo parámetro entonces YR0 ≡ 1
YR1 ≡ M 1 YR ( P 1 ) Remplazando YR0 en YR1 tenemos:
Como P 1 ≡ 0, entonces YR1 ≡ M 1 YR(0)
YR1 ≡ M 1 YR0 (pendiente por reemplazar) YR1 ≡ M 1 1
Resolviendo YR0 tenemos que: YR1 ≡ 1
YR es R( YR ) Remplazando YR1 en YR2 tenemos:
YR0 ≡ R( YR ) 0 YR2 ≡ M 2 YR ( 1 )
Remplazamos la primera R por su función 𝜆 YR2 ≡ M 2 1
YR0 ≡ 𝜆rn. Z n 1 ( M n r ( Pn ) ) ( YR ) 0 YR2 ≡ 2
Remplazamos YR por r … (continua)
YR0 ≡ [ YR / r ] 𝜆rn. Z n 1 ( M n r( Pn ) ) 0
YR0 = 𝜆n. Z n 1 ( M n YR ( P n ) ) 0
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 96
4. Recursividad
| Cálculo 𝜆 | 3. Condicionales | 4. Ejemplos | Ejemplos |
Ejemplo 2:(Continuación)
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 97
GRACIAS
Basado en el artículo “A Tutorial Introduction to the Lambda Calculus” de Raúl Rojas (1998) 98