ATLAS Ouvrir dans l'atlas →

Lemme 1Fonctions primitives récursives

Croissance de la fonction d'Ackermann

La fonction d'Ackermann A:ℕ2→ℕA : \mathbb N^2 \to \mathbb N est définie par A(0,y)=y+1,A(x+1,0)=A(x,1),A(x+1,y+1)=A(x,A(x+1,y)).\begin{aligned} A(0, y) &= y + 1, \\ A(x + 1, 0) &= A(x, 1), \\ A(x + 1, y + 1) &= A\big(x, A(x + 1, y)\big). \end{aligned} Précisément, on définit par récurrence sur xx des applications Ax:ℕ→ℕA_x : \mathbb N \to \mathbb N : A0=SA_0 = S, le successeur x↦x+1x \mapsto x + 1 des fonctions de base du nœud Primitives récursives, et Ax+1A_{x+1} est l'unique application telle que Ax+1(0)=Ax(1)A_{x+1}(0) = A_x(1) et Ax+1(y+1)=Ax(Ax+1(y))A_{x+1}(y + 1) = A_x(A_{x+1}(y)), fournie par le théorème de définition par récurrence. On pose A(x,y)=Ax(y)A(x, y) = A_x(y).

Énoncé

Pour tous xx, yy, x′x' :

(i) A(x,y)>yA(x, y) > y ;

(ii) A(x,y+1)>A(x,y)A(x, y + 1) > A(x, y) : AA est strictement croissante en yy ;

(iii) A(x+1,y)⩾A(x,y+1)A(x + 1, y) \geqslant A(x, y + 1), et donc A(x+1,y)>A(x,y)A(x + 1, y) > A(x, y) : AA est strictement croissante en xx ;

(iv) A(1,y)=y+2A(1, y) = y + 2, A(2,y)=2y+3A(2, y) = 2y + 3 et A(3,y)=2y+3−3A(3, y) = 2^{y+3} - 3 ;

(v) si k=max⁡(x,x′)k = \max(x, x'), alors A(x,A(x′,y))<A(k+2,y)A\big(x, A(x', y)\big) < A(k + 2, y).

Démonstration

La seconde ligne du texte fait de x↦Axx \mapsto A_x une définition par récurrence dans l'ensemble des applications de ℕ\mathbb N dans ℕ\mathbb N, à laquelle s'applique encore le théorème de définition par récurrence.

(i) Par récurrence sur xx. Pour x=0x = 0, y+1>yy + 1 > y. Supposons (i) vrai pour xx, et montrons A(x+1,y)>yA(x + 1, y) > y par récurrence sur yy. On a A(x+1,0)=A(x,1)>1>0A(x + 1, 0) = A(x, 1) > 1 > 0. Si A(x+1,y)>yA(x + 1, y) > y, c'est-à-dire A(x+1,y)⩾y+1A(x + 1, y) \geqslant y + 1, alors A(x+1,y+1)=A(x,A(x+1,y))>A(x+1,y)⩾y+1.\begin{aligned} A(x + 1, y + 1) &= A\big(x, A(x + 1, y)\big) \\ &> A(x + 1, y) \geqslant y + 1. \end{aligned}

(ii) Pour x=0x = 0, c'est clair. Sinon, A(x+1,y+1)=A(x,A(x+1,y))>A(x+1,y)A(x + 1, y + 1) = A(x, A(x + 1, y)) > A(x + 1, y) par (i).

(iii) Par récurrence sur yy. Pour y=0y = 0, il y a égalité. Si A(x+1,y)⩾A(x,y+1)A(x + 1, y) \geqslant A(x, y + 1), alors A(x+1,y)>y+1A(x + 1, y) > y + 1 par (i), donc A(x+1,y)⩾y+2A(x + 1, y) \geqslant y + 2, et par (ii) A(x+1,y+1)=A(x,A(x+1,y))⩾A(x,y+2).\begin{aligned} A(x + 1, y + 1) &= A\big(x, A(x + 1, y)\big) \\ &\geqslant A(x, y + 2). \end{aligned} La seconde inégalité suit : A(x+1,y)⩾A(x,y+1)>A(x,y)A(x + 1, y) \geqslant A(x, y + 1) > A(x, y).

(iv) A(1,0)=A(0,1)=2A(1, 0) = A(0, 1) = 2 et A(1,y+1)=A(1,y)+1A(1, y + 1) = A(1, y) + 1. Puis A(2,0)=A(1,1)=3A(2, 0) = A(1, 1) = 3 et A(2,y+1)=A(2,y)+2A(2, y + 1) = A(2, y) + 2. Enfin A(3,0)=A(2,1)=5=23−3A(3, 0) = A(2, 1) = 5 = 2^3 - 3 et A(3,y+1)=2A(3,y)+3=2y+4−3.A(3, y + 1) = 2A(3, y) + 3 = 2^{y+4} - 3.

(v) Par la croissance en chaque variable, (ii) et (iii), puis par (iii) appliqué à A(k+1,y)A(k + 1, y) et la définition, et enfin par (iii) : A(x,A(x′,y))⩽A(k,A(k,y))<A(k,A(k+1,y))=A(k+1,y+1)⩽A(k+2,y).\begin{aligned} A\big(x, A(x', y)\big) &\leqslant A\big(k, A(k, y)\big) \\ &< A\big(k, A(k + 1, y)\big) \\ &= A(k + 1, y + 1) \\ &\leqslant A(k + 2, y). \end{aligned}

□
Remarque

Wilhelm Ackermann a publié en 1928 (Mathematische Annalen 99, « Zum Hilbertschen Aufbau der reellen Zahlen ») une fonction de trois variables, récursive mais non primitive récursive. La version à deux variables donnée ici est due à Rózsa Péter (1935), sous la forme simplifiée de Raphael Robinson (1948).

Remarque

Chaque ligne A(x+1,⋅)A(x + 1, \cdot) itère la précédente, puisque A(x+1,y)=Ax y+1(1)A(x + 1, y) = A_x^{\,y+1}(1) : addition, multiplication par 22, exponentielle, puis tour d'exponentielles. On a ainsi A(4,0)=13A(4, 0) = 13, A(4,1)=216−3=65 533A(4, 1) = 2^{16} - 3 = 65\,533, et A(4,2)=265536−3A(4, 2) = 2^{65536} - 3 s'écrit avec 19 72919\,729 chiffres.

Ouvrir dans l'atlas interactif →