PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA

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

Lenguajes No Regulares

Tema 6: Teoría Semántica

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

Introducción a Ecuaciones Lineales.

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

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

Lógica proposicional. Ivan Olmos Pineda

Ejercicios de Lógica Proposicional *

LOS CONTENIDOS DE MATEMÁTICAS EN LOS BACHILLERATOS ITALIANOS

RAZONAMIENTO MATEMÁTICO

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales.

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

Lenguajes y Gramáticas

Unidad 3. Equivalencia financiera

APENDICE REGLAS Y LEYES DE LA LOGICA DE PRIMER ORDEN

Tema 9: Cálculo Deductivo

CINEMÁTICA: ESTUDIO DEL MOVIMIENTO. Cinemática es la parte de la Física que estudia la descripción del movimiento de los cuerpos.

Métodos de Inteligencia Artificial

Conjuntos y relaciones

IIC2213. IIC2213 Teorías 1 / 42

TEORÍA DE LA CONDUCTA DEL CONSUMIDOR Y DE LA DEMANDA

5 Sistemas de ecuaciones

GRAMATICAS LIBRES DEL CONTEXTO

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

John Venn Matemático y filósofo británico creador de los diagramas de Venn

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

IV. MODELO RELACIONAL

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Introducción a la Lógica

LÓGICA PROPOSICIONAL

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

1. Computadores y programación

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.

2. SEÑALES Y SISTEMAS DISCRETOS EN EL TIEMPO. Una señal puede ser definida como una portadora física de información. Por ejemplo,

Caracterización de los números reales

ÁLGEBRA DE BOOLE. 1.- Postulados de HUNTINGTON

Computación I Representación Interna Curso 2011

Representación del Conocimiento Otros formalismos. Licenciatura en Ciencias de la Computación. Introducción a la Inteligencia Artificial.

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

La conducta del consumidor y las preferencias

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

José de Jesús Ángel Ángel, c Factorización

CAPITULO V CONCLUSIONES Y RECOMENDACIONES. Índice Verificación de hipótesis Conclusiones Recomendaciones.

BLOQUE 1. LOS NÚMEROS

INSTITUCIÓN EDUCATIVA GABRIEL TRUJILLO CORREGIMIENTO DE CAIMALITO, PEREIRA

Inteligencia artificial

ESCUELA: UNIVERSIDAD DEL ISTMO

CAPÍTULO III: METODOLOGÍA

CONJUNTOS. Consideremos, por ejemplo, los siguientes conjuntos:

GUÍAS. Módulo de Información y control contable SABER PRO

Tema 5: Elementos de geometría diferencial

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA


Factorización de Polinomios

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

Material diseñado para los estudiantes del NUTULA, alumnos del profesor Álvaro Moreno.01/10/2010 Lógica Proposicional

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

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

Factorización de Polinomios. Profesora Ericka Salas González

Convergencia de sucesiones

Ing. Yim Isaias Apestegui Florentino

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

Tema 3.- Predicados y sentencias condicionales

CURSO: PRESENTE Y DESAFIOS DE LA GESTION PARLAMENTARIA

Breve introducción a la Investigación de Operaciones

El cuerpo de los números reales

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

Lenguajes, Gramáticas y Autómatas Conceptos

CONVEXIDAD: CONCEPTOS BÁSICOS

MATEMÁTICAS II CC III PARCIAL

* e e Propiedades de la potenciación.

Herramientas digitales de auto-aprendizaje para Matemáticas

**********************************************************************

CIRCUITOS LÓGICOS. Lógica FCE 1. ALGEBRA DE BOOLE

Estatutos de Control C# Estatutos de Decisión (Selección)

Los números racionales: Q

SECCIÓN 3 PRESENTACION DE ESTADOS FINANCIEROS

Dar una introducción sobre la asignatura IO Familiarizar al estudiante con las características y aplicación del modelo de matriz de decisiones

y cualquier par (x, y) puede escalarse, multiplicarse por un número real s, para obtener otro vector (sx, sy).

Límites y continuidad de funciones reales de variable real

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

Factorización de Polinomios con Coeficientes Enteros

Índice general. I Introducción a la Lógica 3

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

Espacios Vectoriales

IV.- Cómo se analizan las cuentas anuales

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

UNIVERSIDAD LIBRE PROGRAMAS ANALÍTICOS SECCIONAL: PEREIRA FACULTAD: INGENIERIAS. PROGRAMA ACADÉMICO: Ingeniería de Sistemas

ÍNDICE PRIMERA PARTE METODOLOGÍA JURÍDICA

CRISTALOFÍSICA. Isotropía y anisotropía

Pablo Cobreros Tema 6. El tamaño del infinito

Grupos libres. Presentaciones.

Capítulo 16. Diagrama de Clases UML

LÓGICA DE PROGRAMACIÓN

PLAN DE CURSO PC-01 FO-TESE-DA-09 DIRECCIÓN ACADÉMICA DIVISIÓN DE INGENIERÍA ELECTRÓNICA. Según Corresponda CALCULO INTEGRAL TURNO: 1201/1 251

Transcripción:

PARADIGMAS DE PROGRAMACIÓN 2006 CALCULO LAMBDA CALCULO LAMBDA El cálculo lambda fue desarrollado por Alonso Church en la década del 30 con el objeto de dar una teoría general de las funciones. El cálculo lambda ha sido empleado como fundamento conceptual de los lenguajes de programación, aportando: una sintaxis básica una semántica para el concepto de función como proceso de transformación de argumentos en resultados un medio para definir primitivas de programación

SINTAXIS DEL CALCULO LAMBDA La sintaxis del Cálculo Lambda ( CL ) es la siguiente: <término> ::= <variable> <variable>. <término> ( <término> <término> ) En esta sintaxis no existe el concepto de <nombre> o <constante> Qué implica esto? El formalismo no tendrá primitivas, no nos permitirá emplear funciones con el concepto de módulos abstractos. En esta nueva sintaxis la abstracción funcional es: <variable>. <término> Cuerpo de la abstracción funcional Lista de argumentos La sintaxis propuesta utiliza la representación de Funciones con un sólo argumento. Una Función que requiera más de un argumento se representa de la sgte. forma: x 1. x 2.... x n. M

CALCULO LAMBDA Tiene por objeto explicitar el concepto que representa el empleo de funciones como medio de transformación de argumentos en resultados. A este formalismo lo denominamos CÁLCULO, ya que el mismo empleará un conjunto de axiomas, y reglas de inferencia (de la misma forma que lo utilizan los sistemas formales) para representar el medio de transformación mencionado. REGLAS DEFINIDAS EN EL CL De acuerdo a la sintaxis propuesta, una aplicación funcional tendrá el siguiente formato ( M N ) la cual producirá un resultado, como consecuencia de la correspondiente regla del cálculo, R (resultado) La consistencia del sistema requiere que la aplicación funcional y el resultado puedan ser interpretadas como expresiones equivalentes ( M N ) R es decir, que representan el mismo valor.

El cálculo del resultado de una aplicación funcional será obtenido mediante la generación de expresiones equivalentes por aplicación de las reglas del cálculo que definiremos a continuación. La relación de equivalencia entre expresiones del cálculo tendrá las propiedades: reflexividad M = M simetría M = N N = M transitividad M = N N = P M = P más las siguientes, que resultan lo suficientemente intuitivas M = N (M P) = (N P) M = N (P M) = (P N) M = N x. N = x. M La regla del cálculo que permite generar expresiones que satisfagan la relación de equivalencia se denomina Regla Beta La Regla Beta establece como sustituir en el cuerpo de la abstracción funcional cada ocurrencia de la variable que hace de argumento nominal por el argumento efectivo de la aplicación funcional correspondiente. 1 ( (x) exp(2 * x + y) (4) ) La regla Beta especifica los pasos 1 y 2 2 argumento nominal argumento efectivo

Esta idea es recogida por la Regla Beta expresada de la siguiente forma ( x.m N) = [N/x] M la parte derecha de la expresión se interpreta como: el término que se obtiene de introducir N en lugar de x, toda vez que x ocurre libre en M OCURRENCIA DE UN TERMINO Definición. Ocurrencia de P en Q Clausura P ocurre en P Inducción Si P ocurre en M o N P ocurre en (M N) Si P ocurre en M o P es igual a x P ocurre en x.m Por ejemplo, dado en el siguiente término: ( (x y) x.(x y) ) (x y) ocurre dos veces x ocurre tres veces y ocurre dos veces

Los conceptos que necesitamos a continuación son los de ocurrencia libre y ligada de un variable. Definición. Una ocurrencia de la variable x en un término P es ligada sí y solo sí, x ocurre en un subtérmino de P de la forma x.m Si se aplica esta definición en el siguiente término ( y.(y y) x.(x y)) x e y ocurren ligadas ya que el término contiene los subtérminos y.(y y) y ocurre ligada (3 veces) x.(x y) x ocurre ligada (2 veces) Definición. La variable x ocurre libre en en término N, solamente sí: 1. N = x 2. N = z.m tal que x z, y x ocurre libre en M 3. N = (P Q) donde x ocurre libre en M y/o en P Definición. Si x ocurre libre al menos un vez en un término P, entonces x es una variable libre de P. ( y.(m n) y) m ocurre libre y ocurre libre n ocurre libre y es una variable libre del término

OCURRENCIAS DE TERMINOS, OCURRENCIAS LIBRES Y LIGADAS DE VARIABLES Dado el siguiente término del Cálculo : Tenemos que: (( y.(x y) z) x.(x x.(x y))) (x y) ocurre 2 veces x ocurre 5 veces, 4 veces ligada y 1 vez libre y ocurre 3 veces, 2 veces ligada y 1 libre z ocurre una vez libre Por lo tanto: variables libres: x, y, z variables ligadas: x, y REGLA BETA: DEFINICIÓN DE SUSTITUCIÓN [N/x] M En el caso en que M sea la variable a sustituir, la misma se realiza de la siguiente forma: 1 - [N/x] x :=: N Ejemplos: [ y.(m n) / y] y :=: y.(m n) [(m n) / t] t :=: (m n)

DEFINICIÓN DE SUSTITUCIÓN [N/x] M En el caso en que M sea una variable, pero diferente de la sustituida, la misma se realiza de la siguiente forma: 2 - [N/x] y :=: y ; y x Ejemplos: [ y.(m n) / y] l :=: l [(m n) / t] r :=: r DEFINICIÓN DE SUSTITUCIÓN [N/x] M En el caso en que M sea una aplicación funcional, la misma se realiza de la siguiente forma: 3 - [N/x] (P Q) :=: ([N/x]P [N/x]Q) Ejemplos: [ y.(m n) / y] (y l) :=: ([ y.(m n) / y]y [ y.(m n) / y] l) [x / m] ( y.(m n) m) :=: ([x / m] y.(m n) [x / m]m)

DEFINICIÓN DE SUSTITUCIÓN [N/x] M En el caso en que M sea una abstracción funcional, la misma se realiza de la siguiente forma: 4 - [N/x] x.m :=: x.m Ejemplos: [ y.(m n) / x] x.(t x) :=: x.(t x) [x / m] m.(m n) :=: m.(m n) DEFINICIÓN DE SUSTITUCIÓN En el caso en que M sea una abstracción funcional, la misma se realiza de la siguiente forma: 5 - [N/x] y.m :=: y. [N/x]M Siempre podría reducir así? ( ( x. y. (y x) M) N) ( y. (y M) N) (N M) En particular si M :=: y y N :=: x Por regla Beta y def. 5, 3, 2, 1 Por regla Beta y def. 3, 2, 1 (( x. y. (y x) y) x) = (x y) ( y. (y y) x) Por regla Beta y def. 5, 3, 2 y 1 Por regla Beta y def. 3, 1 y 2 (x x) x = y? Por transitividad

En el ejemplo anterior x e y denotan términos genéricos los términos cualesquiera del cálculo lambda son iguales Incorrecto! El problema surge pues, al evaluar la primera aplicación funcional, la variable libre y que es argumento efectivo queda ligada. ocurrencia libre de y Por regla Beta Por defs. 5, 3, 2 y 1 (( x. y. (y x) y) x) ( [y / x] y. (y x) x) ( y. (y y) x) ocurrencia ligada de y DEFINICIÓN DE SUSTITUCIÓN En el caso en que M sea una abstracción funcional, la misma se realiza de la siguiente forma: 5 - [N/x] y.m :=: y. [N/x]M si y "no ocurre libre" en N o si x "no ocurre libre" en M Ejemplos: No ocurre libre [ n.(m n) / x] y.(x y) :=: y. [ n.(m n) / x](x y) Ocurre libre [ m.(m x) / m] x. m.(t m) :=: x. [ m.(m x) / m] m.(t m) No ocurre libre

DEFINICIÓN DE SUSTITUCIÓN [N/x] M En el caso en que M sea una abstracción funcional, la misma se realiza de la siguiente forma: 6 - [N/x] y.m :=: z. [N/x] [z/y] M si y "ocurre libre" en N y si x "ocurre libre" en M y si z no ocurre libre" en N o M Ejemplo: [ n.(m y) / x] y.(x y) :=: z. [ n.(m y) / x] [z/y] (x y) REDUCCION DE EXPRESIONES Y FORMA NORMAL Con el enfoque funcional la evaluación de una expresión se entiende como la aplicación de una función a determinados argumentos efectivos. En el Cálculo Lambda esto se denomina REDEX. Definición: Un REDEX es un término de la siguiente forma ( x. M N) Redex 1 ( x. ( y.( y x) z) v) Redex 2 Redex 1 M = ( y.( y x) z) N = v Redex 2 M =( y x) N = z

Definición: Una FORMA NORMAL es un término que no contiene ningún REDEX Si puede deducirse de las reglas del cálculo que P :=: Q y si Q está en forma normal, se dice que Q ES FORMA NORMAL DE P La forma normal de un término es única Si un término P puede reducirse a dos términos M y N entonces existe un término T al cual M y N pueden, a su vez, reducirse No todos los métodos de reducción garantizan encontrar la forma normal de un término ESTRATEGIAS DE REDUCCIÓN Estrategia de evaluación de ORDEN NORMAL: consiste en reducir siempre primero el redex de más a la izquierda (aquel cuyo aparece más a la izquierda) La estrategia de evaluación de orden normal aplicada a un término que tiene forma normal termina por encontrarla en un número finito de reducciones Estrategia de evaluación de ORDEN APLICATIVO: consiste en reducir primero los dos términos del redex antes que la aplicación que el denota sea reducida.

Orden Normal Redex 1 ( x. ( y.(y x) z) v) Orden Aplicativo Redex 2 1. Reduzco Redex 1 [v/x] ( y.(y x) z):=: ( y.(y v) z) por reglas 3,5,3,... 1. Reduzco Redex 2 [z/y] (y x) :=: (z x) por reglas 3,2 y 1 2. Reduzco Redex 2 [z/y] (y v):=: (z v) por reglas 3,2 y 1 2. Reduzco Redex 1 ( x.( z x) v) [v/x] (z x):=: (z v) En este ejemplo se llega a la forma normal con ambas estrategias por reglas 3,2 y 1 Redex 1 ( u.v ( x.((x x) y) x.((x x) y))) Orden Normal Redex 2 1. Reduzco Redex 1 [( x.((x x) y) ( x.((x x) y))/u] v:=: v Orden Aplicativo 1. Reduzco Redex 2 ( x.((x x) y) x.((x x) y)) I M [ x.((x x) y)/x] ((x x) y):=: (( x.((x x) y) x.((x x) y)) y) N II Redex 3

Reeemplazo II en la aplicación original ( u.v (( x.((x x) y) x.((x x) y)) y)) III reduzco Redex 3 [ x.((x x) y)/x] ((x x) y):=: (( x.((x x) y) x.((x x) y)) y) Reeemplazo el resultado en III ( u.v ((( x.((x x) y) x.((x x) y)) y) y)) Redex 4 Se puede volver a reducir y se llegará a un resultado similar al anterior. Para este ejemplo, utilizando el orden aplicativo no es posible llegar a la forma normal. Si en cambio se puede llegar con una estrategia de orden normal