Lambda-Cálculo. Mauro Jaskelioff 6/9/2011

Documentos relacionados
Algoritmos y programas. Algoritmos y Estructuras de Datos I

Nociones Básicas de Sémantica: Semántica Denotacional

Lenguajes y Gramáticas

PRODUCTO CARTESIANO RELACIONES BINARIAS

Espacios Vectoriales

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

Conjuntos, relaciones y funciones Susana Puddu

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

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

Tema 5: Elementos de geometría diferencial

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

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

MATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ).

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

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

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

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

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algebra Lineal. Gustavo Rodríguez Gómez. Verano 2011 INAOE. Gustavo Rodríguez Gómez (INAOE) Algebra Lineal Verano / 21

Parte II CALCULO DIFERENCIAL.

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

GUÍA BÁSICA DE SCHEME v.4

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

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.

NÚMEROS COMPLEJOS: C

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

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

CAPÍTULO 4: DERIVADAS DE ORDEN SUPERIOR. En este capítulo D denota un subconjunto abierto de R n.

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.

2. El conjunto de los números complejos

Ejercicios de Lógica Proposicional *

Clase 10: Extremos condicionados y multiplicadores de Lagrange

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

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

Lógica proposicional. Ivan Olmos Pineda

Pablo Cobreros Tema 6. El tamaño del infinito

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

Ampliación Matemática Discreta. Justo Peralta López

El lenguaje C. 1. Identificadores, constantes y variables

Grupos libres. Presentaciones.

Lección 2: Funciones vectoriales: límite y. continuidad. Diferenciabilidad de campos

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

Procesadores de Lenguaje

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica

Sobre funciones reales de variable real. Composición de funciones. Función inversa

Expresiones regulares, gramáticas regulares

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Sistemas de Representación. Organización del Computador 1 Verano 2016

Introducción a los números reales

Estructuras Algebraicas

Métodos de Inteligencia Artificial

1. Convergencia en medida

Anillo de polinomios con coeficientes en un cuerpo

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

Semana05[1/14] Relaciones. 28 de marzo de Relaciones

TEMA 2. ESPACIOS VECTORIALES

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

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

Espacios Vectoriales

Descomposición en valores singulares de una matriz

Matemáticas I: Hoja 1

Sobre la Construcción Axiomática de los Números Naturales

Límite superior y límite inferior de una sucesión

Conjuntos y matrices. Sistemas de ecuaciones lineales

TRANSFORMADA DE LAPLACE. Definición: Transformada de Laplace. Sea f(t) una función definida para t 0; a la expresión

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

Clase 03: Alfabetos, símbolos y cadenas

Bases de Grobner Natalia García 27 de febrero de 2009

ELEMENTOS DE GEOMETRÍA. Eduardo P. Serrano

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

Lenguajes, Gramáticas y Autómatas Conceptos

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

INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha.

Espacios vectoriales. Capítulo Espacios vectoriales y subespacios Preliminares

Espacios topológicos. 3.1 Espacio topológico

Espacios vectoriales

Propiedades de las operaciones lineales con matrices

UNIDAD 5 : ESTRUCTURAS ALGEBRAICAS

Índice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción

Tema 3: Espacios vectoriales

Tema I 1. EL CUERPO DE LOS REALES, EL CUERPO DE LOS COMPLEJOS

520142: ALGEBRA y ALGEBRA LINEAL

Expresiones Regulares y Derivadas Formales

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

Espacios Vectoriales Asturias: Red de Universidades Virtuales Iberoamericanas 1

Transformaciones lineales y matrices

MMAF: Espacios normados y espacios de Banach

Álgebra y Trigonometría Clase 7 Sistemas de ecuaciones, Matrices y Determinantes

Inteligencia Artificial II La Lógica Proposicional como un lenguaje formal

Cálculo numérico. Aritmética en punto flotante.

ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3

En una recta numérica el punto que representa el cero recibe el nombre de origen.

Matrices, Determinantes y Sistemas Lineales.

EL NÚMERO COMPLEJO. Los números complejos. Distintas expresiones del número complejo. Operaciones con números complejos.

Lenguajes No Regulares

ESCUELA: UNIVERSIDAD DEL ISTMO

Métodos directos para resolver sistemas de ecuaciones lineales

Soluciones oficiales Clasificación Olimpiada Nacional Nivel Mayor

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

La Intersección Arbitraria de una Familia de Subconjuntos Abiertos con la Propiedad α-s-localmente Finita es α-semiabierta

Transcripción:

Lambda-Cálculo Mauro Jaskelioff 6/9/2011

Origen del λ-cálculo El λ-cálculo fue inventado por Alonzo Church en la década de 1930. Originalmente fue inventado como parte de un sistema formal para modelar la mátematica. Pero es inconsistente! Es utilizado para estudiar la computabilidad. En paralelo, Turing presenta su máquina. En los 1960s, Peter Landin muestra que se puede usar para dar semántica a los lenguajes de programación (imperativos). Los lenguajes funcionales están basados en el λ-cálculo.

SINTAXIS

Sintaxis Suponemos la existencia de un conjunto infinito de identificadores x, y,z,..., x0, x1 denotan elementos de X El conjunto Λ de λ-términos se define inductivamente por las siguientes reglas: x X x Λ t Λ u Λ (t u) Λ x X t Λ (λx.t) Λ Ejemplos: x (x y) (λx.x) (λx.(λy.((x y) y)))

Esto es todo? Con este pequeño lenguaje se pueden representar todas las funciones computables! (Tesis de Church) Esta simpleza hace que: Se facilite la prueba de propiedades. Se use para dar semántica a lenguajes imperativos y funcionales. Su use como metalenguaje para definir otras teorías y cálculos. La elegancia hace que sea más práctico!

Convenciones Las mayúsculas indican λ-términos arbitrarios (ej: M,N,P) Escribimos: M N P en lugar de ((M N) P) λx.p Q en lugar de (λx.p Q) λx 1 x 2... x n.m en lugar de (λx 1.(λx 2.(... (λx n.m)... )) Ejercicio Insertar todos los paréntesis y λs en los sig. términos abreviados: x y z (y x) (λx.v u u) z y (λx y z.x z (y z)) u v w u x (y z) (λv.v y)

Ocurrencias La identidad sintáctica se denota con M N iff M es exactamente el mismo término que N. Definición (Ocurrencia) La relación P ocurre en Q (o P es un subtérmino de Q) se define inductivamente sobre la estructura de Q P ocurre en P; si P ocurre en M o en N, entonces P ocurre en (M N); si P ocurre en M o P x, entonces P ocurre en (λx.m). Ejercicio Encontrar las ocurrencias de (x y) en los términos (λx y.x y) (z (x y) (λx.y (x y)) x y)

Variables libre y ligadas para una ocurrencia de λx.m en P, M es el alcance de la abstracción λx. Hay 3 tipos de ocurrencia de una variable x en un término P 1. ocurrencia de ligadura (si es la x en un λx) 2. ocurrencia ligada (si es una x en el alcance de un λx en P). 3. ocurrencia libre (en cualquier otro caso). Llamamos FV (P) al conjunto de las variables libres en P. Un término cerrado es un término sin variables libres.

Ejemplos (λx.x y) (λx.x (λx.x)) x Observamos que una misma variable puede ocurrir libre y ligada distintas ocurrencias pueden ligarse a distintas ocurrencias de ligadura la ligadura depende de toda la expresión (una ocurrencia cambia de status de una subexpresión a la expresión final; ej: x vs. (λx.x)) Ejercicio Dar las variables libres y las ligaduras y sus alcances en el término (λy.y x (λx.y (λy.z) x)) v w

Substitución Definición (Substitución) Para todo M, N, x se define M[N/x] como el resultado de substituir N por toda ocurrencia libre de x en M. Más precisamente, por inducción sobre la estructura de M. x[n/x] N a[n/x] a (a x) (P Q)[N/x] (P[N/x] Q[N/x]) (λx.p)[n/x] λx.p (λy.p)[n/x] λy.p if x FV (P) y x (λy.p)[n/x] λy.p[n/x] if x FV (P) y FV (N) (λy.p)[n/x] λz.(p[z/y])[n/x] if x FV (P) y FV (N) Asumimos que y x y que z es la 1er variable FV (N P)

α-equivalencia Dado una ocurrencia de λx.m en un término P, si y no ocurre en M podemos reemplazar λx.m por: λy.(m[y/x]) Esta operación se llama cambio de variable ligada o α-conversión. Si P puede cambiarse a Q por una serie finita de cambios de variable ligada decimos que P es congruente con Q, o que P α-convierte a Q, o P α Q Ejemplo: λx y.x (x y) α λu v.u (u v) (Probarlo!)

Propiedades de la α-conversión Lema a) Si P α Q entonces FV (P) = FV (Q) b) La relación α es una relación de equivalencia, o sea: es reflexiva P α P es simétrica P α Q Q α P es transitiva P α Q Q α R P α R c) M α M N α N M[N/x] α M [N /x] Salvo que se aclare lo contrario, escribiremos simplemente en lugar de α. Rara vez nos interesa diferenciar términos α-equivalentes.

SEMÁNTICA

β-reducción Cómo calcular con el λ-cálculo? Un término (λx.m) N representa un operador (λx.m) aplicado a un argumento N. El resultado se obtiene usando la substitución M[N/x]. Definición (redex, contracción, β, β ) Un término (λx.m) N es un β-redex y M[N/x] su contracción. Si al reemplazar un β-redex en un término P por su contracción obtenemos un término P, decimos que P se β-contrae a P y escribimos P β P Escribimos β para la clausura reflexiva-transitiva de β y decimos que P β-reduce a Q iff P β Q.

Ejemplos (λx.x (x y)) N β N (N y) (λx.y) N β y (λx.(λy.y x) z) v β ((λy.y x) z)[v/x] (λy.y v) z (λx.x x) (λx.x x) β (x x)[(λx.x x)/x] (λx.x x) (λx.x x) β (x x)[(λx.x x)/x] (λx.x x) (λx.x x) β... (λx.x x y) (λx.x x y) β (λx.x x y) (λx.x x y) y β (λx.x x y) (λx.x x y) y y β... En los dos últimos ejemplos la reducción es infinita!

Forma Normal β Definición (Formal Normal β) Una forma normal β o β-nf es un término que no contiene β-redexes. Si un término P β-reduce a una β-nf Q decimos que Q es una forma normal β de P Ejercicio Reducir los siguientes términos a β-nf. (λx.x y) (λu.v u u) (λx.x x y) (λy.y z)

Propiedades de β Nada nuevo es introducido en una reducción. Lema P β Q FV (P) FV (Q) La relación β es preservada por la substitución Lema P β P Q β Q Q[P/x] β Q [P /x]

Confluencia Algunos términos tienen más de una reducción (λx.(λy.y x) z) v β (λy.y v) z β z v (λx.(λy.y x) z) v β (λx.z x) v β z v Reducen siempre a la misma forma normal? Teorema (Church-Rosser para β ) Si P β M y P β N, entonces existe T tal que M β T N β T Corolario Si P tiene β-nf, ésta es única (módulo α ).

β-equivalencia Definición (β-equivalencia) P es β-equivalente a Q (escribimos P = β Q) iff Q puede ser obtenido partiendo de P y realizando una serie finita de β-contracciones, β-expansiones (β-contracciones inversas) y α-conversiones. Lema (Substitución y = β ) M = β M N = β N M[N/x] = β M [N /x] Teorema (Church-Rosser para = β ) Si P = β Q entonces existe T tal que P β T Q β T

Extensionalidad Las λ-abstracciones representan funciones. Sin embargo, λx.f x β f Para tener un cálculo extensional, agregamos una nuevo redex (η-redex) λx.f x η f P βη P P β P o P η P En forma análoga al caso de β se obtiene βη, forma normal βη y equivalencia = βη El cálculo λβη es confluente (hay un teorema de Church-Rosser para βη).

Estrategias de reducción Por Church-Rosser si un término tiene una forma normal, ésta es única (probarlo!) Ya vimos que Ω (λx.x x) (λx.x x) tiene infinitas contracciones. Por lo tanto P (λx y. y) Ω también. Sin embargo P tiene una forma normal (λy.y). Claramente, la elección del redex a contraer es importante. Cómo pruebo qué un término no tiene forma normal? Cómo puedo asegurarme de encontrar la forma normal? (si esta existe)

Reducción Normal Un redex es maximal si no está contenido en algún otro redex. Un redex es maximal izquierdo si es el redex maximal de más a la izquierda. La estrategia de reducción normal es elegir siempre el redex maximal izquierdo. Teorema Si la reducción normal de un término X es infinita, X no tiene forma normal. Para probar que un término no tiene forma normal basta probarla para la reducción normal Si una forma normal existe, la estrategia de reducción normal la encontrará.

PROGRAMACIÓN

Programando con el λ-cálculo Cómo escribir un programa en λ-cálculo? Necesitamos representar algunos tipos de datos básicos (como naturales, booleanos, etc) con λ-expresiones. Establecemos expresiones que representan los valores del tipo Establecemos expresiones que operan sobre el tipo. Nos quedamos satisfechos cuando los valores y operadores del tipo cumplen con una especificación dada. Como el λ-cálculo no tiene tipos, expresiones como (not 2) son válidas, pero no nos interesa como se comporten. Escribiremos definiciones como True (λx y.x), pero esto es simplemente una abreviación expresada en nuestra metalenguaje.

Booleanos Queremos representar los valores True y False, y la operación ifthenelse Nuestra especificación es ifthenelse True P Q = β P ifthenelse False P Q = β Q Por lo tanto ifthenelse True = β λp q.p ifthenelse False = β λp q.q Una solución: True λp q.p False λp q.q ifthenelse λx.x

Mas operaciones sobre Booleanos Dados True, False e ifthenelse podemos definir otras funciones (escribimos ifthenelse P Q R como if P then Q else R) not λx.if x then False else True λx.ifthenelse x False True λx.(λx.x) x (λp q.q) (λp q.p) β λx.x (λp q.q) (λp q.p) not True β (λx.x (λp q.q) (λp q.p)) (λp q.p) β (λp q.p) (λp q.q) (λp q.p) β (λp q.q) False not False β... Otras funciones: (Ejercicio!) and λx y.if x then y else False or λx y.if x then True else y

Pares Queremos representar pair y las operaciones fst y snd Nuestra especificación es fst (pair P Q) = β P snd (pair P Q) = β Q Una solución: pair λx y.λb.if b then x else y fst λp.p True snd λp.p False Verifiquemos que fst (pair x y) = β x: fst (pair x y) = β (λp.p True) (pair x y) = β (pair x y) True (λb.if b then x else y) True = β if True then x else y = β x

Notación (metalenguaje) En nuestro metalenguaje anotaremos M M F n+1 M F n (FM) F 0 Ejemplo: (λx y.x) 3 z (λx y.x) 2 ((λx y.x) z) (λx y.x) 1 ((λx y.x) ((λx y.x) z)) (λx y.x) 0 ((λx y.x) ((λx y.x) ((λx y.x) z))) (λx y.x) ((λx y.x) ((λx y.x) z)) Notar que la notación sólo tiene sentido como parte del metalenguaje.

Numerales de Church Definición Para cada n N, el numeral de Church para n es un término n definido como n λf x. f n x Ejemplos 0 λf x. x 1 λf x. f x 2 λf x. f (f x) Notar que 0 False. No importa, ya que no usamos tipos. Definimos la función sucesor como succ λn.λf x.n f (f x)

Funciones sobre numerales de Church Cómo definir la suma? La suma n + m es aplicarle la función sucesor n veces a m O sea que suma λn m.n succ m Ejercicio Definir una función iszero, tal que iszero 0 = β True iszero n + 1 = β False

Funciones recursivas Cómo definir una función recursiva? Por ejemplo queremos definir la función fact fact? λn.if (iszero n) then 1 else prod n (fact (pred n)) (suponemos ya definidas prod (producto) y pred (predecesor)) Pero esto no es una definición válida! ( Por qué?) Para resolver este problema se utilizan operadores de punto fijo, es decir operadores F tal que Entonces F X = β X (F X ) fact F (λf n.if (iszero n) then 1 else prod n (f (pred n)))

Puntos fijos Considere el siguiente combinador: (un combinador es un término cerrado) Y λx.(λy.x (y y)) (λy.x (y y)) Teorema Todo término X tiene un punto fijo dado por (Y X ). Esto es: Y X = β X (Y X ) Nota: Y no es el único operador de punto fijo (ver la práctica).

Resumen El λ-cálculo es un cálculo muy simple, pero muy poderoso. Ligadura de variables (binding) Nociones de reducción y de equivalencia. Estrategia de reducción normal Representación de booleanos, pares y naturales. Puntos fijos. Es un lenguaje de programación!

Referencias Lambda-Calculus and Combinators. J. R. Hindley and J. P. Seldin. Cambridge University Press (2008).