ATLAS Ouvrir dans l'atlas →

Théorème 1Lemme diagonal et démontrabilité

Lemme diagonal

Les mots sont codés comme au nœud Codage des mots, et n‾\underline n est le chiffre de nn ; pour une formule χ\chi, on note ⌜χ⌝‾\underline{\ulcorner \chi \urcorner} le chiffre de son code. On fixe la variable x0x_0, c'est-à-dire la lettre a8a_8, et l'on pose d(n)=Sb(n,⌜n‾⌝,8),d(n) = \mathrm{Sb}\big(n, \ulcorner \underline n \urcorner, 8\big), avec la fonction Sb\mathrm{Sb} de Substitution. Si nn est le code d'une formule χ\chi, d(n)d(n) est le code de χ[n‾/x0]\chi[\underline n/x_0] : la formule χ\chi, appliquée au chiffre de son propre code. On appelle dd la fonction diagonale.

Énoncé

(i) La fonction dd est primitive récursive, et d(⌜χ⌝)=⌜χ[⌜χ⌝‾/x0]⌝d(\ulcorner \chi \urcorner) = \ulcorner \chi[\underline{\ulcorner \chi \urcorner}/x_0] \urcorner pour toute formule χ\chi.

(ii) Soit ψ\psi une formule dont les variables libres sont parmi une variable xx. Il existe un énoncé GG tel que 𝖰⊢G↔ψ[⌜G⌝‾/x],\mathsf Q \vdash G \leftrightarrow \psi\big[\underline{\ulcorner G \urcorner}/x\big], et toute théorie qui contient 𝖰\mathsf Q démontre la même équivalence.

Démonstration

(i) La fonction n↦⌜n‾⌝n \mapsto \ulcorner \underline n \urcorner est primitive récursive, comme au point (i) de Vérité et incomplétude ; Sb\mathrm{Sb} l'est par le point (i) de Substitution, et dd l'est par composition. Si χ\chi est une formule de code nn, le mot n‾\underline n est un terme, de code ⌜n‾⌝\ulcorner \underline n \urcorner, et x0=a8x_0 = a_8 : le point (i) de Substitution donne d(n)=⌜χ[n‾/x0]⌝d(n) = \ulcorner \chi[\underline n/x_0] \urcorner.

(ii) Soit yy une variable qui ne figure pas dans ψ\psi et qui est distincte de x0x_0. La fonction dd, primitive récursive, est récursive et totale (Fonctions récursives, (i)) ; par le point (iii) de Représentation des fonctions, elle est représentée dans 𝖰\mathsf Q par une formule δ\delta de variables libres parmi x0x_0 et yy : pour tout entier nn, 𝖰⊢∀y (δn↔y=d(n)‾)\mathsf Q \vdash \forall y\, (\delta_n \leftrightarrow y = \underline{d(n)}), où δn=δ[n‾/x0]\delta_n = \delta[\underline n/x_0]. Posons ψ′=ψ[y/x]\psi' = \psi[y/x] ; comme yy ne figure pas dans ψ\psi, elle y est substituable à xx, et les variables libres de ψ′\psi' sont parmi yy. Soit χ=∃y (δ∧ψ′),n=⌜χ⌝,G=χ[n‾/x0].\begin{aligned} \chi &= \exists y\, \big(\delta \wedge \psi'\big), \quad n = \ulcorner \chi \urcorner, \\ G &= \chi[\underline n/x_0]. \end{aligned} Les variables libres de χ\chi sont parmi x0x_0. Comme x0x_0 n'est pas libre dans ψ′\psi' et que x0≠yx_0 \neq y, la substitution ne touche que δ\delta : G=∃y (δn∧ψ′)G = \exists y\, (\delta_n \wedge \psi'), et c'est un énoncé. Par (i), son code est g=d(n)g = d(n).

L'axiome (2), avec le terme yy, donne 𝖰⊢δn↔y=g‾\mathsf Q \vdash \delta_n \leftrightarrow y = \underline g, et la règle des tautologies donne 𝖰⊢(δn∧ψ′)→(y=g‾∧ψ′)\mathsf Q \vdash (\delta_n \wedge \psi') \to (y = \underline g \wedge \psi') et la réciproque. Or, pour deux formules AA et BB telles que 𝖰⊢A→B\mathsf Q \vdash A \to B, l'introduction de l'existentiel avec le terme yy, qui donne ⊢B→∃y B\vdash B \to \exists y\, B, puis l'élimination, permise puisque yy n'est pas libre dans ∃y B\exists y\, B, donnent 𝖰⊢∃y A→∃y B\mathsf Q \vdash \exists y\, A \to \exists y\, B (point (iii) de Calcul à variables libres). Ainsi 𝖰⊢G↔∃y (y=g‾∧ψ′)\mathsf Q \vdash G \leftrightarrow \exists y\, (y = \underline g \wedge \psi').

Il reste à voir que ⊢∃y (y=g‾∧ψ′)↔ψ′[g‾/y]\vdash \exists y\, (y = \underline g \wedge \psi') \leftrightarrow \psi'[\underline g/y]. Le remplacement d'un terme (point (v) du même nœud), appliqué à ψ′\psi', à la variable yy et aux termes yy et g‾\underline g, donne ⊢y=g‾→(ψ′→ψ′[g‾/y])\vdash y = \underline g \to (\psi' \to \psi'[\underline g/y]), donc ⊢(y=g‾∧ψ′)→ψ′[g‾/y]\vdash (y = \underline g \wedge \psi') \to \psi'[\underline g/y] ; comme ψ′[g‾/y]\psi'[\underline g/y] est un énoncé, l'élimination donne ⊢∃y (y=g‾∧ψ′)→ψ′[g‾/y]\vdash \exists y\, (y = \underline g \wedge \psi') \to \psi'[\underline g/y]. Inversement, (y=g‾∧ψ′)[g‾/y](y = \underline g \wedge \psi')[\underline g/y] est la formule g‾=g‾∧ψ′[g‾/y]\underline g = \underline g \wedge \psi'[\underline g/y], et l'introduction de l'existentiel avec le terme clos g‾\underline g, avec ⊢g‾=g‾\vdash \underline g = \underline g, donne ⊢ψ′[g‾/y]→∃y (y=g‾∧ψ′)\vdash \psi'[\underline g/y] \to \exists y\, (y = \underline g \wedge \psi').

Enfin, ψ′[g‾/y]=ψ[g‾/x]\psi'[\underline g/y] = \psi[\underline g/x] : comme yy ne figure pas dans ψ\psi, les lettres yy de ψ′\psi' sont exactement aux places des occurrences libres de xx dans ψ\psi, et elles y sont libres. La règle des tautologies donne 𝖰⊢G↔ψ[g‾/x]\mathsf Q \vdash G \leftrightarrow \psi[\underline g/x], l'équivalence annoncée, puisque g=⌜G⌝g = \ulcorner G \urcorner. Une théorie qui contient 𝖰\mathsf Q démontre tout ce que démontre 𝖰\mathsf Q, par le lemme de remplacement de la preuve de Théorème de Craig.

□
Remarque

La formule χ\chi dit, de la formule de code x0x_0 : « sa diagonale a la propriété ψ\psi ». L'énoncé GG affirme cela de χ\chi elle-même, et la diagonale de χ\chi est précisément GG. Le carré suivant résume la construction : χ→[n‾/x0]G⌜⋅⌝↓↓⌜⋅⌝n→dg\begin{CD} \chi @>{[\underline n/x_0]}>> G \\ @V{\ulcorner\cdot\urcorner}VV @VV{\ulcorner\cdot\urcorner}V \\ n @>{d}>> g \end{CD} Substituer à x0x_0 le chiffre du code de χ\chi, puis coder, revient à appliquer dd au code de χ\chi ; la représentation de dd dans 𝖰\mathsf Q transporte ce calcul dans la théorie, et c'est ce qui rend l'équivalence démontrable, et non seulement vraie dans 𝒩\mathcal N.

Remarque

L'énoncé GG n'est pas le mot ψ[g‾/x]\psi[\underline g/x]. Si xx est libre dans ψ\psi, ce mot contient le chiffre g‾\underline g, formé de g+1g + 1 lettres ; par le point (ii) de Codage des mots et l'inégalité lg(N)⩽N\mathrm{lg}(N) \leqslant N de la preuve du théorème de Craig, son code est au moins g+1g + 1, et diffère donc de gg. L'erreur la plus répandue est de lire le lemme comme la construction d'un énoncé qui contient son propre code : il fournit seulement un énoncé que 𝖰\mathsf Q démontre équivalent à celui qui parle de son code.

Remarque

Gödel (1931) construit directement l'énoncé dont il a besoin, pour la propriété de ne pas être démontrable. Une forme générale, pour une propriété quelconque, a été publiée par Rudolf Carnap (Logische Syntax der Sprache, Vienne, Springer, 1934, § 35), qui l'énonce en termes de vérité, et non de démontrabilité dans une théorie. La construction suit la diagonale de l'indécidabilité de l'arrêt : on applique un objet à son propre code.

Ouvrir dans l'atlas interactif →