¿Existe una buena noción de pruebas de no terminación y detención en la teoría de tipos?


10

La teoría de tipo constructivo con su interpretación básica bajo la correspondencia de curry howard consiste solo en funciones totales y computables. En la literatura, se ha dicho algo sobre el uso de la "teoría del tipo computacional" para representar la no terminación en los programas funcionales, sin embargo, en los documentos que he encontrado, esto no parece ser la principal motivación para la teoría (por ejemplo Benton menciona el no determinismo, las continuaciones y las excepciones, sin entrar en muchos detalles sobre la no terminación), por lo que aún no he encontrado un documento que ofrezca una interpretación sólida de la no terminación utilizando la teoría del tipo computacional.

Específicamente, lo que estoy buscando es una forma en la que, dado un tipo que representa un cálculo posiblemente no terminante de tipo , T ( A ) , debería haber alguna noción de pruebas de que x : T ( A ) termina de tipo H ( x ) , de manera que dadas x : T ( a ) y p : H ( x ) , podemos construir un término ~ x : a .AT(A)x:T(A)H(x)x:T(A)p:H(x)x~:A

Mi motivación para esto es que eventualmente me gustaría poder relacionar más formalmente las nociones en la teoría de la complejidad computacional con la teoría de tipos constructivos. Específicamente, estoy interesado en qué poder, como teoría formal, los tipos constructivos obtienen con el acceso a un oráculo de detención, y para hacerlo, por supuesto, necesito tener una noción formal de posible no terminación y pruebas de detención para ir junto con él dentro de un marco de tipo teórico.


3
fAB dom(f)xAdom(f)(x)fx

3
¿Estás buscando la mónada de retraso ?
Andrej Bauer el

AB

Respuestas:


11

Debido a que una de las principales aplicaciones de la teoría de tipos en las formalizaciones ha sido estudiar lenguajes de programación y computación en general, se ha pensado mucho en representar programas que posiblemente no terminen.

No haré una encuesta completa aquí, pero intentaré dar consejos sobre los principales impulsos de las diferentes direcciones.

  • F x yfxf(x)=yx(y,F x y)(¬y,F x y)

    Una forma más sofisticada de hacer esto es el método "Bove-Capretta" (ver Modelado de recursión en la teoría de tipos , que para cada función recursiva, define un "predicado accesible" que codifica el hecho de que un cálculo dado es finito. La definición de la función toma un argumento adicional que es una prueba de que las entradas dadas son accesibles. Para definir la función sin este predicado adicional, debe probar que todas las combinaciones posibles de entradas son accesibles.

  • A

    codata Delay A =
    | Now : A -> Delay A
    | Later (Delay A)
    

    Esto codifica un flujo posiblemente infinito de Latertokens ("ticks" de cómputo) que tal vez termine con un resultado Now a. La no terminación es equivalente a ser bisimilar con el programa

    loop = El ciclo posterior y la terminación pueden definirse mediante un predicado inductivo sobre Delay A:

    data Terminates : Data A -> Prop =
    | Term_now : forall x, Terminates (Now x)
    | Term_later : forall d, Terminates d -> Terminates (Later d)
    

    Creo que los agda-istas tienen mucho que decir sobre esto que llaman la mónada parcialidad (véase, por ejemplo, Danielsson ).

  • El enfoque de la "teoría de tipo parcial" : esto es un poco más experimental (la teoría aún se está trabajando), pero hay algunas teorías de tipo que se están desarrollando para hacer frente al hecho de que esencialmente hay dos tipos de funciones que queremos escribir en teoría de tipos: los términos de prueba y los programas. Resulta difícil obtener una teoría razonable de estas cosas (y mantener la coherencia de la teoría), pero Casinghino et al . Y Kimmel et al .

Estoy seguro de que hay otros enfoques que desconozco, y estaría feliz si alguien quiere completar esta lista.

Π10

Existen otras interacciones bastante fructíferas entre la teoría de tipos y la teoría de la complejidad, generalmente bajo el paraguas de la complejidad computacional implícita .


Interesante, gracias por la información! Creo que el enfoque de la teoría de tipo parcial es probablemente más cercano en espíritu a lo que estoy buscando, y al menos, el documento de Kimmel parece proporcionar en algún nivel específicamente lo que estoy buscando (ver las reglas de tipeo para "tcast" )
Nathan BeDell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.