¿Qué es esencialmente el cálculo de λ?


11

Tengo lo que llamaría una pregunta filosófica sobre el cálculo λ.

Cuando explore el cálculo λ, se sorprenderá al ver todas las cosas que puede hacer allí. Puede definir enteros, operaciones aritméticas, booleanos, sentencias if-then-else, bucles, funciones recursivas, etc. Creo que se ha demostrado que es computacionalmente completo.

Pero, por otro lado, si considera lo que puede hacer con las funciones en el cálculo λ, se da cuenta de que lo único que puede hacer es alimentar una función y le devuelve otra función. Y ese proceso nunca termina.

Entonces, ¿cómo puede extraer un resultado de un cálculo?

Supongamos que el resultado de una expresión es función f. Desea verificar si fes lo que esperaba. Puede probarlo, tomar una función que conozca, solicitarla fy recibirla g. Pero para verificar ges correcto, ahora necesita verificar lo que ghace. Y comienzas de nuevo. Entonces, ¿cómo puedes contar algo f?

Me parece que puede reemplazar todas las funciones en cálculo λ por una sola función, la función de identidad I = λx.x, y todo sigue funcionando como se describe en cálculo λ. El número de la Iglesia 3cuando se da fy xregresa f(f(f(x))). Pero desde fy xsolo puede ser I, vuelve I. Iaplicado Iy Itambién regresa I. Entonces Isatisface la definición de 3. Los "booleanos" (λxy.x)y (λxy.y)necesitan 2 argumentos, que serán Iy Ientonces ambos booleanos volverán I. Cada uno es equivalente a la identidad, a pesar de que se comportan exactamente de acuerdo con sus definiciones.

Entonces, ¿cómo haces la diferencia? ¿Cómo muestra que el cálculo λ trata con algo más que una sola función?

¿Existe un concepto de identidad? ¿Puedes identificar una función inmediatamente sin evaluarla? Creo que se demostró que no hay forma de probar 2 funciones para la igualdad.

¿O el cálculo λ no se trata de funciones, sino de la descripción formal de lo que hacen? Eso significaría que las expresiones λ no solo definen lo que hacen las funciones sino que también son los datos que las funciones manipulan. Así que cuando se escribe A B, que no se aplican Aa B, pero se aplica la función descrita por la cadena Ade definición formal de una función contenida en Bvolver otra definición formal.

¿Qué está pasando realmente en el cálculo λ? ¿Cuáles son los objetos matemáticos con los que trata?


Seguimiento:

Bien, de la respuesta a continuación parece que el cálculo λ no se trata tanto de funciones en el sentido matemático, sino del subconjunto de funciones que se pueden expresar como expresiones λ. O incluso más sobre la manipulación de las expresiones λ.


2
¿Podrías reformular la pregunta final a algo un poco menos orientado a la opinión? Debería haber una respuesta sólida y no obstinada para esto.
Telastyn

Desde mi educación, el cálculo λ existe únicamente para hacer que me duela el cerebro. Todavía no estoy seguro de cómo pasé esa clase intacta.

Respuestas:


9

De hecho, es imposible determinar la equivalencia semántica de los términos de cálculo lambda. Esta es una aplicación del teorema de Rice. Sin embargo, es fácil comparar términos sintácticamente , es decir, probar si tienen exactamente la misma estructura (de manera equivalente, si su "representación de cadena" es la misma). Eso es realmente todo lo que necesitas para obtener resultados.

Por ejemplo, para calcular funciones n = f(i)de lo natural a lo natural, usted proporciona la codificación de la iglesia icomo parámetro a su función de cálculo lambda, aplica reglas de reducción hasta que se detiene e inspecciona el término resultante. Si coincide con la estructura de los números de la iglesia, extraiga el número nque codifica. Ese es tu resultado. Si el término resultante no se parece a un número de iglesia, o la reducción no se detiene, la función no está definida en i.

Los términos efectivamente obtienen doble servicio como "código" y "datos". Eso no es nada especial: la cinta de una máquina de Turing (una cadena sobre un alfabeto) puede interpretarse, y con frecuencia se interpreta, como una codificación de una máquina de Turing o de algún aspecto de la misma. Del mismo modo, los bits en la memoria principal de una máquina von Neumann pueden ser una codificación de un programa o una codificación de otra cosa. O incluso ambos a la vez. Es solo la "perspectiva predeterminada" la que difiere.


¿La expresión del resultado de un cálculo con números de la Iglesia siempre se resolverá en la forma canónica como (λfx.f (f (fx)))? ¿O puedes obtener diferentes expresiones equivalentes del mismo número?
Florian F

@FlorianF Estoy casi seguro de que existen términos no canónicos (hasta equivalencia alfa), pero si es así, pueden evitarse mediante la construcción cuidadosa del programa.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.