ATLAS Ouvrir dans l'atlas →

Proposition 1Fonctions primitives récursives

Propriétés de clôture des fonctions primitives récursives

Une relation R⊂ℕnR \subset \mathbb N^n est primitive récursive si sa fonction caractéristique χR\chi_R, égale à 11 sur RR et à 00 ailleurs, l'est. On écrit R(x)R(x) pour x∈Rx \in R.

Énoncé

(i) Les relations x=yx = y, x<yx < y et x⩽yx \leqslant y sont primitives récursives. Si RR et R′R' le sont, ¬R\neg R, R∧R′R \wedge R' et R∨R′R \vee R' le sont aussi, ainsi que R(g1(x),…,gm(x))R(g_1(x), \dots, g_m(x)) si les gjg_j sont primitives récursives.

(ii) Définition par cas. Si R1,…,RkR_1, \dots, R_k sont des relations primitives récursives qui partagent ℕn\mathbb N^n, et g1,…,gkg_1, \dots, g_k des fonctions primitives récursives, la fonction égale à gi(x)g_i(x) quand Ri(x)R_i(x) est primitive récursive.

(iii) Sommes, produits et quantifications bornés. Si ff et RR sont primitives récursives, les fonctions (x,y)↦∑z<yf(x,z)(x, y) \mapsto \sum_{z < y} f(x, z) et (x,y)↦∏z<yf(x,z)(x, y) \mapsto \prod_{z < y} f(x, z), et les relations ∃z<y R(x,z)\exists z < y\ R(x, z) et ∀z<y R(x,z)\forall z < y\ R(x, z) le sont aussi.

(iv) Minimisation bornée. Si RR est primitive récursive, la fonction μz<y R(x,z)\mu z < y\, R(x, z), égale au plus petit z<yz < y tel que R(x,z)R(x, z), et à yy s'il n'y en a pas, est primitive récursive.

(v) Le quotient q(x,d)q(x, d) et le reste r(x,d)r(x, d) de la division euclidienne de xx par d⩾1d \geqslant 1, prolongés par q(x,0)=x+1q(x, 0) = x + 1 et r(x,0)=xr(x, 0) = x, sont primitifs récursifs. La relation de divisibilité d∣xd \mid x et l'ensemble des nombres premiers sont primitifs récursifs.

Démonstration

(i) On a χ=(x,y)=sg‾((x−˙y)+(y−˙x)),\chi_=(x, y) = \overline{\mathrm{sg}}\big((x \mathbin{\dot{-}} y) + (y \mathbin{\dot{-}} x)\big), puis χ<(x,y)=sg(y−˙x)\chi_<(x, y) = \mathrm{sg}(y \mathbin{\dot{-}} x) et χ⩽(x,y)=sg‾(x−˙y)\chi_\leqslant(x, y) = \overline{\mathrm{sg}}(x \mathbin{\dot{-}} y), toutes composées des exemples de Primitives récursives.

Ensuite χ¬R=1−˙χR\chi_{\neg R} = 1 \mathbin{\dot{-}} \chi_R, χR∧R′=χR⋅χR′\chi_{R \wedge R'} = \chi_R \cdot \chi_{R'} et χR∨R′=sg(χR+χR′)\chi_{R \vee R'} = \mathrm{sg}(\chi_R + \chi_{R'}). La substitution des gjg_j est une composition.

(ii) La fonction cherchée est ∑i=1kgi⋅χRi\sum_{i=1}^{k} g_i \cdot \chi_{R_i}, puisqu'en chaque point exactement un des χRi\chi_{R_i} vaut 11 ; c'est une composée d'additions et de multiplications.

(iii) La somme s(x,y)s(x, y) vérifie s(x,0)=0s(x, 0) = 0 et s(x,y+1)=s(x,y)+f(x,y)s(x, y + 1) = s(x, y) + f(x, y) : c'est une récurrence primitive. Le produit se traite de même, avec la valeur initiale 11. Enfin χ∃z<y R(x,y)=sg(∑z<yχR(x,z)),\chi_{\exists z < y\, R}(x, y) = \mathrm{sg}\Big(\sum_{z < y} \chi_R(x, z)\Big), et χ∀z<y R(x,y)=∏z<yχR(x,z)\chi_{\forall z < y\, R}(x, y) = \prod_{z < y} \chi_R(x, z).

(iv) Soit z0z_0 le plus petit zz tel que R(x,z)R(x, z), s'il existe. Le produit ∏z⩽t(1−˙χR(x,z))\prod_{z \leqslant t} \big(1 \mathbin{\dot{-}} \chi_R(x, z)\big) vaut 11 si t<z0t < z_0, ou si z0z_0 n'existe pas, et 00 sinon. La somme de ces produits pour t<yt < y compte les t<yt < y inférieurs à z0z_0 : μz<y R(x,z)=∑t<y ∏z<t+1(1−˙χR(x,z)),\begin{aligned} &\mu z < y\, R(x, z) \\ &\quad = \sum_{t < y}\ \prod_{z < t + 1} \big(1 \mathbin{\dot{-}} \chi_R(x, z)\big), \end{aligned} qui vaut z0z_0 si z0<yz_0 < y, et yy sinon. C'est une fonction primitive récursive par (iii).

(v) Pour d⩾1d \geqslant 1, le quotient de xx par dd est le plus petit qq tel que d(q+1)>xd(q + 1) > x, et il est au plus xx puisque d(x+1)>xd(x + 1) > x. Ainsi q(x,d)=μq<x+1 (d(q+1)>x),q(x, d) = \mu q < x + 1\, \big(d(q + 1) > x\big), formule qui donne aussi q(x,0)=x+1q(x, 0) = x + 1, et r(x,d)=x−˙d⋅q(x,d)r(x, d) = x \mathbin{\dot{-}} d \cdot q(x, d). L'unicité de la division euclidienne (Division euclidienne) garantit que ce sont bien le quotient et le reste.

Enfin d∣xd \mid x équivaut à ∃k<x+1 (dk=x)\exists k < x + 1\ (dk = x), et xx est premier si et seulement si x⩾2x \geqslant 2 et ∀d<x (d⩽1∨¬(d∣x))\forall d < x\, \big(d \leqslant 1 \vee \neg(d \mid x)\big) ; on conclut par (i) et (iii).

□
Remarque

La minimisation bornée est une recherche qui s'arrête de toute façon à la borne yy. Retirer la borne change tout : la recherche peut alors ne jamais aboutir, et c'est l'opération qui fera passer aux fonctions récursives, partielles en général.

Ouvrir dans l'atlas interactif →