Está inspirado en hechos reales, pero la forma en que se afirma es apenas reconocible y "debe considerarse con sospecha" no tiene sentido.
La coherencia tiene un significado preciso en la lógica: una teoría coherente es aquella en la que no se pueden probar todas las afirmaciones. En la lógica clásica, esto es equivalente a la ausencia de una contradicción, es decir, una teoría es inconsistente si y sólo si hay una declaración detales que la teoría demuestra tantoy su negación.AA¬A
Entonces, ¿qué significa esto con respecto al cálculo lambda? Nada. El cálculo lambda es un sistema de reescritura, no una teoría lógica.
Es posible ver el cálculo lambda en relación con la lógica. Considere que las variables representan una hipótesis en una prueba, las abstracciones lambda como pruebas bajo una determinada hipótesis (representada por la variable), y la aplicación como una prueba condicional y una prueba de la hipótesis. Entonces la regla beta corresponde a simplificar una prueba aplicando modus ponens , un principio fundamental de la lógica.
Sin embargo, esto solo funciona si la prueba condicional se combina con una prueba de la hipótesis correcta. Si tiene una prueba condicional que asume y también tiene una prueba de , no puede combinarlos. Si desea que esta interpretación del cálculo lambda funcione, debe agregar una restricción que solo las pruebas de la hipótesis adecuada se apliquen a las pruebas condicionales. Esto se llama sistema de tipos , y la restricción es la regla de escritura que dice que cuando pasa un argumento a una función, el tipo del argumento debe coincidir con el tipo de parámetro de la función.n=3n=2
La correspondencia de Curry-Howard es un paralelo entre los cálculos mecanografiados y los sistemas de prueba.
- los tipos corresponden a declaraciones lógicas;
- los términos corresponden a pruebas;
- los tipos habitados (es decir, los tipos en los que existe un término de ese tipo) corresponden a declaraciones verdaderas (es decir, las declaraciones en las que hay una prueba de esa declaración);
- La evaluación del programa (es decir, reglas como beta) corresponden a transformaciones de pruebas (que mejor transforman las pruebas correctas en pruebas correctas).
Un cálculo tipado que tiene un combinador de punto fijo como permite construir un término de cualquier tipo (intente evaluar ), por lo que si toma la interpretación lógica a través de la correspondencia Curry-Howard, obtendrá una teoría inconsistente. Ver ¿El combinador Y contradice la correspondencia Curry-Howard? para más detalles.YY(λx.x)
Esto no es significativo para el cálculo lambda puro, es decir, para el cálculo lambda sin tipos.
En muchos cálculos mecanografiados, es imposible definir un combinador de punto fijo. Esos cálculos mecanografiados son útiles con respecto a su interpretación lógica, pero no como base para un lenguaje de programación completo de Turing. En algunos cálculos mecanografiados, es posible definir un combinador de punto fijo. Esos cálculos mecanografiados son útiles como base para un lenguaje de programación completo de Turing, pero no con respecto a su interpretación lógica.
En conclusión:
- El cálculo lambda no es "inconsistente", ese concepto no se aplica.
- Un cálculo lambda mecanografiado que asigna un tipo a cada término lambda es inconsistente. Algunos cálculos lambda mecanografiados son así, otros hacen que algunos términos no se puedan escribir y sean consistentes.
- Los cálculos lambda mecanografiados no son la única razón de ser del cálculo lambda, e incluso los cálculos lambda mecanografiados inconsistentes son herramientas muy útiles, simplemente para no probar las cosas.