Lambdac PDF
Lambdac PDF
Universidad de Málaga
Pza. El Ejido s/n, 29013–Málaga, España
e–mails
[email protected]
[email protected]
fax
†34–5–2131397
‡34–5–2132766
0 Lambda expresiones 3
0.0 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.1 Variables libres y asociadas . . . . . . . . . . . . . . . . . . . . . 6
0.2 Subtérminos y contextos . . . . . . . . . . . . . . . . . . . . . . . 7
1 Semántica operacional 9
1.0 Evaluación de λ–expresiones . . . . . . . . . . . . . . . . . . . . . 9
1.0.0 δ–reducción . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.0.1 β–conversión . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1 Reducción en Λ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.0 Relaciones definibles en Λ . . . . . . . . . . . . . . . . . . 12
1.1.1 λ–teorı́as . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Sustituciones y α–equivalencias . . . . . . . . . . . . . . . . . . . 15
1.2.0 Convenio de variables y concepto de sustitución . . . . . . 15
1.2.1 La sustitución frente a las relaciones en Λ . . . . . . . . . 19
1.3 Eta–conversión y extensionalidad . . . . . . . . . . . . . . . . . . 22
2 Formas normales 25
2.0 El concepto de forma normal . . . . . . . . . . . . . . . . . . . . 25
2.1 Confluencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 Los teoremas de Church–Rosser . . . . . . . . . . . . . . . . . . . 30
2.3 Formas normales por la cabeza . . . . . . . . . . . . . . . . . . . 35
2.3.0 Órdenes de reducción . . . . . . . . . . . . . . . . . . . . 35
2.3.1 El teorema de estandarización . . . . . . . . . . . . . . . . 36
iii
iv CONTENTS
3 Teorı́a de combinadores 45
3.0 Combinadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.0.0 Los combinadores estándares . . . . . . . . . . . . . . . . 45
3.0.1 Potencias y potencias de K . . . . . . . . . . . . . . . . . 46
3.1 La teorı́a de combinadores . . . . . . . . . . . . . . . . . . . . . . 47
3.1.0 Fundamentos de LC . . . . . . . . . . . . . . . . . . . . . 47
3.1.1 Relación entre λ–términos y términos combinatorios . . . 50
3.1.2 Reducción en forma perezosa . . . . . . . . . . . . . . . . 51
3.1.3 Generadores y bases . . . . . . . . . . . . . . . . . . . . . 53
3.1.4 Equivalencia entre λC y LC . . . . . . . . . . . . . . . . . 53
3.2 Puntos fijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.0 Expresando la recursión . . . . . . . . . . . . . . . . . . . 55
3.2.1 Combinadores para puntos fijos . . . . . . . . . . . . . . . 56
4 Lambda definibilidad 61
4.0 Operaciones lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.0.0 Constantes y operaciones lógicas . . . . . . . . . . . . . . 61
4.1 Computabilidad y λ–definibilidad . . . . . . . . . . . . . . . . . . 62
4.1.0 Sistemas de numerales y numerales de Church . . . . . . 62
4.1.1 Funciones λ–definibles y recursivas. Teorema de Kleene . 63
4.1.2 Aritmética y Numerales de Church . . . . . . . . . . . . . 65
4.1.3 Extensión del λC con la aritmética . . . . . . . . . . . . . 66
4.2 Listas en el λC puro . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2.0 λ–definibilidad de las funciones básicas para listas . . . . 66
4.2.1 Las listas en un λC con constantes . . . . . . . . . . . . . 68
4.3 Autointerpretación en el λC . . . . . . . . . . . . . . . . . . . . . 69
4.3.0 Un autointérprete para el λC . . . . . . . . . . . . . . . . 69
4.3.1 Aplicaciones de la autointerpretación . . . . . . . . . . . . 70
5 Solubilidad 71
5.0 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.1 Concepto y caracterización de la solubilidad . . . . . . . . . . . . 72
5.2 Interpretación computacional de la solubilidad . . . . . . . . . . 73
CONTENTS v
6 Semántica denotacional 75
6.0 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.1 Interpretación sobre un modelo aplicativo . . . . . . . . . . . . . 75
6.2 Álgebras combinatorias y λ–álgebras . . . . . . . . . . . . . . . . 78
6.2.0 Álgebras combinatorias . . . . . . . . . . . . . . . . . . . 78
6.2.1 Interpretación de λ–términos con constantes . . . . . . . . 78
6.2.2 λ–álgebras . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.3 λ–modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3.0 Concepto y caracterización . . . . . . . . . . . . . . . . . 80
6.3.1 El modelo de términos . . . . . . . . . . . . . . . . . . . . 82
6.4 Modelos sintácticos . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.5 Modelos sobre dominios reflexivos . . . . . . . . . . . . . . . . . . 86
6.6 Incompletitud de los λ–modelos . . . . . . . . . . . . . . . . . . . 88
6.6.0 El teorema de Böhm . . . . . . . . . . . . . . . . . . . . . 88
6.6.1 Resolubilidad y resultados de complitud . . . . . . . . . . 91
III Apéndices 95
vi CONTENTS
Prólogo
vii
viii CONTENTS
Part I
1
Chapter 0
Lambda expresiones
0.0 Sintaxis
El lambda cálculo (λC) es un lenguaje simple que permite la descripción de
las funciones matemáticas y de sus propiedades; fue introducido por Church en
los años 30 como fundamento de la matemática (funciones y lógica) y constituye
un modelo formal; muchos lenguajes funcionales (como Haskell [Ham95]) son a
menudo descritos como un super λC o λC extendido; de hecho, los programas
funcionales pueden ser traducidos a esta notación.
EJEMPLO 0.0. La expresión Haskell \x -> 2 * x se escribe en el λC ası́:
λx. ∗ 2 x
y denota una función de un solo argumento tal que al objeto x le asocia el objeto
∗ 2 x. ♣
En el ejemplo anterior se observa que:
Las expresiones como las del ejemplo 0.0 se llaman λ–abstracciones (para
simplificar, λA) y son un caso particular de λ–expresiones (para simplificar,
λE) o λ–términos.
La variable instanciable es muda; si sustituimos el identificador de la variable
por una nueva variable, sustituyendo tal variable también en el cuerpo, se realiza
una α–conversión y se obtienen equivalencias alfabéticas, como en
λx. ∗ 2 x ↔α λy. ∗ 2 y
3
4 0. Lambda expresiones
Una α–equivalencia con dos funciones significa que las dos funciones son la
misma, y por tanto debemos identificarlas; ası́ escribiremos ≡α en lugar de ↔α
(o también directamente ≡), con lo cual:
λx.x ≡ λy.y
λx.y ≡ λz.y
λx.x 6≡ λz.x
Luego para introducir una igualdad en el λC (es decir, una teorı́a con igual-
dad) necesitaremos la α–regla o identificación sintáctica; el uso de ambas puede
plantear problemas como veremos más tarde.
El cuerpo de una λA puede contener a su vez otra λA.
EJEMPLO 0.1. La expresión Haskell \x -> \y -> (x + y) * 2 se es-
cribe en el λC:
λx.λy. ∗ (+ x y) 2
aunque a veces la expresión anterior se suele escribir de forma más compacta:
λxy. ∗ (+ x y) 2
♣
Obsérvese que las λ–abstraciones tienen un solo argumento (ello permite tra-
ducir fácilmente los lenguajes con parcialización implı́cita); si es necesario es-
pecificar varios se escriben en forma separada o bien se usa la forma compacta
presentada en el ejemplo 0.1.
También se obtiene una λE al aplicar una función a un objeto. Ası́, aplicando
la función del ejemplo 0.0 al objeto 3
( λx. ∗ 2 x ) 3
λx.λy.λz.E x y z ≡ λx.(λy.(λz.E) x) y) z
2
0.0. Sintaxis 5
M N1 N2 . . . Nn ≡ (. . . ((M N1 ) N2 ) . . . Nn )
4
λx.(+ 2 x) ≡ ( λx.(+ 2 x) )
λx.x ≡ (λx.x)
λx.x y N ≡ λx.((x y) N )
λx.x (y N ) ≡ λx.(x (y N ))
(λx.x) y N 6≡ λx.x y N
(λx.x) y N ≡ ((λx.x) y) N
♣
6 0. Lambda expresiones
• En
λy.x (λx.x y)
la primera x es libre y las otras dos ligadas; las dos y–es son ligadas.
• En
+ x ((λx. + x 1) 4)
x aparece libre (en primer lugar) y ligada (segundo y tercer lugar).
♣
EJEMPLO 0.4.
♣
o
Denotaremos con Λ el conjunto de lambda expresiones y con Λ el conjunto
de λE sin variables libres (los términos de Λo se llaman combinadores).
C[·] ≡ ((λx.λy.[·]) E) F
2
Al colocar una expresión M en el “hueco” de un contexto C[·] se obtiene
una nueva λE denotada con C[M ]. Ciertas variables libres de una expresión M
pueden quedar asociadas al “colocarlas” en un contexto.
EJEMPLO 0.5. La expresión M ≡ λx.y x tiene como variable libre y, pues
φ[M ] = φ[λx.y x] = y
♣
8 0. Lambda expresiones
Chapter 1
Semántica operacional
e → e0 (e se reescribe en e0 )
CON D (> 3 2) (− 3 2) (− 2 3)
tiene 3 redexes:
> 32 − 32 − 23
♣
Hay esencialmente dos tipos de reglas:
9
10 1. Semántica operacional
1.0.1 β–conversión
La reducción más importante es la β–reducción y es el proceso de copia del
argumento sobre el cuerpo de una abstracción, reemplazando todas las ocurren-
cias de la variable instanciable por el argumento:
(λx.E) u →β [x := u]E
1.0. Evaluación de λ–expresiones 11
Se pretende además que la igualdad =βδ sea una igualdad “sustitutiva”: si dos
términos u y v son iguales, al reemplazar en una expresión un subtérmino por
expresiones iguales no se altera la igualdad, es decir:
1.1 Reducción en Λ
1.1.0 Relaciones definibles en Λ
Siendo R una relación binaria definida en Λ:
R⊆Λ×Λ
escribiremos también xRy cuando (x, y) ∈ R. Entre tales relaciones las más
interesantes son:
β = { ( (λx.M ) N, [x := N ]M ) | M, N ∈ Λ }
η = { ( λx.M x, M ) | M ∈ Λ }
βδ = β∪δ
βη = β∪η
βηδ = β∪η∪δ
1.1.1 λ–teorı́as
La λ–teorı́a llamada λ–cálculo puro o λC tiene como fórmulas M = N ,
donde M y N son λ–expresiones, y como axiomas:
• Axiomas de equivalencia:
M =N M =N N =P
M =M N =M M =P
• Axiomas de compatibilidad:
M =N M =N M =N
(ξ–regla)
Y M =Y N M X =N X λx.M = λx.N
• β–regla:
(λx.M ) N = [x := N ]M
Es decir, una λ–teorı́a es una teorı́a con igualdad compatible donde es válida la
β–regla. Es de reseñar que:
M =β N ⇔ λC ` M = N
(α–regla) si y no aparece en M
λx.M = λy.[x := y]M
M ≡N ⇒ M =N
KM
≡
(λxy.x) M
→β
(λy.M )
Ky
≡α
(λxz.x) y
→β
(λz.y)
(K y =β λz.y) ∧ (K y =β λy.y)
λz.y =β λy.y
⇒
(λz.y)u =β (λy.y)u
⇒
y =β u
y esto es absurdo (el por qué se analizará en el siguiente ejercicio). ♣
⇒ ! β–regla
F M N =β N M
⇒ ! tomando M ≡ y y N ≡ x
F y x =β x y
pero también se tiene:
1.2. Sustituciones y α–equivalencias 17
F yx
≡
((λx(λy.y x)) y) x
=β ! β–regla
(λy.y y) x
=β ! β–regla
xx
luego debe darse:
xy=xx
y de aquı́ puede deducirse (ver nota y ejercicio siguiente) que todos los términos
del λC son iguales (lo que equivale a inconsistencia). ♣
NOTA En una teorı́a T con igualdad donde son aplicables los axiomas (siendo
A y B igualdades)
` A ⇒ (B ⇒ A)
` (¬B ⇒ ¬A) ⇒ ((¬B ⇒ A) ⇒ B)
A , (A ⇒ B) ` B (modus ponens)
• ∀M, N ∈ Λ : λC ` (M = N )
• El λC es inconsistente.
♠
xy=xx ⇒ [ ∀M, N ∈ Λ : λC ` (M = N ) ]
2
EJEMPLO 1.5. (continuación) El fallo en este ejemplo está en el paso
φ[λy.y y] = φ[y y] − y = ∅
18 1. Semántica operacional
♣
Realmente el problema está en la definición de la sustitución [x := N ]M ,
pues en algunos casos para calcular [x := N ]M es obligatorio efectuar una α–
conversión. Para resolver el problema podemos, al igual que en [Bar84] (p. 26),
adoptar el siguiente criterio:
[x := N ]x ≡ N
[x := N ]y ≡ y si x 6≡ y
[x := N ](P Q) ≡ [x := N ]P [x := N ]Q
[x := N ](λy.P ) ≡ λy.[x := N ]
2
Obsérvese que:
1. M es una variable
• M ≡x
[y := L][x := N ]M
≡
[y := L][x := N ]x
≡
[y := L]N
≡
[x := [y := L]N ]x
≡ ! x 6≡ y
[x := [y := L]N ][y := L]x
• M ≡ y, con x 6≡ y (trivial)
• M ≡ z, con z 6≡ x ∧ z 6≡ y (trivial)
2. M ≡ λz.P
[y := L][x := N ]λz.P
≡ ! Por (CV), z no aparece instanciable ni en N ni en L
[y := L]λz.[x := N ]P
≡ ! Por (CV), z no aparece instanciable ni en N ni en L
λz.[y := L][x := N ]P
≡ ! Hipótesis de inducción
λz.[x := [y := L]N ][y := L]P
≡ ! Igual razonamiento
[x := [y := L]N ][y := L]λz.P
3. M ≡ P Q (trivial)
1. M = N es conclusión de la β–regla
(λy.A) B = [y := B]A
| {z } | {z }
M N
[x := E]M
≡
[x := E](λy.A) B
≡ ! Definición de sustitución
(λy.[x := E]A) [x := E]B
=β
[y := [x := E]B][x := E]A
≡ ! Por (S1) ya que por (CV), y 6≡ x ∧ y 6∈ φ[E]
[x := E][y := B]A
≡
[x := E]N
A ³R B ⇒ [x := A]M ³R [x := B]M
M ³R N 6⇒ [x := A]M ³R [x := A]N
2
1.2. Sustituciones y α–equivalencias 21
( [x := A]M , [x := A]N )
≡
( [x := A](λy.P ) Q , [x := A][y := Q]P )
≡ ! Definición de sustitución, lema de sustitución y (CV)
( (λy.[x := A]P ) [x := A]Q , [y := [x := A]Q][x := A]P )
que es una instancia de la β–regla. 2
Corolario 1.1 Las relaciones →β , ³β y =β son sustitutivas.
1. Si M = N es conclusión de la β–regla
(λy.A) B = [y := B]A
| {z } | {z }
M N
λC ` M 0 = N 0
⇒ ¡ Hipótesis de inducción
M 0 =β N 0
⇒ ¡ Lema 1.2
Y M0 = Y N0
≡
M =β N
3. . . .
22 1. Semántica operacional
M →β N ⇒ λC ` M = N
M ³β N ⇒ λC ` M = N
M =β N ⇒ λC ` M = N
2
EJERCICIO 1.10. Completar la demostración del teorema anterior. 2
(λx.M ) x = M
y en general
(λ~x.M ) ~x = M (~x ≡ x1 x2 . . . xn )
siendo
[~x := N ] ≡ [xn := N ] . . . [x1 := N ]
Sin embargo, la η–regla
(η–regla)
λx.M x = M
(donde el cuerpo de la función es M x) no es necesariamente cierta.
EJEMPLO 1.6. Consideremos la función:
suc ≡ λx. + 1 x
de forma que:
suc y = + 1 y
y la función suc tiene el mismo comportamiento que la función parcial
+1
(λx. + 1 x) = + 1
♣
1.3. Eta–conversión y extensionalidad 23
M x=N x
(ext) si x 6∈ φ[M N ]
M =N
Es decir, si M x se comporta como N x para alguna variable no libre en ambas,
entonces M y N son iguales. Esta propiedad es el principio de extensional-
idad.
Al añadirle al λC la regla (ext) se pueden obtener algunos axiomas de los
de la definición 1.6.
EJERCICIO 1.11. Demostrar que al añadirle al λC la regla (ext) se tiene:
M =N
∀X ∈ Λ
M X=N X
2
Teorema 1.2 (Curry, 1941) λC ∪ (ext) es equivalente a λη
Demostración:
1. λC ∪ (ext) ` λη
x 6∈ φ[M ]
⇒ ! β–regla
(λx.M x) x = M x
⇒ ! regla ext
λx.M x = M
que es la η–regla.
2. λη ` λC ∪ (ext)
(x 6∈ φ[M N ]) ∧ (M x = N x)
⇒ ! ξ–regla
λx.M x = λx.N x
⇒ ! η–regla
M =N
de donde λη ` (ext).
2
CON D T RU E 3
λx.3
• A través de la η–regla:
CON D T RU E 3
= ! η–regla
λx.CON D T RU E 3 x
= ! δ–regla para CON D
λx.3
T RU E
= ! Reflexividad de =
3=3
= ! β–regla
3 = (λx.3) y
= ! δ–regla para CON D
CON D T RU E 3 y = (λx.3) y
⇒ ! regla (ext)
CON D T RU E 3 = λx.3
♣
Chapter 2
Formas normales
Demostración:
25
26 2. Formas normales
M ³R M ≡ N
entonces M ≡ N
– Si M ³R N ha sido obtenida de
M ³R Q Q ³R N
M ³R N
entonces por hipótesis de inducción se tendrá (M ≡ Q) ∧ (Q ≡ N ),
de donde M ≡ N
2
Ω
≡
(λz.z z) (λy.y y)
=β
[z := λy.y y](z z)
≡
(λy.y y) (λy.y y)
≡
Ω
Por tanto, el “cómputo” de la expresión Ω “no termina” y Ω no tiene una
forma normal. ♣
2.1. Confluencia 27
2.1 Confluencia
Interesa saber si las formas normales son únicas (salvo α–equivalencias).
Esto será consecuencia de la propiedad de confluencia.
M
¡ @
¡ @
ª
¡ R
@
P pp pQ
ppp
ppp p p ppp
p
ppp ppp
Rp
p pªp p
R
2
M =R N ⇒ ∃Z :: (M ³R Z) ∧ (N ³R Z)
• M =R N es consecuencia de
M ³R N
M =R N
y tomamos Z ≡ N .
• M =R N es consecuencia de
N =R M
M =R N
y por hipótesis de inducción:
∃Z :: (N ³R Z) ∧ (M ³R Z)
• M =R N es consecuencia de
M =R L L =R N
M =R N
y, por hipótesis de inducción, existen términos P y Q verificando
M L N
@ ¡ @ ¡
@ ¡ @ ¡
R
@ ¡
ª @
R ¡
ª
P Q
2.1. Confluencia 29
M L N
@ ¡ @ ¡
@ ¡ @ ¡
@
R ¡
ª R
@ ¡
ª
P pp pQ
ppp
ppp p p ppp
p
ppp ppp
Rp
p pªp p
R
Demostración:
(M ³R Z) ∧ (N ³R Z)
(N1 ³R Z) ∧ (N2 ³R Z)
λx1 x2 . . . xn .x M1 . . . Mm n, m ≥ 0
(1) x ∈ F N
(2) si M1 , . . . , Mm ∈ F N entonces x M1 . . . Mm ∈ FN
(3) si M ∈ FN entonces λx.M ∈ FN
A ∈ FN ⇒ A∈C
– A ≡ x, trivial
– A ≡ λx1 x2 . . . xn .x M1 . . . Mn , con M1 , . . . , Mm ∈ FN
A ≡ λx1 x2 . . . xn .x M1 . . . Mn
⇒ ! h.i., A0 ≡ x M1 . . . Mn , props. (2) y (1)
A ≡ λx1 x2 . . . xn .A0 , con A0 ∈ C
⇒ ! prop. (3) n veces
A∈C
2
Demostración: hay que probar que ³β |= 3; para ello, supongamos que existe
una relación ³ (no confundir con ³β ) que verifica:
2.2. Los teoremas de Church–Rosser 31
=
(a) →β ⊆³⊆³β
(e) ³ |= 3
³∗ |= 3
Por (a),
= ∗
(→β ) ⊆ ³∗ ⊆³β
=
y ya que (→β )∗ ≡³β tendremos ³∗ =³β . Luego todo consiste en encontrar
tal relación ³. Esto se verá en el siguiente lema. 2
(1) M ³ M
λx.M1 ³ λx.M2 ,
(2) (M1 ³ M2 ) ∧ (N1 ³ N2 ) ⇒ M1 N1 ³ M2 N2 ,
(λx.M1 ) N1 ³ [x := N2 ]M2
Entonces:
=
(a) →β ⊆³⊆³β
(e) ³ |= 3
Demostración:
= =
(a) Para demostrar que →β ⊆³ hay que probar M →β N ⇒ M ³ N (por
=
inducción sobre la derivación M →β N )
32 2. Formas normales
=
– Si M →β N es consecuencia de
M ³β M
=
– Si M →β N es consecuencia de la β–regla, entonces
M ≡ (λx.E) u , N ≡ [x := u]E
y bastará probar
(λx.E) u ³ [x := u]E
que se deduce de (2) tomando M1 ≡ M2 ≡ E y N1 ≡ N2 ≡ u
mientras que para demostrar ³⊆³β basta probar que ³β verifica (1)–(2)
del lema, lo cual es trivial por ser sustitutiva.
pero ya que
λC ` A = B ⇔ A =β B
entonces tendremos M =β N , siendo M y N dos formas normales. Pero, por
el corolario 2.0.(2), tendremos M ≡ N , y ahora para llegar a un absurdo basta
tomar dos formas normales no α–equivalentes. 2
K ≡ λxy.x S ≡ λxyz.x z (y z)
F = { M = N | M, N ∈ Λ :: M, N no tienen F N }
K ≡ λxy.x I ≡ λx.x
Teorema 2.4 η ∈ CR
= ∗
Demostración: como se tiene que ³η = (→η ) , bastará con probar que
=
→η |= 3
es decir
∀A, B, C :: (A½1 B) ∧ (A½2 C) ⇒ ∃D :: (C½1 D) ∧ (B½2 D)
entonces
∗
(½1 ∪ ½2 ) |= 3
(2) Sean dos relaciones σ y γ tales que σ ∈ CR y γ ∈ CR; si las relaciones
inducidas ³σ y ³γ son commutativas en el sentido de (1), entonces σγ ∈
CR
Demostración:
• ½- 1 • ½- 2 • ½- 2 •
pp pp pp
pp pp pp
½2 ppp ½2 ppp ½2 ppp ½2
? p? p? p?
• p p½ p1p p • p p ½
ppp- ppp-
p2p p • p p½ ppp-
p2p p •
pp pp pp
pp pp pp
½1 pp ½1 pp ½1 ppp ½1
pp pp p?
? ? ?
½
• ppppp-p1p p • p p ½ ppp-
p2p p • p p½ ppp-
p2p p •
(λx.y) Ω
siendo
Ω ≡ (λx.x x) (λx.x x)
Esta λE tiene dos redexes: uno interior (que es Ω) y otro exterior (que es toda
la expresión); si reducimos el exterior se obtiene y, mientras que si reducimos el
interior volvemos a obtener la misma expresión. Por consiguiente, en este caso
el orden de reducción es importante. ♣
EJEMPLO 2.2. Clasificando los redexes que aparecen en las siguientes λE:
• En la λE
interno
z }| {
(λx.x) a ((λx.x) b)
| {z }
interno
se han marcado dos redexes internos; el marcado por abajo es además el
redex de más a la izquierda.
• En la λE
interno
z }| {
(λy.((λz.z) x) y) a
| {z }
externo
se han marcado dos redexes: el marcado por arriba es interno, y el marcado
por abajo además de externo es el redex de más a la izquierda.
36 2. Formas normales
♣
Generalizando el resultado del ejemplo anterior se tiene el denominado teo-
rema de estandarización:
s
Si M ³ N , entonces también M ³ N
38 2. Formas normales
Lema 2.4
M ≡ λx1 x2 . . . xn .x M1 . . . Mm (n ≥ 0) ∧ (m ≥ 0)
M ≡ λx1 x2 . . . xn .(λx.M0 ) M1 . . . Mm (n ≥ 0) ∧ (m ≥ 1)
Ω ≡ (λx.x x) (λx.x x)
Lema 2.5
i c
(a) Cualquier reducción M → M 0 ³ N puede descomponerse en la forma:
M0
µ @ cs
¡
i¡ @
¡ R
@
Mpp N
ppp
ppp p p
µ ppp
cs p p p p p pp
p p p p p is
R 0p
N
c i
M ³ N0 ³ N
² ³ ¯
?
Mpp N2 Nn−1 N
ppp p p ppppp pp
ppp p
ppp p p p
µ p p p p . . . p p p
µ p ppp
ppp p ppp
pµ
p p p p p
cs p p p p p p p is cs p p p p p p p is cs p p p p p p p is
R ppp R ppp R ppp
N1 Nn
c i c i c i
M ³ N1 ³ N2 ³ · · · ³ Nn−1 ³ Nn ³ N
Mpp ³ -N
ppp p
ppp ppp
ppµ
cs p p p p p p p
R pp p p p is
Z
c i
M ³Z³N
40 2. Formas normales
Demostración:
Demostración:
(⇐) Trivial.
• Un término puede tener varias FNC; la reducción por la cabeza (que ter-
mina si admite al menos una FNC) proporciona la denominada FNC
canónica
• La λE
λx.x (I b)
está en FNC (pues no existe redex de cabecera); sin embargo no es una
FN y la reducción normal lo reducirı́a a λx.x b
• La λE
(λx.x x) (λx.x x)
no admite FNC ni tampoco FN (ya que toda FN es una FNC)
• La λE
λx.I x (I I)
admite como FNC tanto λx.x (I I) como λx.x I
• La λE
(λx.x x) I x (I a)
terminarı́a en x (I a) si utilizamos reducción por la cabeza, pero la re-
ducción estándar continuarı́a hasta obtener la expresión x a:
c s
(λx.x x) I x (I a) ³ x (I a) ³ xa
| {z }
fin cómputo si FNC
Teorema 2.7
c c
(0) M → M 0 ⇒ [z := N ]M → [z := N ]M 0
(1) λx.M tiene una FNC ⇒ M tiene una FNC
(2) M N tiene una FNC ⇒ M tiene una FNC
(3) [x := N ]M tiene una FNC ⇒ M tiene una FNC
λx.(λy.λx. + x y) x
cuyo único redex aparece subrayado. Al aplicar una β–reducción hay que tener
cuidado ya que al sustituir la x que aparece en negrita se obtiene un resultado
erróneo. ♣
El problema visto anteriormente se conoce como problema de duplicidad
del indentificador (name–capture problem); para resolverlo es necesario una
α–conversión, pero ¿puede evitarse dicha α–conversión en estos casos? Una
forma de resolver esto es con el concepto de DFNC donde la terminación del
proceso de reducción se produce al alcanzar una DFNC.
Los términos sin redexes externos son de la forma
λx.E o bien x E1 E2 . . . En (n ≥ 0)
λx.Ω xy
λx. ∗ 3 x = ∗3
donde por ejemplo, λx.I M no está en FNC pero si en DFNC, ya que no tiene
redexes externos. ♣
Una expresión que consista en una sola variable es, según la definición, una
DFNC; sin embargo, el resultado de un programa funcional no debe contener
variables libres (p.e., + x 1) y podemos limitarnos a DFNC cerradas.
Una ventaja (según [FH88]) de la reducción a una DFNC es que se evita la
β–reducción en presencia de variables libres.
EJEMPLO 2.8. (continuación) La expresión:
λx.(λy.λx. + x y) x
está en DFNC y no es necesario reducir el redex interno: solamente cuando tal
expresión es aplicada a un argumento debe reducirse por orden normal (el redex
externo de más a la izquierda) para obtener una DFNC; ası́, la λE:
(λx.(λy.λx. + x y) x) 4
no está en DFNC y se reduce a una DFNC por orden normal:
(λx.(λy.λx. + x y) x) 4 → (λy.λx. + x y) 4 → λx. + x 4
♣
Obsérvese que el problema de duplicidad del identificador ha desaparecido;
esto es ası́ porque solamente se reduce el redex externo, que no tiene variables
libres. La diferencia entre FNC y DFNC es solamente significativa cuando el
resultado es una abstracción; el problema de duplicidad del identificador puede
ocurrir al reducir una expresión a FNC.
Veremos después que al identificar todos los términos sin FNC se obtiene
una teorı́a consistente; luego si identificamos
Ω = λx.Ω
(es decir, si identificamos un término en DFNC con uno que no admite DFNC)
no se introducen inconsistencias.
Los términos en DFNC son los resultados en la evaluación perezosa; ası́, el
cómputo perezoso de λx.Ω termina mientras que el de Ω no termina; por tanto,
en un λC perezoso (por ejemplo, el propuesto en [Abr90]), como modelo de los
lenguajes funcionales perezosos, no es posible tal identificación.
Chapter 3
Teorı́a de combinadores
3.0 Combinadores
3.0.0 Los combinadores estándares
Vimos que al colocar una expresión M en el “hueco” [·] de un contexto C[·]
se obtiene una nueva λE denotada con C[M ] y ciertas variables libres de M
pueden quedar asociadas en C[M ]; por ejemplo, para la expresión M ≡ λx.yx,
con variable libre y y el contexto C[·] ≡ (λxy.[·])EF , tenemos:
C[λx.y x]
≡
((λxy.(λx.y x)) E) F
→β ! la x interior está asociada
(λy.(λx.y x)) F
→β
λx.F x
S = λxyz.x z (y z)
K = λxy.x
45
46 3. Teorı́a de combinadores
(i) I M = M
(ii) K M N = M
(iii) S M N L = M L (N L)
(iv) S K K = I
M ◦N ≡ λx.M (N x)
M0 ≡ I
M k+1 ≡ M ◦ Mk
2
1
En el ληC se tiene M = M :
M
≡
M ◦I
≡
λx.M (I x)
=β
λx.M x
=η
M
NOTACIÓN La notación para las potencias se complica ligeramente; ello
es debido a la no asociatividad (ver ejercicio 2.7); por ello conviene también
utilizar una notación para las expresiones de la forma
n
z }| {
AB ...B
AB ∼0 ≡ A
AB ∼n+1 ≡ (AB ∼n )B ≡ AB ∼n B
por lo que:
n
z }| {
B . . . B = IB ∼n 6= B n
♠
3.1. La teorı́a de combinadores 47
K2
≡
K◦K
=
λx.K (K x)
=
λx.K (λz.x)
=
λx.(λuy.u) (λz.x)
=
λxyz.x
y de la misma forma tenemos:
K = λx0 x1 . . . xn .x0
n
es decir, K es una función de n + 1 argumentos que aplicado a ellos toma el
primero. Entonces tenemos:
EJERCICIO 3.1. Probar que
K n A M 1 . . . Mn = A
2
3.1 La teorı́a de combinadores
La razón de llamar combinadores estándares a los combinadores K y S es que
toda λE cerrada (sin variables) puede traducirse a una expresión combinatoria
estándar (es decir, el conjunto {K, I} genera el conjunto Λ0 ); las expresiones
combinatorias son las expresiones que pueden escribirse al eliminar las abstrac-
ciones de la sintaxis del λC; es decir, al eliminar las construcciones λ − .−; una
expresión combinatoria es estándar si utiliza solamente los combinadores S y
K. El proceso de conversión de una abstracción a una expresión combinatoria
estándar produce una expresión extraordinariamente grande (incluso para λE
simples); se introducen entonces nuevas reglas de reducción de combinadores
para simplificarlas (algoritmos de Curry y Turner) ([Rev88] pp. 51–57, [Pey87]
pp. 265–274). Estas expresiones combinatorias fueron utilizadas para imple-
mentar el lenguaje Miranda y máquinas de reducción (la SKIM y la NORMA
(Normal Order Reduction Machine)).
3.1.0 Fundamentos de LC
La teorı́a LC (Combinatory Logic) es una teorı́a con igualdad formulada con
el alfabeto:
K, S dos constantes
x, y, . . . variables
=, (, )
48 3. Teorı́a de combinadores
{K, S} es un generador de C 0
M =N ⇒ (M P = N P ) ∧ (P M = P N )
3. K P Q = P
4. S P Q R = P R (Q R)
2
IP =P
µxy.y x
≡
µx.µy.y x
≡ ! [2] para µy.y x
µx.S (µy.y) (µy.x)
≡ ! [1] para µy.y, [2] para µy.x
µx.S I (K x)
≡ ! [2]
S (µx.S I) (µx.K x)
≡ ! [1], [2]
S (K (S I)) (S (µx.K) (µx.x))
≡ ! [1], [0]
S (K (S I)) (S (K K) I)
La relación binaria
w = { (K M N, M ), (S M N L, M L (N L)) | M, N, L ∈ C }
induce (por cierre reflexivo transitivo) conceptos de reducción →w y =w de
forma que se tiene M =w N ⇔ LC ` M = N , ası́ como también es cierto el
teorema de Church–Rosser, y LC es consistente.
50 3. Teorı́a de combinadores
νx.x ≡ I [0]
νx.P ≡ KP si P es una variable (6≡ x), K o S [1]
νx.P Q ≡ S (νx.P ) (νx.Q) [2]
S (K z) (K x) u = K (z x) u
=
((K z) u) ((K x) u) = zx
=
zx = zx
=
Cierto
de donde
S (K z) (K x) = K (z x)
♠
(·)λ : C → Λ
(·)LC : Λ → C
xλ ≡ x
Kλ ≡ K
Sλ ≡ S
(P Q)λ ≡ Pλ Qλ
xLC ≡ x
(M N )LC ≡ MLC NLC
(λx.M )LC ≡ µx.MLC
3.1. La teorı́a de combinadores 51
entonces se tiene:
λC ` MLC,λ = M
y además:
(LC ` P = Q) ⇒ Pλ = Qλ
El recı́proco del anterior no es cierto; por ejemplo,
λC ` S K = K I
ya que
SK
≡ ! definición de S
(λpqr.p r (q r)) K
= ! β–regla
λqr.K r (q r)
= ! definición de K
λqr.r
= ! definición de K y de I
KI
pero no es posible deducir en LC la igualdad S K = K I ya que en LC no
es aplicable la ξ–regla (ver [Bar84], p.157):
P =Q ⇒ µx.P = µx.Q
En efecto; tenemos:
LC ` I x = x
pero
LC 6` µx.I x = I
donde µx.I x ≡ S (K I) I
(λxy.f x y)LC
≡
µx.µy.f x y
≡
µx.S (µy.f x) (µy.y)
≡
µx.S (K (f x)) I
≡
S (µx.S (K (f x)) (µx.I)
≡
S (µx.S (K (f x)) (K I)
≡
52 3. Teorı́a de combinadores
(λxy.f x y)LC u v
= ! definición de (·)LC
(µxy.f x y) u v
= ! propiedad 3 anterior
f uv
y por tanto, si LC fuera extensional tendrı́amos
LC ` (λxy.f x y)LC = f
Obsérvese también que tenemos:
S (S (K S) (S (K K) (S (K f ) I))) (K I) u
=
(S (K S) (S (K K) (S (K f ) I))) u ((K I) u)
=
(((K S) u) (S (K K) (S (K f ) I)) u) I
=
S ((K K) u) (S (K f ) I) u) I
=
S (K ((K f ) u) (I u)) I
=
S (K (f u)) I
luego
(λxy.f x y)LC u = S (K (f u)) I
donde de nuevo quedan operaciones suspendidas; finalmente, si aplicamos a una
nueva variable v podemos “arrancar” nuevas reduciones
(λxy.f x y)LC u v
=
S (K (f u)) I v
=
K (f u) v (I v)
=
f uv
♣
3.1. La teorı́a de combinadores 53
• B⊆Y
• M, N ∈ Y ⇒ M N ∈Y
∀M.M ∈ Λ0 . (∃N.N ∈ B + .M = N )
2
Teorema 3.0 {K, S} ⊆ Λ es una base
XXX=K , X (X X) = S
µxy.f x y ≡ S (S (K S) (S (K K) (S (K f ) I))) (K I)
54 3. Teorı́a de combinadores
λC ` MLC,λ = M
LC ` P =Q ⇒ λC ` Pλ = Qλ
pero no necesariamente se tiene:
LC ` Mλ,LC = M
λC ` P =Q ⇒ LC ` PLC = QLC
• λC ` MLC,λ = M
• LC ∪ A ` Mλ,LC = M
• LC ∪ A ` P = Q ⇔ λC ` Pλ = Qλ
• λC ` P = Q ⇔ LC ∪ A ` PLC = QLC
(a) K = µxy.x
(b) S = µxyz.x z (y z)
(c) S (K P ) (K Q) = K (P Q)
(d) µx.K P Q = µx.P
(e) µx.S P Q R = µx.P R (Q R)
y por tanto las teorı́as LC ∪ext, λη, λC ∪ext y LC ∪Aβη son todas equivalentes.
Curry introduce dos nuevas constantes B y C, llamadas compositor y per-
mutador, que son las versiones abstractas de dos λ–términos:
B ≡ λf xy.f (x y) C ≡ λf xy.f y x
(a) S (K P ) (K Q) = K (P Q)
(b) S (K P ) I = P
(c) S (K P ) Q = B P Q
(d) S P (K Q) = C P Q
λx.4 x = 4
(λx.4 x)LC
≡
S (K 4) I
= ! por (b)
4
ϕ = λf.((λn.( = n 0) 1 (∗ n (f (− n 1)))
56 3. Teorı́a de combinadores
Teorema 3.2 (del punto fijo) Para cada F existe una expresión X tal que
F X=X
X
=
W W
=
(λx.F (x x)) W
=
F (W W )
=
F X
2
El teorema afirma que existe solución de la ecuación 3.2. Veamos ahora
cómo buscarla de forma general.
YF
≡
W W
=
F (W W )
=
F (Y F )
2
3.2. Puntos fijos 57
∗ 1 (Y ϕ 0)
→
∗ 1 (ϕ (Y ϕ) 0)
≡
∗ 1 (λf.((λn.(= n 0) 1 (∗ n (f (− n 1)))) (Y ϕ) 0
→
∗ 1 ((λn.(= n 0) 1 (∗ n (Y ϕ (− n 1)))) 0
→
∗11
→
1
En efecto:
TF
≡
AAF
→
F (A A F )
≡
F (T F )
En general
EJERCICIO 3.7. Dado un término M , probar que
es un cppf. 2
M es un cppf ⇔ M =GM
Demostración:
M
=η
λf.M f
=
λf.f (M f )
=
GM
2
Teorema 3.3 (Böhm–van der Mey) Los siguientes combinadores son cppf:
Y0 ≡ Y , Yn+1 ≡ Yn (S I)
G Yn+1
≡
G Yn (S I)
=
Yn (S I)
≡
Yn+1
2
Lambda definibilidad
cond C M N
≡
(λcpq.c p q) C M N
= ! β–regla tres veces
CM N
=β
M
61
62 4. Lambda definibilidad
yCF
≡
(λxy.x y F) C F
= ! β–regla dos veces
CFF
=
F
no C
≡
(λx.x F C) C
=
CFC
=
F
Suc Nk = Nk+1
2
4.1. Computabilidad y λ–definibilidad 63
Pred Nk+1 = Nk
2
Existen varios sistemas adecuados de numerales; veremos dos de ellos: el
estándar y el de Church.
[M ] ≡ M
[M, N ] ≡ λz.z M N
[M0 , . . . , Mn ] ≡ [M0 , [M1 , . . . , Mn ]]
2
d0e ≡ I
dn + 1e ≡ [F, dne] ≡ λz.z Fdne
2
Definimos entonces las funciones Suc, Pred y Cero:
S+ dne = dn + 1e
P− dn + 1e = dne
Cero d0e = C
Cero dn + 1e = F
2
Claramente el sistema de numerales estándar está determinado por la función
sucesor y por el primer valor d0e, por lo que podemos expresar N ≡ hd0e, S+ i
2
64 4. Lambda definibilidad
df (n)e ³ F dne
por el teorema de Chuch-Rosser, para obtener su valor (df (n)e) basta encontrar
(si existe) la forma normal de F dne.
de forma que
Sc+ ≡ λabc.b (a b c)
es una función sucesor; en efecto:
Sc+ cn
=
λbc.b (cn b c)
=
λbc.b bn c
=
cn+1
EJERCICIO 4.4.
1. Definir funciones
H −1
{ c0 , c1 , . . . } −→ { d0e, d1e, . . . }
H
{ c0 , c1 , . . . } ←− { d0e, d1e, . . . }
tales que:
H dne = cn H −1 cn = dne
vacia? (cons a b)
≡
(λx.x (λabcd.d)) (cons a b)
=β
cons a b (λabcd.d)
≡ ! definición de cons
(λabf.f a b) a b (λabcd.d)
= ! β–regla tres veces
(λabcd.d) a b
= ! β–regla dos veces
λcd.d
≡
F
4.2. Listas en el λC puro 67
cab (cons p q)
≡ ! definición de cab
(λx.x C) (cons p q)
=β
cons p q C
≡ ! definición de cons
(λabf.f a b) p q C
= ! β–regla tres veces
Cpq
≡ ! definición de C
(λxy.x) p q
= ! β–regla dos veces
p
cab [ ] →δ []
cab [A1 , . . . , An ] →δ A1 (n ≥ 1)
col [ ] →δ []
col [A1 , . . . , An ] →δ [A2 , . . . , An ] (n ≥ 1)
cons A [ ] →δ [A]
cons A [A1 , . . . , An ] →δ [A, A1 , . . . , An ]
vacia? [ ] →δ C
vacia? [A1 , . . . , An ] →δ F
Para ello es necesario definir la sustitución sobre listas (para esta sustitución uti-
lizamos {x := E} en lugar de [x := E] para evitar confusiones con los corchetes):
Sin embargo quizás sea más interesante, de cara a enriquecer las propiedades
funcionales de las listas, añadir dos nuevas reglas en la forma:
verifique las γ–reglas. Estas reglas tendrán una gran influencia en el concepto
de FNC para las listas.
EJERCICIO 4.7. Utilizando las γ–reglas, probar la interesante propiedad:
[A, B] ◦ h = [A ◦ h, B ◦ h]
donde ◦ es la composición:
M ◦N ≡ λx.M (N x)
2
EJERCICIO 4.8. Describir, en el λC extendido, las funciones AP LICA (a
lista), IN V IERT E y REDU CE (listas). 2
4.3 Autointerpretación en el λC
4.3.0 Un autointérprete para el λC
Si todas las funciones computables pueden ser descritas con un lenguaje
(teorema de Kleene), entonces una determinada función (computable) descrita
con el lenguaje deberá poder ser interpretada en el propio lenguaje; se habla
entonces de autointerpretación. Veamos un resumen de [Bar91], donde se expone
una demostración de tal posibilidad para el λC. El problema es el siguiente:
Obsérvese que la ecuación anterior no puede ser cierta para todos los términos,
ya que el número de variables libres de E dM e está acotado por el número de
variables libres de E, mientras que el de M no está acotado.
En efecto; sea
Mn ≡ λx1 • • • xn .[x1 , . . . , xn ]
entonces #Mn es computable y existe una función g recursiva tal que
g(n) = #M
F dne
= ! definición de F
E (G dne)
= ! g está λ–definida por G
E (g(n))
≡
E #Mn
= ! E es un autointérprete
λx1 • • • xn .[x1 , . . . , xn ]
F dne x1 • • • xn = [x1 , . . . , xn ]
2
Chapter 5
Solubilidad
5.0 Introducción
Existen términos que no tienen forma normal, como por ejemplo
Ω = (λx.x x) (λx.x x)
El concepto de cómputo (β–reducción) para tales términos no termina; en ese
caso, ¿qué se entiende por cómputo para tales términos?
Además, sabemos (ver ejercicio 2.6) que no podemos identificar los términos
sin forma normal ya que la teorı́a serı́a inconsistente; sin embargo, existen
términos sin forma normal que son distinguibles en cierto contexto.
EJEMPLO 5.0. Sean
M ≡ λx.x K A
N ≡ λx.x (K I) A
donde A no tiene forma normal; entonces M y N no tienen tienen forma normal;
sea ahora el contexto C[·] ≡ [·]K; entonces:
C[M ] C[N ]
≡ ≡
MK NK
= =
KKA K (K I) A
= =
K KI
y ya que K = 6 K I (ver ejercicio 2.8), tendremos que M K y N K son distin-
guibles, por lo cual M y N no se pueden identificar. ♣
Obsérvese que los términos M y N del ejemplo anterior están en FNC;
veremos que eso es equivalente a cierto concepto de solubilidad.
71
72 5. Solubilidad
Teorema 5.1
M N [x := N ]M λx.M
Demostración:
2. Tomando x ≡ x1 , se tiene:
M resoluble
⇔ ! por 5.1
∃N~ , P~ ⊆ Λ0 | (λx.M ) [xn := Nn ] . . . [x2 := N2 ]N1 P~ = I
⇔
∃N~ , P~ ⊆ Λ0 | [xn := Nn ] . . . [x2 := N2 ](λx.M ) N1 P~ = I
⇔
λx.M resoluble
Demostración:
~ = I, entonces M N
⇒: Si M N ~ tiene una FNC y por (2) también la tiene M .
74 5. Solubilidad
⇐: Si M tiene una forma normal, podemos suponer por (1) que M es cerrado:
M = λx1 x2 . . . xn .xi M1 . . . Mm
y por tanto, tenemos:
M (Km I)∼n = Km I M1∗ . . . Mm
∗
=I
por lo que M es resoluble (los Mi∗ son los Mi salvo sustituciones).
2
Definición 5.1 (FNC similares) Dos FNC son similares si tienen el mismo
número de variables instanciables, la misma variable en cabecera y el mismo
número de argumentos.
Semántica denotacional
6.0 Introducción
En el λC sin tipos los objetos pueden ser argumentos y funciones. En con-
secuencia, la semántica del λC sobre un modelo D (si preserva la composición)
debe ser tal que D sea isomorfo al conjunto de funciones DD . Por el teorema
de Cantor esto es imposible y Scott resuelve el problema buscando un modelo
D∞ (retı́culo completo) que es isomorfo a su espacio de funciones continuas
[D∞ → D∞ ] (para cierta topologı́a); este dominio sirve como modelo exten-
sional del λC.
En un modelo se pretende que las ecuaciones demostrables en el λC den
lugar a igualdades en el modelo; en ese caso se dice que el modelo es seguro
(soundness) o sólido. Esta propiedad la cumplen las λ–álgebras (álgebras com-
binatorias que cumplen los axiomas de Curry) con las cuales se puede trabajar
en forma ecuacional, y los λ–modelos (λ–álgebras con un axioma de extension-
alidad débil).
Otra categorı́a son los modelos sintácticos en los cuales la descripción del
significado de un λ–término viene dado por su forma sintáctica a través de una
interpretación sintáctica; estos modelos son útiles cuando se pretende obtener
directamente la intepretación.
75 2
76 6. Semántica denotacional
λx.A y (λxyz.yz) B u
x xA
M |= M = N
(a) El término puede contener variables libres, y en particular puede ser una
variable; ¿qué valor asociar a una variable?
(b) Conocidos el valor de dos términos M y N , ¿cuál es el valor del término
M N?
abc . . . f = (. . . ((ab)c) . . . )f
ρ : V ar → M
E = { ρ : V ar → M }
[x]ρ ≡ ρ x
I :T ×E →M
I(M, ρ) ≡ [M ]ρ ∈ M
[x]ρ = ρx
[ca ]ρ = a
[A B]ρ = [A]ρ [B]ρ
Además:
M, ρ |= A = B si [A]ρ = [B]ρ
M |= A = B si ∀ρ :: [A]ρ = [B]ρ
2
i = skk
k=s ⇒ a = s (k i) (k a) z = k (k i) (k a) z = (k i) z = i
y todos los términos son iguales (a i). A partir de ahora consideraremos sola-
mente álgebras combinatorias no triviales (i.e., con más de un elemento). Aún
ası́, tales álgebras combinatorias son “patológicas” en sentido estándar:
1. M no es commutativa
2. M no es asociativa
3. M es infinita
Teorema 6.1
2. (µx.A) x = A
3. (µ~x.A) ~x = A
τ :Λ→T λ:T →Λ
xτ = x xλ = x
cτ = c cλ = c
(M N )τ = Mτ Nτ (M N )λ = Mλ Nλ
(λx.M )τ = µx.Mτ Kλ = λxy.x
Sλ = λxyz.x z (y z)
∀A ∈ Λ :: Aτ,λ = A
(∀A : A ∈ T : Aτ,λ = A) ⇔ (Kλ,τ = K) ∧ (Sλ,τ = S)
Obsérvese, por el primero de los resultados anteriores, que también se tiene que
Kτ,λ = K y que Sτ,λ = S.
Ahora podemos definir la interpretación de λ–términos y su igualdad en M:
[A] = [Aτ ]
M |= A = B ⇔ M |= Aτ = Bτ
6.2.2 λ–álgebras
El proceso de cálculo en M induce un cálculo o reducción en T (M). Veamos
un
80 6. Semántica denotacional
♣
Luego parece claro que si podemos demostrar con el cálculo en M que
[A] = [B], los términos serán iguales en M (por definición); en consecuencia, se
identifica el proceso de cálculo en M con la reducción en T :
EJEMPLO 6.0. (continuación)
I x = S K K x = K x (K x) = x
♣
Veamos el proceso inverso:
(1) ∀A, B : A, B ∈ Λ : λC ` A = B ⇒ M |= A = B
(2) ∀A : A ∈ T : Aλ,τ = A
2
6.3 λ–modelos
6.3.0 Concepto y caracterización
De los resultados de la sección anterior se deduce que el λ–cálculo con
términos de T (M) no altera las igualdades en M. Pero esto no es cierto para
los λ–términos; es decir, no todo lo demostrable en el λC con λ–términos es
cierto en M, como podemos ver en el siguiente
EJEMPLO 6.2. Se tiene:
λC ` λz.(λx.x) z = λz.z
pero
(λz.(λx.x) z)λ ≡ S (K I) I ≡ 1I
6.3. λ–modelos 81
(λz.z)λ ≡ I
♣
El elemento 1 ≡ S (K I) juega un papel importante y verifica:
(0) 1 x y = x y
(1) 1 = λxy.x y; en particular 1 a = λy.a y
(2) 1 es un elemento unidad sobre las abstraciones; es decir:
∀A ∈ T :: 1 (λx.A) = λx.A
(3) 1 1 = 1
(4) Si M es extensional, entonces 1 = I
(5) 1 = I no es suficiente para que M sea extensional
(6) Si consideremos el axioma de Meyer–Scott:
(MS) (∀x :: a x = b x) ⇒ (1 a = 1 b)
entonces
M es extensional ⇔ 1=I ∧ MS
M es un λ–modelo ∧ 1 = I ⇔ M es extensional
Lema 6.1
Demostración:
∀x :: A = B
⇒ ! λC |= (λx.A) x = A, definición de λ–álgebra
∀x :: (λx.A) x = (λx.B) x
⇒ ! (MS)
1 (λx.A) = 1 (λx.B)
⇒ ! 1=I
λx.A = λx.B
(⇐) :
∀x :: a x = b x
⇒ ! por ser deb-ext
λx.a x = λx.b x
⇒ ! lema anterior
1a=1b
2
M =ω N ⇔ ω`M =N
con la operación:
((M )) • ((N )) = ((M N ))
Se tiene el siguiente teorema:
6.4. Modelos sintácticos 83
2. ω ` M = N ⇒ M |= M = N
5. M0 (ω) es un λ–modelo
Mi = hXi , •, ki , si i
Un homomorfismo ϕ entre M1 y M2
ϕ : M1 → M2
Lema 6.2
1. [x]ρ = ρx
2. [ca ]ρ = a
3. [A B]ρ = [A]ρ [B]ρ
4. [λx.P ]ρ • a = [P ]ρ(x:=a)
5. Si ρ = ρ0 sobre Φ[M ], entonces [M ]ρ = [M ]ρ0 2
λC ` M = N ⇒ M |= M = N
2
Definición 6.11 (λ–modelo sintáctico) Una estructura sintáctica M se dice
un λ–modelo sintáctico si se tiene:
o equivalentemente:
2
6.4. Modelos sintácticos 85
fM = fN ⇒ λx.M = λx.N en M
1. Si x 6∈ Φ[M ], entonces
∀d ∈ M :: [M ]ρ(x:=d) = [M ]ρ
∀d, e ∈ M :: [M ]ρ(x:=d)(y:=e) = [M ]ρ(y:=e)
Demostración:
1. Elemental.
2. Consideremos el predicado:
λC ` M = N ⇒ M |= M = N
(β) (λx.M ) N = {x := N }M
(ξ) M = N ⇒ λx.M = λx.N
[(λx.M ) N ]ρ
= ! propiedad 3 de interpretación sintáctica
[λx.M ]ρ [N ]ρ
= ! propiedad 4 de interpretación sintáctica
[M ]ρ(x:=[N ]ρ )
= ! apartado 2 del lema anterior
[{x := N }M ]ρ
2
Tenemos por todo ello que todo λ–modelo sintáctico es un λ–modelo, y que
toda λ–álgebra sintáctica es una λ–álgebra. A continuación vamos a ver cómo
construir modelos a partir de dominios reflexivos.
F ◦G=i G◦F =i
2
Para D puede tomarse, por ejemplo, D∞ .
Si D es reflexivo, se puede dotar a D de estructura aplicativa en la forma:
x·y = (F (x))(y)
6.5. Modelos sobre dominios reflexivos 87
que hace que tal estructura sea extensional; en efecto (escribimos xy en lugar
de x · y):
∀e :: de = d0 e
= ! definición de ·
∀e :: (F (d))(e) = (F (d0 ))(e)
⇒ ! definición de igualdad de funciones
F (d) = F (d0 )
⇒ ! aplicando G
G(F (d)) = G(F (d0 ))
⇒ ! G ◦ F es la función identidad
d = d0
1. [x]ρ = ρx
2. [ca ]ρ = a
3. [A B]ρ = [A]ρ · [B]ρ
4. [λx.P ]ρ = G(δd.[P ]ρ(x:=d) )
En primer lugar vamos a ver que está bien definida; es decir, que la apli-
cación:
δd.[P ]ρ(x:=d)
es continua (en la variable d). Ello se demuestra por inducción estructural
sobre M : si M es una variable, constante o de la forma M ≡ A B es trivial (por
hipótesis de inducción), mientras que si M ≡ λy.P entonces:
[λy.P ]ρ(x:=d) = G(δe.[P ]ρ(x:=d)(y:=e )
que es composición de una función continua (en la variable d) con la función G,
también continua.
Hemos de probar también que:
[λx.P ]ρ · a
= ! definición de interpretación
G(δd.[P ]ρ(x:=d) ) · a
= ! definición de ·
(F (G(δd.[P ]ρ(x:=d) )))(a)
= ! F ◦ G es la función identidad, δ–abstracción
[P ]ρ(x:=a)
Finalmente, veamos la de (a2):
∀a :: [M ]ρ(x:=a) = [N ]ρ(x:=a)
⇒ ! δ–abstracción
δa.[M ]ρ(x:=a) = δa.[N ]ρ(x:=a)
⇒ ! aplicando G
G(δa.[M ]ρ(x:=a) ) = G(δa.[N ]ρ(x:=a) )
⇒ ! definición de interpretación
[λx.M ]ρ = [λx.N ]ρ
2
λC ` M = N ⇒ M |= M = N
M ≡ λx. + x x N ≡ λx. ∗ 2 x
M ≤Λ N ⇔ (∀ρ :: [M ]ρ ≤ [N ]ρ )
M ≤Λ N
= ! definición de la relación ≤Λ
∀ρ :: [M ]ρ ≤D [N ]ρ
⇒ ! continuidad (y por tanto, monotonı́a)
∀ρ, A :: (F ([A]ρ ))([M ]ρ ) ≤D (F ([A]ρ ))([N ]ρ )
⇒ ! definición de ·
∀ρ, A :: [A]ρ · [M ]ρ ≤ [A]ρ · [N ]ρ
⇒ ! definición de interpretación
∀ρ, A :: [A M ]ρ ≤ [A N ]ρ
⇒ ! definición de ≤Λ
∀A :: A M ≤Λ A N
Demostración:
x=Kxy ≤ KIxy=y
x = I I (K x) y ≤ K I (K x) y = y
Demostración:
Ası́ pues, para los términos que admiten forma normal la igualdad en Λ
equivale a la igualdad en D y a la convertibilidad de ambos términos a la misma
forma normal por reducción normal.
Teniendo en cuenta las identificaciones de Λ en D, puede demostrarse el
siguiente:
• El λC es incompleto
• Si restringimos el λC a los términos con forma normal, entonces es com-
pleto
• Si se añade al λC el axioma:
(IRRES) M, N irresolubles ⇒ `M =N
[Ω] = ⊥
y en consecuencia:
[λx.Ω] = [Ω M ] =⊥
f (⊥) = ⊥
sin embargo
1 Esto es un abuso del lenguaje ya que el término “perezoso” se utiliza como una técnica
93
Part III
Apéndices
95
Bibliography
97