5.8 KiB
up, tags, aliases, source
| up | tags | aliases | source | |||
|---|---|---|---|---|---|---|
|
|
[!definition] fonction récursive primitive On définit par induction l'ensemble des fonctions récursives primitives comme suit :
[!definition] ensembles
\mathscr{F}_{p}et\mathscr{F}Soitp \in \mathbb{N}on note\mathscr{F}_{p}l'ensemble des applications de\mathbb{N}^{p} \to \mathbb{N}(par convention,\mathscr{F}_{0}ne contient que la suite vide) On note\displaystyle\mathscr{F} = \bigcup _{p \in \mathbb{N}} \mathscr{F}_{p}[!definition] Fonctions projection On note
P_{p}^{i}(pour1 \leq i \leq p) la fonction de\mathscr{F}_{p}telle que pour toutx_1, \dots, x_{p} \in \mathbb{N}on a :P_{p}^{i}(x_1, x_2, \dots, x_{p}) = x_{i}[!definition] fonction successeur On note
Sla fonction de\mathscr{F}_{1}qui à chaque entiernfait correspondren+1:S = \lambda x. x+1[!definition] Définition par récurrence Soient
f \in \mathscr{F}_{p}etg \in \mathscr{F}_{p+2}, il existe une unique fonction de\mathscr{F}_{p+1}qui, pour toutx_1, \dots, x_{p}, y \in \mathbb{N}respecte :
f(x_1, x_2, \dots, x_{p}, 0) = g(x_1, x_2, \dots, x_{p})f(x_1, x_2, \dots, x_{p}, y+1) = h(x_1, x_2, \dots, x_{p}, y, f(x_1, x_2, \dots, x_{p}, y))L'ensemble des fonctions récursives primitives est alors le plus petit des sous ensembles
Ede\mathscr{F}tel que :
Econtient toutes les fonctions constantes de\mathscr{F}Econtient toutes les projectionsP_{p}^{i}pour tous les entierspetiavec1 \leq i \leq pEcontient la fonction successeurSEest clos par composition, c'est-à-dire que sin,p \in \mathbb{N}, sif_1, f_2, \dots, f_{n}sont des fonctions de\mathscr{F}_{p}qui sont aussi dansE, et sig \in \mathscr{F}_{n}est aussi dansE, alors la fonction composéeg(f_1, f_2, \dots, f_{n})appartient à EEest clos par récurrence, cc'est-à-dire que sip \in N, sig \in \mathscr{F}_{p}eth \in \mathscr{F}_{p+2}sont dansE, alors la fonctionf \in \mathscr{F}_{p+1}définie par récurrence à partir degethest aussi dansE:f : \begin{cases} f(x_1,x_2, \dots, x_{p}, 0) = g(x_1, x_2, \dots, x_{p})\\ f(x_1, x_2, \dots, x_{p}, y+1) = h(x_1, x_2, \dots, x_{p}, y, f(x_1, x_2, \dots, x_{p}, y)) \end{cases}
^definition
[!definition] Définition courte Soit
\mathscr{F}l'ensemble des fonctions à valeurs entières et à paramètres entiers. L'ensemble des fonctions récursives primitives est alors le plus petit des sous ensemblesEde\mathscr{F}tel que :
Econtient toutes les fonctions constantes de\mathscr{F}Econtient toutes les fonctions de projectionEcontient la fonction successeurEest clos par composition :f_1, f_2, \dots, f_{p}, g \in E \implies g(f_1, \dots, f_{p}) \in EEest clos par récurrence : sig\in \mathscr{F}_{p}eth \in \mathscr{F}_{p+2}sont dansEalorsf: \begin{cases} f(\overline{x}, 0) = g(\overline{x})\\ f(\overline{x}, y+1) = h(\overline{x}, y, f(\overline{x}, y)) \end{cases}est dansE
Remarques
[!info] Définition par le bas On peut également produire une définition "par le bas", en construisant d'abord l'ensemble
R_0contenant les fonctions constantes, projections et successeur, puis en posant pour toutn \in \mathbb{N}:R_0 = \{ \gamma \mid p \in \mathbb{N} \text{ et } \gamma \text{ est une fonction constante de } \mathbb{N}^{p} \to \mathbb{N} \} \cup \{ P_{p}^{i} \mid 1 \leq i \leq p \} \cup \{ S \}\begin{align} R_{n+1} = R_{n} &\cup \{ h \mid h \text{ est obtenue par récurrence à partir de deux fonctions de } R_{n} \}\\ &\cup \{ h \mid h \text{ est obtenue par composition de deux fonctions de } R_{n} \} \end{align}
[!info] Montrer une propriété des fonctions récursives primitives
- on peut montrer que cette propriété
\mathscr{P}est vraie sur les fonctions constantes, projections et successeur, puis montrer que\mathscr{P}est stable par composition et récursion- on peut montrer que
\mathscr{P}est vraie surR_0puis que si\mathscr{P}est vraie partout surR_{n}pour unn \in \mathbb{N}, alors elle est aussi vraie partout surR_{n+1}
Propriétés
[!proposition]+ les fonctions récursives primitives possèdent des algorithmes les calculant Il existe un algorithme pour calculer chacune des fonctions récursives primitives.
[!démonstration]- Démonstration Cela est évident :
- les fonctions constantes, projections et la fonction suivant possèdent toutes des algorithmes pour les calculer
- si
f_1, f_2, \dots, f_{n}etg \in \mathscr{F}_{n}sont des fonctions récursives primitives pour lesquelles il existe un algorithme de calcul, alors il existe un algorithme pour calculerg(f_1, f_2, \dots, f_{n}), qui consiste à donner en entrée de l'algorithme de calcul degles résultats des algorithmes de calcul def_1, f_2, \dots, f_{n}- si
g \in \mathscr{F}_{p}eth \in \mathscr{F}_{p+2}sont deux fonctions récursives primitives pour lesquelles il existe un algorithme de calcul, alors la fonctionf \in \mathscr{F}_{p+1}définie par récurrence à partir degethadmet également un algorithme de calcul, qui consiste en l'application du schéma de réccurence dans un algorithme :PROCEDURE f(x1, x2, ..., xn, y) rec <- g(x1, x2, ..., xn) FOR i <- 0 .. y: rec <- h(x1, x2, ..., xn, i, rec) END_FOR RETURN rec END_PROCEDURECela montre bien que la propriété de posséder un algorithme est vraie partout sur l'ensemble des fonctions récursives primitives