222 Logique (Patrick Dehornoy), VIII. Les th´eor`emes de limitation [version 2006-07]
Lemme 1.3.(i)Soit πune permutation de {1, ..., p}. Si une fonction fde Np
dans Nest primitive r´ecursive, il en est de mˆeme de la fonction fπde Npdans N
d´efinie par fπ(n1, ..., np) := f(nπ(1), ..., f(nπ(p))).
(ii)Sont primitifs r´ecursifs :
•pour tous p,m, la fonction constante constp,mde Npdans Nde valeur m;
•l’addition, la multiplication et l’exponentiation ;
•les relations d’´egalit´e et d’ordre ;
•les singletons.
D´
emonstration. (i) Par d´efinition, on a
fπ=comp(f, projp,π(1), ..., projp,π(p)),
et, en substituant `a fdans cette expression une d´efinition de fen termes des fonctions de
base, on obtient une d´efinition de fπen termes des mˆemes fonctions de base, ce qui atteste du
caract`ere primitif r´ecursif de fπ.
(ii) On montre par r´ecurrence sur pque la fonction constp,0est primitive r´ecursive.
Pour p= 0, la fonction est zero, et le r´esultat est vrai par d´efinition. Pour p= 1, la fonc-
tion const1,0est d´efinie par la r´ecursion
const1,0(k) = !0 pour k= 0,
const1,0(k−1) pour k>0,
donc const1,0est d´efinie par r´ecursion de base zero et de pas h, o`u hest d´efinie par h(n,m) = m,
soit h=proj2,2; on a donc const1,0=rec(zero,proj2,2), et const1,0est primitive r´ecursive.
Enfin, pour p$2, on a constp,0(!
n) = const1,0(n1) = const1,0(projp,1(!
n)), donc par cons´equent
constp,0=comp(const1,0,projp,1), `a nouveau une fonction primitive r´ecursive. Ensuite, on
montre par r´ecurrence sur mque constp,mest primitive r´ecursive pour tout m. Pour m= 0, le
r´esultat vient d’ˆetre d´emontr´e. Pour m>0, on a constp,m(!
n) = S(constp,m−1(!
n)) pour tout !
n,
soit constp,m=comp(succ,constp,m−1). Par hypoth`ese de r´ecurrence, constp,m−1est primitive
r´ecursive, donc il en est de mˆeme de constp,m.
On a vu dans l’exemple 1.2 que l’addition est primitive r´ecursive puisque d´efinie par
r´ecursion `a partir de la fonction successeur. La multiplication mult est d´efinie `a partir de
l’addition par la r´ecursion
mult(n,k) = n·k:= !0 pour k= 0,
(n·(k−1)) + npour k>0,
d’o`u mult =rec(const1,0, f), o`u hest la fonction de N3dans Nd´efinie par h(n,k,m) :=
m+n, soit comp(add,proj3,3,proj3,1), d’o`u mult =rec(const1,0,comp(add,proj3,3,proj3,1)).
Comme const1,0et add sont primitives r´ecursives, mult l’est ´egalement. De mˆeme encore,
l’exponentielle exp est primitive r´ecursive puisque d´efinie par la r´ecursion
exp(n,k) = nk:= !1 pour k= 0,
mult(exp(n,k−1)),n) pour k>0.
Ensuite, le singleton {0}est primitif r´ecursif, puisque sa fonction indicatrice 1
1
1{0}est d´efinie par
la r´ecursion
1
1
1{0}(k) := !1 pour k= 0,
0 pour k>0,