ATLAS Ouvrir dans l'atlas →

Proposition 1Calculabilité

La fonction d'Ackermann est récursive

Le calcul de la fonction d'Ackermann se mène sur une pile, suite finie d'entiers dont on ne modifie que la fin. Une étape transforme une pile u m nu\, m\, n, où uu est une suite et mm, nn ses deux derniers termes, selon la définition de AA : u 0 n⟼u (n+1),u (m+1) 0⟼u m 1,u (m+1) (n+1)⟼u m (m+1) n,\begin{aligned} u\, 0\, n &\longmapsto u\, (n + 1), \\ u\, (m + 1)\, 0 &\longmapsto u\, m\, 1, \\ u\, (m + 1)\, (n + 1) &\longmapsto u\, m\, (m + 1)\, n, \end{aligned} et laisse inchangée une pile de longueur au plus 11.

Énoncé

(i) Pour toute suite uu et tous mm, nn, la pile u m nu\, m\, n devient, après un nombre fini d'étapes, la pile u A(m,n)u\, A(m, n), et toutes les piles intermédiaires s'écrivent u vu\, v avec vv de longueur au moins 22.

(ii) La fonction d'Ackermann est récursive et totale. L'inclusion des fonctions primitives récursives dans les fonctions récursives totales est stricte.

Démonstration

(i) Par récurrence sur mm, et, pour chaque mm, par récurrence sur nn, l'énoncé portant sur toutes les suites uu.

Pour m=0m = 0, une étape mène à u (n+1)=u A(0,n)u\, (n + 1) = u\, A(0, n).

Pour m+1m + 1 et n=0n = 0, une étape mène à u m 1u\, m\, 1 ; l'hypothèse de récurrence sur mm la conduit à u A(m,1)=u A(m+1,0)u\, A(m, 1) = u\, A(m + 1, 0), en passant par des piles u vu\, v avec vv de longueur au moins 22.

Pour m+1m + 1 et n+1n + 1, une étape mène à u m (m+1) nu\, m\, (m + 1)\, n. L'hypothèse de récurrence sur nn, appliquée à la suite u mu\, m, conduit à u m A(m+1,n)u\, m\, A(m + 1, n) ; l'hypothèse sur mm, appliquée à la suite uu, conduit enfin à u A(m,A(m+1,n))=u A(m+1,n+1).\begin{aligned} &u\, A\big(m, A(m + 1, n)\big) \\ &\quad = u\, A(m + 1, n + 1). \end{aligned} Les piles intermédiaires s'écrivent u m vu\, m\, v puis u v′u\, v', avec vv et v′v' de longueur au moins 22.

(ii) Codons les piles par les codes de suites de Codages. La fonction EE qui envoie le code d'une pile sur celui de la pile obtenue après une étape est primitive récursive : avec les notations de ce nœud, si NN code u m nu\, m\, n, alors n=dr(N)n = \mathrm{dr}(N), m=dr(dbt(N))m = \mathrm{dr}(\mathrm{dbt}(N)), et uu a pour code dbt(dbt(N))\mathrm{dbt}(\mathrm{dbt}(N)). Les trois cas, et le cas lg(N)⩽1\mathrm{lg}(N) \leqslant 1, sont des relations primitives récursives, et dans chacun le résultat s'obtient par la fonction d'ajout ; on conclut par la définition par cas (Clôture, (ii)).

Les itérés Et(N)E^t(N), définis par récurrence primitive sur tt, sont primitifs récursifs en (N,t)(N, t). D'après (i), appliqué à la suite vide, la pile ⟨m,n⟩\langle m, n \rangle atteint ⟨A(m,n)⟩\langle A(m, n) \rangle, et c'est la première pile de longueur 11 qu'elle rencontre. Ainsi A(m,n)=dr(Eτ(⟨m,n⟩)),A(m, n) = \mathrm{dr}\Big(E^{\tau}\big(\langle m, n \rangle\big)\Big), avec τ=μt [lg(Et(⟨m,n⟩))=1]\tau = \mu t\, \big[\mathrm{lg}\big(E^t(\langle m, n \rangle)\big) = 1\big], qui existe toujours. C'est une fonction récursive totale par le point (iii) de Fonctions récursives. Elle n'est pas primitive récursive (Ackermann).

□
Remarque

Pour A(1,2)A(1, 2), la pile passe par 1 2→0 1 1→0 0 1 0→0 0 0 1→0 0 2→0 3→4,\begin{aligned} &1\,2 \to 0\,1\,1 \to 0\,0\,1\,0 \to 0\,0\,0\,1 \\ &\to 0\,0\,2 \to 0\,3 \to 4, \end{aligned} soit six étapes, et l'on retrouve A(1,2)=4A(1, 2) = 4. Le calcul de A(2,3)=9A(2, 3) = 9 en demande 4444, et celui de A(3,3)=61A(3, 3) = 61 en demande 2 4322\,432 : le nombre d'étapes croît comme la fonction elle-même.

Remarque

La récurrence de (i) porte sur les couples (m,n)(m, n) rangés dans l'ordre lexicographique, qui est un bon ordre ; c'est ce qui garantit l'arrêt du calcul. Aucune borne primitive récursive du nombre d'étapes n'existe, sans quoi la minimisation pourrait être bornée et AA serait primitive récursive.

Repose sur

Sert à

Aucune fiche de ce graphe ne l'utilise encore.
Ouvrir dans l'atlas interactif →