Sabemos que la igualdad beta de los términos lambda simplemente escritos es decidible. Dado M, N: σ → τ, ¿es decidible si para todos X: σ, MX NX?
10
Sabemos que la igualdad beta de los términos lambda simplemente escritos es decidible. Dado M, N: σ → τ, ¿es decidible si para todos X: σ, MX NX?
Respuestas:
Como dije en mi comentario, la respuesta en general es no.
El punto importante a entender (lo digo para Viclib, que parece estar aprendiendo sobre estas cosas) es que tener un lenguaje de programación / conjunto de máquinas en el que todos los programas / cálculos terminen de ninguna manera implica que la igualdad de funciones (es decir, si dos programas / máquinas calculan la misma función) es decidible. Un ejemplo sencillo: tome el conjunto de máquinas de Turing con reloj polinómico. Por definición, todas estas máquinas terminan en todas las entradas. Ahora, dada cualquier máquina de Turing , hay una máquina de Turing que, dada en la entrada de la cadena , simulapasos del cálculo de en una entrada fija (digamos, la cadena vacía) y acepta si termina como máximoM M0 x |x| M M |x| pasos, o rechaza lo contrario. Si es una máquina de Turing que siempre rechaza de inmediato, y tienen ambos (obviamente) una frecuencia polinómica, y si pudiéramos decidir si y calculan la misma función (o, en este caso, deciden el mismo lenguaje), podríamos decidir si (que, recuerde, es una máquina de Turing arbitraria) termina en la cadena vacía.N M0 N M0 N M
En el caso del cálculo simple de (STLC), funciona un argumento similar, excepto que medir el poder expresivo del STLC no es tan trivial como en el caso anterior. Cuando escribí mi comentario, tenía en mente un par de artículos de Hillebrand, Kanellakis y Mairson de principios de los 90, que muestran que, al usar tipos más complejos que el tipo habitual de enteros de la Iglesia, uno puede codificar en el STLC lo suficientemente complejo cálculos para que funcione el argumento anterior. En realidad, ahora veo que el material necesario ya está en la prueba simplificada de Mairson del teorema de Statman:λ
Harry G. Mairson, Una prueba simple de un teorema de Statman. Theoretical Computer Science, 103 (2): 387-394, 1992. (Disponible en línea aquí ).
En ese documento, Mairson muestra que, dado cualquier máquina de Turing , hay un tipo simple y una -term que codifica la función de transición de . (Esto no es obvio a priori, si se tiene en cuenta el poder expresivo extremadamente pobre de la STLC en los enteros de la Iglesia. De hecho, la codificación de Mairson no es inmediata). A partir de esto, no es difícil construir un términoM σ λ δM:σ→σ M
(donde es la instanciación en del tipo de enteros de la Iglesia) de modo que reduce a si termina en la mayoría de los pasos cuando alimentó la cadena vacía, o se reduce a contrario. Como anteriormente, si pudiéramos decidir que la función representada por es la función constante , habríamos decidido la terminación de en la cadena vacía.nat[σ] σ tMn–– 1– M n 0– tM 0– M
fuente