En el Cálculo Lambda, la semántica operacional indica que la evaluación de una expresión es una serie de pasos de reducción donde cada paso siguiente se obtiene por reescritura. Una reducción tiene la forma de manera que cada aparición de en la expresión se sustituye por .
Dada una expresión reducible , cada reducción de reemplaza una redex (reducible expression) de acuerdo a ciertas reglas. Existen 4 tipos de reducciones lambda:
- -reducción: transforma constantes evaluando operadores. Ejemplo: .
- -reducción: renombra variables ligadas de expresiones . Matemáticamente, sea si . Esto desambigua identificadores iguales pero en distintos ámbitos, lo que asegura una sustitución segura para evitar problemas en la captura de variables. Ejemplo: .
- reducción: sustituye el argumento sobre el cuerpo de la función, reemplazando todas las ocurrencias de la variable instanciada. . Esto aplica un argumento, lo que es similar a llamar la función. Ejemplo: .
- -reducción: dos funciones son lo mismo si dan el mismo resultado para todos sus argumentos. Matemáticamente, si es función. Ejemplo: .
Un redex es un término de la forma . Dada una -expresión, se dice que está en forma normal si no contiene redexs. No toda -expresión admite una forma normal. Por ejemplo:
Órdenes de Reducción
El orden en el que se aplican las reducciones, similar al orden de evaluación, puede ser:
- Impaciente: se reduce desde dentro hacia fuera. Esto permite algunos bucles infinitos.
- Perezoso: se reduce desde lo externo hacia dentro. El orden perezoso siempre termina.
Teoremas de Church-Rosser
Confluencia
flowchart LR; 1[M] --$$*$$--> 2[P] 1 --$$*$$--> 3[Q] 2 --$$*$$--> 4[E] 3 --$$*$$--> 4
Si admite forma normal , esta es única salvo que se aplique una -reducción (un renombramiento).
Terminación
El orden perezoso siempre termina.