¡Yo! Esta es probablemente una pregunta estúpida, sin embargo, nunca lo he visto escrito explícitamente si, por ejemplo, la capacidad de decisión de la verificación de tipo es equivalente a la propiedad de normalización fuerte. Por lo tanto, hago esta pregunta para aclarar todas las relaciones posibles entre la verificación de tipos, la tipificación y la normalización fuerte.
Déjame explicarte mi motivación. Para las teorías de tipos (estoy siendo intencionalmente vago aquí, pero estoy interesado principalmente en las teorías de tipos dependientes), se utiliza una fuerte normalización para demostrar la capacidad de decisión de la verificación de tipos. Por otro lado, cualquier sistema tipeado que conozca que tenga una de estas propiedades también tiene la otra. Sin embargo, nunca he visto explícitamente que una fuerte normalización sea equivalente a la capacidad de decisión de la verificación de tipos.
De forma análoga, para demostrar la tipibilidad, uno generalmente (tal vez siempre) reduce un término a una forma normal. Sin embargo, se sabe que la tipificación no es cierta para las teorías de tipos dependientes, mientras que puede mantenerse una fuerte normalización.
Por decidabilidad de la verificación de tipos, quiero decir que para cualquier tipo , contexto y término sin tipo , es posible decidir en un número finito de pasos si es verdadero o no.
Por decidabilidad de la tipificación, quiero decir que para cualquier término sin tipo dado , es posible decidir en un número finito de pasos si existe un contexto y un tipo tal que es verdadero.
1) ¿Es cierto que la capacidad de decisión de la verificación de tipos es equivalente a que cada término sea fuertemente normalizable?
2) En términos más generales, ¿cuál es la relación entre la capacidad de decidir la verificación de tipos, la tipificación y la normalización fuerte? ¿Cuál implica el otro?
Gracias por adelantado.
EDITAR
Dada la insatisfacción con respecto al nivel de generalidad de mi pregunta (que desconocía), me gustaría delimitarla solo a Pure Type Systems. Por supuesto, los comentarios adicionales o contraejemplos con respecto a otras teorías de tipo serán de gran utilidad.
fuente
Respuestas:
Daré una respuesta más centrada y técnica a la de Martin. Si estamos interesados en teorías de tipo dependiente, entonces ninguna dirección es obvia, pero generalmente se asume que ambas sostienen. Sin embargo, la dirección Decidable Normalizing está abierta, creo, incluso para sistemas relativamente bien entendidos, aunque tenemos resultados parciales. Esta pregunta explora algunos de los mismos problemas.⇒
Más técnicamente: un buen marco técnico para estas preguntas es el establecimiento de sistemas de tipo puro en el que la normalización hace implicaría decidibilidad de comprobación de tipos. El resultado es folklore, pero no trivial, ya que se necesita encontrar una estrategia para cuándo aplicar la regla de conversión. La estrategia obvia es normalizar los tipos inferidos antes de todas las aplicaciones de la regla de aplicación. Hay algunas sutilezas incluso aquí, donde la corrección de una estrategia natural (más eficiente) llamada aplazamiento de expansión estuvo abierta por un tiempo, pero se ha resuelto desde entonces.
Hay sistemas de tipos que se están normalizando pero son indecidibles, sobre todo el sistema con tipos de intersección que escribe exactamente los términos de normalización, por lo que debe ser indecidible (ya que de lo contrario podría usarse para identificar términos de normalización). Sería tentador decir aquí que el sistema es defectuoso en el sentido de que no está dirigido por tipo , es decir, los términos no contienen suficiente información para determinar el tipo.
Ahora lo contrario, lo que sugeriría que los sistemas no normalizadores son indecidibles, está lejos de ser obvio: ¡incluso estuvo abierto durante un tiempo para el famoso sistema de Martin-Löf! Este caso se resolvió dando un ejemplo de un combinador de bucles, que permite escribir cálculos arbitrarios.Typ e : Typ e
Sin embargo, el problema general todavía está abierto para los sistemas generales de tipo puro, aunque se cree que es cierto, y se han mostrado algunos resultados parciales en esta dirección, por ejemplo, aquí .
fuente
(1) falso. Ejemplo de contador: Java, Scala, Haskell, ...
(2) No se mantienen relaciones generales, realmente depende de los detalles del lenguaje / sistema de mecanografía. Hay una excepción: para los idiomas sanos y los sistemas de escritura, imagino que la capacidad de inferencia de tipos (que supongo es lo que quiere decir con "capacidad de escritura") trivialmente implica la verificación de tipos. Pero no me sorprendería si uno pudiera inventar un sistema loco donde incluso esa implicación no se cumple.
fuente