¿Existe un cálculo lambda mecanografiado que sea consistente y Turing completo?

20

¿Existe un cálculo lambda tipificado donde la lógica correspondiente bajo la correspondencia de Curry-Howard es consistente y donde hay expresiones lambda tipificables para cada función computable?

Esta es ciertamente una pregunta imprecisa, que carece de una definición precisa de "cálculo lambda mecanografiado". Básicamente me pregunto si hay (a) ejemplos conocidos de esto, o (b) pruebas de imposibilidad conocidas para algo en esta área.

Editar: @cody da una versión precisa de esta pregunta en su respuesta a continuación: ¿existe un sistema de tipo puro lógico (LPTS) que sea consistente y Turing completo (en el sentido que se define a continuación)?

Morgan Thomas
fuente
2
No existe un cálculo recursivamente axiomatizable (lambda o de otro tipo) cuyas funciones recursivas probables totales sean todas funciones recursivas, por lo que su cálculo tendría que implicar términos sin terminación.
Emil Jeřábek apoya a Monica el
2
Esta respuesta tiene un teorema que dice que no puedes tener ningún tipo de cálculo que sea Turing completo y total.
Andrej Bauer
1
Es probable que responda su pregunta una vez que la haga lo suficientemente precisa. Creo que la prueba de Andrej es innecesariamente complicada (pero muestra más): el punto es simplemente que si hubiera un sistema efectivamente descrito donde todas las funciones recursivas fueran representables de tal manera que pueda certificar sintácticamente que una expresión es una representación honesta de un función recursiva (por ejemplo, comprobando que está correctamente escrita en el sistema), obtendría una función recursiva total universal, que es imposible.
Emil Jeřábek apoya a Monica el
1
Por supuesto, una respuesta clásica a este tipo de preguntas podría ser: cálculo de con tipos de intersección , ya que escribe todos (y solo aquellos) términos que se están normalizando fuertemente. Sin embargo, es más una pregunta filosófica preguntar si el cálculo admite o no una "interpretación de Curry-Howard". λ
cody
2
Es difícil ser más preciso aquí porque la pregunta no es precisa.
Andrej Bauer

Respuestas:

21

Muy bien, le diré algo: en general, para un sistema de tipo dado , lo siguiente es cierto:T

Si todos los términos de tipo de pozo en el cálculo están normalizando, entonces T es consistente cuando se ve como una lógica.TT

La prueba generalmente procede asumiendo que tiene un término de tipo F a l s e , utilizando la reducción de sujeto para obtener una forma normal, y luego procediendo por inducción en la estructura de dicho término para obtener una contradicción.absurdFalse

Es natural preguntarse si lo contrario es válido, es decir

Para cualquier sistema de tipo , si T es lógicamente consistente , entonces cada término bien tipado en T se está normalizando.TTT

El problema con esto es que no existe una noción real más general de "sistema de tipos", y aún menos acuerdo sobre el significado de consistencia lógica para tales sistemas. Sin embargo, podemos verificar empíricamente que

Para los sistemas de tipos más conocidos que tienen una interpretación lógica, lo contrario es válido.

¿Cómo se relaciona esto con la integridad de Turing? Bueno, por un lado, si la verificación de tipo es decidible , entonces el argumento de Andrej muestra que uno de los siguientes debe ser válido:

  1. El conjunto de todos los programas bien escritos no es Turing Complete.
  2. Hay un programa bien escrito que no termina.

Esto tiende a sugerir que:

Los sistemas de tipos que tienen una interpretación lógica y son consistentes y recursivamente enumerables no son Turing Complete.

Dar un teorema real en lugar de una sugerencia requiere hacer que la noción de sistemas de tipos e interpretaciones lógicas sea matemáticamente precisa.

Ahora me vienen a la mente dos comentarios:

  1. Hay un sistema de tipos indecidible , el sistema de tipos de intersección que tiene una interpretación lógica y puede representar cada término normalizador . Como observa, esto no es lo mismo que ser Turing completo, ya que el tipo de una función total puede necesitar actualizarse (refinarse, de hecho) antes de aplicarlo al argumento deseado. El cálculo es un cálculo de "estilo curry" y es igual a STLC + Γ M : τλ y ΓM:τσ

    ΓM:τΓM:σΓM:τσ
    Está claro que la "interpretación"=conduce a una interpretación lógica consistente.
    ΓM:τσΓM:τΓM:τσΓM:σ
    =
  2. Hay una clase de sistemas de tipos, los Sistemas de Tipos Puros , en los que tal pregunta podría hacerse precisa. En este marco, sin embargo, la interpretación lógica es menos clara. Uno podría estar tentado a decir: "un PTS es consistente si tiene un tipo deshabitado". Pero esto no funciona, ya que los tipos pueden vivir en diferentes "universos", donde algunos pueden ser consistentes y otros no. Coquand y Herbelin definen una noción de sistemas lógicos de tipo puro , en la que la pregunta tiene sentido y muestran

    Cada LPTS inconsistente y no dependiente tiene un combinador de bucles (y también lo está Turing Complete)

    Lo que responde a la pregunta en una dirección (inconsistente TC) en este caso. Hasta donde sé, la pregunta para LPTS general todavía está abierta y es bastante difícil.


Editar: ¡ Lo contrario del resultado Coquand-Herbelin no es tan fácil como pensaba! Esto es lo que se me ocurrió hasta ahora.

Un sistema lógico de tipo puro es un PTS con (al menos) los tipos y T y p e , (al menos) el axioma P r o p : T y p e y (al menos) la regla ( P r o p , P r o p , P r o p ) , con el requisito adicional de que no hay ningún tipo de tipo P r o p .PropTypeProp:Type(Prop,Prop,Prop)Prop

Ahora voy a asumir una declaración particular de integridad de Turing: arreglar un LPTS y dejar que Γ sea ​​el contextoLΓ

Γ=nat:Prop, 0:nat, S:natnat

esTuring Completoiff para cada función computable total f : NN hay un término t f tal que Γ t f : n a tn a t y para cada n N t f ( S n 0 ) β S f ( n ) 0Lf:NNtf

Γtf:natnat
nN
tf (Sn 0)βSf(n) 0

Ahora, el argumento de diagonalización de Andrej muestra que hay no terminantes de tipo n a t .tnat

¡Ahora parece que estamos a medio camino! Dado un término que no termina , queremos reemplazar las ocurrencias de n a t por algún tipo genérico A y deshacernos de 0 y S en Γ , y tendremos nuestra inconsistencia ( A está habitada en el contexto A : P r o p )!Γloop:natnatA0SΓAA:Prop

Desafortunadamente, aquí es donde me quedo atascado, ya que es fácil reemplazar por la identidad, pero el 0 es mucho más difícil de eliminar. Idealmente, nos gustaría usar algún teorema de recursión de Kleene, pero aún no lo he descubierto.S0

cody
fuente
Bien, entonces las dos primeras aclaraciones sobre su comentario (1). ¿Qué quiere decir cuando dice que este sistema de tipos de intersección no es recursivamente enumerable? Ciertamente, el conjunto de teoremas del sistema es re, porque lo has dado como un cálculo secuencial directo. Además, el resultado que veo probado en el documento que vinculó es que los términos que se pueden escribir en el sistema son exactamente los términos fuertemente normalizadores; ¿Pero no es tan diferente de decir que puede escribir exactamente las funciones computables totales? Por ejemplo, no es fuertemente normalizado, pero no total? λx.xx
Morgan Thomas
Ahora una pregunta sobre su comentario (2). Me parece que el teorema que usted cita no es lo que nos interesa. Dice que para cada LPTS no dependiente, si es inconsistente, entonces es Turing completo. Pero nos gustaría saber si para cada LPTS, si es Turing completo, entonces es inconsistente. ¿Estoy malinterpretando algo aquí?
Morgan Thomas
Γ,t,AΓt:A
El segundo punto: también tiene razón en que uno puede tener una función no total que está bien tipada (aunque no necesariamente se puede aplicar a un argumento dado). Enmendaré la respuesta.
cody
1
Tercer punto Estás en lo correcto otra vez! Sin embargo, lo contrario (en el caso especial de LPTS) es bastante trivial. Voy a esbozar el argumento.
cody
11

β

λnat,0,S

nat:
0:nat
S:natnat

efefe:natnate,xNβ

fe(x)βΦe(x),

Φe(x)exΦe(x)ββ

Ahora, esta teoría es claramente completa en un sentido aproximado de @ cody, solo por la fuerza bruta; pero la afirmación es que también es consistente. Construyamos un modelo de ello.

U1U2U3

  • ,N,0,SU1S
  • abUiaUi
  • A,BUiBAUi
  • AUif:AUiaAf(a)Ui

Ui

vU2vIv

  • Iv(x)=v(x)x
  • Iv()=U1,Iv()=U2
  • Iv(nat)=N,Iv(0)=0,Iv(S)=S
  • Iv(fe)=ΦeNNe
  • Iv(AB)=Iv(A)(Iv(B))Iv(A)Iv(B)Iv(AB)=0
  • Iv(λx:A.B)aIv(A)Iv[x:=a](B)
  • Iv(Πx:A.B)=aIv(A)Iv[x:=a](B)

Tenemos eso para todos los términos ,AIv(A)U3vA:BvA:BIv(A)Iv(B)ΓA:Bvvx:C(x:C)ΓvA:B

ΓA:BΓA:Bx,yy:x:yy

β

Morgan Thomas
fuente
2
Afe(x)Φe(x)ιββfe(x)ιβ
Creo que tienes razón. Este no es mi campo, así que soy un poco torpe haciendo cosas. :-) Creo que su prueba funciona, y una consecuencia interesante, si tengo razón, es que esta teoría no tiene mucha fuerza de consistencia. Parece una teoría potencialmente muy poderosa, ya que tiene tipos y números naturales, que deberían permitirle interpretar la teoría de conjuntos; pero aparentemente no puedes, ¡porque puedes demostrar que es consistente sin usar la poderosa teoría de conjuntos!
Morgan Thomas