33 votos

Teorema de punto fijo aritmético

Quiero entender la idea de la prueba de la artihmetic teorema de punto fijo. El teorema es crucial en la prueba de Gödel de la primera Incompletness teorema.

Primero un poco de notación: trabajamos en $NT$, el número habitual de la teoría, ha implementado todas las primitve funciones recursivas. Cada término o fórmula $F$ tiene un único número de Gödel $[F]$, que codifica $F$. Si $n$ es un número natural, el término correspondiente en $NT$ es denotado por $\underline{n}$. La función de $num(n):=[\underline{n}]$ es primitiva recursiva. También, hay una primitiva de la función recursiva $sub$ de dos variables, de tal manera que $sub([F],[t])=[F_v(t)]$ donde $v$ es una variable libre de $F$ que es sustituida por un plazo $t$.

Ahora el teorema de las siguientes afirmaciones:

Deje $F$ ser una fórmula con sólo una variable libre $v$. A continuación, hay una frase que $A$ tal que $NT$ demuestra $A \Leftrightarrow F_v(\underline{[A]})$.

Esto puede ser interpretado como una auto-referencial definición de $A$, que es, como he dicho, fundamental en el trabajo de Gödel. Entiendo que la prueba, acabo de repetir, pero no entiendo la idea detrás de esto:

Deje $H(v)=F_v(sub(v,num(v)))$ e $A = H_v(\underline{[H]})$. Entonces tenemos

$A \Leftrightarrow H_v(\underline{[H]})$ $\Leftrightarrow F_v(sub(v,num(v)))_v(\underline{[H]})$ $\Leftrightarrow F_v(sub_1(\underline{[H]},num(\underline{[H]})))$ $\Leftrightarrow F_v(sub_1(\underline{[H]},\underline{[\underline{[H]}]}))$ $\Leftrightarrow F_v(\underline{[H_v(\underline{[H]})]})$ $\Leftrightarrow F_v(\underline{[A]}), qed.$

Pero ¿por qué elegimos $H$ e $A$ como antes?

37voto

thedeeno Puntos 12553

El punto fijo lema es profundo porque revela un sorprendentemente profunda capacidad en matemáticas para auto-referencia: cuando una instrucción $A$ es equivalente a $F(A)$, efectivamente afirma que "$F$ tiene de mí". ¿ sorprendente es encontrar que la auto-referencia, de las cosas de la paradoja y el absurdo, es fundamentalmente arraigada en nuestra hermosa la teoría de los números! El punto fijo lema muestra que todos los elementales de la propiedad $F$ admite una declaración de la aritmética de la afirmación "esta declaración tiene la propiedad $F$".

La auto-referencia, por supuesto, es precisamente cómo Goedel demostró el Teorema de la Incompletitud, mediante la formación de los famosos "esta afirmación no es demostrable" afirmación, la obtención de ella simplemente como un punto fijo $A$ afirmando "$A$ no es comprobable". Una vez que usted tiene esta declaración, es fácil ver que debe ser cierto, pero no demostrable: no puede ser comprobada, ya que de lo contrario vamos a tener que probó algo falso, y por lo tanto, es a la vez verdadero y no demostrable.

Pero he compartido su aprehensión en la prueba de la punto fijo lema, que aunque corto y sencillo, que puede sin embargo aparecen misteriosamente impenetrable, como un antigua y mística runa que hemos memorizado. Podemos comprobar paso-por-paso, pero ¿de dónde provienen?

Así que vamos a tratar de explicarme cómo se podría derivar de este argumento, o al menos llegar a él por pequeños pasos.

Queremos encontrar una declaración de $A$ que es equivalente a $F(A)$. Si podríamos esperar una versión fuerte de esta, entonces nos iba a buscar una $A$ que es equivalente a $F(A)$, y a $F(F(A))$, y así sucesivamente, que se extendió desde el interior. Tal proceso conduce naturalmente a la infinitary expresión

  • $F(F(F(\cdots)))$

Además, este infinitary expresión es en sí mismo un fijo punto, en un ingenuo manera formal, ya que si $A$ es que la expresión, entonces la aplicación de uno de los más $F$ resultados en un con la expresión de la misma forma, como se desee. Este infinitary la expresión no cuenta como una solución, por supuesto, ya que buscar finita y bien formado, de expresión, sino que sugiere un enfoque.

Es decir, lo que queremos hacer es capturar en una sola finito la expresión de la auto-expansión de la naturaleza de la que infinitary solución. El deseado declaración de $A$ debe ser equivalente a la afirmación de que $F$ mantiene cuando se sustituye en $A$ sí. Por lo que introducir una variable auxiliar que se $v$ y considere la posibilidad de la afirmación de $H(v)$ que afirma que $v$ es como deseado, es decir, que $F$ sostiene que la declaración de la $v$ códigos, cuando se sustituye en $v$. Este último auto de sustitución de parte, acerca de la sustitución de $v$ a $v$, es lo que permite una la sustitución de la auto-ampliar en dos, y luego tres y así en, en efecto rizado de la auto-expansión de la infinita cola de el infinitary expresión en sí misma.

Es decir, si $n$ es el código de $H(v)$, a continuación realizamos la la sustitución, la obtención de la declaración de $H(n)$, lo que afirma exactamente eso $F$ sostiene que la declaración de la $n$ códigos cuando se sustituye en $n$. Pero desde $n$ códigos de $H(v)$, este significa que $H(n)$ afirma que $F(H(n))$, y tenemos la deseado de punto fijo.

Permítanme mencionar algunas otras cosas. En primer lugar, es interesante considerar si todos los puntos fijos de $F$ son equivalente a unos de otros. Esto es verdad, después de todo al $F$ es tautológica, por ejemplo, desde cualquier punto fijo se también puede ser lógicamente válido. Del mismo modo, Goedel "yo no soy comprobable" las declaraciones es equivalente a la afirmación de que la teoría es consistente, y esto es cómo uno puede probar el Segundo teorema de la incompletitud. Pero son fijos puntos para un determinado $F$ siempre equivalentes? La respuesta es no. Corrección de las declaraciones $A$ e $B$, y deje $F(v)$ ser el declaración, "si $v=[A]$,, a continuación,$A$, de lo contrario $B$". Tenga en cuenta que $F([A])$ es equivalente a $A$ e $F([B])$ es equivalente a $B$, así que ambos son puntos fijos.

Andreas planteó la pregunta muy interesante en el comentarios a continuación si el punto fijo, $A$ ha $F([A])$ también como un punto fijo. Esto es lo que podemos esperar de la infinitary ejemplo anterior. El ejemplo del párrafo anterior se muestra, sin embargo, que no todos los punto fijo tiene esta característica, ya que en ese ejemplo, $A$ es equivalente a $F([A])$, pero $F([F([A])])$ es equivalente a $B$. Pero en este ejemplo, otros fijos los puntos tienen la característica. Yo estoy seguro de que, en general, acerca de si debe haber siempre un punto fijo $A$ tal que $F([A])$ es también un punto fijo.

Por último, me gustaría mencionar que, en esencia, el mismo el argumento para el punto fijo lema ha sido utilizado para probar otros teoremas de punto fijo en la lógica. Por ejemplo, la La recursividad Teorema de afirma que para cualquier función computable $f$, actuando en de los programas, no es un programa de $e$ tal que $e$ e $f(e)$ calcular exactamente la misma función.

Uno puede probar esto en una forma muy similar a la de punto fijo lema. Es decir, definir H(v,x)={f({v}(v))}(x), donde {e}(x) significa la salida de programa de correo en la entrada x. Tenga en cuenta que H es ejecuta el programa de v sobre sí mismo, y, a continuación, la aplicación f, así como la H en su argumento. Ahora, vamos a ser la función que en de entrada v, produce un programa para calcular H(v,x), de modo que {s(v)}(x)=H(v,x). Deja d ser el programa de computación s, y vamos a e=s(d). Poner esto juntos, hemos

  • {e}(x) = {s(d)}(x)= H(d,x) = {f({d}(d))}(x) = {f(s(d))}(x) = {f(e)}(x).

Así el programa e y f(e) calcular la misma función.

23voto

AtliB Puntos 63

Vamos a empezar con la observación de que no puede haber ninguna fórmula $D$ con la propiedad de que para todo $\varphi$, $$D([\varphi]) \iff \varphi([\varphi]).$$ Si un $D$ existía, entonces la definición de la fórmula de $E$ por $E(\underline{n}) = \neg D(\underline{n})$, tendríamos $$D([E]) \iff E([E]) \iff \neg D([E]),$$ una contradicción.

Ahora, la tarea es mostrar que, dada una fórmula $F$ de una variable, hay otra fórmula $A$ tal que $A\iff F([A])$. Bien, si eso no es cierto, entonces una improbable-en busca de la cosa iba a suceder: para cada frase $A$, tendríamos $$\neg F([A])\iff A.$$

La razón de esto parece improbable es que la fórmula $\neg F$ tiene un aspecto bastante similar a lo prohibido fórmula $D$ por encima. De hecho, si quiero jugo de la similitud para todos los que vale la pena, me gustaría explorar lo que sucede cuando $A$ es de la forma $A = \varphi([\varphi])$ para algunos $\varphi$; entonces tendríamos $$\neg F([\varphi([\varphi])]) \iff \varphi([\varphi]).$$

Pero si esto es para todos los $\varphi$, podemos definir el prohibido $D$ por $D([\varphi]) = \neg F([\varphi([\varphi])])$. Contradicción.

Ahora fuera de este argumento, vamos a extraer la fórmula concreta de $A$ que originalmente quería. Estamos buscando una $A$ de la forma $\varphi([\varphi])$. Nuestra sugerencia es usar la misma fórmula $E([E])$ que destruyó nuestras esperanzas acerca de $D$ por encima. El contexto es nuevo, pero definimos $E$ en la misma forma: $E([\varphi]) = \neg D([\varphi])$. Que es $$E([\varphi]) = F([\varphi([\varphi])).$$

Ahora el único paso que queda es el que ya hemos visto: la comprobación de que $A=E([E])$, de hecho, funciona.

17voto

dgw Puntos 274

Usted podría haber descubierto el teorema de punto fijo de ti mismo! Usted acaba de necesidad que el problema de la motivación de la manera correcta. Por ejemplo, veamos como una especie de desafío de programación...

Supongamos que queremos escribir un programa que se refiere a su propio código fuente en algún momento.

Usted podría tratar de escribir en BASIC (o Java o Haskell o inglés o la Aritmética de Peano o cualquiera que sea tu lenguaje de programación favorito es). Pero, usted podría encontrar que ser demasiado complicado al principio. Así que no importa BÁSICA; decide, en lugar de simplemente inventar un hipotético nuevo lenguaje de programación BASIC++, que es igual que la BÁSICA, pero aumentada con construido-en el apoyo a los programas a ser capaz de acceder a su propio código de origen: este lenguaje tiene un básico de la palabra clave "myOwnSourceCode" dentro de ella, que debe ser interpretada simplemente como lo que se podría pensar a partir del nombre.

¿Cómo ejecutar un BÁSICO++ programa? Bueno, una cosa que podría hacer con una BÁSICA++ programa (vamos a llamar P) se compila en un ordinario programa BÁSICO, pasando a través de su código fuente y reemplazar todas las instancias de la palabra clave "myOwnSourceCode" con, por supuesto, la expresión de la verdadera fuente de código para P.

Así que ahora sabemos cómo escribir BÁSICA++ los programas que se refieren a su propio código fuente (es trivial por el diseño de la BÁSICA++ lengua), y también sabemos cómo compilar BÁSICA++ los programas en los programas BÁSICOS.

Por supuesto, por la combinación de esas dos, esto significa que usted puede escribir BÁSICA++ los programas que se refieren a la elaboración de su propio código fuente en BASIC.

Y luego, por el hecho que la compilación de un programa en BASIC, que está a la izquierda, de hecho, una ordinaria programa BÁSICO que se refiere (es decir, hace lo que el programador desea hacer con su propio código fuente.

Esta es precisamente la estructura del teorema de punto fijo: $F$ es BÁSICA definida por la función, la variable libre $v$ (en una base++ programa) es el "myOwnSourceCode" palabra clave, $sub(P, num(P))$ compila un BÁSICO++ programa $P$ en los BÁSICOS, $H$ es el BÁSICO++ programa que se aplica $F$ a la elaboración de su propio código fuente en BASIC, y $A$ es la compilación de $H$ en BÁSICA; por lo tanto, como una instancia del patrón de arriba, $A$ es una simple programa BÁSICO que se aplica $F$ a su propio código fuente. [El hecho de que las variables libres de $F$ también fue elegido para ser nombrado $v$ en la presentación que se dio en la pregunta es, por cierto, un innecesario e irrelevante distracción]

(Por supuesto, en la aritmética de punto fijo teorema, "BÁSICO" en lugar de "la Aritmética de Peano", pero es el mismo fundamentales de la construcción, cualquiera que sea el contexto en el que debe interpretarse en)

7voto

kranzky Puntos 705

Al final, la razón para elegir las cosas de esa manera es porque funciona, pero en este caso es posible explicar lo que está pasando.

Para un warm-up, usted puede conseguir un poco de intuición para el método mirando más fácil que el inglés ejemplo del mismo fenómeno:

"cuando precedido por sí mismo en comillas, se obtiene un enunciado verdadero.", cuando está precedido de por sí, entre comillas, se obtiene un enunciado verdadero.

Para explicar la prueba que dio, voy a utilizar $|n|$ para denotar la fórmula que ha Gödel número $n$. En la prueba anterior, $H(n)$ debe ser leído como la afirmación de $F([|n|(n)])$, que es:

$H(n)$ dice: $F$ mantiene el número de la fórmula obtenida mediante la sustitución de $n$ a $|n|$

Por lo tanto $H([H])$ dice:

$F$ mantiene el número de la fórmula obtenida mediante la sustitución de $[H]$ a $|[H]|$

es decir,

$F$ mantiene el número de la fórmula obtenida mediante la sustitución de $[H]$ a $H$

Por lo $H([H])$ afirma $F([H([H])])$.

(Informal para mayor claridad, he intensionally no se utiliza subraya aquí.)


Adenda. Es imposible, en general, para construir una fórmula $J$ tal que $J$ es literalmente la misma fórmula como $F([J])$. Cualquier típico de numeración de Gödel tiene la propiedad de que $n < [F(\underline n)]$ por cada fórmula $F(x)$ número y $n$. Pero si $J = F([\underline J])$ entonces $[J] = [F(\underline {[J]})]$.

Así, si nuestra prueba es el método que vamos a trabajar con un arbitrario de numeración de Gödel, se tiene que ser más indirectas. La prueba da una fórmula $H$, de modo que $H([H])$ es demostrablemente equivalente a $F([H([H])])$, pero no literalmente la misma fórmula. Esto puede ayudar a explicar por qué la prueba procede de la forma que lo hace.

3voto

Jay Mooney Puntos 904

Un libro maravilloso sobre el patrón general es Smullyan de la Diagonalización y la Auto-referencia (pero también va más específicamente en la aritmética). Yo también acabo de encontrar este artículo reciente que contiene una exposición de Lawvere del diagonalisation argumento, lo que hace sentido en coordenadas cartesianas categorías cerradas...

Smullyan la página 17, adaptado a Lawvere la configuración parece darle una muy general descripción formal de diagonalisation.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X