Se me ha adelantado geómetracat, y en realidad voy a decir lo mismo que él, pero igual tiene interés algún matiz.
En ZFC, mediante el teorema de recursión, es posible definir la siguiente función \( 0^{( \cdot)}: \Bbb N \rightarrow \Bbb N \) como
- \( 0^{(0)}=0 \)
- \( 0^{(n+1)}=0^{(n)}+1 \)
Esta función formaliza en ZFC la idea de partir del \( 0 \) e ir hallando su sucesor sucesivamente.
Esa función la puedes definir con el teorema de recursión y sin el teorema de recursión, porque, como bien señalas, no es ni más ni menos que la identidad en \( \mathbb N \), y una definición equivalente es \( 0^{(n)} = n \).
Otra cosa muy distinta (pero parece que se está confundiendo con esto) es
(B) que en ZFC puedes definir el lenguaje formal \( \mathcal L_{tc} \) de ZFC, con lo que podemos distinguir entre el metalenguaje (que usamos para escribir los teoremas de ZFC y el lenguaje \( \mathcal L_{tc} \) definido en ZFC. Entonces, podemos definir por recurrencia una función \( \mathbb N\longrightarrow \mbox{Term}(\mathcal L) \) dada por \( 0^{(0)}= \bf 0 \) y \( 0^{n+1} = 0^{(n)}\bf + 1 \), donde el 0 sin negrita es el número natural cero y la suma sin negrita es la suma de números naturales, mientras que el 0 y el 1 en negrita son términos del lenguaje \( \mathcal L \) (que, en principio, no tienen por qué ser números naturales, sino sucesiones de signos de \( \mathcal L \), sin perjuicio de que éstas podrían identificarse con números naturales) y \( x{\bf +} y \) es un término de \( \mathcal L \), una cadena de signos de \( \mathcal L \), que nada tiene que ver en principio con la suma de números naturales.
Pero observa que en este caso la aplicación \( n\mapsto 0^{(n)} \) no transforma números naturales en números naturales, sino números naturales en términos de \( \mathcal L \), que no tienen por qué ser números naturales.
O también tenemos una tercera posibilidad
(C), y es que consideremos la correspondencia metamatemática que a cada número natural metamatemático \( n \) le corresponde el numeral \( 0^{(n)} \) del lenguaje metamatemático de ZFC, pero entonces \( n\mapsto 0^{(n)} \) no es una aplicación definida en ZFC, sino una aplicación metamatemática (informal) que a cada número metamatemático le asigna un numeral. Si quieres formalizar esto, puedes, pero entonces obtienes la situación que he descrito previamente.
Ahora, para esta aplicación es muy sencillo demostrar por inducción (en ZFC) que es un teorema de ZFC la siguiente fórmula:
\( \forall n \in \Bbb N\, \exists k \in \Bbb N\, n=0^{(k)} \quad (1) \)
Y tan sencillo. Ni siquiera hace falta inducción. Lo que dices ahí es que la identidad en \( \mathbb N \) es suprayectiva (y, de hecho, es biyectiva).
Si, en cambio, consideras la aplicación que he definido yo en
(B), esta fórmula no tiene equivalente. Puedes demostrar en ZFC que \( n\mapsto 0^{(n)} \) es biyectiva entre \( \mathbb N \) y el conjunto de los numerales de \( \mathcal L \), que es un subconjunto del conjunto de los términos de \( \mathcal L \) (que puedes definir precisamente como la imagen de esta aplicación).
Si consideras la aplicación metamatemática definida en
(C), entonces no tienes ningún teorema de ZFC. Tienes un metateorema que dice que cada número natural se corresponde con un numeral, y eso no lo puedes expresar en el lenguaje de ZFC. Puedes formalizarlo, pero entonces tienes la situación
(B).
Si es entonces \( M \) un modelo de ZFC donde hayan naturales no estándar (lo cual siempre es posible si suponemos que ZFC es consistente), la fórmula (1) debe ser verdadera en este modelo \( M \), por lo que si es \( \xi \) un natural no estándar en el modelo, se tiene que debe cumplirse que
\( M \vDash \exists k \in \Bbb N\ n=0^{(k)} [v_n^{\xi}] \)
para cualquier valoración \( v \) en \( M \). Por tanto, habrá un elemento \( a \) de \( M \) que satisfaga que
\( M \vDash n \in \Bbb N [ v_n^a ], \)
es decir, \( a \) es un natural del modelo, pero a la vez
\( M \vDash n=0^{(k)} [{v_{n}^{\xi}}_k^a] (2) \)
lo cual parece contradecir que \( \xi \) es un natural no estándar en el modelo, pues se ha obtenido a partir de aplicar "\( a \) veces" la operación sucesor al cero.
En el caso
(A) en el que lo que tenemos es la aplicación identidad en ZFC, si M es un modelo metamatemático (no definido dentro de ZFC), lo que tenemos es que \( a = \xi \), como indicas en tu respuesta. Y no hay nada de especial: si \( \xi \) es un número natural no estándar de \( M \), entonces \( \xi \) es igual a sí mismo. Cierto.
Pero si uno está pensando en el fondo que ha definido la aplicación
(B), entonces todo es un sinsentido: Si escribes \( M\vDash \), entonces \( M \) tiene que ser un modelo definido en ZFC y lo que viene después tiene que ser una fórmula del lenguaje \( \mathcal L \), no del metalenguaje, pero con las definiciones de
(A), \( \exists k \in \Bbb N\ n=0^{(k)} \) no es una fórmula de \( \mathcal L \), sino del metalenguaje, por lo que al anteponerle \( M\vDash \) resulta un sinsentido.
Si, por el contrario, defines \( 0^{(k)} \), según
(B), entonces lo que tienes es que los \( 0^{(k)} \) forman una sucesión de términos de \( \mathcal L \)
sin variables libres. Más precisamente, \( 0^{(k)} \) es un término del metalenguaje con la variable libre \( k \), que nombra a un término de \( \mathcal L \)
sin variables libres. El término \( 0^{(k)} \) es una sucesión de signos de \( \mathcal L \) que consta de un 0 al que se le suma k veces 1, pero en una suma de un cero y muchos unos
no hay ninguna variable de \( \mathcal L \).
En particular, (con mi definición) \( n = 0^{(k)} \) es una fórmula de \( \mathcal L \)
con una única variable libre (la \( n \)), y por lo tanto es un sinsentido escribir \( \exists k\in \mathbb N\, n = 0^{(k)} \). El principio de "eso" requiere que \( k \) sea una variable de \( \mathcal L \), pero en \( 0^{(k)} \) tenemos que \( k \) es una variable metamatemática.
Lo que sigue a partir de ahí ya no tiene sentido. No existe ningún \( a\in M \) que cumpla eso porque eso no tiene sentido.
En el caso
(C) hay que entender que \( M \) es un modelo metamatemático y de nuevo tenemos que, por una parte, \( k \) debería ser una variable del lenguaje de ZFC (para que tenga sentido \( \exists k \), pero luego, en \( 0^{(k)} \) resulta que \( k \) es una variable metamatemática. En el término \( 0^{(k)} \) no hay variables del lenguaje de ZFC, por lo que todo lo que sigue no tiene sentido y no hay ningún \( a \).
Mi respuesta a mi amigo fue la siguiente:
El problema está en el entrecomillado anterior, en que no tiene sentido ese "\( a \) veces" pues \( a \) es un natural del modelo, no un natural metamatemático y por tanto (2) no dice que \( \xi \) se obtenga a partir de aplicar el funtor sucesor una cantidad finita de veces al cero. De hecho, es muy sencillo demostrar en ZFC que la función definida es, realmente, la aplicación identidad, con lo que de (2) lo que relamente dice es que \( a \equiv \xi \), con lo cual aún tiene menos sentido el entrecomillado.
¿Es una buena respuesta ante su confusión? ¿Se podría decir algo más?
Sí, coincido con geómetracat en que tu respuesta es correcta. Lo único que tu respuesta pasa por alto —a mi juicio— es que, evidentemente, tu amigo no quería definir la identidad en \( \mathbb N \), por lo que no está de más ver qué pasa, para aclarar su confusión, si consideramos definiciones alternativas de \( 0^{(n)} \) más próximas a lo que realmente pretendía definir tu amigo, y eso es lo que he añadido yo, por si aclara algo.