El problema del separador inductivo invariante para la aritmética de Presburger es indecidible.
No conozco una prueba en la literatura para señalarlo. (Parece una pregunta tan directa que supongo que está en algún lugar). La prueba que se me ocurrió sigue aproximadamente la misma construcción que el problema de detención. Aquí hay una breve descripción. En primer lugar, suponemos un procedimiento de decisión existe y luego construir una máquina de con entrada de . usa para decidir la no terminación de en sí mismo y luego invierte la salida. Luego usamos la construcción de para mostrar que debe dar una respuesta incorrecta sobre la ejecución de en sí mismo.S M S D M S S D SDSMSDMSSDS
En lugar de una reducción del problema de detención, la prueba es para todos los efectos una nueva declaración de la prueba del problema de detención. Es un poco detallado, ya que requerirá que se pueda expresar la condición posterior más fuerte exacta. (Si es posible una prueba más simple, estaría muy interesado en escucharla). Ahora a los detalles sangrientos.
El problema del separador invariante inductivo para la aritmética de Presburger es para una 4-tupla donde es un conjunto finito de nombres de variables, y son fórmulas de Presburger cuya libertad variables son en , es la fórmula Presburger cuyas variables libre son en o (una copia imprimada de ) ¿existe una fórmula en Presburger aritmética con variables libres en tal que:ˉ v InitBund ˉ v Next ˉ v ˉ v ' ˉ v varphi ˉ v⟨v¯,Init,Next,Bad⟩v¯InitBadv¯Nextv¯v¯′v¯ϕv¯
- Init⟹ϕ
- ϕ∧Next⟹ϕ′
- ϕ⟹¬Bad
donde prepara todas las variables libres en . ϕϕ′ϕ
Supongamos que este problema es decidible. Entonces existe una máquina de Turing que decide el problema del separador (para una codificación dada de fórmulas de Presburger). Sea una máquina de Turing determinista que simule . termina y decide el problema del separador. D D ′ DD′DD′D
Una asignación de variable sobre un conjunto finito de variables es una conjunción donde es una constante entera.⋀ v i = c i c i{vi}⋀vi=cici
También asumiré la existencia de una máquina de Turing para el compilador aritmético Presburger con algunas restricciones razonables, pero fuertes. toma como entrada una máquina de Turing con un estado final único, un y una entrada , y construye las fórmulas de pre hamburguesa y sobre un conjunto finito de variables . Informalmente, requerimos los caminos de las fórmulas de Presburger para simular la ejecución de en . Además, requerimos que sea una simulación por pasos. Formalmente, requerimos que:C M t e r m w I n i t N e x t ˉ v M wCCMtermwInitNextv¯Mw
- M t e r m ⟨ t e r m ⟩C asigna una constante única a todos los estados de control en y deja que la constante para el sea ,Mterm⟨term⟩
- p c ˉ v MC incluye una variable en que rastrea el estado de control de en cada paso de la ejecución,pcv¯M
- I n i t ˉ vC genera para tener la forma de una asignación variable sobre ,Initv¯
- N e x t ˉ v I n i t MC asegura que tenga un sucesor único en asignaciones variables sobre (a las que se puede desde ) si es determinista,Nextv¯InitM
- para que exista una función inyectiva desde un estado de (control y cinta) a una asignación variable sobre la modo que tenga un sucesor, el estado inicial de en se asigna exactamente a y el estado de control de asigna constantemente ,M b a r v N e x t M w I n i t M p cfMbarvNextMwInitMpc
- C es determinista y
- C termina.
Ahora construya la máquina Turing que toma una máquina Turing como entrada y hace lo siguiente (en pseudocódigo):MSM
S(M):
Run C(M,M) to get v, Init and Next
Simulate D on v, Init, Next, Bad := (pc = <term>)
If D says a separator exists:
terminate
If D says no separator exists:
loop: goto loop
Ahora demostramos no puede dar una respuesta consistente en con la entrada . Comience a ejecutar . termina con y que pueden simular con la entrada . Ahora configuramos una correspondencia entre el estado de la ejecución de , , y la asignación de la ésima variable de la ejecución de partir de . es determinista por construcción, así que por las propiedades deDSSS(S)CInitNextSSiS(S)siiv¯i=f(si)NextInitSC , debe tener sucesores únicos en asignaciones variables e es una asignación variable. (Como referencia, .)NextInitf(s0)=v¯i=Init
Supongamos que dice que existe un separador. Deje ser tal separador. La ejecución de luego alcanza el en pasos. (Esto incluye ejecutar y ). Ahora es un ejemplo contrario a como separador cuando llega a . dio una respuesta inconsistente.DϕS(S)termkCDv¯1…v¯kϕpc=⟨term⟩D
Ahora supongamos que dice que no existe tal separador. luego alcanza el estado de control en pasos. Todos los estados después de son entonces idénticos . La secuencia de asignación de variables correspondiente después de debe asignar cada variable a la misma constante. Deje . (Nota: ahora es exactamente la asignación de variables alcanzables por partir de .)DS(S)loopkksk+1=sk+2=…kϕ=⋁k+1i=1v¯iϕNextInit
- Init⟹ϕ ya que es exactamente .Initv¯1
- ϕ∧Next⟹ϕ′ ya que es determinista y para todo if mantiene, entonces cumple.Nextiv¯iv¯′i+1
- ϕ⟹¬Bad ya que cada asignación de variable implica .v¯ipc≠⟨term⟩
Por lo tanto, es un separador inductivo invariante para y dio una respuesta inconsistente.ϕ⟨v¯,Init,Next,Bad⟩D
D siempre debe dar una respuesta inconsistente y, por lo tanto, no existe un procedimiento de decisión.
Hacer este ejercicio realmente me hizo apreciar el trabajo de Jerome Leroux sobre separadores para sistemas de adición de vectores.