La fonction d’Ackermann
Référence : Logique mathématique, tome 2.
René Cori , Daniel Lascar . 2011-2012
Historique : Wilhem Ackermann, alors élève de Hilbert, proposa en 1928 un exemple de fonction récursive, non récursive primitive, à trois variables :
A(m, n, p) =m→n→p=m↑pn.
C’est en fait une fonction semblable, mais à seulement deux variables, proposée par Rózsa Péter qu’on appelle aujourd’huifonction d’Ackermann.
Définition 1
On définit lafonction d’Ackermannξainsi : – Pour tout entierx,ξ(0, x) = 2x.
– Pour tout entiery,ξ(y,0) = 1.
– Pour tous entiersxet y, ξ(y+ 1, x+ 1) =ξ(y, ξ(y+ 1, x)).
Pour chaque entiern, on noteξn la fonctionx7→ξ(n, x), et on a alors :
ξ0(x) = 2x ξn(0) = 1
ξn(x+ 1) =ξn−1(ξn(x))
On voit avec la définition récursive desξn que pour tout entier n, la fonction ξn est primitive récursive (par procédé de récurrence, surn).
En revanche, cela n’implique pas queξest primitive récursive, et d’ailleurs :
Théorème 2
La fonction d’Ackermannξ n’est pas primitive récursive.
Démonstration. On va montrer plein de lemmes techniques pour finalement montrer la fonctionξdomine toutes les fonctions primitives récursives.
Lemme 3
Pour tousnetxentiers,
ξn(x)> x.
Démonstration. Montrons-le par récurrence sur n.
1
Soit doncφn la proposition « Pour tout entier x,ξn(x)> x».
– Il est assez clair queφ0.
– Soitnun entier. Supposonsφn−1, et montronsφn. Pour cela, faisons une récurrence surx.
Soit doncψx la proposition « ξn(x)> x».
– ψ0est toujours clair.
– Soitxun entier. Supposonsψx−1 et montronsψx.
On a par définitionξn(x) =ξn−1(ξn(x−1)), et donc, parφn−1on a ξn(x)> ξn(x−1), c’est-à-dire ξn(x)>ξn(x−1) + 1.
D’aprèsψx−1,ξn(x−1)> x−1, d’oùψx
On a doncφn.
Donc, par récurrence, on a le lemme. ♦
Lemme 4
Pour toutn,ξn est strictement croissante.
Démonstration. ξ0=λx.2x, doncξ0 est croissante.
Pourn>1, on a la formuleξn(x+ 1) =ξn−1(ξn(x)), et donc par le lemme3,ξn(x+ 1)> ξn(x). ♦
Lemme 5
Pour toutn>1, pour tout entierx, on a :
ξn(x)>ξn−1(x).
Démonstration. Par récurrence surx: – Pourx= 0, ouais.
– Pour l’hérédité :
On a vuξn(x)>x+ 1, donc par croissance deξn−1, on a
ξn−1(ξn(x))>ξn−1(x+ 1).
Or par définition,ξn−1(ξn(x)) =ξn(x+ 1), d’où le résultat.
♦
Définition 6
On note dans la suiteξnk la fonctionξn itéréekfois.
Lemme 7
Les fonctions ξnk sont strictement croissantes. De plus pour tous entiersm, n, k, h, x: ξnk(x)< ξnk+1(x)
ξnk(x)>x ξnk◦ξnh=ξnk+h Sim6n, ξmk(x)6ξnk(x)
Démonstration. C’est facile par récurrence. ♦
2
Définition 8
Soientf : N→Nstrictement croissante, etg : Np→N.
On dit quef domineg si pour tout(x1, . . . , xp)sauf un nombre fini, g(x1, . . . , xp)6f(sup(x1, . . . , xp)).
On pose alors
Cn={g |il existek tel queg soit dominée parξnk}.
On voit facilement que certaines fonctions sont dansC0: les projections, les constantes, la fonction successeur, les fonctions sup, l’addition, la multiplication par un entier.
On remarque aussi queξn∈Cn, et sif, g : Np→Ntellesf(x1, . . . , xp)6g(x1, . . . , xp) pour tout (x1, . . . xp), alorsg∈Cn impliquef ∈Cn.
Si on montre que C := S
Cn est stable par composition et récurrence, alors C contiendra donc toutes les fonctions primitives récursives.
Lemme 9
Pour toutn,Cn est clos par composition.
Démonstration. Dans cette preuve, les inégalités seront pour tout uple, sauf un nombre fini.
Soientf1, . . . , fm : Np→Net g : Nm→Ndes fonctions deCn. Montrons queg(f1, . . . , fm) est dansCn aussi.
On a l’existence dek, k1, . . . , km tels que
g(y1, . . . , ym)6ξnk(sup(y1, . . . , ym)) fi(x1, . . . , xp)6ξnki(sup(x1, . . . , xp)) Posonsh= sup(k1, . . . , km).
On a alors par le lemme7:
g(f1(x1, . . . , xp), . . . , fm(x1, . . . , xp))6ξnk(ξnh(sup(x1, . . . , xp))),
d’où le résultat avec le lemme7à nouveau. ♦
Lemme 10
Pour tous entiersn, k etx, on a :
ξnk(x)6ξn+1(x+k).
Démonstration. Par récurrence surk. ♦
Lemme 11
Sig : Np→Neth : Np+2 →Nsont dansCn, alorsf définie par récurrence à partir deg ethest dansCn+1.
Démonstration. Comme dans la preuve précédente, les inégalités seront pour tout uple sauf un nombre fini.
3
Les hypothèses sont :
g(x1, . . . , xp)6ξkn1(sup(x1, . . . , xp)) h(x1, . . . , xp, y, z)6ξnk2(sup(x1, . . . , xp, y, z))
Montrons par récurrence sury la propriété Φy=«f(x1, . . . , xp, y)6ξnk1+yk2(sup(x1, . . . , xp, y)) ».
– Φ0est évident.
– Supposons Φy et montrons Φy+1. On a
f(x1, . . . , xp, y+ 1) =h(x1, . . . , xp, y, f(x1, . . . , xp, y)) 6ξkn2(sup(x1, . . . , xp, y, f(x1, . . . , xp, y)))
6ξkn2(ξkn1+yk2(sup(x1, . . . , xp, y))) par le lemme7et hypothèse de récurrence D’où Φy+1, et donc Φy pour touty.
En appliquant le lemme10, on a :
f(x1, . . . , xp, y)6ξn+1(sup(x1. . . , xp, y) +k1+yk2).
La fonctionλx1x2· · ·xpy.ξn+1(sup(x1, . . . , xp, y) +k1+yk2) est composée de fonctions deCn+1, donc estCn+1,
et doncf aussi. ♦
Corollaire 12
C contient toutes les fonctions récursives primitives.
On peut maintenant montrer queξn’est pas primitive récursive.
Sinon,λx.ξ(x,2x) l’est aussi, donc est dansC:
Il existen, k tels que pour toutxsauf un nombre fini,ξ(x,2x)6ξnk(x).
Donc on aξ(x,2x)6ξn+1(x+k) par le lemme10.
De plus, pourxassez grand :
ξn+1(x+k)< ξn+1(2x)
< ξx(2x)
=ξ(x,2x) D’où une contradiction.
4