Articulo de referencia

Forma normal beta

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 redu...

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 ]

(λincógnita.A)METRO.{\displaystyle (\mathbf {\lambda } xA)M.}

Un redexr{\displaystyle r}está en posición de cabeza en un términot{\displaystyle t}, sit{\displaystyle t}tiene 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):

λincógnita1λincógnitanorte.(λincógnita.A)METRO1el redex rMETRO2METROmetro,{\displaystyle \lambda x_{1}\ldots \lambda x_{n}.\underbrace {(\lambda xA)M_{1}} _{{\text{el redex }}r}M_{2}\ldots M_{m},}

dóndenorte0{\displaystyle n\geq 0}ymetro1.{\displaystyle m\geq 1.}

Una reducción beta es la aplicación de la siguiente regla de reescritura a una reexpresión beta contenida en un término:

(λincógnita.A)METROA[incógnita:=METRO]{\displaystyle (\mathbf {\lambda } xA)M\longrightarrow A[x:=M]}

dóndeA[incógnita:=METRO]{\displaystyle A[x:=M]}es el resultado de sustituir el términoMETRO{\displaystyle M}para la variableincógnita{\displaystyle x}en el términoA{\displaystyle A}.

Una reducción beta de cabeza es una reducción beta aplicada en posición de cabeza, es decir, de la siguiente forma:

λincógnita1λincógnitanorte.(λincógnita.A)METRO1METRO2METROmetroλincógnita1λincógnitanorte.A[incógnita:=METRO1]METRO2METROmetro,{\displaystyle \lambda x_{1}\ldots \lambda x_{n}.(\lambda xA)M_{1}M_{2}\ldots M_{m}\longrightarrow \lambda x_{1}\ldots \lambda x_{n}.A[x:=M_{1}]M_{2}\ldots M_{m},}

dóndenorte0{\displaystyle n\geq 0}ymetro1.{\displaystyle m\geq 1.}

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:

λincógnita1λincógnitanorte.incógnitaMETRO1METRO2METROmetro,{\displaystyle \lambda x_{1}\ldots \lambda x_{n}.xM_{1}M_{2}\ldots M_{m},}

dóndeincógnita{\displaystyle x}es una variable,norte0{\displaystyle n\geq 0}ymetro0{\displaystyle m\geq 0}.

Una forma normal de cabeza no siempre es una forma normal, [ 5 ] debido a los argumentos aplicadosMETROj{\displaystyle M_{j}}no 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érminosMETROj{\displaystyle M_{j}}son 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 λ,METRO=λincógnita.norte{\displaystyle M=\mathbf {\lambda } xN}dóndenorte{\displaystyle N}es 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 formaincógnitaMETRO1METRO2METROmetro{\displaystyle xM_{1}M_{2}\ldots M_{m}}, dóndeincógnita{\displaystyle x}es cualquier variable ymetro0{\displaystyle m\geq 0}). [ 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

  1. "Forma normal beta" . Enciclopedia . TheFreeDictionary.com . Consultado el 18 de noviembre de 2013 .
  2. Thompson, Simon (1991). Teoría de tipos y programación funcional . Wokingham, Inglaterra: Addison-Wesley. pág. 38. ISBN  0-201-41667-0OCLC 23287456 
  3. ^ Barendregt , Henk P. (1984). Introducción al cálculo Lambda (PDF) (edición revisada ). pag. 24.  
  4. Thompson, Simon (1991). Teoría de tipos y programación funcional . Wokingham, Inglaterra: Addison-Wesley. pág. 35. ISBN  0-201-41667-0OCLC 23287456 
  5. 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 
  6. 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 .
  7. 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.