En el cálculo lambda , un término está en forma normal beta si no es posible ninguna reducción beta . [ 1 ] Un término está en forma normal beta-eta si no es posible ni una reducción beta ni una reducción eta . Un término está en forma normal cabeza si no hay beta-reducción en la posición cabeza . La forma normal de un término, si existe, es única (como corolario del teorema de Church-Rosser ). [ 2 ] Sin embargo, un término puede tener más de una forma normal cabeza.
Reducción beta
En el cálculo lambda, un beta redex es un término de la forma: [ 3 ] [ 4 ]
Un redexestá en posición de cabeza en un término, sitiene la siguiente forma (tenga en cuenta que la aplicación tiene mayor prioridad que la abstracción, y que la fórmula que aparece a continuación está pensada para ser una abstracción lambda, no una aplicación):
dóndey
Una reducción beta es la aplicación de la siguiente regla de reescritura a una reexpresión beta contenida en un término:
dóndees el resultado de sustituir el términopara la variableen el término.
Una reducción beta de cabeza es una reducción beta aplicada en posición de cabeza, es decir, de la siguiente forma:
dóndey
Cualquier otra reducción es una reducción beta interna .
Formas normales
Una forma normal es un término que no contiene ninguna reducción beta, [ 3 ] [ 5 ] es decir, que no se puede reducir más. Algunos autores también pueden incluir reducciones η, de ahí los términos distintivos forma normal beta y forma normal beta-eta .
Una forma normal de cabeza es un término que no contiene una redex beta en posición de cabeza, es decir, que no puede reducirse más mediante una reducción de cabeza. Al considerar el cálculo lambda simple (es decir, sin la adición de símbolos de constante o función, destinados a ser reducidos por reglas delta adicionales), las formas normales de cabeza son los términos de la siguiente forma:
dóndees una variable,y.
Una forma normal de cabeza no siempre es una forma normal, [ 5 ] debido a los argumentos aplicadosno tiene por qué ser normal. Sin embargo, lo contrario es cierto: cualquier forma normal es también una forma normal de cabeza. [ 5 ] De hecho, las formas normales son exactamente las formas normales de cabeza en las que los subtérminosson en sí mismas formas normales. Esto proporciona una descripción sintáctica inductiva de las formas normales.
También existe la noción de forma normal de cabeza débil . Un término λ, M, está en forma normal de cabeza débil en caso de que sea una abstracción λ,dóndees cualquier expresión, incluso conteniendo un redex, o está en forma normal de cabeza (en el cálculo lambda puro, las únicas formas normales de cabeza que no son abstracciones λ son de la forma, dóndees cualquier variable y). [ 6 ] Las formas normales de cabeza débil fueron introducidas por Simon Peyton Jones para reflejar la forma a la que realmente se evalúan los lenguajes funcionales. [ 6 ] [ 7 ]
Véase también
Referencias
- ↑ "Forma normal beta" . Enciclopedia . TheFreeDictionary.com . Consultado el 18 de noviembre de 2013 .
- ↑ Thompson, Simon (1991). Teoría de tipos y programación funcional . Wokingham, Inglaterra: Addison-Wesley. pág. 38. ISBN 0-201-41667-0OCLC 23287456
- ^ Barendregt , Henk P. (1984). Introducción al cálculo Lambda (PDF) (edición revisada ). pag. 24.
- ↑ Thompson, Simon (1991). Teoría de tipos y programación funcional . Wokingham, Inglaterra: Addison-Wesley. pág. 35. ISBN 0-201-41667-0OCLC 23287456
- 1 2 3 Thompson, Simon (1991). Teoría de tipos y programación funcional . Wokingham, Inglaterra: Addison-Wesley. pág. 36. ISBN 0-201-41667-0OCLC 23287456
- 1 2 Cockett, JRB (2023-03-29). "Notas sobre la evaluación de términos de cálculo λ y máquinas abstractas" (PDF) . Recuperado el 2024-05-14 .
- ↑ Peyton Jones, Simon L. (1987). La implementación de lenguajes de programación funcional . Englewood Cliffs, Nueva Jersey: Prentice/Hill International. ISBN 978-0-13-453333-9.
- Cálculo lambda
- Formas normales (lógica)