ATLAS Ouvrir dans l'atlas →

Proposition 5Arithmétisation de la syntaxe

Substitution et substituabilité

On reprend les définitions de Substitution : φ[t/x]\varphi[t/x] est le mot obtenu en remplaçant chaque occurrence libre de xx dans φ\varphi par le terme tt, et tt est substituable à xx dans φ\varphi si aucune occurrence libre de xx ne se trouve dans une sous-formule ∀y ψ\forall y\, \psi où yy est une variable de tt. Les occurrences et les sous-formules sont celles de Variables libres.

Énoncé

(i) Il existe une fonction primitive récursive Sb\mathrm{Sb} telle que, si NN code une formule φ\varphi, TT un terme tt et si aka_k est une variable xx, alors Sb(N,T,k)=⌜φ[t/x]⌝.\mathrm{Sb}(N, T, k) = \ulcorner \varphi[t/x] \urcorner.

(ii) La relation Sbl(T,k,N)\mathrm{Sbl}(T, k, N) : « le terme de code TT est substituable à la variable aka_k dans la formule de code NN » est primitive récursive.

(iii) Soit tt un terme et xx une variable. Si l'on remplace par tt certaines occurrences de xx, au sens de Variables libres, dans un terme, on obtient un terme ; dans une formule, on obtient une formule. En particulier, φ[t/x]\varphi[t/x] est une formule si φ\varphi en est une.

Démonstration

(i) On parcourt les lettres de φ\varphi de gauche à droite. Par récurrence primitive sur jj, posons W(N,T,k,0)=0W(N, T, k, 0) = 0 et W(N,T,k,j+1) ={conc(W(N,T,k,j),T)si C,aj(W(N,T,k,j),(N)j)sinon,\begin{aligned} &W(N, T, k, j + 1) \\ &\ = \begin{cases} \mathrm{conc}\big(W(N, T, k, j), T\big) & \text{si } C, \\ \mathrm{aj}\big(W(N, T, k, j), (N)^j\big) & \text{sinon,} \end{cases} \end{aligned} où CC est la condition Lib(N,j)∧(N)j=k\mathrm{Lib}(N, j) \wedge (N)^j = k. C'est une récurrence primitive dont l'étape est une définition par cas (Clôture, (ii)), et l'on pose Sb(N,T,k)=W(N,T,k,lg(N))\mathrm{Sb}(N, T, k) = W(N, T, k, \mathrm{lg}(N)).

Par récurrence sur jj, W(N,T,k,j)W(N, T, k, j) code le mot obtenu à partir des jj premières lettres de φ\varphi en remplaçant par tt chacune de celles qui sont des occurrences libres de xx, et en gardant les autres. Pour j=lg(N)j = \mathrm{lg}(N), c'est φ[t/x]\varphi[t/x].

(ii) La définition se traduit, avec l=lg(N)l = \mathrm{lg}(N), par : pour tout j<lj < l, si Lib(N,j)\mathrm{Lib}(N, j) et (N)j=k(N)^j = k, alors il n'existe pas i<ji < j et l′<l+1l' < l + 1 tels que (N)i=3(N)^i = 3, que la lettre (N)i+1(N)^{i+1} figure dans tt, c'est-à-dire ∃m<lg(T)  (T)m=(N)i+1,\exists m < \mathrm{lg}(T)\ \ (T)^m = (N)^{i+1}, que i+2⩽j<l′i + 2 \leqslant j < l', et que Fm(sm(N,i+2,l′))\mathrm{Fm}(\mathrm{sm}(N, i + 2, l')). Une occurrence libre n'est jamais la variable d'un bloc, et elle n'est pas la lettre ∀\forall ; se trouver dans la sous-formule ∀y ψ\forall y\, \psi, c'est donc se trouver dans ψ\psi. La relation obtenue est primitive récursive par Variables libres et Clôture.

(iii) Remplacer des lettres d'un mot w=w1w2w = w_1 w_2 revient à remplacer celles de w1w_1, puis celles de w2w_2, et à concaténer. De plus, un rang de w2w_2 qui est une occurrence de variable dans ww en est encore une dans w2w_2 : la condition sur la lettre qui précède ne peut que s'affaiblir quand on retire w1w_1. On raisonne par récurrence sur la longueur, avec l'inversion de Termes et de Formules, (i).

Termes. Une variable devient tt ou reste elle-même, et 00 reste 00 ; ce sont des termes. Dans S uS\, u, + u u′+\, u\, u' ou × u u′\times\, u\, u', les rangs remplacés sont dans uu ou dans u′u', et le résultat est SS, ++ ou ×\times suivi des termes que donne l'hypothèse de récurrence : c'est un terme.

Formules. Dans = u u′{=}\, u\, u', les rangs remplacés sont dans les termes uu et u′u', et l'on conclut par le cas des termes. Dans ¬φ\neg\varphi et → φ ψ{\to}\, \varphi\, \psi, ils sont dans φ\varphi ou ψ\psi, et l'hypothèse de récurrence conclut. Dans ∀y φ\forall y\, \varphi, le rang 00 porte la lettre ∀\forall et le rang 11, qui suit ∀\forall, n'est pas une occurrence : les rangs remplacés sont dans φ\varphi, et le résultat est ∀y\forall y suivi d'une formule.

Enfin φ[t/x]\varphi[t/x] s'obtient en remplaçant les occurrences libres de xx, qui sont des occurrences de xx.

□
Remarque

Pour φ=→ = x0 0 ∀x0 = x0 x1\varphi = {\to}\, {=}\, x_0\, 0\, \forall x_0\, {=}\, x_0\, x_1, le calcul de φ[S 0/x0]\varphi[S\,0/x_0] ne remplace que l'occurrence libre de rang 22, et donne → = S 0 0 ∀x0 = x0 x1{\to}\, {=}\, S\, 0\, 0\, \forall x_0\, {=}\, x_0\, x_1 : l'occurrence de rang 77 est liée et reste en place.

Le terme S x0S\, x_0 n'est pas substituable à x1x_1 dans φ\varphi : l'occurrence libre de x1x_1, au rang 88, se trouve dans la sous-formule ∀x0 = x0 x1\forall x_0\, {=}\, x_0\, x_1, et x0x_0 est une variable de S x0S\, x_0. Le mot calculé par Sb\mathrm{Sb} se termine alors par ∀x0 = x0 S x0\forall x_0\, {=}\, x_0\, S\, x_0, c'est-à-dire ∀x0 (x0=S x0)\forall x_0\, (x_0 = S\, x_0) : c'est la capture décrite au nœud Substitution.

Remarque

La fonction Sb\mathrm{Sb} est définie pour tous les entiers, et non seulement pour les codes de formules, de termes et de variables ; elle ne vérifie pas la substituabilité, qui est une relation à part. Toutes deux serviront à reconnaître les axiomes du groupe (2) de Démonstrations formelles.

Ouvrir dans l'atlas interactif →