Algoritmo para determinar la igualdad de funciones en el cálculo lambda simplemente escrito?

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?β

MaiaVictor
fuente
Simply Typed Lambda Calculus / STLC wikipedia. dado que no está completo en Turing, ¿existe algún otro modelo básico de cómputo al que sea equivalente? También podría ser útil estudiar el algoritmo de detección de detención, que según Wikipedia es decidible para STLC ...
vzn
3
@Marzio: En realidad, creo que el problema aquí es con la forma en que se formula la pregunta, lo cual es bastante impreciso. Una vez formulado adecuadamente, esta es una pregunta de nivel de investigación. Una mejor formulación sería: sabemos que la igualdad beta de los términos lambda simplemente tipados es decidible. Dado , ¿es decidible si para todos , ? La respuesta es negativa en general (por lo que no existe un algoritmo como el que busca Viclib). Aunque tal vez se espera, esto no es obvio a priori y es consecuencia de un par de documentos de los años 90. M,N:στX:σMXβNX
Damiano Mazza
@DamianoMazza: ok, de hecho no voté para cerrarlo ... Eliminaré mi comentario, dejaré el tuyo y esperaré el comentario / edición de OP.
Marzio De Biasi
@DamianoMazza y Marzio, no sé lo suficiente como para hacer una pregunta tan formal. Sin embargo, desearía haberlo hecho, pero esto no es algo que aprendo en mi escuela. De hecho, incluso buscar en Google "igualdad beta", que es algo que realmente intenté antes de hacer la pregunta, me da tan pocos resultados que es casi como si este término ni siquiera existiera. Así que ni siquiera tengo una idea de dónde aprendes y lees sobre todo eso. ¿Me dirían amablemente al lugar correcto para comenzar a estudiar el tema? Pregunta actualizada
MaiaVictor
1
@Viclib: la equivalencia beta es una noción técnica, evité mencionarla en mi respuesta. Aproximadamente, dos términos son equivalentes beta cuando producen el mismo resultado. Así diciendo para todos los significa que y calculan la misma función. Con respecto a los consejos para aprender sobre el cálculo lambda (con o sin tipo), creo que las notas de Peter Selinger y las notas de lectura de Sørensen y Urzyczyn sobre Curry-Howard son excelentes puntos de partida. MXβNXXMN
Damiano Mazza

Respuestas:

13

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áximoMM0x|x|MM|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.NM0NM0NM

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

tM:nat[σ]bool

(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_Mn0_tM0_M

Damiano Mazza
fuente
Probablemente también sea posible usar la codificación de funciones polinomiales multivariadas en STLC y luego apelar al teorema de Matiyasevich .
cody
¿Entonces el STLC no está completo, pero es lo suficientemente potente como para codificar la función de transición de una máquina de Turing? Entonces, ¿una máquina de Turing podría definirse como una cinta más un programa STLC que opera en ella?
MaiaVictor
2
@Viclib: Piénselo: simular un paso de una máquina de Turing arbitraria no requiere mucha potencia computacional. Básicamente, solo necesita tipos de datos finitos (con if-then-else), listas (con las operaciones básicas: contras, tail, etc.) y pares ordenados. (De hecho, la Tesis Extendida de Turing de la Iglesia afirma que tal baja complejidad es común a cada modelo de máquina razonable). Lo que le falta al STLC es la capacidad de ejecutar transiciones TM "ad libitum", independientemente de la entrada: solo puede iterarlas una cantidad de veces igual a una torre de exponenciales en el tamaño de entrada (ver el documento de Mairson).
Damiano Mazza
1
@cody: Gracias, no conocía ese papel. Supongo que tienes razón.
Damiano Mazza