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

Documentos relacionados
Estructuras Algebraicas

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Tema 2: Teorema de estructura de los grupos abelianos finitamente generados.

Algoritmos y programas. Algoritmos y Estructuras de Datos I

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

b) Sea una relación de equivalencia en A y una operación en A. Decimos que y son compatibles si a b a c b c y c a c b para todo a, b, c A

Introducción a la Lógica

Terminaremos el capítulo con una breve referencia a la teoría de cardinales.

Conjuntos, relaciones y funciones Susana Puddu

Tema 2.- Formas Cuadráticas.

Espacios Vectoriales

Tema 2. Grupos. 3. El conjunto de matrices de orden 2 con coeficientes enteros (o reales) con la suma es un grupo conmutativo.

Expresiones regulares, gramáticas regulares

Semana 09 [1/28] Sucesiones. 29 de abril de Sucesiones

Capítulo 4. Lógica matemática. Continuar

Grupos libres. Presentaciones.

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo. Contenidos

Lenguajes y Gramáticas

Tema 3: Espacios vectoriales

Semana02[1/23] Conjuntos. 9 de marzo de Conjuntos

Análisis Matemático I: Numeros Reales y Complejos

Conjuntos y matrices. Sistemas de ecuaciones lineales

Espacios Vectoriales Asturias: Red de Universidades Virtuales Iberoamericanas 1

Grupos y Subgrupos El concepto de grupo Sea G un conjunto no vacío y sea G G G

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Polaridad. Tangentes. Estudio geométrico de cónicas y cuádricas

un conjunto cuyos elementos denominaremos vectores y denotaremos por es un espacio vectorial si verifica las siguientes propiedades:

Espacios vectoriales reales.

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

RESOLUCIÓN DE SISTEMAS MEDIANTE DETERMINANTES

ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Enteros

ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.

Espacios topológicos. 3.1 Espacio topológico

Capítulo 7. Espacios vectoriales. 7.1 Definición y ejemplos

Es trivial generalizar la definición al caso de varios conjuntos: A B C, etc.

May 4, 2012 CAPÍTULO 5: OPTIMIZACIÓN

Teorema del Valor Medio

Problemas de Espacios Vectoriales

TEMA 8.- NORMAS DE MATRICES Y

Ejercicios de Lógica Proposicional *

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Espacios vectoriales. Capítulo Espacios vectoriales y subespacios Preliminares

Matemáticas Discretas TC1003

MATE IV Serie Álgebra 2015/01/26 NOMENCLATURA ALGEBRAICA

Funciones de Clase C 1

- Fernando Sánchez - Departamento de Matemáticas - Universidad de Extremadura. Topología

Métodos directos para resolver sistemas de ecuaciones lineales

Expresiones Regulares y Derivadas Formales

Equivalencia Entre PDA y CFL

TEMA 2. ESPACIOS VECTORIALES

1. Convergencia en medida

Sistemas de Ecuaciones Lineales y Matrices

Funciones convexas Definición de función convexa. Tema 10

Espacios Vectoriales. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Espacios Vectoriales 1 / 21

UNIDAD II: TEORÍA DE CONJUNTOS 2.1. INTRODUCCIÓN

Anillo de polinomios con coeficientes en un cuerpo

Funciones integrables en R n

Introducción a los espacios vectoriales

Introducción a los números reales

UNIDAD 3. La derivada. Objetivos. Al terminar la unidad, el alumno:

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Alejandro Díaz-Caro. 16 de diciembre de 2007

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

Tema 1. Álgebra lineal. Matrices

Introducción. El uso de los símbolos en matemáticas.

UNIDAD 8 INECUACIONES. Objetivo general.

X = a 0 + a 1 m + a 2 m a r m r,

Capitulo IV - Inecuaciones

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Definición Dados dos números naturales m y n, una matriz de orden o dimensión m n es una tabla numérica rectangular con m filas y n columnas.

CONTINUIDAD DE FUNCIONES. SECCIONES A. Definición de función continua. B. Propiedades de las funciones continuas. C. Ejercicios propuestos.

Conjunto R 3 y operaciones lineales en R 3

Semana03[1/17] Funciones. 16 de marzo de Funciones

Gramáticas independientes del contexto AUTÓMATAS Y LENGUAJES FORMALES LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

520142: ALGEBRA y ALGEBRA LINEAL

Base y Dimensión de un Espacio Vectorial

3- Sistemas de Ecuaciones Lineales

1 NOCIONES BÁSICAS SOBRE CONJUNTOS. SÍMBOLOS.

3. Determinantes. Propiedades. Depto. de Álgebra, curso

Teoría de Lenguajes. Clase Teórica 7 Autómatas de Pila y Lenguajes Independientes del Contexto Primer cuartimestre 2014

Teoremas de Convergencia

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 7: Lunes 22 - Viernes 27 de Abril. Contenidos

IN Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0

Teoría de la Probabilidad Tema 2: Teorema de Extensión

El lenguaje C. 1. Identificadores, constantes y variables

1. Sucesiones y redes.

Algebra lineal y conjuntos convexos

Transformaciones lineales y matrices

Funciones reales de variable real

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

Más sobre las series geométricas. 1. Derivación de series geométricas elementales

Apéndice sobre ecuaciones diferenciales lineales

Bases Matemáticas para la Educación Primaria. Guía de Estudio. Tema 3: Números racionales. Parte I: Fracciones y razones Números racionales

Matemáticas 2º E.S.P.A. Pág.1 C.E.P.A. Plus Ultra. Logroño

MMAF: Espacios normados y espacios de Banach

4. Complementos sobre Problemas de Contorno para S.D.O. Lineales. 4. Complementos sobre Problemas de Contorno

AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO

APUNTES DE GEOMETRÍA ANALÍTICA

Dos matrices son iguales cuando tienen la misma dimensión y los elementos que ocupan el mismo lugar en ambas son iguales

Comentarios y erratas de menor importancia

Transcripción:

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 programas 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 λz.x Luego para introducir una igualdad en el λc (es decir, una teoría con igualdad) 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 escribe 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 traducir fácilmente los lenguajes con parcialización implícita); si es necesario especificar 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]): exp ::= cons constante predefinida var identificador de variable ( λ var. exp ) λ abstracción ( exp exp ) aplicación

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: λx 1 x 2... x n.m λ x.m λx 1.(λx 2.(... (λx n.m)... )) donde x x 1 x 2... x n. Además, puede prescindirse del punto si va seguido de un paréntesis abierto. La aplicación es asociativa a la izquierda: M N 1 N 2... N n (... ((M N 1 ) N 2 )... N n ) 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 λ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 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 parcializada 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. se tiene que: Analizando las variables que aparecen en las λe siguientes, 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 conjunto de variables de E que aparecen en forma libre, éste se define inductivamente en la forma. φ[x] = {x}. φ[λx.m] = φ[m] {x}. φ[m N] = φ[m] φ[n]

0.2. Subtérminos y contextos 7 EJEMPLO 0.4. φ[λxy.x] = φ[λx(λy.x)] = φ[λy.x] {x} = Denotaremos con Λ el conjunto de lambda expresiones y con Λ o 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] 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: contexto ::= [ ] hueco var variable ( λ var. contexto ) ( contexto contexto ) 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 e (e se reescribe en e ) Tal evaluación permite describir la semántica operacional de un lenguaje funcional: 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 COND (> 3 2) ( 3 2) ( 2 3) tiene 3 redexes: > 3 2 3 2 2 3 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 constantes, y se describen con δ (son predefinidas y caracterizan a las constantes). EJEMPLO 1.1. La evaluación de la expresión puede dar lugar al siguiente cómputo (+ 1 2) ( 4 1) (+ 1 2) ( 4 1) δ (+ 1 2) 3 δ 3 3 δ 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) δ 3 3 δ 9 El orden de evaluación es muy importante aunque en algunos casos el resultado 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 e δ e if False then e else e δ e 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: COND T RUE E F δ E COND 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 ocurrencias 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 abstracció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 sin embargo, [Dij89] utiliza mientras que en [Rev88] se emplea e[x := u] x := u.e [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 reducciones se describe en forma simplificada con EJEMPLO 1.2. (i) (λx. x x) 2 β 2 2 δ 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 β 7 8 δ 56 ((λx.λy. x y) 7) 8 βδ 56 (iv) (λf.f 3) (λx. + x 1) β (λx. + x 1) 3 β + 3 1 δ 4 (λf.f 3) (λx. + x 1) βδ 4 La reducción βδ genera una relación = βδ de igualdad 1, 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. Definición 1.2 (Reducción) Una reducción es una relación compatible, reflexiva y transitiva (no necesariamente simétrica). Dada una relación R en Λ, a partir de ella se pueden definir de forma inductiva las siguientes relaciones: Definición 1.3 (Cierre compatible de una relación) R es el cierre compatible 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 M A R M B A R B A N R B N A R B λx.a R λx.b

a b b reflexiva = a b 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 A R A A R B B R C A R C 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 A A = R B B = R C A = R C 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 Corolario 1.0 Demostración: ver ejercicio anterior. ( R1 R2 ) = R1 R 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. 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)

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 = M M = N N = M M = N N = P M = P Axiomas de compatibilidad: β regla: M = N Y M = Y N M = N M X = N X M = N (ξ regla) λx.m = λx.n (λ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 constructor = de las fórmulas de la λ teoría λc, pues para identificarlos habría que probar M = β N λc M = N La ξ regla 2 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) λx.m = λy.[x := y]m si y no aparece en 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 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 entenderse 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 EJEMPLO 1.4. λx.(λx. + ( x 1)) x 3) 9 = βδ 11 Sea K λxy.x. Entonces β K M (λ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 α β K y (λ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 y x ((λx(λy.y x)) y) x = β! β regla (λy.y y) x = β! β regla x x luego debe darse: x y = x x 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 x y = x x [ M, N Λ : λc (M = N) ] 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 (demostración, definición, formulación,... ), entonces todas las variables instanciables de tales términos se considerarán distintas de las variables libres. 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: Obsérvese que: [x := N]x N [x := N]y y si x y [x := N](P Q) [x := N]P [x := N]Q [x := N](λy.P ) λy.[x := N] [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 x) (y φ[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 y x φ[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 y [x := [y := L]N][y := L]x M y, con x y (trivial) M z, con z x z 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 }{{} M = [y := B]A }{{} 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 x y φ[e] [x := E][y := B]A [x := E]N 2. M = N es conclusión del axioma de compatibilidad... 3.... Y M }{{} M M = N = Y N }{{} N (S3) Por inducción estructural sobre M. EJERCICIO 1.6. Completar la demostración del lema de sustitución. Lema 1.5 Siendo R una relación en Λ: A R B [x := A]M R [x := B]M (por inducción estructural sobre M, uti- Demostración: EJERCICIO 1.7. lizando la compatibilidad de R ) Lema 1.6 Siendo R una relación en Λ: M R N [x := A]M R [x := A]N Demostración: EJERCICIO 1.8. (búsquese un contraejemplo) 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

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) 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. Corolario 1.1 Las relaciones β, β y = β son sustitutivas. Demostración: Se concluye directamente del teorema 1.0 y del lema 1.7. 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 }{{} M entonces es trivial, ya que M β N = [y := B]A }{{} N 2. Si M = N es conclusión del axioma de compatibilidad 3.... entonces λc M = N Hipótesis de inducción M = β N Lema 1.2 Y M = Y N M = β N Y M }{{} M M = N = Y N }{{} N

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 EJERCICIO 1.10. Completar la demostración del teorema anterior. NOTACIÓN La conclusión del teorema anterior es que la igualdad = β generada 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 x 1 x 2... x n ) siendo [ x := N] [x n := N]... [x 1 := 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: (ext) M x = N x M = N si x φ[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 extensionalidad. 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: X Λ M = N M X = N X Teorema 1.2 (Curry, 1941) λc (ext) es equivalente a λη Demostración: 1. λc (ext) λη x φ[m]! β regla (λx.m x) x = M x! regla ext λx.m x = M que es la η regla. 2. λη λc (ext) (x φ[m N]) (M x = N x)! ξ regla λx.m x = λx.n x! η regla M = N de donde λη (ext). EJEMPLO 1.7. Sea la función parcial COND T RUE 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: COND T RUE 3 =! η regla λx.cond T RUE 3 x =! δ regla para COND λx.3 A través de la regla (ext): T RUE =! Reflexividad de = 3 = 3 =! β regla 3 = (λx.3) y =! δ regla para COND COND T RUE 3 y = (λx.3) y! regla (ext) COND T RUE 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. 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. 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 Si M R N ha sido obtenida de entonces M N Si M R N ha sido obtenida de EJERCICIO 2.0. M R N M R N M R M N 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 Probar con un contraejemplo que ( N :: M R N M N) M está en R FN i.e., que la propiedad (2) del lema 2.0 no caracteriza a las formas normales. 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 = ) si se tiene M, P, Q : (M P ) (M Q) : R :: (P R) (Q R) o gráficamente: P M R Q EJERCICIO 2.1. Probar que β = 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 = Lema 2.1 Si = entonces = Demostración: EJERCICIO 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 ) si se tiene M, P, Q : (M R P ) (M R Q) : Z :: (P R Z) (Q R Z)

28 2. Formas normales EJERCICIO 2.3. Probar que β = d 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 termina, es decir M, {M n } n 0 (M 0 M) :: M i R M i+1 Teorema 2.0 (Newman) Si R SN y R = d, entonces R CR Demostración: EJERCICIO 2.4. 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 (definición 1.5): N 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: M = R N es consecuencia de Z :: (N R Z) (M R Z) 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 P Q

2.1. Confluencia 29 y por la propiedad de confluencia tenemos que existe R verificando: M L N P Q R y ahora basta aplicar la transitividad de R. 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 N 1 y N 2 son dos R FN de M entonces N 1 = R N 2 (= R M), y por el teorema existe Z tal que (N 1 R Z) (N 2 R Z) y de aquí, por el lema 2.0, N 1 Z N 2. Teorema 2.2 Toda forma normal puede expresarse como: λx 1 x 2... x n.x M 1... M m n, m 0 siendo M 1,..., M m formas normales. Demostración: puede verse en [Dav89] (pág. 164) y en [Bar84] (pág. 176 (8.3.18)).

30 2. Formas normales Corolario 2.1 (Conjunto FN de formas normales) El conjunto FN de formas normales puede definirse en forma inductiva de la manera siguiente: (1) x FN (2) si M 1,..., M m FN entonces x M 1... M m 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 x, trivial A FN A C A λx 1 x 2... x n.x M 1... M n, con M 1,..., M m FN A λx 1 x 2... x n.x M 1... M n! h.i., A x M 1... M n, props. (2) y (1) A λx 1 x 2... x n.a, con A C! prop. (3) n veces A C 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 teoremas 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 β = ; para ello, supongamos que existe una relación (no confundir con β ) que verifica:

2.2. Los teoremas de Church Rosser 31 (a) = β β (e) = Entonces, por (e) y por el lema 2.1 Por (a), = ( = β ) β y ya que ( = β ) β tendremos = β. Luego todo consiste en encontrar tal relación. Esto se verá en el siguiente lema. Lema 2.2 Sea la relación definida en forma inductiva como la mínima relación verificando: (1) M M (2) (M 1 M 2 ) (N 1 N 2 ) λx.m 1 λx.m 2, M 1 N 1 M 2 N 2, (λx.m 1 ) N 1 [x := N 2 ]M 2 Entonces: (a) = β β (b) (M 1 M 2 ) (N 1 N 2 ) [x := N 1 ]M 1 [x := N 2 ]M 2 (c) λx.m N M :: (N λx.m ) (M M ) L M 2 N 2, M 2, N 2 :: M 1 M 2, N 1 N 2 (d) M 1 N 1 L (e) = P 1, P 2, N 2 :: M 1 λx.p 1, L [x := N 2 ]P 2, P 1 P 2, N 1 N 2 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 M 1 M 2 E y N 1 N 2 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 M 1 M 2. (c) Por inducción estructural sobre derivaciones del tipo M M. (d) Por inducción estructural sobre derivaciones del tipo M 1 M 2. (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)). Corolario 2.2 El λ cálculo es consistente Demostración: procediendo por reducción al absurdo, supongamos que sea inconsistente; 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. 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. de axiomas Probar que λc F es inconsistente, siendo F el conjunto F = { M = N M, N Λ :: M, N no tienen F N} Demostrar que la aplicación de λ expresiones no es aso- EJERCICIO 2.7. ciativa. 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 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)).

34 2. Formas normales Lema 2.3 (Hindley Rosen) (1) Si dos relaciones 1 y 2 verifican ( 1 = ) ( 2 = ) y conmutan A 1 B es decir 2 2 C 1 D A, B, C :: (A 1 B) (A 2 C) D :: (C 1 D) (B 2 D) entonces ( 1 2 ) = (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 2 2 2 2 1 2 2 1 1 1 1 1 2 2 (2) Se deduce directamente aplicando (1) ya que, por el corolario 1.0, ( σ γ ) = σγ 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)). Corolario 2.3 El λη cálculo es consistente Demostración: EJERCICIO 2.9.

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 determinante 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 (λx.x) a }{{} interno interno {}}{ ((λx.x) b) 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 {}}{ (λy.((λz.z) x) y) a }{{} 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: El orden normal o estándar, que notaremos por s, donde se reduce el redex externo de más a la izquierda. El orden aplicativo, que notaremos por a, 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: (λx.y) Ω Por otro lado, la reducción aplicativa produce una secuencia infinita de redexes: (λx.y) Ω a s (λx.y) Ω y a... 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 (subrayamos el redex elegido): con lo cual, λa.(λb.(λc.c) b b) d λa.(λb.b b) d λa.d d λa.(λb.(λc.c) b b) d λa.d d pero también observamos que siguiendo el orden normal o estándar λa.(λb.(λc.c) b b) d s λa.d d

2.3. Formas normales por la cabeza 37 Generalizando el resultado del ejemplo anterior se tiene el denominado teorema de estandarización: Si M N, entonces también M s 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 N 1 N 2... N n (n 2) (N 1 no es una aplicación) (c) Cada término abstracción M es de la forma M λx 1 x 2... x n.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 λx 1 x 2... x n.x M 1... M m (n 0) (m 0) o bien es β reducible por la cabeza: M λx 1 x 2... x n.(λx.m 0 ) M 1... M m (n 0) (m 1) donde al redex (λx.m 0 ) M 1 se le llama redex de cabecera. Demostración: por inducción sobre la estructura de M. Definición 2.6 Un término M se dice que admite FNC si existe un N en FNC tal que M = N. 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: (M c 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 o bien cs el cierre reflexivo y transitivo de c. Si los redexes seleccionados son interiores usaremos i para la reducción en un paso, y: i o bien is para su cierre reflexivo y transitivo. Lema 2.5 (a) Cualquier reducción M i M c N puede descomponerse en la forma: i M cs M N M c N cs N is i N (b) Cualquier reducción M N puede descomponerse en la forma: M N 2... cs is cs is N 1 N n 1 cs N n N is M c N 1 i N 2 c i N n 1 c Nn i N (c) Cualquier reducción M N puede descomponerse en la forma: M N cs is Z M c Z i 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). Teorema 2.6 (Teorema de estandarización (Curry Feys, 1958)) Si M N, entonces también M s N Demostración: por inducción sobre N utilizando (c) del lema anterior: M N 1 N 2 N ; M λx.n N 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: M c Z i }{{} red. estándar N 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 pero entonces Z λ x.y N, donde M i N i, con lo cual por el teorema de estandarización M s λ x.y N y es fácil construir a partir de ésta la reducción por la cabeza (que terminaría).

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 termina 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 reducción estándar continuaría hasta obtener la expresión x a: (λx.x x) I x (I a) c x (I a) }{{} fin cómputo si FNC s x a Además, obsérvese que la λe original también admite como FNC la expresión x a, pues (λx.x x) I x (I a) I I x a I x a x a 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 (0) M c M [z := N]M c [z := N]M (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.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 E 1 E 2... E n (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.ω x y pero Ω DFN C. Además está en DFNC, y si admitimos λx. 3 x λ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 E 1 E 2... E n es una DFNC si f es una constante o una función de aridad k > n 0 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.