La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

EL CÁLCULO LAMBDA λ.

Presentaciones similares


Presentación del tema: "EL CÁLCULO LAMBDA λ."— Transcripción de la presentación:

1 EL CÁLCULO LAMBDA λ

2 EL CÁLCULO LAMBDA λ El cálculo λ fue desarrollado por el matemático Alonzo Church en la década del 30, a fin de establecer una teoría general de funciones y extenderla a modo de proveer fundamentos para la lógica y matemática. Propiedades generales de las funciones independiente del área particular de problemas.

3 EL CÁLCULO LAMBDA λ El cálculo λ puro, es una gramática para términos:
𝑀∷𝑥 𝑀 1 𝑀 2 𝜆𝑥.𝑀 𝑉𝑎𝑟𝑖𝑎𝑏𝑙𝑒=𝑥,𝑦,𝑧,… 𝑇é𝑟𝑚𝑖𝑛𝑜=𝑀,𝑁,𝑃,𝑄 (Un término puedeser una variable, una aplicación (M N) o una bstracció𝑛 𝜆𝑥.𝑀

4 EL CÁLCULO LAMBDA λ El cálculo λ no tiene tipos (tomar en cuenta ámbito - paso de parámetros - estrategia de evaluación). Programación funcional es esencialmente cálculo λ con constantes apropiadas. El cálculo λ con tipos asocia un tipo con cada término.

5 APORTE CONCEPTUAL A LOS LENGUAJES DE PROGRAMACIÓN
Sintaxis de base. Una semántica para el concepto de función como proceso de transformación de argumentos en resultados. Medios para definir primitivas de programación. <Termino>≔ <Variable>: λ<𝑉𝑎𝑟𝑖𝑎𝑏𝑙𝑒>.<𝑇𝑒𝑟𝑚𝑖𝑛𝑜>: (<𝑇𝑒𝑟𝑚𝑖𝑛𝑜><𝑇𝑒𝑟𝑚𝑖𝑛𝑜>)

6 REGLAS DEL CÁLCULO λ El cálculo debe proveer mecanismo por el cual se obtiene el resultado de aplicar una función a argumentos dados: 𝑀=𝑁 M y N son terminos=es una relación de equivalencia Los axiomas y reglas de inferencia fijarán condiciones para términos equivalentes

7 REGLAS DEL CÁLCULO λ Para que relación = sea efectivamente de equivalencia se consigue imponiendo las propiedades de: Reflexividad M. = M Simetría M=N N=M Transitividad M = N N = P por lo tanto M=P

8 IGUALDAD EN CÁLCULOS λ PUROS
Igualdad Beta 𝑀= 𝛽 𝑁 si M y N son iguales - deben tener el mismo valor. Se relaciona con el resultado de abstracción(𝜆𝑥. 𝑀) a un argumento N. Ej.: fun cuadrado 𝑥 =(𝑥∗𝑥) La invocación de cuadrado (5)n sustituye en el cuerpo a x por 5 𝐶𝑢𝑎𝑑𝑟𝑎𝑑𝑜 5 = 𝛽 5 ∗5

9 IGUALDAD EN CÁLCULOS λ PUROS
El aspecto central del cálculo consiste en establecer el mecanismo por el cual se obtiene el resultado de aplicar una función (representada por una abstracción) a un argumento (representado por un término cualquiera). Ej.: 𝑎𝑏𝑠𝑡𝑟𝑎𝑐𝑐𝑖ó𝑛 𝑓𝑢𝑛𝑐𝑖𝑜𝑛𝑎𝑙 = 𝑥 𝑠𝑞𝑟𝑡 2∗𝑥+1 𝑎𝑝𝑙𝑖𝑐𝑎𝑑𝑜 𝑎 𝑢𝑛 𝑣𝑎𝑙𝑜𝑟 = 𝑥 𝑠𝑞𝑟𝑡 2∗𝑥+1 4 𝑠𝑒 𝑝𝑢𝑒𝑑𝑒 𝑟𝑒𝑑𝑢𝑐𝑖𝑟 𝑎 = 𝑥 𝑠𝑞𝑟𝑡 2∗4+1

10 IGUALDAD EN CÁLCULOS λ PUROS
Por convención sintáctica pueden eliminarse los paréntesis, en su ausencia la aplicación se agrupa de izquierda a derecha, aunque deba conservarse para asegurar las aplicaciones. Ej.: Ocurrencia 𝑂𝑐𝑢𝑟𝑟𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑃 𝑒𝑛 𝑄 𝐼𝑛𝑑𝑢𝑐𝑐𝑖ó𝑛 𝑒𝑛 𝑙𝑎 𝑓𝑜𝑟𝑚𝑎 𝑑𝑒 𝑄 𝐵𝐴𝑆𝐸 𝑃 𝑜𝑐𝑢𝑟𝑟𝑒 𝑒𝑛 𝑃 𝐼𝑛𝑑𝑢𝑐𝑐𝑖ó𝑛 𝑠𝑖 𝑃 𝑜𝑐𝑢𝑟𝑟𝑒 𝑒𝑛 𝑀 𝑜 𝑒𝑛 𝑁 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝑃 𝑜𝑐𝑢𝑟𝑟𝑒 𝑒𝑛 𝑀𝑁 . 𝑠𝑖 𝑃 𝑜𝑐𝑢𝑟𝑟𝑒 𝑒𝑛 𝑀.𝑃≔:𝑥, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝑃 𝑜𝑐𝑢𝑟𝑟𝑒 𝑒𝑛 𝜆𝑥.𝑚

11 VARIABLES LIBRES Y ACOTADAS
Definición (Ocurrencia Libres y Ligadas de variables) Una ocurrencia de la variable x en un término P es ligada si y solo si aparece en un subtérmino de P de la forma λx.M. Cualquier otra ocurrencia de x en P es llamada libre. Ej.: ( 𝑥 𝑣 𝜆𝑦. 𝑦 𝑣 𝑤) Las dos ocurrencias de y son ligadas. Todas las ocurrencias de x, v y w son libres.

12 VARIABLES LIBRES Y ACOTADAS
Abstracciones 𝜆𝑥.𝑀 llamado asociaciones restringen a x en 𝜆𝑥.𝑀 o sea: Variable x acotada en 𝜆𝑥.𝑀. El conjunto libre (m) formado por variables libres de M. Reglas de sintaxis: Libre(x) = {x} Libre (MN) = libre (M)∪libre(N) Libre 𝜆𝑥.𝑀=libre (M) − {x}

13 SUSTITUCIÓN La sustitución por un término N de una variable x en M se escribe (N/x) M y se define: Suponga que las variables libres de N no tienen apariciones acotadas en M, entones el término (N/x) M se forma reemplazando con N todas las apariciones. libres de x en M. Otro caso suponga que la variable y es libre en N y acotada en M. La asociación y las apariciones acotadas correspondiente de y en M se reemplazan de manera consistente por una variable nueva z. Se sigue de nuevo las variables acotadas en M hasta que se pueda aplicar el caso anterior.

14 SUSTITUCIÓN En lo sigo casos M no tiene apariciones acotadas, así N reemplaza todas las apariciones de x en M para formar (N/x) M: (𝑢/𝑥) 𝑥 = 𝑢 (𝑢/𝑥) (𝑥 𝑥) = (𝑢 𝑢) (𝑢/𝑥) (𝑥 𝑦) = (𝑢 𝑦) (𝑢/𝑥) (𝑥 𝑢) = (𝑢 𝑢) ((𝜆𝑥. 𝑥)/𝑥)𝑥 = (𝜆𝑋. 𝑥)

15 SUSTITUCIÓN En lo sig. casos M no tiene apariciones libres de x , así que (N/x) M es M mismo: (𝑢/𝑥) 𝑦 = 𝑦 (𝑢/𝑥) (𝑦 𝑧) = (𝑦 𝑧) (𝑢/𝑥) (𝐴𝑦 𝑦) = (𝐴𝑦 𝑦) (𝑢/𝑥) (𝐴𝑋 𝑥) = (𝐴𝑋 𝑥) ((𝜆𝑥. 𝑥)/𝑥)𝑦 = 𝑦

16 SUSTITUCIÓN En lo sig. casos la variable u en M tiene apariciones acotadas en M de modo que (N/x) M se forma primero asignando nuevo nombre, a las apariciones acotadas de u en M: {𝑢/𝑥} (𝜆𝑢. 𝑥) = {𝑢/𝑥} (𝜆𝑧. 𝑥) = (𝜆𝑧. 𝑢) {𝑢/𝑥} (𝜆𝑢. 𝑢) = {𝑢/𝑥} (𝜆𝑧. 𝑧) = (𝜆𝑧. 𝑧)

17 SUSTITUCIÓN Ejemplos: [N/x]x :=: N [N/x]V :=: V
si V:≠ x [N/x](PQ) :=: ([N/x] P [N/x]Q) [N/x] λx. M :=: λx. M [N/x] λy. P :=: λy. [N/x] P Si y no ocurre libre en N o x no ocurre libre en P [N/x] λy. P :=: λz. [N/x] [z/y] P Si Y no ocurre libre en N y X ocurre libre en P y Z no ocurre libre en P

18 AXIOMAS Y REGLAS DE LA IGUALDAD BETA
Axioma fundamental: (λx.M)N =β {N/x} M (axioma β) Así (λx.x) u = β u y (λx.y) u = β y. (λx. M) = β λz.{z/x}M suponiendo que z no es libre en M (axioma α) 𝑀 = 𝛽 𝑀 𝑟𝑒𝑔𝑙𝑎 𝑑𝑒 𝑟𝑒𝑓𝑙𝑒𝑥𝑖𝑣𝑖𝑑𝑎𝑑 𝑀 = 𝛽 𝑁 𝑁 = 𝛽 𝑀 (𝑟𝑒𝑔𝑙𝑎 𝑑𝑒 𝑐𝑜𝑛𝑚𝑢𝑡𝑎𝑡𝑖𝑣𝑖𝑑𝑎𝑑)

19 AXIOMAS Y REGLAS DE LA IGUALDAD BETA
𝑀 = 𝛽 𝑁 𝑁 = 𝛽 𝑃 𝑁 = 𝛽 𝑃 𝑟𝑒𝑔𝑙𝑎 𝑑𝑒 𝑇𝑟𝑎𝑛𝑠𝑖𝑡𝑖𝑣𝑖𝑑𝑎𝑑 𝑀 = 𝛽 𝑀′ 𝑁 = 𝛽 𝑁′ 𝑀𝑁 = 𝛽 𝑀 ′ 𝑁′ (𝑟𝑒𝑔𝑙𝑎 𝑑𝑒 𝑐𝑜𝑛𝑔𝑟𝑢𝑒𝑛𝑐𝑖𝑎) 𝑀 = 𝛽 𝑀′ 𝜆𝑥.𝑀 = 𝛽 𝜆𝑥.𝑀′ (𝑟𝑒𝑔𝑙𝑎 𝑑𝑒 𝑐𝑜𝑛𝑔𝑟𝑢𝑒𝑛𝑐𝑖𝑎) El efecto de un programa funcional es el cómputo de un valor, imagen en la función representada por el programa de un cierto valor dado.

20 REDUCCIONES (redex) Redex representa la idea de un computo que esta por realizarse. Un redex representaría el hecho de aplicar un programa a cierto dato y su forma normal. El proceso por el cual se obtiene esta forma normal será llamado reducción y podría verse como la «Ejecución» del «Programa» para el «Dato» en cuestión.

21 REDUCCIONES (redex) Los cálculos lambda son simbólicos. Los términos se reducen a la forma simple posible. (𝜆𝑥. 𝑀) 𝑁 = 𝛽 𝑁 𝑥 𝑀 el lado derecho es más simple Esto sugiere reglas e rescritura llamada reducción (𝜆𝑥. 𝑀) 𝑁 = 𝛽 𝑁 𝑥 𝑀 (β-reducción) 𝜆𝑥. 𝑀 = 𝛼 𝜆 𝑦. 𝑦 𝑥 𝑀 y no es libre en M (α-conversión)

22 REDUCCIONES (redex) Si 𝑃 ⇒ 𝛽 𝑄 - Subtérmino de P se reduce (p-reducción) para crear Q Un sub término 𝜆𝑥. 𝑀 𝑁 se denomina exred (redex = reduction expression) de P que se reemplaza por 𝑁 𝑥 𝑀 para crear Q. Un término que no puede tener reducción se encuentra en forma normal

23 REDUCCIONES (redex) Ej.: 𝑆𝐼𝐼=(𝜆𝑥𝑦𝑧. 𝑥𝑧(𝑦𝑧)(𝜆𝑥. 𝑥)(𝜆𝑥. 𝑥)
(𝜆𝑦𝑧. 𝜆𝑥. 𝑥 𝑧 𝑦𝑧 )(𝜆𝑥. 𝑥) 𝜆𝑦𝑧. 𝑍 𝑦𝑧 𝜆𝑥. 𝑥 𝜆𝑧. (𝜆𝑥. 𝑥)𝑧 ((𝜆𝑥.𝑥) 𝑧) 𝜆𝑧. 𝑧 𝜆𝑥. 𝑥 𝑧 𝜆𝑧. 𝜆𝑥. 𝑥 𝑧𝑧 𝜆𝑧.𝑧𝑧

24 TEOREMA DE CHURCH-ROSSER
Para todos los términos A puros M, P Y Q, si 𝑀⇒𝑃 y 𝑀 ⇒ ∗ 𝑄, entonces debe existir un término R tal que P ⇒ ∗ 𝑅 Y que 𝑄 ⇒ ∗ 𝑅 Notación para 0 o más conversiones α y reducciones β

25 TEOREMA DE CHURCH-ROSSER
Si M se reduce a P y a Q, entonces ambos pueden llegar a algún R común. M Q P R *

26 REGLAS DE CÁLCULO En los lenguajes de programación las aplicaciones M N de funciones, se dice que se invocan por valor. Para cálculo lambda estrategia de reducción es una regla para escoger redex. Hace corresponder a cada término P (que no esté en forma normal), con un término Q tal que 𝑃 ⇒ 𝛽 𝑄. Reducción para las invocaciones por valor elige la exred del extremo izquierdo y más interna de un término. Reducción para las invocaciones por nombre elige la exred del extremo izquierdo y más externa.

27 REGLAS DE CÁLCULO A pesar de que ocurra una evaluación sin final, los lenguajes funcionales utilizan la invocación por valor debido a que es posible implantarla eficientemente y alcanza la forma normal con la frecuencia necesaria.

28 CONSTANTES Y PRIMITIVAS DE LENGUAJES DE PROGRAMACIÓN
Constantes: están pensadas para representar una función específica y no una genérica como las variables - cada cálculo lambda tiene su propio conjunto de constantes. Sintaxis <término> ::= <constante>

29 CONSTANTES Y PRIMITIVAS DE LENGUAJES DE PROGRAMACIÓN
Ej.: true, false, if, O, iszero, pred, succ, fix, ... 𝑇 ::= 𝜆𝑥𝑦. 𝑥 𝐹 ::= 𝜆𝑥𝑦. 𝑦 O definir 𝑖𝑓_𝑡ℎ𝑒𝑛_𝑒𝑙𝑠𝑒∷=𝜆𝑏. 𝜆𝑚. 𝜆𝑛((𝑏 𝑚)𝑛) (valor arbitrario) Y a partir de allí ((𝑖𝑓_𝑡ℎ𝑒𝑛_𝑒𝑙𝑠𝑒 𝑇) 𝑀 𝑁) = 𝑀 ((𝑖𝑓_𝑡ℎ𝑒𝑛_𝑒𝑙𝑠𝑒 𝐹) 𝑀 𝑁) =𝑁

30 CONSTANTES Y PRIMITIVAS DE LENGUAJES DE PROGRAMACIÓN
Par ordenado: Definir término constructor de pares - Ej.: aplicado sobre dos términos M N devuelva par (M N) 𝐶𝑜𝑛𝑠∷=𝜆𝑥𝑦. 𝜆𝑧. 𝑧 𝑥 𝑦 si aplicamos a M N 𝜆𝑧. ((𝑧 𝑀) 𝑁) 𝑀 𝑁 ∷=(𝐶𝑜𝑛𝑠 𝑀 𝑁) útil para representar listas

31 CONSTANTES Y PRIMITIVAS DE LENGUAJES DE PROGRAMACIÓN
Ejemplo para construir serie numérica: Para el O 0∷= 𝜆𝑥. 𝑥 Para el sucesor 𝑠𝑢𝑐𝑒𝑠𝑜𝑟∷= 𝜆𝑥. (𝐶𝑜𝑛𝑠 𝐹 𝑥) 1∷= 𝑠𝑢𝑐𝑒𝑠𝑜𝑟 0 =(𝐶𝑜𝑛𝑠 𝐹 0) 2 ∷= 𝑠𝑢𝑐𝑒𝑠𝑜𝑟 1 = 𝐶𝑜𝑛𝑠 𝐹 1 =(𝐶𝑜𝑛𝑠 𝐹 (𝐶𝑜𝑛𝑠 𝐹 0)) Y así sucesivamente.

32 CONSTANTES Y PRIMITIVAS DE LENGUAJES DE PROGRAMACIÓN
Reglas de reducción para algunas constantes: 𝐼𝑓 𝑡𝑟𝑢𝑒 𝑀 𝑁 ⇒ 𝛿 𝑀 𝐼𝑓 𝑓𝑎𝑙𝑠𝑒 𝑀 𝑁 ⇒ 𝛿 𝑁 𝑓𝑖𝑥 𝑀 ⇒ 𝛿 𝑀 𝑖𝑠𝑧𝑒𝑟𝑜 ⇒ 𝛿 𝑡𝑟𝑢𝑒 𝑖𝑠𝑧𝑒𝑟𝑜 ( 𝑠𝑢𝑐𝑐 𝐾 𝑂) ⇒ 𝛿 𝑓𝑎𝑙𝑠𝑒 𝑑𝑜𝑛𝑑𝑒 𝑘≥1 𝑖𝑠𝑧𝑒𝑟𝑜 𝑝𝑟𝑒𝑑 𝑘 𝑂 ⇒ 𝛿 𝑓𝑎𝑙𝑠𝑒 𝑑𝑜𝑛𝑑𝑒 𝑘≥1 𝑠𝑢𝑐𝑐(𝑝𝑟𝑒𝑑 𝑀) ⇒ 𝛿 𝑀 𝑝𝑟𝑒𝑑(𝑠𝑢𝑐𝑐 𝑀) ⇒ 𝛿 𝑀

33 CONSTANTES Y PRIMITIVAS DE LENGUAJES DE PROGRAMACIÓN
Elementos sintácticos para un cálculo lambda aplicado CONSTRUCTOR CÁLCULO LAMBDA Variable X Constante C Aplicación M N Abstracción 𝜆𝑥. 𝑀 Entero 𝑆𝑢𝑐𝑐 𝑘 0, 𝑓𝑜𝑟 𝑘>0 𝑃𝑟𝑒𝑑 𝑘 0, 𝑓𝑜𝑟 𝑘>0 Condicional 𝐼𝑓 𝑃 𝑀 𝑁 Asignación 𝜆𝑥. 𝑀 N Función recursiva (𝜆𝑥. 𝑀)(𝑓𝑖𝑥 (𝜆𝑓.𝜆𝑥. 𝑁))


Descargar ppt "EL CÁLCULO LAMBDA λ."

Presentaciones similares


Anuncios Google