ATLAS Ouvrir dans l'atlas →

Proposition 2Arithmétisation de la syntaxe

Les termes forment un ensemble primitif récursif

On note Tm\mathrm{Tm} l'ensemble des codes des termes du langage de l'arithmétique (Termes) et Var\mathrm{Var} l'ensemble des codes des mots réduits à une variable.

Énoncé

(i) Inversion. Un mot est un terme si et seulement s'il est une variable, la constante 00, ou l'un des mots S tS\, t, + t u+\, t\, u et × t u\times\, t\, u, où tt et uu sont des termes.

(ii) Les ensembles Var\mathrm{Var} et Tm\mathrm{Tm} sont primitifs récursifs.

Démonstration

(i) Soit EE l'ensemble des termes et E′E' l'ensemble des mots de l'une des formes annoncées, avec t,u∈Et, u \in E. Comme EE contient les variables et 00 et qu'il est stable par les trois symboles de fonctions, E′⊂EE' \subset E.

Inversement, E′E' contient les variables et 00. Il est stable : si tt et uu sont dans E′E', ils sont dans EE, et S tS\, t, + t u+\, t\, u, × t u\times\, t\, u sont dans E′E' par définition. Comme EE est le plus petit ensemble qui a ces propriétés, E⊂E′E \subset E'.

(ii) On a Var(N)  ⟺  lg(N)=1∧(N)0⩾8\mathrm{Var}(N) \iff \mathrm{lg}(N) = 1 \wedge (N)^0 \geqslant 8, relation primitive récursive par Clôture, (i), et Codages.

Pour Tm\mathrm{Tm}, soit Q(N,h)Q(N, h) la disjonction des trois conditions suivantes, où l=lg(N)l = \mathrm{lg}(N) :

l=1l = 1, et (N)0=4(N)^0 = 4 ou (N)0⩾8(N)^0 \geqslant 8 ;

(N)0=5(N)^0 = 5, l⩾2l \geqslant 2 et (h)sm(N,1,l)=1(h)^{\mathrm{sm}(N, 1, l)} = 1 ;

(N)0=6(N)^0 = 6 ou (N)0=7(N)^0 = 7, et il existe j<lj < l tel que j⩾2j \geqslant 2, (h)sm(N,1,j)=1(h)^{\mathrm{sm}(N, 1, j)} = 1 et (h)sm(N,j,l)=1(h)^{\mathrm{sm}(N, j, l)} = 1.

C'est une relation primitive récursive par les points (i) et (iii) de Clôture, la quantification étant bornée par lg(N)\mathrm{lg}(N). La récurrence de valeurs, (ii), fournit une relation primitive récursive RR telle que R(N)  ⟺  Q(N,χˉR(N))R(N) \iff Q(N, \bar\chi_R(N)).

Montrons par récurrence forte sur NN que R(N)R(N) si et seulement si NN code un terme. Les entiers sm(N,1,l)\mathrm{sm}(N, 1, l), sm(N,1,j)\mathrm{sm}(N, 1, j) et sm(N,j,l)\mathrm{sm}(N, j, l) qui interviennent, avec 1⩽j⩽l1 \leqslant j \leqslant l, codent des facteurs qui omettent la première lettre ; ils sont strictement plus petits que NN par le point (ii) du codage des mots. Pour un tel entier MM, on a donc (χˉR(N))M=χR(M)(\bar\chi_R(N))^M = \chi_R(M), qui vaut 11 si et seulement si MM code un terme, par hypothèse de récurrence.

Ainsi Q(N,χˉR(N))Q(N, \bar\chi_R(N)) dit que le mot de code NN est une variable ou 00, ou bien SS suivi d'un terme, ou bien ++ ou ×\times suivi d'un mot qui se coupe en deux termes non vides, le premier occupant les rangs 11 à j−1j - 1 et le second les rangs jj à l−1l - 1. Par (i), c'est dire que NN code un terme : R=TmR = \mathrm{Tm}.

□
Remarque

Pour N=⌜S 0⌝=18 432N = \ulcorner S\, 0 \urcorner = 18\,432, on a lg(N)=2\mathrm{lg}(N) = 2, (N)0=5(N)^0 = 5, et le facteur sm(N,1,2)=⌜0⌝=9\mathrm{sm}(N, 1, 2) = \ulcorner 0 \urcorner = 9 est un code plus petit, de longueur 11 et de lettre 44 : la reconnaissance de 18 43218\,432 consulte la seule valeur déjà acquise χTm(9)=1\chi_{\mathrm{Tm}}(9) = 1, et conclut que 18 43218\,432 code un terme.

Remarque

La reconnaissance n'a pas besoin de la lecture unique : elle demande seulement s'il existe un découpage en deux termes, sans chercher à savoir s'il est unique. La lecture unique servira à extraire les composantes d'une formule, quand il faudra calculer une valeur de vérité à partir de celles de ses morceaux (Tautologies).

Ouvrir dans l'atlas interactif →