Para una prueba de corrección, estoy buscando una noción utilizable de equivalencia de programa para los sistemas de tipo puro (PTS) de Barendregt; falta eso, para suficientes sistemas de tipos específicos. Mi objetivo es simplemente usar la noción, no investigarla por sí misma.
Esta noción debería ser " extensional ", en particular, para demostrar que , debería ser suficiente para demostrar que t 1 para todos los valores v del tipo apropiado.
Equivalencia denotacional
La equivalencia denotacional satisface fácilmente todos los lemas correctos, pero una semántica denotacional para PTS arbitrario parece bastante desafiante: ya parece difícil para el Sistema F.
Equivalencia contextual / observacional
La alternativa obvia son las diversas formas de equivalencia contextual (dos términos son equivalentes si ningún contexto básico puede distinguirlos), pero su definición no se puede utilizar de inmediato; los diversos lemas no son triviales de probar. ¿Han sido probados para PTS? Alternativamente, ¿sería la teoría una "extensión obvia", o hay alguna razón para creer que la teoría sería significativamente diferente?
EDITAR: No dije lo que es difícil arriba.
Parte fácil: la definición
Definir la equivalencia no es demasiado difícil, y la definición aparece en muchos artículos (comenzando al menos desde el estudio de PCF de Plotkin 1975, si no antes, la fuente podría ser la tesis doctoral de Morris de 1968). We si para todos los contextos básicos C , C [ t 1 ] ≃ C [ t 2 ] , es decir, C [ t 1 ] y C [ t 2 ] dan el mismo resultado
Parte difícil: las pruebas
Sin embargo, esos documentos a menudo no explican lo difícil que es realmente usar esta definición. Todas las referencias a continuación muestran cómo lidiar con este problema, pero la teoría necesaria es más difícil de lo que uno piensa. ¿Cómo demostramos que ? ¿Realmente hacemos análisis de casos e inducción en contextos? No quieres hacer eso.
Como señala Martin Berger, desea utilizar, en su lugar, bisimulación (como lo hizo Pitts) o una relación de equivalencia lógica (que Harper simplemente llama "equivalencia lógica").
Finalmente, ¿cómo se prueba la extensionalidad como se definió anteriormente?
Harper resuelve estas preguntas en 10 páginas para el Sistema T, a través de una considerable inteligencia y relaciones lógicas. Pitts toma más. Algunos idiomas son aún más complejos.
Como lidiar con esto
De hecho, estoy tentado de hacer mis pruebas condicionalmente en una teoría de equivalencia conjeturada para PTS, pero las teorías reales requieren argumentos no triviales, por lo que no estoy seguro de la probabilidad de que tal conjetura sea válida.
Soy consciente (aunque no en detalle) de los siguientes trabajos:
- Andrew Pitts (por ejemplo, en ATTAPL para un Sistema F extendido, y en algunos documentos, como las "Teorías de equivalencia de programas de 58 páginas basadas en operaciones").
- Fundamentos prácticos de los lenguajes de programación (capítulos 47-48), que está inspirado en Pitts (pero afirma tener pruebas más simples).
- Un estudio lógico de equivalencia del programa . No puedo encontrar un resumen en inglés, pero parece gastar mucho esfuerzo para los efectos secundarios (referencias), lo que parece una complicación ortogonal.
fuente
Respuestas:
fuente
fuente
Esta respuesta sugiere un enfoque del problema. (Comentarios son bienvenidos).
El capítulo 49 de PFPL discute, a la vez, las nociones equivalentes de equivalencia observacional y equivalencia lógica. La equivalencia lógica es la misma relación utilizada para establecer la parametricidad, por lo que el núcleo del capítulo es una prueba de la parametricidad para el Sistema F.
El trabajo sobre parametricidad para PTS, AFAICT, no discute la relación con la equivalencia observacional. De hecho, incluso para definir la equivalencia observacional, a menos que tenga no terminación, necesita algún tipo de suelo positivo (naturales, booleanos) para usar en las observaciones.
Sin embargo, el teorema clave (PFPL 47.6, 48.3, 49.2) para relacionar las dos relaciones se demuestra independientemente del lenguaje específico:
Entonces, para mostrar que la equivalencia lógica implica equivalencia observacional, uno solo necesita demostrar que la equivalencia lógica es una congruencia consistente. Sin embargo, la otra dirección requiere más trabajo: en particular, para demostrar que la equivalencia lógica es una congruencia, se procede por inducción en contextos.
n + 1 = 1 + n
VecN n
n
VecN
VecN
Vec (n + 1)
Vec (1 + n)
n + 1
1 + n
fuente