Você está na página 1de 105

El λ–cálculo (sin tipos y con tipos)

Blas Carlos Ruiz Jiménez†


Pablo Guerrero Garcı́a‡

†Dpto. de Lenguajes y Ciencias de la Computación


‡Dpto. de Matemática Aplicada

Universidad de Málaga
Pza. El Ejido s/n, 29013–Málaga, España

e–mails
blas@lcc.uma.es
pablito@lcc.uma.es

fax
†34–5–2131397
‡34–5–2132766

6th March 2002


ii
Contents

I El λ–cálculo sin tipos 1

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

2.4 Formas débil–normales . . . . . . . . . . . . . . . . . . . . . . . . 42

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

II El λ–cálculo con tipos 93

III Apéndices 95
vi CONTENTS
Prólogo

En la parte I presentamos un lenguaje simple llamado lambda cálculo (λC)


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
son a menudo descritos como un super λC o λC extendido; de hecho, los pro-
gramas funcionales pueden ser traducidos a esta notación.
El principal problema del λC como lenguaje funcional es la libertad para
combinar términos, ya que es un lenguaje sin tipos (type–free); una forma de
restringir tal libertad es con el λC con tipos, introducido también por Church
(1934) y Curry (1941). En la parte II nos ocuparemos del λC con tipos.

vii
viii CONTENTS
Part I

El λ–cálculo sin tipos

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:

• El sı́mbolo λ sirve para denotar funciones.


• El punto . se usa para separar el argumento (o variable instanciable)
del cuerpo de la función.
• En el λC se utiliza notación prefija.

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

Luego la aplicación en el λC se hace como en todos los lenguajes funcionales; si


aparecen varios argumentos convenimos en asociar por la izquierda (al igual que
en Haskell, donde la parcialización es implı́cita). De esta manera, las siguientes
λE son equivalentes sintácticamente:

λx.λy.λz.E x y z ≡ λx.(λy.(λz.E) x) y) z

Definición 0.0 (Lambda–expresión) La sintaxis BNF para las λE es (tomada


de [Bar84]):

U exp ::= cons — constante predefinida


| var — identificador de variable
| ( λ var . exp ) — λ–abstracción
| ( exp exp ) — aplicación

2
0.0. Sintaxis 5

NOTA Si prescindimos de las constantes se obtiene el λC puro; en el presente


apartado aparecen algunos ejemplos con constantes pero podemos prescindir de
ellos si se pretende estudiar un λC puro (siempre se dará un ejemplo alternativo
sin constantes). ♠
Si M y N son λE, la combinación (M N ) es una λE que se llama aplicación;
en la abstracción λx.E, x se llama la variable asociadora o ligadora (o
instanciable) y E se llama el cuerpo de la abstracción.

Convenio 0.0 Sobrecargamos el significado de ≡ (igualdad sintáctica) con:

• Los paréntesis más externos no se escriben.

• La abstracción es asociativa a la derecha:

λx1 x2 . . . xn .M ≡ λ~x.M ≡ λx1 .(λx2 .(. . . (λxn .M ) . . . ))

donde ~x ≡ x1 x2 . . . xn . Además, puede prescindirse del punto si va seguido


de un paréntesis abierto.

• La aplicación es asociativa a la izquierda:

M N1 N2 . . . Nn ≡ (. . . ((M N1 ) N2 ) . . . Nn )
4

EJEMPLO 0.2. Con el convenio anterior se tienen las igualdades sintácticas:

• Eliminación de paréntesis externos:

λx.(+ 2 x) ≡ ( λx.(+ 2 x) )
λx.x ≡ (λx.x)

• Asociatividad derecha para la abstracción:

λxy.y x ≡ λx.(λy.(y x))


λxy.y x ≡ λx(λy(y x))

• Asociatividad izquierda para la aplicación:

λ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

NOTACIÓN Algunos autores proponen una sintaxis alternativa para suprimir


el convenio de asociatividad (a izquierda para aplicaciones y a derecha para
cuerpos de λE); por ejemplo, [Rev88] propone la sintaxis alternativa

U exp ::= cons — constante predefinida


| var — identificador de variable
| λ var . exp — λ–abstracción
| ( exp ) exp — aplicación

de forma que escribe λx.λy.(y) x en lugar de λxy.y x; en [Rev88] se defiende tal


notación diciendo que es más fácil construir un analizador sintáctico ya que es
una gramática LL1; además, tal notación está mas cerca de una notación par-
cializada como la de Haskell. Es obvio que si prescindimos de tales convenios
de parentización la escritura será muy engorrosa y larga. Aquı́ se va a seguir la
notación de [Bar84]. ♠

0.1 Variables libres y asociadas


El ámbito de una variable en una abstracción λx.E se extiende a la derecha
tanto como sea posible (hasta el primer paréntesis no cerrado o hasta el final de
la expresión); una variable x en una expresión E se dice ligada o asociada
si aparece en el ámbito de una abstracción de variable instanciable x; en otro
caso se dice libre (ası́, una variable que aparezca en una expresión será o libre
o ligada; no tiene sentido hablar de libre o ligada si la variable no aparece en la
expresión).
EJEMPLO 0.3. Analizando las variables que aparecen en las λE siguientes,
se tiene que:

• 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).

Definición 0.1 (Conjunto de variables libres) Denotando con φ[E] el con-


junto de variables de E que aparecen en forma libre, éste se define inductiva-
mente en la forma
.
φ[x] = {x}
.
φ[λx.M ] = φ[M ] − {x}
.
φ[M N ] = φ[M ] ∪ φ[N ]
2
0.2. Subtérminos y contextos 7

EJEMPLO 0.4.

φ[λxy.x] = φ[λx(λy.x)] = φ[λy.x] − {x} = ∅


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).

0.2 Subtérminos y contextos


Definición 0.2 (Subtérmino) M es un subtérmino de N (M ⊆ N ) si M ∈
sub[N ], donde el conjunto sub[N ] formado por todos los subtérminos de N se
define inductivamente en la forma
.
sub[x] = {x}
.
sub[λx.N ] = λx.N ∪ sub[N ]
.
sub[M N ] = sub[M ] ∪ sub[N ]
2
Un contexto C[·] es una λE de la cual se extrae alguna sub-λE; es decir,
una λE con un “hueco”, por ejemplo

C[·] ≡ ((λx.λy.[·]) E) F

De forma precisa, tenemos la siguiente definición BNF:

Definición 0.3 (Contexto) La sintaxis BNF para los contextos es:

U contexto ::= [ · ] — hueco


| var — variable
| ( λ var . contexto )
| ( contexto contexto )

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

mientras que “colocando” M en el contexto C[·] ≡ λxy.[·] se tiene que:

φ[C[M ]] = φ[C[λx.y x]] = φ[λxy.(λx.y x)] = ∅


8 0. Lambda expresiones
Chapter 1

Semántica operacional

1.0 Evaluación de λ–expresiones


1.0.0 δ–reducción
La evaluación de una expresión se compone de pasos de reducción donde
cada uno de los pasos se obtiene por reescritura; ası́

e → e0 (e se reescribe en e0 )

Tal evaluación permite describir la semántica operacional de un lenguaje fun-


cional: partiendo de un estado inicial (expresión inicial) mediante un cómputo
(reescritura) se obtiene un estado final (expresión final).
Cada reducción de e reemplaza cierta subexpresión suya de acuerdo con
ciertas reglas; tales subexpresiones se llaman redexes (reducible expression).
Se considera finalizado el cómputo cuando ya no aparecen más redexes.
EJEMPLO 1.0. La expresión Haskell if 3>2 then 3-2 else 2-3 cuya
traducción al λC extendido es

CON D (> 3 2) (− 3 2) (− 2 3)

tiene 3 redexes:
> 32 − 32 − 23

Hay esencialmente dos tipos de reglas:

• Las reglas predefinidas, que son operaciones primitivas del lenguaje; en


particular las reglas para las constantes.
• Las reglas que vienen dadas según un programa.

9
10 1. Semántica operacional

Se llaman δ–reducciones las reducciones con reglas que transforman con-


stantes, y se describen con →δ (son predefinidas y caracterizan a las constantes).
EJEMPLO 1.1. La evaluación de la expresión
∗ (+ 1 2) (− 4 1)
puede dar lugar al siguiente cómputo
∗ (+ 1 2) (− 4 1)
→δ
∗ (+ 1 2) 3
→δ
∗33
→δ
9
Obsérvese que la expresión inicial tiene dos δ–redexes; podrı́amos haber evaluado
(transformado) la expresión anterior a partir del primer redex:
∗ (+ 1 2) (− 4 1)
→δ
∗ 3 (− 4 1)
→δ
∗33
→δ
9

El orden de evaluación es muy importante aunque en algunos casos el resul-
tado no depende de éste (en el sentido que más tarde precisaremos).
En Haskell tenemos las siguientes δ–reglas (predefinidas) para la condicional:
if True then e else e0 →δ e
if False then e else e0 →δ e0
De la misma forma se pueden definir reglas de reducción del tipo δ para ciertas
funciones predefinidas para el λC; ası́, la función condicional CON D (cierta
constante para el λC extendido) tiene las siguientes reglas de reducción:
CON D T RU E E F →δ E
CON D F ALSE E F →δ F

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

con lo cual una β–reducción equivale a una sustitución en el cuerpo de la ab-


stracción; la sustitución [x := u]E se lee “sustituir en E todas las apariciones
libres de x por u”.
La regla puede utilizarse también en el sentido opuesto:
(λx.E) u ←β [x := u]E
y en ese caso se llama una β–expansión. Si el sentido no se precisa se habla
de β–equivalencia:
(λx.E) u =β [x := u]E

NOTACIÓN En [Bar84] la sustitución se escribe


e[x := u]
sin embargo, [Dij89] utiliza
”x := u”.e
mientras que en [Rev88] se emplea
[u/x]e
Aquı́ utilizamos una variante de la notación de Dijkstra
[x := u]e
ya que enfatiza mejor el hecho de que una sustitución es un operador. ♠
En general la reducción de una λE produce otra λE; una cadena de reduc-
ciones se describe en forma simplificada con ³
EJEMPLO 1.2.
(i) (λx. ∗ x x) 2 →β ∗22 →δ 4
(λx. ∗ x x) 2 ³βδ 4

(ii) (λx.x y) (λz.z) →β (λz.z) y →β y


(λx.x y) (λz.z) ³β y

(iii) ((λx.λy. ∗ x y) 7) 8 →β (λy. ∗ 7 y) 8 →β ∗78 →δ 56


((λx.λy. ∗ x y) 7) 8 ³βδ 56

(iv) (λf.f 3) (λx. + x 1) →β (λx. + x 1) 3 →β +31 →δ 4


(λf.f 3) (λx. + x 1) ³βδ 4

1
La reducción ³βδ genera una relación =βδ de igualdad , que es una relación
de equivalencia (i.e., tiene las propiedades reflexiva, simétrica y transitiva); esta
equivalencia debe verificar entre otras cosas
A ³βδ B ⇒ A =βδ B
1 Escribimos =βδ ya que las reglas utilizadas son la β y las predefinidas
12 1. Semántica operacional

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:

u =βδ v ⇒ [F := u]E =βδ [F := v]E

Todos estos conceptos se pueden introducir para cualquier tipo de reducción.

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 ∈ Λ }
βδ = β∪δ
βη = β∪η
βηδ = β∪η∪δ

Definición 1.0 (Relación compatible) R es una relación compatible si


∀A, B, M, N ∈ Λ

(A, B) ∈ R ⇒ (M A, M B) ∈ R, (A N, B N ) ∈ R, (λx.A, λx.B) ∈ R

Definición 1.1 (Igualdad) Una igualdad (sustitutiva) es una relación de


equivalencia compatible. 2

Definición 1.2 (Reducción) Una reducción es una relación compatible, re-


flexiva y transitiva (no necesariamente simétrica). 2
Dada una relación R en Λ, a partir de ella se pueden definir de forma in-
ductiva las siguientes relaciones:

Definición 1.3 (Cierre compatible de una relación) →R es el cierre com-


patible de R o reducción en un paso, es decir, la mı́nima relación que
verifica los axiomas
(A, B) ∈ R A →R B A →R B A →R B
A →R B M A →R M B A N →R B N λx.A →R λx.B
2
1.1. Reducción en Λ 13

Definición 1.4 (Cierre reflexivo y transitivo de una relación) ³R es el


cierre reflexivo y transitivo de →R , es decir, la mı́nima relación que verifica
A →R B A ³R B B ³R C
A ³R B A ³R A A ³R C
2

Definición 1.5 (Equivalencia generada por una relación) =R es la (relación


de) equivalencia generada por ³R , es decir, la mı́nima relación verificando
A ³R B A =R B A =R B B =R C
A =R B B =R A A =R C
2
NOTACIÓN También suele utilizarse la siguiente notación:
=
• ½ para el cierre reflexivo de ½
• ½∗ para el cierre transitivo de ½
=
• ½∗ para el cierre reflexivo y transitivo de ½

Lema 1.0 Si ½≡½1 ∪ ½2 , entonces:


=∗ =∗ =∗
(½1 ∪ ½2 )∗ = ½

Demostración: EJERCICIO 1.0. Ayuda: probar


½a ⊆½b ∧ ½b transitiva ⇒ ½∗a ⊆½b
=
½a ⊆½b ∧ ½b reflexiva ⇒ ½a ⊆½b
2
Corolario 1.0
(³R1 ∪ ³R2 )∗ = ³R1 R2

Demostración: ver ejercicio anterior. 2


Lema 1.1 Para la relación →R (cierre compatible de R), se verifica: M →R N
si y sólo si existe un contexto C[·] tal que
(M ≡ C[P ]) ∧ (N ≡ C[Q]) ∧ ((P, Q) ∈ R)

Demostración: EJERCICIO 1.1. 2

Lema 1.2 Las relaciones →R , ³R , =R son todas compatibles, con lo cual ³R


es una reducción y además =R es una igualdad.

Demostración: EJERCICIO 1.2. (por inducción estructural) 2


14 1. Semántica operacional

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:

• Por ahora se distinguirá entre la igualdad =β generada por ³β y el “con-


structor” = de las fórmulas de la λ–teorı́a λC, pues para identificarlos
habrı́a que probar

M =β N ⇔ λC ` M = N

• La ξ–regla2 también se conoce como extensionalidad débil y viene a


decir que si M y N son iguales entonces tienen el mismo comportamiento
como funciones (como cuerpos de funciones).
• Algunos autores también añaden al λC la α–regla:

(α–regla) si y no aparece en M
λx.M = λy.[x := y]M

aunque nosotros la consideraremos una equivalencia sintáctica en lugar de


un axioma; ası́, podemos escribir λx.x ≡ λy.y. Además, es evidente que

M ≡N ⇒ M =N

De los axiomas de compatibilidad se deduce que al sustituir términos iguales


en un contexto se obtienen términos iguales; más precisamente:

Lema 1.3 Sea C[·] un contexto. Si M = N entonces C[M ] = C[N ]

Demostración: EJERCICIO 1.3. (por inducción estructural sobre C[·]) 2


2 Las denominaciones β–regla, ξ–regla, . . . , son por razones históricas
1.2. Sustituciones y α–equivalencias 15

Otras λ–teorı́as interesantes son:

• El λ–cálculo extensional o λη–teorı́a, que se obtiene al añadirle a λC


el axioma:
(η–regla)
λx.M x = M
• El λδ–cálculo o λ–teorı́a no pura, que se obtiene al añadirle al λC
algunas constantes y δ–reglas.

1.2 Sustituciones y α–equivalencias


1.2.0 Convenio de variables y concepto de sustitución
La sustitución de un β–redex puede plantear problemas si la λE contiene el
mismo identificador en dos abstracciones.
EJEMPLO 1.3. Una β–reducción para la λE
(λx.(λx.x) (+ 1 x)) 1
produce resultados erróneos si se sustituye la x de la λE interior (λx.x) (atención,
no la x como variable instanciable en (+ 1 x)); en efecto,
(λx.(λx.x) (+ 1 x)) 1
→β
[x := 1](λx.x) [x := 1](+ 1 x)
→β
(λx.1) (+ 1 1)
→δ
(λx.1) 2
→β
1
y en consecuencia, para la igualdad =βδ generada por ³βδ se tendrı́a:
(λx.(λx.x) (+ 1 x)) 1 =βδ 1
La reducción anterior tiene un error ya que la sustitución [x := 1]E debe enten-
derse “sustituir x por 1 en todas las ocurrencias de x como variable libre”. Ası́
pues tenemos la siguiente reducción correcta:
(λx.(λx.x) (+ 1 x)) 1
→β
[x := 1](λx.x) [x := 1](+ 1 x)
→β
(λx.x) (+ 1 1)
→δ
(λx.x) 2
→β
2

16 1. Semántica operacional

En general, la sustitución [x := u]e se debe interpretar como:

“sustituir x por u en todas las apariciones libres de x en e”

EJERCICIO 1.4. Probar que

λx.(λx. + ( − x 1)) x 3) 9 =βδ 11

EJEMPLO 1.4. Sea K ≡ λxy.x. Entonces 2

KM

(λxy.x) M
→β
(λy.M )

de donde se tendrı́a K M =β λy.M y en particular K y =β λy.y. Pero sabemos


que podemos identificar (K ≡)λxy.x ≡ λxz.x, de donde también tendremos

Ky
≡α
(λxz.x) y
→β
(λz.y)

y debe tenerse también K y =β λz.y; es decir:

(K y =β λz.y) ∧ (K y =β λy.y)

y por ser =β una igualdad,


λz.y =β λy.y
pero observamos que esto es inconsistente si =β es sustitutiva ya que se tendrá

λ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). ♣

EJEMPLO 1.5. Sea F ≡ λxy.y x. Entonces:

⇒ ! β–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)

se tiene que los dos siguientes enunciados son equivalentes:

• T es consistente (i.e., existe una igualdad M = N no demostrable)


• no existen M, N tales que T ` (M = N ) y T ` ¬(M = N )

como se demuestra en [Dav89] (pp. 122–123). Luego son equivalentes

• ∀M, N ∈ Λ : λC ` (M = N )
• El λC es inconsistente.

EJERCICIO 1.5. Probar que

xy=xx ⇒ [ ∀M, N ∈ Λ : λC ` (M = N ) ]

2
EJEMPLO 1.5. (continuación) El fallo en este ejemplo está en el paso

(λx(λy.y x)) y =β λy.y y

ya que la variable libre y externa queda asociada de forma “mágica” después de


la transformación; esto contiene una contradicción ya que dos términos iguales
deben tener las mismas variables libres, pero:

φ[(λxy.y x) y] = φ[λxy.y x] ∪ φ[y] = ∅ ∪ y = y

φ[λy.y y] = φ[y y] − y = ∅
18 1. Semántica operacional

que es contradictorio. Por tanto el paso anterior es erróneo.


Por otro lado, estamos identificando los términos α–equivalentes; en ese caso:

(λxy.y x) y =α (λxz.z x) y =β λz.z y


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:

Convenio 1.0 (Convenio sobre variables (CV)) Si una serie de λ–términos


y/o sustituciones (como [x := N ]) aparecen juntos en cierto contexto (de-
mostración, definición, formulación, . . . ), entonces todas las variables instan-
ciables de tales términos se considerarán distintas de las variables libres. 4

EJEMPLO 1.4. (continuación) Si tenemos K ≡ λxy.x, entonces en el término


(K y) debemos renombrar la variable y de K. ♣

EJEMPLO 1.5. (continuación) Si F ≡ λxy.y x y M ≡ y, al “calcular” (u


operar con) F M debemos renombrar la variable instanciable y de F (obsérvese
que la y de M no se puede renombrar porque es libre). ♣
Con este convenio es fácil definir por inducción estructural la sustitución
[x := N ]M :

Definición 1.6 (Sustitución) Teniendo en cuenta de una vez por todas el


convenio de variables, se define:

[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:

• [x := N ]M no es una λE pero se identifica sintácticamente con alguna


(como se muestra con el uso de ≡).

• El operador sustitución se entiende asociativo a la derecha:

[x := A][y := B]M ≡ [x := A]([y := B]M )

• En la cuarta regla no es necesario añadir “si (y 6≡ x) ∧ (y 6∈ φ[N ])” ya que


se usa el convenio de variables y tales condiciones son implı́citas.
1.2. Sustituciones y α–equivalencias 19

1.2.1 La sustitución frente a las relaciones en Λ


Lema 1.4 (Lema de sustitución) Las sustituciones verifican las siguientes
propiedades:
(S1) (x 6≡ y ∧ x 6∈ φ[L]) ⇒ [y := L][x := N ]M ≡ [x := [y := L]N ][y := L]M
(S2) M = N ⇒ [x := E]M = [x := E]N
(S3) E = F ⇒ [x := E]M = [x := F ]M

Demostración: (S1) Por inducción estructural sobre M :

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)

(S2) Por inducción sobre la estructura de la derivación M = N :


20 1. Semántica operacional

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

2. M = N es conclusión del axioma de compatibilidad


M0 = N0
Y M}0 = Y
| {z
0
| {zN}
M N
...
3. . . .

(S3) Por inducción estructural sobre M . 2


EJERCICIO 1.6. Completar la demostración del lema de sustitución. 2

Lema 1.5 Siendo R una relación en Λ:

A ³R B ⇒ [x := A]M ³R [x := B]M

Demostración: EJERCICIO 1.7. (por inducción estructural sobre M , uti-


lizando la compatibilidad de ³R ) 2

Lema 1.6 Siendo R una relación en Λ:

M ³R N 6⇒ [x := A]M ³R [x := A]N

Demostración: EJERCICIO 1.8. (búsquese un contraejemplo) 2

Definición 1.7 (Relación sustitutiva) Una relación R es sustitutiva si

∀M, N, A ∈ Λ : (M, N ) ∈ R ⇒ ( [x := A]M , [x := A]N ) ∈ R

2
1.2. Sustituciones y α–equivalencias 21

Lema 1.7 Si R es sustitutiva, también lo son →R , ³R y =R

Demostración: EJERCICIO 1.9. (por inducción estructural) 2


Teorema 1.0 β es sustitutiva.

Demostración: Si (M, N ) ∈ β, entonces existen términos P , Q tales que


M ≡ (λy.P ) Q N ≡ [y := Q]P
y tenemos que probar que ( [x := A]M , [x := A]N ) ∈ β; pero

( [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.

Demostración: Se concluye directamente del teorema 1.0 y del lema 1.7. 2


Teorema 1.1 En un λC puro, se tiene:
M =β N ⇔ λC ` M = N

Demostración: (⇐) Por inducción sobre la estructura de la derivación M = N :

1. Si M = N es conclusión de la β–regla

(λy.A) B = [y := B]A
| {z } | {z }
M N

entonces es trivial, ya que M →β N


2. Si M = N es conclusión del axioma de compatibilidad
M0 = N0
Y M}0 = Y
| {z
0
| {zN}
M N
entonces

λ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

(⇒) Basta probar que

M →β N ⇒ λC ` M = N
M ³β N ⇒ λC ` M = N

y por inducción sobre la estructura de la derivación M =β N (definición 1.5):

M =β N ⇒ λC ` M = N

2
EJERCICIO 1.10. Completar la demostración del teorema anterior. 2

NOTACIÓN La conclusión del teorema anterior es que la igualdad =β gen-


erada por ³β y la igualdad = generada por los axiomas de la definición 1.6 son
la misma; a partir de ahora se usará un mismo sı́mbolo = para ambas. ♠

1.3 Eta–conversión y extensionalidad


En el λC siempre se tiene:

(λ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

pero no pueden considerarse iguales salvo que se considere la η–regla:

(λx. + 1 x) = + 1


1.3. Eta–conversión y extensionalidad 23

Tal regla es en cierta forma equivalente a la regla de extensionalidad:

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

EJEMPLO 1.7. Sea la función parcial

CON D T RU E 3

Veamos que en el ληδ–cálculo tal función es igual a

λx.3

Ello lo podemos comprobar de dos formas:


24 1. Semántica operacional

• 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

• A través de la regla (ext):

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

2.0 El concepto de forma normal


Definición 2.0 (R–redex) Un término M se dice que es un R–redex si para
algún término N se tiene que M →R N . 2

Definición 2.1 (R–forma normal) Un término M se dice que está en R–


forma normal (R–FN) si no contiene ningún subtérmino que sea un R–redex.
Un término N se dice que es una R–FN de otro término M (equivale a decir
que M tiene a N como R–forma normal) si N está en R–FN y M =R N . 2

Lema 2.0 Siendo M un término que está en R–FN, entonces:

(1) no existe un término N tal que M →R N


(2) M ³R N ⇒ M ≡ N

donde →R es el cierre compatible y ³R el reflexivo.

Demostración:

(1) Se procederá por reducción al absurdo: supongamos que estando M en


R–FN, se tiene que M →R N ; entonces por el lema 1.1 existirı́an P , Q y
un contexto C[·] tales que

(M ≡ C[P ]) ∧ (N ≡ C[Q]) ∧ (P, Q) ∈ R

con lo cual el subtérmino P serı́a un R–redex (ya que (P, Q) ∈ R ⇒


P →R Q) y M no estarı́a en R–FN.
(2) Razonamos por inducción sobre la derivación M ³R N (ver definición
1.4, página 13):

25
26 2. Formas normales

– M ³R N no puede (por (1)) haber sido obtenida de


M →R N
M ³R N
– Si M ³R N ha sido obtenida de

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

EJERCICIO 2.0. Probar con un contraejemplo que


(∀N :: M ³R N ⇒ M ≡ N ) 6⇒ M está en R–FN
i.e., que la propiedad (2) del lema 2.0 no caracteriza a las formas normales. 2

Las formas normales se corresponden con la idea de “fin de cómputo” en los


lenguajes funcionales. Ası́ pues, el evaluador en un lenguaje funcional deberı́a
obedecer al esquema:

mientras existan redexes reducir uno de ellos

No todas las expresiones tienen forma normal; es decir, existen formas no


normales que no pueden reducirse a forma normal, como muestra el siguiente
EJEMPLO 2.0. Si D ≡ λy.y y, considérese la expresión Ω ≡ D D:
Ω ≡ (λy.y y) (λy.y y)
que no está en forma normal (ella misma es un β–redex) y se reduce directamente
según la β–regla (renombramos la variable de la función para más claridad):



(λ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

Es interesante observar que no podemos identificar los términos sin FN ya


que ello introduce inconsistencias (ver ejercicio 2.6). Por tanto, identificar todos
los términos que no terminan traerá problemas.

2.1 Confluencia
Interesa saber si las formas normales son únicas (salvo α–equivalencias).
Esto será consecuencia de la propiedad de confluencia.

Definición 2.2 (Propiedad del diamante) Sea → una relación en Λ; se


dice que → verifica la propiedad del diamante (lo cual se notará mediante
→ |= 3) si se tiene
∀M, P, Q : (M → P ) ∧ (M → Q) : ∃R :: (P → R) ∧ (Q → R)
o gráficamente:

M
¡ @
¡ @
ª
¡ R
@
P pp pQ
ppp
ppp p p ppp
p
ppp ppp
Rp
p pªp p
R
2

EJERCICIO 2.1. Probar que β 6|= 3 2

Definición 2.3 (Propiedad de confluencia o de Church–Rosser) Una relación


R se dice confluente o que tiene la propiedad de confluencia o también que
tiene la propiedad de Church–Rosser (lo cual se notará mediante R ∈ CR)
si la relación inducida ³R verifica la propiedad del diamante:
R ∈ CR ⇔R ³ |= 3
2

Lema 2.1 Si ½ |= 3 entonces ½∗ |= 3

Demostración: EJERCICIO 2.2. 2


Definición 2.4 (Propiedad débil de Church–Rosser) Una relación R se
dice que tiene la propiedad débil de Church–Rosser (lo cual se notará
mediante R |=d 3) si se tiene
∀M, P, Q : (M →R P ) ∧ (M →R Q) : ∃Z :: (P ³R Z) ∧ (Q ³R Z)
2
28 2. Formas normales

EJERCICIO 2.3. Probar que β |=d 3 2

Definición 2.5 (Propiedad fuertemente normalizante) Una relación R


se dice fuertemente normalizante (lo cual se notará mediante R ∈ SN ) si
toda reducción de la forma M ³R M 0 termina, es decir

∀M , 6 ∃{Mn }n≥0 (M0 ≡ M ) :: Mi →R Mi+1

Teorema 2.0 (Newman) Si R ∈ SN y R |=d 3, entonces R ∈ CR

Demostración: EJERCICIO 2.4. 2


Teorema 2.1 (Church–Rosser) Sea R ∈ CR; entonces:

M =R N ⇒ ∃Z :: (M ³R Z) ∧ (N ³R Z)

Demostración: por inducción sobre la estructura de la derivación M =R N


(definición 1.5):

• 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

y por la propiedad de confluencia tenemos que existe R verificando:

M L N
@ ¡ @ ¡
@ ¡ @ ¡
@
R ¡
ª R
@ ¡
ª
P pp pQ
ppp
ppp p p ppp
p
ppp ppp
Rp
p pªp p
R

y ahora basta aplicar la transitividad de ³R .


2

Corolario 2.0 Sea R ∈ CR; entonces:

(1) si N es una R–FN de M , entonces M ³R N


(2) si un término tiene forma normal, dicha forma normal es única (salvo
α–equivalencias)

Demostración:

(1) Si N es una R–FN de M , entonces por el teorema existe Z tal que

(M ³R Z) ∧ (N ³R Z)

y por estar N en R–FN se tiene (por el lema 2.0) que Z ≡ N ; luego


M ³R N
(2) Si N1 y N2 son dos R–FN de M entonces N1 =R N2 (=R M ), y por el
teorema existe Z tal que

(N1 ³R Z) ∧ (N2 ³R Z)

y de aquı́, por el lema 2.0, N1 ≡ Z ≡ N2 .


2

Teorema 2.2 Toda forma normal puede expresarse como:

λx1 x2 . . . xn .x M1 . . . Mm n, m ≥ 0

siendo M1 , . . . , Mm formas normales.

Demostración: puede verse en [Dav89] (pág. 164) y en [Bar84] (pág. 176


(8.3.18)). 2
30 2. Formas normales

Corolario 2.1 (Conjunto FN de formas normales) El conjunto FN de for-


mas normales puede definirse en forma inductiva de la manera siguiente:

(1) x ∈ F N
(2) si M1 , . . . , Mm ∈ F N entonces x M1 . . . Mm ∈ FN
(3) si M ∈ FN entonces λx.M ∈ FN

Es decir, FN es el menor conjunto verificando (1)–(3).

Demostración: siendo C el menor subconjunto de Λ verificando (1)–(3), hay que


probar:

• C ⊂ FN : es trivial que FN verifica (1)–(3)


• FN ⊂ C: basta probar (por inducción sobre A):

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

2.2 Los teoremas de Church–Rosser


El teorema 2.1 necesita que la relación en cuestión cumpla la propiedad CR. En
esta sección se consideran los teoremas de Church–Rosser, los cuales afirman
que tanto β como βη son CR y por tanto para dichas relaciones es aplicable el
teorema 2.1 y el corolario 2.0.
Las demostraciones originales (1936) eran muy complicadas y muchos teore-
mas y generalizaciones se han publicado en los últimos 50 años. Aquı́ daremos
la demostración expuesta en [Bar84] (esencialmente la de P. Martin Löf y W.
Tait), y para βη ∈ CR daremos un esbozo usando la técnica de Hindley–Rosen.

Teorema 2.3 (Church–Rosser, 1936) β ∈ CR

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

Entonces, por (e) y por el lema 2.1

³∗ |= 3

Por (a),
= ∗
(→β ) ⊆ ³∗ ⊆³β
=
y ya que (→β )∗ ≡³β tendremos ³∗ =³β . Luego todo consiste en encontrar
tal relación ³. Esto se verá en el siguiente lema. 2

Lema 2.2 Sea la relación ³ definida en forma inductiva como la mı́nima


relación verificando:

(1) M ³ M

 λx.M1 ³ λx.M2 ,
(2) (M1 ³ M2 ) ∧ (N1 ³ N2 ) ⇒ M1 N1 ³ M2 N2 ,

(λx.M1 ) N1 ³ [x := N2 ]M2

Entonces:
=
(a) →β ⊆³⊆³β

(b) (M1 ³ M2 ) ∧ (N1 ³ N2 ) ⇒ [x := N1 ]M1 ³ [x := N2 ]M2

(c) λx.M ³ N ⇒ ∃M 0 :: (N ≡ λx.M 0 ) ∧ (M ³ M 0 )


 

  L ≡ M2 N2 ,



 ∃M2 , N2 :: M1 ³ M2 ,

 

 N1 ³ N2

∨ 
(d) M1 N1 ³ L ⇒

 
 M1 ≡ λx.P1 ,

 

 L ≡ [x := N2 ]P2 ,

 ∃P1 , P2 , N2 ::

  1 ³ P2 ,
 P
 
N1 ³ N2

(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

con M ≡ N , entonces M ³ M por (1)

=
– 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.

(b) Por inducción estructural sobre derivaciones del tipo M1 ³ M2 .

(c) Por inducción estructural sobre derivaciones del tipo M ³ M 0 .

(d) Por inducción estructural sobre derivaciones del tipo M1 ³ M2 .

(e) Es suficiente probar que

∀M, P :: M ³ P : (∀Q :: M ³ Q ⇒ (∃R :: (P ³ R) ∧ (Q ³ R) ) )

y ello por inducción estructural sobre la derivación M ³ P (para más


detalles, véase [Bar84] (págs. 60–62)).
2

Corolario 2.2 El λ–cálculo es consistente

Demostración: procediendo por reducción al absurdo, supongamos que sea in-


consistente; entonces para cualesquiera λ–expresiones M y N se tiene que
M = N es un teorema; en particular, siendo M y N dos formas normales
tendremos
λC ` M = N
2.2. Los teoremas de Church–Rosser 33

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

Al extender el λC con ciertos axiomas (indeseables) se pueden introducir


inconsistencias, como se muestra en los siguientes ejercicios.

EJERCICIO 2.5. Probar que λC ∪ (K = S) es inconsistente, siendo

K ≡ λxy.x S ≡ λxyz.x z (y z)

EJERCICIO 2.6. Probar que λC ∪ F es inconsistente, siendo F el conjunto


de axiomas

F = { M = N | M, N ∈ Λ :: M, N no tienen F N }

EJERCICIO 2.7. Demostrar que la aplicación de λ–expresiones no es aso-


ciativa. 2

EJERCICIO 2.8. Probar que λC ∪ (K = (K I)) es inconsistente, siendo

K ≡ λxy.x I ≡ λx.x

Teorema 2.4 η ∈ CR

= ∗
Demostración: como se tiene que ³η = (→η ) , bastará con probar que
=
→η |= 3

para lo cual hay que demostrar


= = = =
∀M, P :: M →η P : (∀Q :: M →η Q ⇒ (∃R :: (P →η R) ∧ (Q→η R) ) )
=
por inducción estructural sobre la derivación M →η P (para más detalles, véase
[Bar84] (pág. 65)). 2
34 2. Formas normales

Lema 2.3 (Hindley–Rosen)

(1) Si dos relaciones ½1 y ½2 verifican 3


(½1 |= 3) ∧ (½2 |= 3)
y conmutan
½- 1
A Bp
pp
½2 pp ½2
pp
? p?
½p1p p
C ppppp- D

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) Para probarlo basta considerar un diagrama como el siguiente:

• ½- 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 •

(2) Se deduce directamente aplicando (1) ya que, por el corolario 1.0,



(³σ ∪ ³γ ) = ³σγ
2

Teorema 2.5 (Church–Rosser, 1936) βη ∈ CR

Demostración: se basa en aplicar el lema de Hindley–Rosen a β y η (luego


previamente habrı́a que demostrar que ³β y ³η son commutativas en el sentido
de (1)). 2

Corolario 2.3 El λη–cálculo es consistente

Demostración: EJERCICIO 2.9. 2


2.3. Formas normales por la cabeza 35

2.3 Formas normales por la cabeza

2.3.0 Órdenes de reducción


Hay ocasiones en las cuales la elección del siguiente redex a reducir es deter-
minante para la finalización del cómputo.
EJEMPLO 2.1. Se considera la λE

(λ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. ♣

El orden de reducción determina la elección del redex a reducir; para


identificar cuál será el redex elegido se usará la siguiente nomenclatura:

• El redex de más a la izquierda es aquél cuya λ (o cuya primitiva, si es


un δ–redex) aparece textualmente a la izquierda de cualquier otro redex
de la expresión.

• Un redex externo es aquél que no está contenido en otro redex.

• Un redex interno es aquél que no contiene otro redex.

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

Se distinguen dos importantes órdenes de reducción:


s
• El orden normal o estándar, que notaremos por ³, donde se reduce el
redex externo de más a la izquierda.
a
• El orden aplicativo, que notaremos por ³, donde se reduce el redex
interno de más a la izquierda.

EJEMPLO 2.1. (continuación) En la λ–expresión:


(λx.y) Ω
el seleccionado para la reducción estándar es la propia expresión, y en el orden
aplicativo se seleccionará el Ω. Según el teorema de Church–Rosser (para el λC
o para el ληC) si una expresión tiene FN ésta es única salvo α–equivalencias;
por tanto la forma normal en este caso es y y como se obtiene por la reducción
estándar, escribiremos:
s
(λx.y) Ω ³ y
Por otro lado, la reducción aplicativa produce una secuencia infinita de redexes:
a a
(λx.y) Ω ³ (λx.y) Ω ³ ...
y el cómputo no terminarı́a. ♣

2.3.1 El teorema de estandarización


Como el teorema de Church–Rosser afirma que si una expresión tiene FN
ésta es única salvo α–equivalencias, y dado que disponemos de diversos órdenes
de reducción, cabe preguntarse si habrá un orden de reducción que siempre nos
lleve a dicha FN.
EJEMPLO 2.3. Consideremos la siguiente reducción no estándar (sub-
rayamos el redex elegido):
λa.(λb.(λc.c) b b) d

λa.(λb.b b) d

λa.d d
con lo cual,
λa.(λb.(λc.c) b b) d ³ λa.d d
pero también observamos que siguiendo el orden normal o estándar
s
λa.(λb.(λc.c) b b) d ³ λa.d d
2.3. Formas normales por la cabeza 37


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

Aunque no veremos la demostración de este teorema si daremos un esbozo de


ésta. Para ello son necesarios los conceptos de redex de cabecera y de reducción
por la cabeza (head reduction); se usará la siguiente nomenclatura:

• Un término de la forma M N se denomina un término aplicación.


• Un término de la forma λx.M se denomina un término abstracción.

Lema 2.4

(a) Cada término es, o una variable, o un término aplicación o un término


abstracción.
(b) Cada término aplicación M es de la forma

M ≡ N1 N2 . . . Nn (n ≥ 2) ∧ (N1 no es una aplicación)

(c) Cada término abstracción M es de la forma

M ≡ λx1 x2 . . . xn .N (n ≥ 1) ∧ (N no es una abstracción)

(d) Cada término M :


– o bien es una forma normal por la cabeza (FNC):

M ≡ λx1 x2 . . . xn .x M1 . . . Mm (n ≥ 0) ∧ (m ≥ 0)

– o bien es β–reducible por la cabeza:

M ≡ λx1 x2 . . . xn .(λx.M0 ) M1 . . . Mm (n ≥ 0) ∧ (m ≥ 1)

donde al redex (λx.M0 ) M1 se le llama redex de cabecera.

Demostración: por inducción sobre la estructura de M . 2


Definición 2.6 Un término M se dice que admite FNC si existe un N en
FNC tal que M = N . 2
EJEMPLO 2.4. El término

Ω ≡ (λx.x x) (λx.x x)

es β–reducible por la cabeza (segunda opción con n = 0 y m = 1) y no admite


una FNC (su primer elemento es un redex). ♣
NOTACIÓN Si ∆ ∈ sub[M ] es el redex de cabecera de M , y N resulta de M
al contraer ∆, escribiremos:
c ∆
(M → N ) o bien M →N
2.3. Formas normales por la cabeza 39

para denotar la reducción en un paso del redex de cabecera, y denotaremos con


c cs
³ o bien →
c
el cierre reflexivo y transitivo de →. Si los redexes seleccionados son interiores
i
usaremos → para la reducción en un paso, y:
i is
³ o bien →

para su cierre reflexivo y transitivo. ♠

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

(b) Cualquier reducción M ³ N puede descomponerse en la forma:

² ³ ¯
?
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
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

(c) Cualquier reducción M ³ N puede descomponerse en la forma:

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:

(a) Puede encontrarse en [Bar91] (pág. 298).


(b) Inmediato por (a).
(c) Inmediato por (b) y (a).
2

Teorema 2.6 (Teorema de estandarización (Curry–Feys, 1958))


s
Si M ³ N , entonces también M ³ N

Demostración: por inducción sobre N utilizando (c) del lema anterior:


M ³ N1 N2 ≡ N ; M ³ λx.N 0 ≡ N
2
A la β–reducción reiterada del redex de cabecera se le denomina reducción
por la cabeza o reducción de cabecera. Obsérvese que:

• La reducción por la cabeza determina de forma única una secuencia de


términos (tal secuencia puede terminar o puede no terminar).
• En la reducción estándar está incluida, como previa, la reducción de
cabecera, pues utilizando (c) del lema anterior y el teorema de estandarización:
c i
M ³
| Z{z ³ } N
red. estándar

Como corolario del teorema de estandarización tenemos:

Corolario 2.4 M tiene FNC si y sólo si su reducción por la cabeza termina

Demostración:

(⇐) Trivial.

(⇒) Sea λ~x.y M~ una forma normal por la cabeza de M , donde ~x y M


~ son
secuencias. Por el teorema de Church–Rosser
∃Z :: ~
M ³ Z, Z ³ λ~x.y M
~ , donde Mi ³ Ni , con lo cual por el teorema
pero entonces Z ≡ λ~x.y N
de estandarización s
~
M ³ λ~x.y N
y es fácil construir a partir de ésta la reducción por la cabeza (que termi-
narı́a).
2
2.3. Formas normales por la cabeza 41

Existen diferencias importantes entre la reducción por la cabeza (que acaba


en una FNC) y la reducción estándar o normal (que acaba en una FN):

• Un término puede estar en FNC y no estar en FN

• Un término puede no tener ni FNC ni FN; existe una caracterización de


los términos con FNC que es la resolubilidad, como veremos más tarde
(teorema de Wadsworth).

• 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

EJEMPLO 2.5. Siendo I ≡ λz.z, se tiene que:

• 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

Además, obsérvese que la λE original también admite como FNC la ex-


presión x a, pues

(λx.x x) I x (I a) ³ IIxa → Ixa → xa

pero la FNC canónica (i.e., la obtenida por reducción por la cabeza) es la


expresión x (I a)

42 2. Formas normales

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

Demostración: EJERCICIO 2.10. 2

2.4 Formas débil–normales


EJEMPLO 2.6. Sea la expresión Haskell

(3+2) : cola unos where unos = 1 : unos

Dicha expresión no está en forma normal y su evaluación a forma normal no


termina. ♣
Es interesante en algunos casos no completar la evaluación para evitar los
casos de no terminación; las formas intermedias se llaman formas débil–
normales.
EJEMPLO 2.7. Sean las expresiones no normales
Ω ≡ (λx.x x) (λx.x x)
Θ ≡ λx.Ω
Σ ≡ (λx.Ω) u
Ψ ≡ λx. + x (+ 2 3)
en el caso de Ψ es evidente que podrı́a considerarse el proceso de evaluación del
cuerpo de la función como una técnica de optimización, y tendremos
Ψ → λx. + x 5
que es una forma normal. Si utilizamos el mismo criterio con Θ vemos que
Θ → λx.Ω = Θ → ...
y el proceso de optimización produce la no terminación; usando como criterio:

evaluar sólo los redexes de cabecera que existan o se produzcan

tenemos que la evaluación de Θ termina (de hecho deja la expresión anterior


como está ya que no existe redex de cabecera); se dice que Θ es una débil
forma normal por la cabeza (DFNC o también WHNF (weak–head normal
form)); sin embargo, tal evaluación débil por la cabeza no funciona con Σ, pues
Σ ≡ (λx.Ω) u → Ω → Ω → ...
y se dirá que Σ no admite una DFNC. ♣
2.4. Formas débil–normales 43

Las DFNC fueron introducidas por Wadsworth en 1976 y permiten, entre


otras cosas, distinguir ciertos cómputos que no terminan.
EJEMPLO 2.8. Sea ahora la λE:

λ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)

Si incluimos constantes y δ–reglas, las funciones parciales también son DFNC


ya que no tienen redexes externos (ni β–redexes ni δ–redexes).
EJEMPLO 2.9. Ası́, son DFNC los términos:

λx.Ω xy

pero Ω 6∈ DFN C. Además


λx. ∗ 3 x
está en DFNC, y si admitimos

λx. ∗ 3 x = ∗3

(que es una igualdad extensional) tenemos que ∗ 3 es una DFNC. ♣

Definición 2.7 (Débil–forma normal por la cabeza)

(1) Toda constante es una DFNC


(2) λx.E es una DFNC
(3) f E1 E2 . . . En es una DFNC si f es una constante o una función de
aridad k > n ≥ 0
2

La diferencia esencial entre FNC y DFNC es que en la segunda no se evalúan


las λ–abstracciones internas.
EJEMPLO 2.10. En la figura siguiente se clasifican cinco λ–expresiones:
44 2. Formas normales

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

Una λE sin variables libres es independiente de su contexto; tales expresiones se


llaman combinadores; la razón de tal denominación es que a partir de ellas y por
combinación se pueden obtener funciones de orden superior. Los combinadores,
descubiertos en los años 1920 por Schoenfinkel, fueron utilizados para eliminar
las variables de la lógica matemática; fueron redescubiertos por Curry, el cual
desarrolló toda una teorı́a basado en éstos. Existen dos combinadores especiales
S y K, definidos (salvo α–equiv.) en la forma:

S = λxyz.x z (y z)
K = λxy.x

que se llaman combinadores estándares. Las propiedades fundamentales de estos


combinadores se resumen en el siguiente lema, siendo I ≡ λx.x:

45
46 3. Teorı́a de combinadores

Lema 3.0 Se tienen las siguientes igualdades, ∀M, N, L ∈ Λ

(i) I M = M
(ii) K M N = M
(iii) S M N L = M L (N L)
(iv) S K K = I

Demostración: EJERCICIO 3.0. 2

3.0.1 Potencias y potencias de K


Definición 3.0 Se definen:

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

Barendregt utiliza la notación AB ∼n ; es decir:

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

Veamos en particular las potencias del combinador K. Tenemos:

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

donde utilizamos el mismo identificador para las constantes K y S de la teorı́a


LC y del λC ya que no debe haber confusión.
El conjunto C de LC–términos se define en forma inductiva:
x, y, · · · ∈ C
K, S ∈ C
P, Q ∈ C ⇒ (P Q) ∈ C
Las fórmulas son:
P =Q con P, Q ∈ C
El conjunto de variables libres de P , φ[P ], es simplemente el conjunto de vari-
ables de P (recuérdese que no existen abstracciones). Para “ahorrar” paréntesis
convenimos también la regla de asociación por la izquierda. Obsérvese que si
denotamos con C 0 el conjunto de términos cerrados (sin variables) entonces

{K, S} es un generador de C 0

Definición 3.1 La teorı́a LC viene dada por los axiomas:

1. = es una relación de equivalencia


2. = es compatible, es decir:

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

En lo que sigue, las igualdades se entienden en LC y las constantes K y S denotan


LC–términos constantes. Conviene introducir un nuevo sı́mbolo I definido en la
forma:
I ≡ SKK
Entonces, por los axiomas 3 y 4 tenemos:

IP =P

Con objeto de simplificar ciertos LC–términos conviene introducir una no-


tación parecida a las abstracciones del λC. Esto permitirá ver una relación entre
las teorı́as λC y LC. Se define
µx.P
por inducción estructural sobre P :
µx.x ≡ I [0]
µx.P ≡ KP si x 6∈ φ[P ] [1]
µx.P Q ≡ S (µx.P ) (µx.Q) [2]
3.1. La teorı́a de combinadores 49

y de forma análoga al λC, se define:


µx1 x2 . . . xn .P = µx1 .(µx2 . . . . (µxn .P ) . . . )
Ası́
µxy.y x ≡ S (K (S I)) (S (K K) I)
En efecto:

µ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)

EJERCICIO 3.2. Demostrar por inducción estructural las propiedades:

(1) φ[µx.P ] = φ[P ] − x


(2) (µx.P ) x = P
(3) (µx.P ) Q ≡ [x := Q]P
(4) si y 6∈ φ[Q], y 6≡ x, [y := Q](µx.P ) ≡ µx.[x := Q]P
(5) si y 6∈ φ[P ], µx.P ≡ µy.[x := y]P
2

Si se incluye la regla de extensionalidad


(P x = Q x) ∧ (x 6∈ φ[P Q]) ⇒ P =Q ext
entonces se puede aplicar la ξ–regla
P =Q ⇒ µx.P = µx.Q ξ–regla

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

NOTA Hay muchas formas de definir el concepto de abstración en LC; por


ejemplo podemos considerar un concepto de abstracción νx.M definido al igual
que µx.M , pero cambiando la regla [1]:

ν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]

NOTACIÓN En otros textos la aplicación νx.M en LC se suele escribir [x]M


(p. 276 de [FH88], o p. 52 de [Rev88]) ♠
En consecuencia:
νy.z x ≡ S (K z) (K x)
µy.z x ≡ K (z x)

Si el cálculo es extensional las dos definiciones coinciden (y esto es ası́ porque


la ξ–regla serı́a aplicable); ası́, por ejemplo tendremos:

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)

3.1.1 Relación entre λ–términos y términos combinatorios


Se puede establecer una correspondencia entre las teorı́as LC y λC (para
más detalles ver §7.3 en [Bar84]) estableciendo dos aplicaciones:

(·)λ : C → Λ
(·)LC : Λ → C

definidas en forma inductiva (denotamos (P )λ ≡ Pλ , (P )LC ≡ PLC ):

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

3.1.2 Reducción en forma perezosa


EJEMPLO 3.0. Sea f una constante. Calculemos (λxy.f x y)LC :

(λ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

S (S (µx.S) (µx.K (f x))) (K I)



S (S (K S) (S (µx.K) (µx.(f x)) (K I)

S (S (K S) (S (K K) (S (K f ) I))) (K I)
luego
(λxy.f x y)LC ≡ S (S (K S) (S (K K) (S (K f ) I))) (K I)
que es la representación combinatorial de f como aplicación parcial, donde se
observa que las reducciones quedan suspendidas ya que los términos aparecen
emparejados sin posibilidad de utilizar la reducción. Tenemos que:

(λ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

La discusión anterior permite intuir que una expresión combinatoria (como


versión “compilada” de una λE o programa funcional) se reduce en forma pere-
zosa.

3.1.3 Generadores y bases


La siguiente propiedad permite probar que el conjunto {K, S} ⊆ Λ0 es una
base en el siguiente sentido.

Definición 3.2 (Generador y base)

1. Dado un conjunto B, se define B + , términos generados por B, como el


menor subconjunto de Λ que contiene a B y es cerrado para la aplicación;
es decir, el menor Y ⊆ Λ verificando:

• B⊆Y
• M, N ∈ Y ⇒ M N ∈Y

2. B se dice una base de Λ si

∀M.M ∈ Λ0 . (∃N.N ∈ B + .M = N )
2
Teorema 3.0 {K, S} ⊆ Λ es una base

Demostración: Sea M ∈ Λ0 ; entonces MLC ∈ C 0 , por lo que MLC,λ ∈ {K, S}+ ;


pero por ser λC ` MLC,λ = M se tiene que M ∈ {K, S}+ 2
Teorema 3.1 Existe una base de Λ con un solo elemento X verificando

XXX=K , X (X X) = S

Demostración: EJERCICIO 3.3. 2

EJERCICIO 3.4. Probar que el elemento X ≡ λx.x (S (K K)) K es una


base. Ayuda: probar que X X X = K, y que X K = S 2

EJERCICIO 3.5. ¿Por qué son importantes las bases de Λ? 2

3.1.4 Equivalencia entre λC y LC


Volvamos de nuevo al problema de la reducción de combinadores; en el ejem-
plo 3.0 vimos la equivalencia

µxy.f x y ≡ S (S (K S) (S (K K) (S (K f ) I))) (K I)
54 3. Teorı́a de combinadores

pero, aplicando únicamente las reglas de reducción (igualdades) de LC no es


posible reducir el término anterior (serı́a una forma normal en LC).
Recuérdese también que se tiene:

λC ` MLC,λ = M
LC ` P =Q ⇒ λC ` Pλ = Qλ
pero no necesariamente se tiene:

LC ` Mλ,LC = M
λC ` P =Q ⇒ LC ` PLC = QLC

Sea A un conjunto de axiomas (igualdades) en LC; diremos que λC es equiv-


alente a LC ∪ A si se tiene:

• λC ` MLC,λ = M
• LC ∪ A ` Mλ,LC = M
• LC ∪ A ` P = Q ⇔ λC ` Pλ = Qλ
• λC ` P = Q ⇔ LC ∪ A ` PLC = QLC

Sea ahora A un conjunto de axiomas de forma que es posible probar en LC ∪ A


las siguientes propiedades:

(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)

entonces se tiene νx.M = µx.M y las teorı́as λC y LC ∪ A son equivalentes. El


problema es la elección del conjunto A de axiomas; por ejemplo, Curry introduce
el siguiente conjunto Aβ de axiomas:

(1) K = µxy.K x y (10 ) K = µxy.x


(2) S = µxyz.S x y z (20 ) S = µxyz.x z (y z)
(3) µxy.S (K x) (K y) = µxy.K (x y)
(4) µxy.S (S (K K) x) y = µxyz.x z
(5) µxyz.S (S (S (K S) x) y) z = µxyz.S (S x z) (S y z)

y se puede demostrar que LC ∪Aβ ` (a)−(e), y por tanto LC ∪Aβ es equivalente


a λC; también es fácil ver que LC ∪ ext ` Aβη donde Aβη es Aβ extendido con
el axioma:
(η) µx.S (K x) I = I
3.2. Puntos fijos 55

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

y a partir de éstas da reglas suficientes para la equivalencia con el λC extensional;


éstas son:

(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

Si consideramos un λC extensional con constantes tendremos:

λx.4 x = 4

y si trasladamos la expresión λx.4 x obtenemos:

(λx.4 x)LC

S (K 4) I
= ! por (b)
4

3.2 Puntos fijos


3.2.0 Expresando la recursión
Consideremos la siguiente definición de factorial:

F AC = λn.CON D (= n 0) 1 (∗ n (F AC (− n 1))) (3.0)

y puesto que CON D ≡ λxyz.x y x:

F AC = λn.(= n 0) 1 (∗ n (F AC (− n 1))) (3.1)

Tal definición es incorrecta en el λC ya que las funciones son anónimas y


no pueden referirse a sı́ mismas; para resolver tal problema podemos escribir el
miembro de la derecha como resultado de una β–reducción sobre una función ϕ
definida en la forma:

ϕ = λf.((λn.( = n 0) 1 (∗ n (f (− n 1)))
56 3. Teorı́a de combinadores

de forma que la ecuación 3.1 se escribe en la forma:


F ACT = ϕ F ACT (3.2)
es decir, F ACT es un punto fijo de la función ϕ; por otro lado vemos que la
solución a la ecuación 3.2 dependerá solamente de ϕ. Veamos una forma de
obtener la solución de tales ecuaciones:

Teorema 3.2 (del punto fijo) Para cada F existe una expresión X tal que
F X=X

Demostración: Sean W ≡ λx.F (x x), X ≡ W W ; tenemos

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.

3.2.1 Combinadores para puntos fijos


Definición 3.3 (Combinador para puntos fijos) Un término M es un com-
binador para puntos fijos (cppf) si
∀F . F ∈ Λ . M F = F (M F )
2
Se observa que, si M es un cppf, dada una F podemos obtener siempre un
punto fijo de F en la forma M F . El problema es, ¿existen tales combinadores?

Corolario 3.0 El combinador Y ≡ λf.(λx.f (x x)) (λx.f (x x)) es un cppf.

Demostración: Sea W ≡ λx.F (x x) el término del teorema; entonces:

YF

W W
=
F (W W )
=
F (Y F )
2
3.2. Puntos fijos 57

El combinador Y es llamado por Curry el combinador paradójico.


EJERCICIO 3.6. Analizar la siguiente paradoja de Curry; supongamos que
queremos definir un operador ⇒ (implicación) verificando:
(P ⇒ (P ⇒ Q)) ⇒ (P ⇒ Q)
P, P ⇒ Q ` Q (modus ponens)
Sea imp la versión prefija (parcializada) de ⇒ y sea:
N ≡ λx.imp x (imp x Q)
P ≡ YN
Probar que

(a) ∀Q :: P = imp P (imp P Q)


(b) P = C
(c) ∀Q :: Q = C (inconsistencia, e.d., paradoja)
2
El combinador Y resuelve el problema de la recursión antes planteado, ya que
la función factorial puede definirse en la forma:
F ACT = Yϕ
donde ϕ es
ϕ = λf.((λn.(= n 0) 1 (∗ n (f (− n 1)))
que es una definición no recursiva del factorial. Ası́ tenemos una técnica para
eliminar la recursión transformándola en iteración, pero tal iteración puede no
terminar (si las iteraciones no tienen forma normal).
Tal solución es acertada desde un punto de vista matemático; sin embargo,
debido a la ineficiencia de la implementación del combinador Y usando su λE,
la mayorı́a de las implementaciones proporcionan Y como un constructor con
la regla de reducción
Y F → F (Y F )
En efecto, tenemos la siguiente reducción:
F ACT 1

Yϕ1

ϕ (Y ϕ) 1

(λf.((λn.(= n 0) 1 (∗ n (f (− n 1)))) (Y ϕ) 1

((λn.(= n 0) 1 (∗ n (Y ϕ (− n 1)))) 1

∗ 1 (Y ϕ(− 1 1))))

58 3. Teorı́a de combinadores

∗ 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

Los puntos fijos de un término F no son necesariamente únicos; sin embargo,


el punto fijo Y F es el mı́nimo punto fijo de F en la teorı́a de dominios.
Otro ejemplo de cppf es el de Turing:

T=AA , donde A ≡ λxy.y (x x y)

En efecto:

TF

AAF

F (A A F )

F (T F )

En general
EJERCICIO 3.7. Dado un término M , probar que

YM ≡ λf.W W M , donde W ≡ λxz.f (x x z)

es un cppf. 2

Los siguientes resultados permiten obtener otros cppf:

Lema 3.1 Sea G ≡ S I = λyf.f (y f ). Entonces

M es un cppf ⇔ M =GM

Demostración:

(⇐) Si M = G M , entonces M F = G M F = F (M F ), con lo cual M es un


cppf.
3.2. Puntos fijos 59

(⇒) Si M es un cppf, entonces M f = f (M f ), con lo cual

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)

Demostración: Se prueba por inducción:

Caso base: Y0 ≡ Y es un cppf (como vimos antes)

Paso inductivo: Supongamos que Yn lo es; entonces, por el lema anterior


tenemos que:
Yn = G Yn
luego:

G Yn+1

G Yn (S I)
=
Yn (S I)

Yn+1
2

EJERCICIO 3.8. Probar que Y1 = T (el combinador de Turing) 2

EJERCICIO 3.9. Construir un término F tal que F x y = F y x F 2

EJERCICIO 3.10. Probar que Y I = Ω 2


60 3. Teorı́a de combinadores
Chapter 4

Lambda definibilidad

En la sintaxis del λC vista anteriormente consideramos un conjunto de con-


stantes correspondientes a una serie predefinida de funciones (con δ–reglas),
tales como +, 0, –1, cond, etc. En este apartado vamos a ver cómo pueden
definirse tales funciones en un λC puro.

4.0 Operaciones lógicas


4.0.0 Constantes y operaciones lógicas
Si definimos los combinadores
C = λxy.x
F = λxy.y
se tiene:
CP Q = P
FP Q = Q
(C es el combinador K anterior y K I ³ F) por lo que podemos definir el
combinador condicional cond
cond = λcpq.c p q
ya que cumple las reglas de reducción conocidas del si-entonces-sino; en efecto:

cond C M N

(λcpq.c p q) C M N
= ! β–regla tres veces
CM N

M

61
62 4. Lambda definibilidad

Los operadores no, y y o se definen en la forma:


no = λx.x F C
y = λxy.x y F
o = λxy.x C y
Ası́,

yCF

(λxy.x y F) C F
= ! β–regla dos veces
CFF
=
F

no C

(λx.x F C) C
=
CFC
=
F

EJERCICIO 4.0. Definir el operador xor. 2

EJERCICIO 4.1. Probar que y y o son commutativas y asociativas 2

EJERCICIO 4.2. ¿λC ` no no A = A? 2

4.1 Computabilidad y λ–definibilidad


4.1.0 Sistemas de numerales y numerales de Church
Definición 4.0 (Sistema de numerales) Un sistema N de numerales es una
terna N ≡ hN, Cero, Suci donde N es una sucesión de combinadores
N ≡ N0 , N1 , . . .
y Cero y Suc son dos términos (funciones) tales que
½
C , si N = N0
Cero N =
F , si N = N1 , N2 , . . .

Suc Nk = Nk+1
2
4.1. Computabilidad y λ–definibilidad 63

Definición 4.1 (Sistema adecuado de numerales) Un sistema de numerales


es adecuado si existe una función Pred (predecesor) tal que:

Pred Nk+1 = Nk

2
Existen varios sistemas adecuados de numerales; veremos dos de ellos: el
estándar y el de Church.

Definición 4.2 (Pares de Church) Se definen:

[M ] ≡ M
[M, N ] ≡ λz.z M N
[M0 , . . . , Mn ] ≡ [M0 , [M1 , . . . , Mn ]]
2

Definición 4.3 (Numerales estándar) Sean

d0e ≡ I
dn + 1e ≡ [F, dne] ≡ λz.z Fdne
2
Definimos entonces las funciones Suc, Pred y Cero:

S+ ≡ λx.[F, x] (función sucesor)


P− ≡ λx.x F (función predecesor)
Cero ≡ λx.x C (test cero)

EJERCICIO 4.3. Se verifican las siguientes propiedades:

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

4.1.1 Funciones λ–definibles y recursivas. Teorema de Kleene


Definición 4.4 (Función λ–definible) Una función numérica ϕ : Np → N
se dice λ–definible si existe un término F tal que

dϕ(n1 , . . . , np )e ³ F dn1 e . . . dnp e

2
64 4. Lambda definibilidad

NOTACIÓN Si denotamos con


n = n1 , . . . , np dne = dn1 e . . . dnp e
la definición anterior se escribe:
dϕ(n)e ³ F dne

Definición 4.5 (Funciones recursivas)

1. Las funciones iniciales son las funciones Uip , S + , Z, donde


Uip (n0 , . . . , np ) = ni
S + (n) = n+1
Z(n) = 0

2. Una clase de funciones numéricas C es cerrada para la composición


si contiene la composición de funciones de la clase, es decir, las funciones
de la forma:
χ(φ1 (n), . . . , φm (n)) ∈ C si χ, φ1 , . . . , φm ∈ C

3. Una clase de funciones numéricas C es cerrada para la recursión prim-


itiva si contiene a las funciones de la forma:
φ(0, n) = χ(n)
φ(k + 1, n) = ψ(φ(k, n), k, n) , para χ, ψ ∈ C

4. Una clase C es cerrada para la minimización si contiene las funciones


de la forma:
φ(n) = min { m | ϕ(n, m) = 0 } , con ϕ ∈ C

5. La clase R de las funciones recursivas es la menor clase cerrada para


la composición, recursión primitiva y minimización que contiene a las
funciones iniciales.
2

Teorema 4.0 (Kleene) La clase de funciones recursivas es la misma que la


clase de funciones λ–definibles.

Demostración: [Bar84], pág. 138 2

Corolario 4.0 Las funciones computables son λ–definibles.

Demostración: [Bar84], pág. 138 2

NOTA El recı́proco también es cierto, es decir, toda función λ–definible es


computable. ♠
4.1. Computabilidad y λ–definibilidad 65

El teorema de Kleene es la base de la evaluación de los programas funcionales;


ası́, dada una función computable f : N → N y su λ–término asociado F :

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.

4.1.2 Aritmética y Numerales de Church


Aunque es posible definir la aritmética con los numerales estándar, es más simple
hacerlo a través de los numerales de Church. Estos se definen en la forma:
c0 ≡ λf x.x
cn+1 ≡ λf x.f n+1 (x)

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

2. A través de las funciones anteriores, definir funciones test-cero y predecesor


(Ceroc y P− c ) para los numerales de Church.

3. Demostrar que los numerales de Church forman un sistema adecuado de


numerales.
2
66 4. Lambda definibilidad

EJERCICIO 4.5. [Rosser] Se consideran las siguientes funciones


+ ≡ λmnf x.m f (n f x) (suma)
× ≡ λmnf.m (n f ) ≡ λmn.m ◦ n (producto)
↑ ≡ λxy.y x (exponencial)
donde m ◦ n viene dado por la definición 3.0. Probar que con respecto a los
numerales de Church las funciones suma, multiplicación y potencia quedan λ–
definidas por +, × y ↑ 2

4.1.3 Extensión del λC con la aritmética


Por el teorema de Kleene se puede integrar la aritmética entera en el λC,
extendiendo éste con las constantes necesarias (los números, el test cero, las
funciones predecesor y sucesor, las operaciones aritméticas, etc.) y con unas δ–
reglas consistentes con la aritmética; es fácil probar que la βδ–reducción asociada
tiene la propiedad de Church–Rosser.

4.2 Listas en el λC puro


4.2.0 λ–definibilidad de las funciones básicas para listas
Sean las funciones:
cons ≡ λabf.f a b
vacia ≡ λxyz.y
vacia? ≡ λx.x (λabcd.d)
Entonces es fácil ver que:
vacia? vacia = C vacia? (cons a b) = F
Por ejemplo:

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

Podemos identificar cons con el constructor de listas y consideraremos las sigu-


ientes equivalencias sintácticas:
vacia ≡ []
cons a b ≡ a:b
[x1 , . . . , xn ] ≡ x1 : [x2 , . . . , xn ]
entonces es fácil ver que:
cab ≡ λx.x C col ≡ λx.x F
son funciones que extraen la cabeza y la cola de una lista:
cab (cons p q) = p col (cons p q) = q
Por ejemplo:

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

Ahora veamos cómo definir la función de concatenación. En principio, nues-


tra función deberá verificar la ecuación:
CON CA x y = vacia? x y (cons (cab x) (CON CA (col x) y))
y si procedemos a eliminar la recursión de la misma forma que hicimos con el
factorial, tendremos:
CON CA = Y (λf xy.vacia? x y (cons (cab x) (f (col x) y)))

EJERCICIO 4.6. Probar (haciendo las hipótesis necesarias) que la función


anterior CON CA tiene el mismo comportamiento que la función:
CON CA0 = Y (λf xy.lcaso x y (λcr.cons c (f r y)))
donde
lcaso vacia P Q →δ P
lcaso (cons M N ) P Q →δ QM N
2
68 4. Lambda definibilidad

4.2.1 Las listas en un λC con constantes


Consideremos ahora la extensión sintáctica del λC con las listas; podemos añadir
las δ–reglas para las constantes cab, col, cons y vacia?:

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

Como primera observación, puesto que en nuestro λC no se consideran tipos, la


expresión vacia? 3 tiene sentido y precisamente es una forma normal.
Al incluir las listas tendremos que incluir términos de la forma:

λx.[a, b] (λx.[x, q]) M (λxy.[x, y] a) [b, c, d]

y puede ser interesante considerar también ciertas reglas de reducción cuando


aparecen las listas en forma funcional. Por ejemplo, podrı́a ser interesante
trasladar la funcionalidad a las listas y ampliar el concepto de reducción, con lo
cual se tendrı́a por ejemplo:

(λx.[x, q]) M → [M, q]


(λxy.[x, y] P ) [b, c, d] = λy.[[b P, c P, d P ], y P ]

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):

{x := E}[A, B, . . . ] ≡ [{x := E}A, {x := E}B, . . . ]

y en ese caso tendremos una β–regla extendida:

(λx.[A, B, . . . ]) M →β [{x := M }A, {x := M }B, . . . ]

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:

λx.[A, B, . . . ] →γ [λx.A, λx.B, . . . ]


[A, B, . . . ] M →γ [A M, B M, . . . ]

Tales γ–reglas no son deducibles a través de un λC puro y, según ([Rev88],


p.66]), es poco probable que exista alguna otra representación de las listas que
4.3. Autointerpretación en el λC 69

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:

¿Existe una función I : Λ → Λ tal que IdM e = M ? ¿Es repre-


sentable tal función en el λC?

Podemos asignar a cada término M ∈ Λ un código interno dM e en la forma


siguiente: puesto que N×N es numerable, existe una biyección N×N → N (Can-
tor se encargó de definirla); sea ésta hn, mi. Suponiendo que las variables están
numeradas en la forma vi , entonces podemos definir el código de un término en
forma inductiva:
#vi = h0, ii
#(M N ) = h1, h#M, #N ii
#(λx.M ) = h2, h#x, #M i
Sea ahora dM e ≡ d#M e, la forma normal asociada al numeral de Church corre-
spondiente a #M . Un autointérprete es un λ–término E verificando, ∀M ∈ Λ0
E dM e = M

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.

Teorema 4.1 (Church, 1936) Existe un autointérprete para el λC

Demostración: (ver [Bar91]) 2


70 4. Lambda definibilidad

4.3.1 Aplicaciones de la autointerpretación


Usando un autointérprete es posible demostrar la existencia de términos sin
darlos explı́citamente; por ejemplo, existe un λ–término F tal que

F dne = λx1 • • • xn .[x1 , . . . , xn ]

En efecto; sea
Mn ≡ λx1 • • • xn .[x1 , . . . , xn ]
entonces #Mn es computable y existe una función g recursiva tal que

g(n) = #M

además, g es λ–definible, luego si g está λ–definida por G y E es un au-


tointérprete, entonces
F ≡ λn.E (G n)
es una solución

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 ]

EJERCICIO 4.9. Sea inv la función que invierte listas y sea V :

V = Y (λvn.Cero n inv (λLx.v (Pred n) (x : L))

probar que F ≡ (λn.V n vacia) verifica

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

5.1 Concepto y caracterización de la solubilidad


Definición 5.0 (Término resoluble)

1. Un término M ∈ Λ0 es resoluble si existen términos N1 ,. . . ,Nk tales que


M N 1 . . . Nk = I (5.0)
donde k puede ser cero (y en ese caso M = I).
2. Un término M ∈ Λ es resoluble si su cierre λ~x.M es resoluble.
3. Un término M ∈ Λ se dice irresoluble si no es resoluble.

NOTACIÓN La ecuación 5.0 anterior la escribiremos:


~
M N = I

Tenemos la equivalencia:
M resoluble ⇔ ~ :: M N
(∀X :: (∃N ~ = X))

~ = X se puede resolver para cada X y M .


Es decir, que la ecuación M N

Teorema 5.0 La irresolubilidad se conserva en las traslaciones entre λC y LC.

Demostración: página 177 de [Bar84]. 2

EJERCICIO 5.0. Probar que:

(a) K y S son resolubles


(b) Y es resoluble
(c) los numerales de Church y los estándar dne son resolubles
2
Obsérvese que todos los términos del ejercicio anterior admiten FNC. Veamos
ahora un par de teoremas de caracterización y una condición suficiente para la
resolubilidad de un término M ∈ Λ.

Teorema 5.1

1. Un término M ∈ Λ es resoluble si y sólo si existe una instancia M ∗ de M


~ ⊆ Λ0 tales que
y existen términos N
~ =I
M N

2. Un término M ∈ Λ es resoluble si y sólo si λx.M es resoluble (por lo que


en la definición de resolubilidad el orden de las variables en el cierre λ~x.M
es indistinto)
5.2. Interpretación computacional de la solubilidad 73

3. Si un término M ∈ Λ es irresoluble, entonces lo son también los términos:

M N [x := N ]M λx.M

Demostración:

~ tales que (λx1 x2 . . . xn .M ) N1 . . . Nm = I;


1. Por ser M resoluble, existen N
podemos considerar que los Ni son cerrados y que m > n (en otro caso, o
bien se añaden λs delante, o bien se añaden Is detrás). Ası́ tenemos:

[xn := Nn ] . . . [x1 := N1 ]M Nn+1 . . . Nm = I (5.1)


| {z }
M∗

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

3. Es evidente por (1) y (2).


2

5.2 Interpretación computacional de la solubili-


dad
Recordemos que, según el teorema 2.2,

(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

A partir de aquı́ es fácil demostrar el siguiente teorema:

Teorema 5.2 (Wadsworth, 1971)

M es resoluble ⇔ M tiene una FNC

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

Por lo tanto, Ω = (λx.x x) (λx.x x) no es resoluble al no tener una FNC.


En general, las formas normales son resolubles, y los términos irresolubles no
tienen forma normal.
Ası́, considerando la reducción por la cabeza como método de cómputo, la no
terminación es sinónimo de irresolubilidad; en este caso, si identificamos en un
mismo término todos los términos irresolubles se obtiene una teorı́a consistente
(ver páginas 411–413 de [Bar84]). El término que identifica todos los términos
irresolubles puede ser el indefinido (⊥), que es igual por ello a Ω. Por tanto,
tenemos:
U =⊥ ⇔ U irresoluble ⇔ U no tiene FNC ⇒ U no tiene FN

Aunque un término U irresoluble no tiene forma normal, dicho término en


cierto contexto sı́ puede tenerla:

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.

Teorema 5.3 Siendo U un término irresoluble, C[·] un contexto y M un término


arbitrario:

(a) Si C[U ] tiene FN, entonces C[M ] tiene la misma FN.


(b) Si C[U ] tiene FNC, entonces C[M ] tiene una FNC similar.

Demostración: Puede encontrarse en la página 374 de [Bar84] y en la página


173 de [Dav89]. 2

Finalmente, veamos otra interpretación computacional:


EJERCICIO 5.1. Demostrar que si P es irresoluble, lo son también P X y
P ◦X 2
Del resultado anterior se deduce que si un “programa” P no termina, no
termina ni su aplicación a algo ni su composición con algo. Es decir, si no
podemos dar información sobre una función (asociada al término irresoluble
P ), tampoco podemos dar información sobre la aplicación de dicha función a
un argumento; por otro lado, si un programa (función) no termina, cualquier
secuencia que comience con él tampoco lo hará.
Chapter 6

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.

6.1 Interpretación sobre un modelo aplicativo


Definición 6.0 (Conjunto de términos) Dado un conjunto M, el conjunto
T (M) de términos sobre M se define en forma inductiva:

x, y, · · · ∈ T (M) (variables ≡ V ar)


m∈M ⇒ cm ∈ T (M) (a cada m le asociamos
un sı́mbolo de constante)
A, B ∈ T (M) ⇒ (A B) ∈ T (M)

75 2
76 6. Semántica denotacional

Convenio 6.0 Escribimos T en lugar de T (M) si no hay confusión, los paréntesis


externos pueden quitarse, se utiliza la asociatividad por la izquierda, y denotare-
mos con A la constante ca asociada al elemento a ∈ M). 4
Podemos hablar también del conjunto Λ(M) de términos, entendiendo con
ello los λ–términos construidos a partir de las variables y las constantes de M:

λx.A y (λxyz.yz) B u

Es decir, Λ(M) = Λ(ca | a ∈ M) y se tiene T (M) ⊆ Λ(M).


Nos planteamos ahora el problema de definir el concepto de interpretación
en M de los objetos de T (M); es decir, asignar a términos tales como

x xA

valores de M; es decir queremos definir

M |= M = N

que se lee “los términos M y N tienen la misma interpretación en M” o también


“en M es demostrable que M = N ”. Existen dos problemas fundamentales:

(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?

El problema (b) es fácil de resolver si sobre M existe una operación binaria


denotada con •; es decir, M es una estructura aplicativa. Ası́, si [M ] y [N ] de-
notan los valores (significados o semántica) de los términos M y N , el significado
o valor de M N será [M ] • [N ]. En consecuencia, consideraremos estructuras
aplicativas (con una operación binaria).

Convenio 6.1 Escribimos ab en lugar de a • b, y utilizamos también la asocia-


tividad por la izquierda:

abc . . . f = (. . . ((ab)c) . . . )f

Ası́ pues, el significado de AB(CD) será ab(cd). 4


Dado un objeto a ∈ M se construye una función fa ≡ δx.ax definida como
fa (x) = ax; dos funciones fa y fb son iguales si ∀x :: ax = bx; nos interesa
identificar en ese caso los objetos a y b; esto no será posible en general por lo
que cuando ocurra diremos que M es extensional.
Veamos ahora el problema (a) de las variables. Desafortunadamente el valor
asociado a una variable v no puede darse de forma aislada, y por ello introduci-
mos el concepto de entorno.
6.1. Interpretación sobre un modelo aplicativo 77

Definición 6.1 (Entorno) Un entorno ρ será una aplicación:

ρ : V ar → M

siendo V ar el conjunto de identificadores de variables (o simplemente variables);


el conjunto de entornos lo denotamos con E:

E = { ρ : V ar → M }

El valor de una variable en un entorno será

[x]ρ ≡ ρ x

De esta forma se puede definir un concepto de igualdad en T (M) incluso en


presencia de variables libres. La función semántica es una aplicación:

I :T ×E →M
I(M, ρ) ≡ [M ]ρ ∈ M

definida a través de una interpretación:

Definición 6.2 (Interpretación de un término) La interpretación de un término


M ∈ T (M) en M bajo ρ es [M ]ρ , donde [ ] se define en forma inductiva:

[x]ρ = ρx
[ca ]ρ = a
[A B]ρ = [A]ρ [B]ρ

Además:
M, ρ |= A = B si [A]ρ = [B]ρ
M |= A = B si ∀ρ :: [A]ρ = [B]ρ
2

La notación M, ρ |= A = B se lee “A = B es cierto en M bajo ρ”, mientras


que M |= A = B se lee “A = B es cierto en M”. Obsérvese que:

• Si un término M no tiene variables, su valor [M ] es independiente del


entorno ρ. Ası́, si a = kab entonces [A] = a = kab = [K A B] y M |=
A = K A B.

• Cuando decimos “A = B es cierto en M” (o simplemente “A = B en M”)


queremos decir que M |= A = B; si no hay confusión escribimos [M ] en
lugar de [M ]ρ
78 6. Semántica denotacional

6.2 Álgebras combinatorias y λ–álgebras

6.2.0 Álgebras combinatorias


Sabemos que los λ–términos pueden simularse si existen dos sı́mbolos de
constantes K, S ∈ T , asociados a dos constantes particulares k, s ∈ M; tal
simulación puede hacerse si tales constantes verifican dos axiomas:
kab = a
sabc = a c (b c)

Definición 6.3 (Álgebra combinatoria) M es un álgebra combinatoria si


contiene dos elementos k y s tales que
kab = a
sabc = a c (b c)
2
En particular, el conjunto C de términos de la lógica combinatoria es T ({K, S}),
donde se considera el álgebra con únicos elementos k y s. Si definimos

i = skk

entonces ∀a :: ia = a. Es evidente que |M| > 1 ⇔ k 6= s, ya que

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:

Teorema 6.0 Si M es no trivial:

1. M no es commutativa
2. M no es asociativa
3. M es infinita

Demostración: EJERCICIO 6.0. 2

6.2.1 Interpretación de λ–términos con constantes


Sea M un álgebra combinatoria. Se definen las abstracciones µx.A ∈ T en
forma inductiva:
µx.x ≡ I
µx.A ≡ KA si x 6∈ Φ[A]
µx.P Q ≡ S (µx.P ) (µx.Q)
6.2. Álgebras combinatorias y λ–álgebras 79

y de la misma forma µxy . . . z.A = µx.(µy. . . . (µz.A) . . . ). Por ejemplo,

µx.x z ≡ S (µx.x) (µx.z) ≡ S I (K z)


µzx.x z ≡ µz.S I (K z) ≡ S (K (S I)) (S (K K) I)
µz.I z ≡ S (K I) I

Teorema 6.1

1. Φ(µx.A) = Φ[A] − {x}

2. (µx.A) x = A

3. (µ~x.A) ~x = A

Demostración: Por inducción estructural sobre A. 2

Hemos hablado de las interpretaciones de los términos de T (M); la sim-


ulación de los λ–términos en T permite considerar éstos como λ–términos y
viceversa vı́a dos funciones:

τ :Λ→T λ:T →Λ

definidas (escribimos Aτ = τ (A), Aλ = λ(A)):

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)

y puede probarse (por inducción estructural) que

∀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

EJEMPLO 6.0. Si K, S ∈ T corresponden a k y s, y se define I = S K K,


entonces se tiene
M |= I x = x
En efecto:

[I] = i = k s s [I x]ρ = [I] ρ x = i (ρ x) = ρ x = [x]ρ


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:

Definición 6.4 (λ–álgebra) Un álgebra combinatorio M se dice λ–álgebra si


(∀A, B ∈ T (M))
λC ` Aλ = Bλ ⇒ M |= A = B
2
EJERCICIO 6.1. Probar que M es un λ–algebra si y sólo si:

(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

donde 1 ≡ S (K I), no necesariamente tiene el mismo significado (valor) que

(λz.z)λ ≡ I


El elemento 1 ≡ S (K I) juega un papel importante y verifica:

Lema 6.0 Si M es un λ–álgebra, entonces en M se tiene:

(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

Demostración: EJERCICIO 6.2. 2

¿En qué casos la reducción en el λC conduce a igualdades en M? Si la


respuesta fuera sı́, la interpretación de los distintos λ–términos obtenidos du-
rante un λ–cómputo (conversiones) es constante (es decir, las reducciones no
alteran el valor en M (transparencia referencial)). Si ello ocurre, M se dirá un
λ–modelo.

Definición 6.5 (λ–modelo) Las λ–álgebras donde se verifica (MS) se llaman


λ–modelos. 2
Como consecuencia del apartado (6) del lema anterior se deduce:

M es un λ–modelo ∧ 1 = I ⇔ M es extensional

Definición 6.6 (Álgebra combinatoria débilmente extensional) Un álgebra


combinatoria M se dice débilmente extensional (deb-ext) si, ∀A, B ∈ T , se
tiene en M:
∀x :: A = B ⇒ λx.A = λx.B
2
82 6. Semántica denotacional

En un álgebra combinatoria deb-ext, si dos términos son iguales lo son


también como funciones. Además, se tiene el siguiente

Lema 6.1

M es un λ–modelo ⇔ M es un λ–álgebra deb-ext

Demostración:

(⇒) : Como sabemos que si M es extensional, entonces M es un λ–modelo y


1 = I, se tiene:

∀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

6.3.1 El modelo de términos


Sea ω una extensión consistente del λC (es decir, tal que ω 6` S = K). Es
fácil ver que la relación

M =ω N ⇔ ω`M =N

es una relación de equivalencia en Λ; si denotamos con ((M )) la clase de equiv-


alencia de M , y el conjunto cociente con Λ/ω, podemos construir dos álgebras
combinatorias llamadas modelos de términos:
M(ω) = hΛ/ω, •, ((K)), ((S))i
M0 (ω) = hΛ0 /ω, •, ((K)), ((S))i

con la operación:
((M )) • ((N )) = ((M N ))
Se tiene el siguiente teorema:
6.4. Modelos sintácticos 83

Teorema 6.2 Tomando M como M(ω) o bien como M0 (ω),

1. Φ[M ] = {x1 , . . . , xn } ∧ ρ xi = ((Pi )) ⇒ [M ]ρ = (([~x := P~ ]M ))

2. ω ` M = N ⇒ M |= M = N

3. M(ω) y M0 (ω) son λ–álgebras

4. M = M0 (ω) ∨ M y N son cerrados ⇒ ω ` M = N sii M |= M = N

5. M0 (ω) es un λ–modelo

6. En todo λ–modelo se tiene que λC ` M = N ⇔ M = N

Demostración: EJERCICIO 6.3. 2

EJERCICIO 6.4. Sean M1 y M2 dos álgebras combinatorias de la forma:

Mi = hXi , •, ki , si i

Un homomorfismo ϕ entre M1 y M2

ϕ : M1 → M2

es una aplicación ϕ : X1 → X2 que conserva las constantes (k y s) y la aplicación,


es decir:
ϕ(ab) = ϕ(a)ϕ(b)
ϕ(k1 ) = k2
ϕ(s1 ) = s2
Probar entonces que:

(a) Si M1 es un λ–álgebra, entonces también lo es M2

(b) Si M1 es un λ–modelo, entonces también lo es M2


2

6.4 Modelos sintácticos


Definición 6.7 (Entorno punteado) El entorno punteado ρ(x := a) es la
función:
½
ρ(y) , si y =
6 x
ρ(x := d)(y) =
d , si y = x
2
84 6. Semántica denotacional

Lema 6.2

1. [{x := B}A]ρ = [A]ρ(x:=[B]ρ)


2. (M |= A = B) ∧ (M = N ) ⇒ M |= {x := M }A = {x := N }B
3. ρ(x := d)(x := e) = ρ(x := e)
4. x 6= y ⇒ ρ(x := d)(y := e) = ρ(y := e)(x := d)

Demostración: (1) por inducción estructural, (2) se sigue fácilmente de (1), y


(3) y (4) son elementales. 2

Definición 6.8 (Interpretación sintáctica) Siendo M aplicativa, una in-


terpretación sintáctica sobre M es una aplicación
I : Λ(M) × E → M
I(M, ρ) ≡ [M ]ρ ∈ M
verificando:

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

Definición 6.9 (Estructura sintáctica) Siendo M aplicativa, M se dice una


estructura sintáctica si existe una interpretación sintáctica sobre M. 2

Definición 6.10 (λ–álgebra sintáctica) Una estructura sintáctica M se dice


una λ–álgebra sintáctica si se tiene:

λ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:

(ξ) M |= (∀x :: M = N ) ⇒ λx.M = λx.N

o equivalentemente:

(∀a :: [M ]ρ(x:=a) = [N ]ρ(x:=a) ) ⇒ [λx.M ]ρ = [λx.N ]ρ

2
6.4. Modelos sintácticos 85

Obsérvese la importancia de la propiedad (ξ); si se considera la función


fM : M → M descrita por δa.[M ]ρ(x:=a) , dicho axioma establece que

fM = fN ⇒ λx.M = λx.N en M

que se interpreta en la forma siguiente: si M = N en M, sus valores como


términos funcionales también coinciden, lo cual equivale a la extensionalidad
débil.

Lema 6.3 Sea M un λ–modelo sintáctico. Entonces:

1. Si x 6∈ Φ[M ], entonces

∀d ∈ M :: [M ]ρ(x:=d) = [M ]ρ
∀d, e ∈ M :: [M ]ρ(x:=d)(y:=e) = [M ]ρ(y:=e)

2. ∀ρ ∈ ξ :: [{x := N }M ]ρ = [M ]ρ(x:=[N ]ρ)

Demostración:

1. Elemental.
2. Consideremos el predicado:

ϕ(M, N ) ≡ ∀ρ :: [{x := N }M ]ρ = [M ]ρ(x:=[N ]ρ)

Vamos a demostrar sucesivamente:


(a) z 6∈ φ(M ) ⇒ ϕ(M, z)
(b) ϕ(M, N ) ⇒ ϕ(λy.M, N )
(c) ϕ(M, N )
Una vez demostrados (a) y (b), (c) se prueba por inducción estructural;
en efecto, por la definición de interpretación sintáctica se prueban direc-
tamente:
ϕ(x, N ) ∧ ϕ(ca , N )
mientras que

(ϕ(A, N ) ∧ ϕ(B, N )) ⇒ ϕ(A B, N )

se deduce de la propiedad (3) de las interpretaciones sintácticas. Final-


mente, el caso de las abstracciones se concluye directamente de (b). Queda
entonces probar (a) y (b):
• (a) se demuestra por inducción estructural
• (b) es fácil por los resultados anteriores y utilizando el axioma (ξ).
2
86 6. Semántica denotacional

Teorema 6.3 Sea M un λ–modelo sintáctico. Entonces,

λC ` M = N ⇒ M |= M = N

es decir, todo λ–modelo sintáctico es una λ–álgebra sintáctica.

Demostración: Basta demostrar que las reglas de la λ–teorı́a son ciertas en M;


ası́, habrá que demostrar, entre otras cosas, que en M se tienen:

(β) (λx.M ) N = {x := N }M
(ξ) M = N ⇒ λx.M = λx.N

ya que el resto de reglas (sustituiva, . . . ) son ciertas trivialmente. La ξ–regla


del λC se deduce directamente de ser λ–modelo. Veamos finalmente la β–regla;
para cada entorno ρ ∈ ξ:

[(λ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.

6.5 Modelos sobre dominios reflexivos


Definición 6.12 (Dominio reflexivo) Un dominio D es un dominio reflexivo
(es decir, isomorfo a [D → D]) si existen funciones F y G continuas
F G
D −→ [D → D] −→ D

tales que, siendo i la función identidad:

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

Teorema 6.4 Sea D un dominio reflexivo y (·) su estructura aplicativa; puede


definirse una interpretación [ ] sobre D tal que M = (D, ·, [ ]) sea un λ–modelo
sintáctico (en particular, un λ–modelo) extensional.

Demostración: Sea la interpretación:

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:

(a1) [ ] es una interpretación sintáctica


(a2) [ ] verifica la (ξ)–regla:
(ξ) M |= (∀x :: M = N ) ⇒ λx.M = λx.N
o equivalentemente:
(∀a :: [M ]ρ(x:=a) = [N ]ρ(x:=a) ) ⇒ [λx.M ]ρ = [λx.N ]ρ
88 6. Semántica denotacional

Para (a1) hemos de probar las condiciones (1)–(5) de la definición de inter-


pretación sintáctica; las tres primeras son triviales, la quinta se prueba por
inducción, y la demostración de la cuarta serı́a:

[λ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

6.6 Incompletitud de los λ–modelos


6.6.0 El teorema de Böhm
En todo λ–modelo (sintáctico) se tiene

λC ` M = N ⇒ M |= M = N

pero las igualdades en M no implican igualdades en el λC:


EJEMPLO 6.3. Teniendo que:

M ≡ λx. + x x N ≡ λx. ∗ 2 x

entonces M =M N pero no podemos reducir M a N . ♣


El ejemplo anterior ilustra el hecho de que el modelo es incompleto. La pre-
gunta que podemos hacernos es la siguiente: ¿bajo qué condiciones la igualdad
M =M N (en M) implica la igualdad M =β N (en Λ)? Veremos que esto
ocurre si M y N tienen ambos formas normales. Todo ello será consecuencia
del teorema de Böhm.
Identificamos los elementos de Λ con los correspondientes en D (es decir,
M ≡ [M ]ρ ); también identificamos los elementos de D como operadores y
operandos (es decir, D ≡ [D → D]), por lo que si no existe confusión escribimos
M N en lugar de (F (M ))(N ).
6.6. Incompletitud de los λ–modelos 89

La relación ≤D sobre D (escribiremos ≤ si no hay confusión) induce una


relación de orden en Λ:

M ≤Λ N ⇔ (∀ρ :: [M ]ρ ≤ [N ]ρ )

Tal relación es sustitutiva, es decir, si M ≤ N entonces C[M ] ≤ C[N ] para


cualquier contexto C[ ]. Esto último puede probarse utilizando la continuidad;
por ejemplo, para el caso de la aplicació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

Lema 6.4 Siendo K = λxy.x, I = λx.x, para la relación de orden definida


anteriormente se tiene:

1. K y K I son incomparables (como elementos de Λ)


2. I y K son incomparables

Demostración:

1. Si K ≤ K I se tendrı́a, para cualesquiera elementos x, y ∈ D:

x=Kxy ≤ KIxy=y

luego x ≤ y; de forma similar se prueba que y ≤ x, con lo cual x = y. De


ello se deduce que D tendrı́a un solo elemento, es decir, serı́a un modelo
trivial cuando sólo estamos considerando modelos no triviales.
2. Si I ≤ K entonces:

x = I I (K x) y ≤ K I (K x) y = y

y se procede de la misma forma que en el apartado anterior.


2

Definición 6.13 (Términos separables) Dos términos M y N son separa-


bles si existe un contexto C[ ] tal que C[M ] = I y C[N ] = K. 2
90 6. Semántica denotacional

Teorema 6.5 (Böhm) Si M y N tienen formas normales distintas, entonces


son separables.

Demostración: Puede verse en [Bar84]. 2

Corolario 6.0 Si M y N tienen formas normales distintas, entonces:

1. Si extendemos la igualdad (conversión) con el axioma M = N , entonces


la teorı́a es inconsistente
2. M y N son incomparables

Demostración:

1. Como M y N tienen formas normales distintas, por el teorema de Böhm


sabemos que son separables, es decir, que existe un contexto C[ ] tal que:
C[M ] = I C[N ] = K
de donde
C[M ] I (K X) Y = X C[N ] I (K X) Y = Y
y en caso de ser ` M = N se tendrı́a ∀X, Y :: ` X = Y , lo cual es una
inconsistencia con la suposición de que el modelo es no trivial.
2. Si M ≤ N , entonces se tendrı́a
I = C[M ] ≤ C[N ] = K
que sabemos que es falso por el segundo apartado del lema anterior.
2

NOTA Según el teorema de Church–Rosser, si M y N tienen FN distintas no


podemos probar la igualdad M = N por reducción. Por otra parte, el teorema
de Böhm es un resultado más fuerte: no solamente no es demostrable la igual-
dad, sino que al considerarla se introducen inconsistencias. ♠

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:

Teorema 6.6 Con respecto a los λ–modelos sintácticos:

• El λC es incompleto
• Si restringimos el λC a los términos con forma normal, entonces es com-
pleto

Demostración: Puede verse en [Bar84]. 2


6.6. Incompletitud de los λ–modelos 91

6.6.1 Resolubilidad y resultados de complitud


Teorema 6.7

• Si se añade al λC el axioma:

(IRRES) M, N irresolubles ⇒ `M =N

entonces la teorı́a resultante λ∗ = λ ∪ IRRES es consistente.


• Si U es irresoluble, entonces λ∗ ∪ (I = U ) es inconsistente.
• Si S es resoluble y U es irresoluble, entonces λ∗ ∪(S = U ) es inconsistente.
• M 6=D N si y sólo si λ∗ ∪ (M = N ) es inconsistente.

Demostración: EJERCICIO 6.5. 2

La teorı́a λ∗ es un modelo completo, aunque esto último tiene un problema:


que la irresolubilidad de términos es indecidible (es decir, no existe un algoritmo
para determinar cuando una igualdad es una instancia del axioma (IRRES)).
Para terminar veamos otros resultados de Wadsworth: si consideramos el
elemento ⊥ (mı́nimo) de D, éste será la interpretación del indefinido Ω (igual a
todos los términos irresolubles, es decir, sin FNC)

[Ω] = ⊥

y en consecuencia:
[λx.Ω] = [Ω M ] =⊥

Por otro lado, en D (como en todo dominio) se puede obtener un funcional


de puntos fijos para cada f ∈ D (identificada como elemento de [D → D]) dado
por:
Y(f ) = limf n (⊥)
y precisamente éste es la interpretación de Y, el combinador paradójico de
Curry:
[Y] = Y

Definición 6.14 (Función estricta)

• Se dice que una función de un argumento f : D → D es estricta si

f (⊥) = ⊥

• Se dice que una función de n argumentos f : Dn → D es estricta en su


i–ésimo argumento si

f (x1 , . . . , xi−1 , ⊥, xi+1 , . . . , xn ) = ⊥ 2


92 6. Semántica denotacional

La identificación “indefinido=no-terminación” tiene una interpretación so-


bre el modelo. Ası́, si identificamos la no terminanción con ⊥, un curioso ra-
zonamiento de Mycroft prueba que si f es estricta en su argumento i–ésimo,
entonces durante el cómputo de f (e1 , . . . , en ), si éste termina, hay que evaluar
necesariamente e; en efecto, si el cómputo termina entonces f (e1 , . . . , en ) >⊥,
de donde e >⊥; pero tal información es imposible si no se evalua e.
Si una función no es estricta se dice1 que es perezosa (lazy), ya que puede
computarse una llamada a ésta aunque algún argumento resulte indefinido. Las
funciones estrictas o no-estrictas en un lenguaje funcional deben interpretarse
en idéntica forma en el modelo; ası́, pues tendremos:

[∗ a b] = [a] × [b] , si [a], [b] 6=⊥


[∗ a b] = ⊥ , si [a] =⊥ o [b] =⊥

sin embargo

[if true a b] = [a] aunque [b] =⊥

1 Esto es un abuso del lenguaje ya que el término “perezoso” se utiliza como una técnica

de implementación para semánticas no estrictas.


Part II

El λ–cálculo con tipos

93
Part III

Apéndices

95
Bibliography

[Abr90] Samson Abramsky. The Lazy Lambda Calculus, capı́tulo 6,


páginas 100–200. Addison–Wesley, 1990. En [Tur90].
[Bar84] Henk Barendregt. The Lambda Calculus: Its Syntax and Semantics.
North-Holland, Segunda edición, 1984. Revisión de la primera edición
(1981).
[Bar91] Henk Barendregt. Self–interpretation in Lambda Calculus. Journal of
Functional Programming, 1(2):229–233, Abril 1991.
[Dav89] Ruth Davis. Truth, Deduction, and Computation: Logic and Seman-
tics for Computer Science. Computer Science Press, 1989.
[Dij89] Edger W. Dijkstra. A Discipline of Programming. Computer Science
Press, 1989.
[FH88] Anthony Field and Peter Harrison. Functional Programming.
Addison–Wesley, 1988.
[Ham95] Kevin Hammond, editor. Report on the Programming Language
Haskell, A Non-Strict Purely Functional Language, Version 1.3. In-
forme técnico, Universidad de Glasgow, Junio 1995.
[Pey87] Simon Peyton Jones The implementation of functional languages.
Prentice–Hall, 1987.
[Rev88] György Révész. Lambda-calculus, Combinators and Functional Pro-
gramming. Cambridge Tracts in Theoretical Computer Science, Cam-
bridge University Press, 1988.

[Tur90] David Turner, editor. Research Topics in Functional Programming.


Addison–Wesley, 1990.

97

Você também pode gostar