--- up: - "[[fonction récursive primitive]]" tags: - s/maths/logique - s/informatique aliases: --- > [!definition] [[fonction d'ackermann de cori et lascar]] > [[fonction d'Ackermann]] modifiée pour la simplicité des preuves. > On la note $\xi$, et on la définit comme suit : > - $\forall x \in \mathbb{N},\quad \xi(0, x) = 2^{x}$ > - $\forall y,\quad \xi(y, 0) = 1$ > - $\forall x, y \in \mathbb{N},\quad \xi(y+1, x+1) = \xi(y, \xi(y+1, x))$ > > On pourra aussi noter : > $\xi _{n}(x) = \xi(n, x)$ (définie comme $\xi _{n} := \lambda x. \xi(n, x)$) > La relation de récurrence est alors : $\xi _{n+1}(x+1) = \xi _{n}(\xi _{n+1}(x))$ ^definition # Propriétés > [!proposition]+ Unicité > La définition donnée désigne bien une unique fonction. > > [!démonstration]- Démonstration > > On utilise la notation $\xi _{n}$ et la récurrence : > > $\begin{cases} \xi _{n}(0) = 1\\ \xi _{n}(x+1) = \xi _{n-1}(\xi _{n}(x)) \end{cases}$ > > Cela établit clairement que chaque $\xi _{n}$ est bien définie, et donc que $\xi$ est unique. > [!proposition]+ Lemme 1 : $\xi _{n}(x)>x$ > Pour tout entiers $x$ et $n$ on a $\xi _{n}(x) > x$ > > [!démonstration]- Démonstration > > On utilise deux récurrences emboîtées : > > Par récurrence sur $n$, on montre que $\forall x \in \mathbb{N},\quad \xi _{n}(x)>x$ > > - **Initialisation** : > > Pour $n = 0$ la propriété est évidente : $\xi_0(x) = 2^{x} > x$ > > - **Récurrence :** > > Fixons $n>0$ et supposons que $\forall x \in \mathbb{N},\quad \xi_{n-1}(x)>x$ > > On veut alors montrer que $\forall x \in \mathbb{N},\quad \xi _{n}(x)>x$ > > Pour cela, on fait une récurrence sur $x$ : > > - **Initialisation** sur $x$ : > > La propriété est claire pour $x=0$, puisque $\xi _{n}(0) = 1$ > > - **Récurrence** sur $x$ : > > On suppose que $\xi _{n}(x)>x$ et on va montrer que $\xi _{n}(x+1)>x+1$ > > On sait que $\xi _{n}(x+1) = \xi _{n-1}(\xi _{n}(x))$ > > Par nos suppositions, on sait que $\xi _{n-1}(\xi _{n}(x)) > \xi _{n}(x)$ (puisque $\forall x \in \mathbb{N},\quad \xi _{n-1}(x)>x$). > > On peut donc affirmer que $\xi _{n-1}(\xi _{n}(x)) \geq \xi _{n}(x)+1$ (on ajoute $1$ artificiellement) > > Encore par suppositions, on a que $\xi _{n}(x)>x$ > > Ainsi on obtient : > > $\xi _{n}(x+1) = \xi _{n-1}(\xi _{n}(x)) \geq \xi _{n}(x)+1 > x+1$ > > Ce qui montre bien la relation de récurrence > > ^lemme 1 ^lemme-1 > [!proposition] Lemme 2 – $\xi _{n}(x+1) > \xi _{n}(x)$ > Pour tout entiers $x$ et $n$ on a $\xi _{n}(x+1) > \xi _{n}(x)$ > > [!démonstration]- Démonstration > > On procède par récurrence sur $n$ : > > - **Initialisation** $n=0$ : > > $\xi_0(x+1) = 2^{x+1} > 2^{x} = \xi _{0}(x+1)$ > > - **Récurrence** pour un $n$ fixé on suppose $\xi _{n}(x+1) > \xi _{n}(x)$ > > On veut alors montrer que $\xi _{n+1}(x+1) > \xi _{n+1}(x)$ > > $\xi _{n+1}(x+1) = \underbrace{\xi _{n}(\xi _{n+1}(x)) > \xi _{n+1}(x)}_{\text{par le lemme 1}}$ ([[fonction d'ackermann de cori et lascar#^lemme-1|Lemme 1]]) ^lemme-2 > [!proposition] Lemme 3 – $\xi_{n}(x) \geq \xi_{n-1}(x)$ > Pour tout $n \geq 1$ et pour tout $x$ on a $\xi_{n}(x) \geq \xi_{n-1}(x)$ > > [!démonstration]- Démonstration > > On procède par récurrence sur $x$ : > > - **Initialisation :** pour $x=0$ > > On a $\xi_{n}(0) = 1 \geq 1 = \xi_{n-1}(0)$ > > - **Récurrence :** pour un $x$ fixé, on suppose $\xi_{n}(x)\geq \xi_{n-1}(x)$ > > On veut alors montrer que $\xi_{n}(x+1)\geq \xi_{n-1}(x+1)$ > > On sait que $\xi_{n}(x) \geq x+1$ ([[fonction d'ackermann de cori et lascar#^lemme-1|Lemme 1]]) > > Et comme $\xi_{n-1}$ est croissante ([[fonction d'ackermann de cori et lascar#^lemme-2|Lemme 2]]) on a $\xi_{n-1}(\xi_{n}(x)) \geq \xi_{n-1}(x+1)$ > > Or $\xi_{n}(x+1) = \xi_{n-1}(\xi_{n}(x))$ (par la définition par récurrence de $\xi_{n}$) > > Donc $\xi _{n}(x+1) = \xi _{n-1}(\xi _{n}(x)) \geq \xi _{n-1}(x+1)$ ^lemme-3 > [!definition] Fonctions $\xi _{n}^{k}$ (itération de $\xi _{n}$) > Si $k$ est un entiers, notons $\xi _{n}^{k}$ la fonction $\xi _{n}$ itérée $k$ fois : > - $\xi _{n}^{0} = \lambda x.x$ > - $\xi _{n}^{1} = \xi _{n}$ > - $\vdots$ > - $\xi _{n}^{k+1} = \xi _{n} \circ \xi _{n}^{k}$ > [!proposition] Lemme 4 – propriétés trivialles des $\xi _{n}^{k}$ > - Les fonctions $\xi _{n}^{k}$ sont strictement croissantes > - dem évident puisque $\lambda x.x$ et les $\xi _{n}$ sont croissantes ([[fonction d'ackermann de cori et lascar#^lemme-2|Lemme 2]]) > Pour tous $m, n, k, h, x \in \mathbb{N}$ on a : > - $\xi _{n}^{k}(x) < \xi _{n}^{k+1}(x)$ > - dem par changement de variable $X = \xi _{n}^{k}(x)$ on obtient $X < \xi _{n}(X)$ ce qui est vrai ([[fonction d'ackermann de cori et lascar#^lemme-2|Lemme 2]]) > - $\xi _{n}^{k}(x) \geq x$ > - dem $\xi _{n}^{0}(x) = x \geq x$, or on vu plus haut que $\xi _{n}^{k+1}(x) > \xi _{n}^{k}(x)$ > - $\xi _{n}^{k} \circ \xi _{n}^{h} = \xi _{n}^{k+h}$ > - dem cela est assez évident par définition > - si $m \leq n$ alors $\xi _{m}^{k}(x) \leq \xi _{n}^{k}(x)$ > > [!démonstration]- Démonstration > > On procède par récurrence sur $k$ : > > - **Initialisation :** $\xi _{m}^{0} = \xi _{n}^{0} = \lambda x. x$ donc l'inégalité est triviallement vraie > > - **Récurrence :** > > On suppose $\xi _{m}^{k}(x) \leq \xi _{n}^{k}(x)$ et on veut montrer que $\xi _{m}^{k+1}(x) \leq \xi _{n}^{k+1}(x)$. > > On sait (par définition) que : > > $\xi _{m}^{k+1}(x) = \xi _{m} \circ \xi _{m}^{k}(x)$ > > $\xi _{n}^{k+1}(x) = \xi _{n} \circ \xi _{n}^{k}(x)$ > > Or, par le [[fonction d'ackermann de cori et lascar#^lemme-3|Lemme 3]] on sait que $\xi _{n}(X) \geq \xi _{n-1}(X) \geq \xi _{n-2}(X) \geq \cdots \geq \xi _{m}(X)$, ce qui permet d'obtenir $\xi _{n}(X) \geq \xi _{m}(X)$. > > Comme toutes ces fontions $\xi _{n} \dots \xi _{m}$ sont strictement croissantes, cela nous donne aussi que : > > $X \geq Y \implies \xi _{n}(X) \geq \xi _{n}(Y) \geq \xi _{m}(Y)$ > > ce qui établit que $X \geq Y \implies \xi _{n}(X) \geq \xi _{m}(Y)$ > > Et, en particulier, comme on a supposé que $\xi _{n}^{k}(x) \geq \xi _{m}^{k}(x)$, on peut donc conclure que $\xi _{n}\circ \xi _{n}^{k}(x) \geq \xi _{m} \circ \xi _{m}^{k}(x)$, autrement dit : > > $\xi _{n}^{k+1}(x) \geq \xi _{m}^{k+1}(x)$ > > ## Domination > [!definition] fonction dominant une autre > Soient $f \in \mathscr{F}_{1}$ et $g \in \mathscr{F}_{p}$ > On dit que **$f$ domine $g$** s'il existe un entier $A$ tel que pour tout $(x_1, x_2, \dots, x_{p})$ on aie $g(x_1, x_2, \dots, x_{p}) \leq f(\sup\limits(x_1, x_2, \dots, x_{p}, A))$. > en une ligne : > $\boxed{f \text{ domine } g \iff \exists A \in \mathbb{N},\quad \forall \overline{x} \in \mathbb{N}^{p},\quad g(\overline{x}) \leq f(\sup\limits(\overline{x}, A))}$ > [!definition]+ $C_{n}$ > On appellera $C_{n}$ l'ensemble des fonctions qui sont dominées par au moins une itérée de $\xi _{n}$ : > $\boxed{C_{n} = \{ g \mid \exists k \in \mathbb{N} ,\quad \xi _{n}^{k} \text{ domine } g \}}$ > [!proposition]+ Quelques fonctions dans $C_{0}$ > Les fonctions suivantes appartiennent à $C_0$ : > - Les fonctions de projection $P_{p}^{i}$ > - dem $P_{p}^{i}(\overline{x}) \leq \xi _{0}^{0}(\sup\limits(\overline{x}, 0))$ puisque $\xi _{0}^{0} = \lambda x.x$ > - Les fonctions constantes > - dem $(\lambda \overline{x}. c) \leq \xi_0^{0}(\sup\limits(\overline{x}, c))$ puisque $\xi_0^{0} = \lambda x.x$ > - La fonction successeur $S$ > - dem $S(x) \leq \xi_0^{1}(\sup\limits(x, 0))$ puisque $\xi_0^{1}(x) = 2^{x} \geq x+1$ > - La fonction addition $\lambda xy. x+y$ > - dem $(\lambda xy. x+y)(x, y) \leq \xi _{0}^{1}(\sup\limits(x, y, 1))$ puisque $x+y \leq 2^{\sup\limits(x, y, 1)}$ > - Les fonction linéaires $\lambda x. kx$ où $k$ est un entier quelconque > - dem $(\lambda x. kx)(x) \leq f(\sup\limits(x, k))$ > - i on utilise la notation $\overline{x}$, voir [[fonction récursive primitive#^notations|notation ̅x]] > [!proposition]+ $\xi _{n} \in C_{n}$ > La fonction $\xi _{n}$ appartient à $C_{n}$ > > [!démonstration]- Démonstration > > On sait que $\forall x,\quad \xi _{n}(x) \geq x$ ([[fonction d'ackermann de cori et lascar#^lemme-1|Lemme 1]]) > > Donc, $\forall x,\quad, \xi _{n}^{2}(x) = \xi _{n}(\xi _{n}(x)) \geq \xi _{n}(x)$ > > Ainsi, on peut affirmer que $\exists k,\quad \exists A,\forall x,\quad \xi _{n}(x) \leq \xi _{n}^{k}(\sup\limits(x, A))$ > > puisque c'est vrai en particulier pour $k = 2$ et $A = 0$ (en effet, $\sup\limits(x, 0) = x$ car on est sur $\mathbb{N}$) > > Cela établit bien que $\xi _{n} \in C_{n}$ > [!proposition]+ Stabilité par fonction inférieure > Soient $f, g \in \mathscr{F}_{p}$ > Si $g \in C_{n}$ et si $\forall \overline{x},\quad f(\overline{x}) \leq g(\overline{x})$ (si $f$ est toujours inférieure à $g$) > alors $f \in C_{n}$ > > [!démonstration]- Démonstration > > Cela est assez évident : > > Puisque $g \in C_{n}$, on sait que $\exists k,\quad \exists A,\quad \forall \overline{x},\quad g(\overline{x}) \leq \xi _{n}(\sup\limits(\overline{x}, A))$ > > Et comme $\forall \overline{x},\quad f(\overline{x}) \leq g(\overline{x})$ on obtient directement : > > $\exists k,\quad \exists A,\quad \forall \overline{x},\quad f(\overline{x}) {\color{#606060}\,\leq g(\overline{x}) \leq\,} \xi _{n}(\sup\limits(\overline{x}, A))$ > > Ce qui montre bien que $\exists k,\quad \xi _{n} \text{ domine } f$ et donc que $f \in C_{n}$ > [!proposition]+ Clôture par composition > Soient $f_1, f_2, \dots, f_{m} \in \mathscr{ F_{p}} \cap C_{n}$ des fonctions à $p$ variables de $C_{n}$ > Soit $g$ une fonction à $m$ variables de $C_{n}$ > $g(f_1, f_2, \dots, f_{m})$ est aussi dans $C_{n}$ > > [!démonstration]- Démonstration > > Comme $f_1, f_2, \dots, f_{m}$ et $g$ sont dans $C_{n}$, on sait qu'il y à des entiers $k_1, k_2, \dots, k_{m}, k$ et $A_1, A_2, \dots, A_{m}, A$ tels que : > > $\forall 1 \leq i \leq m,\quad \forall \overline{x},\quad f_{i}(\overline{x}) \leq \xi _{n}^{k_{i}}(\sup\limits(\overline{x}, A_{i}))$ > > et $\forall \overline{x},\quad g(\overline{x}) g= \xi _{n}^{k}(\sup\limits(\overline{x}, A))$ > > Posons $B = \sup\limits(A_1, A_2, \dots, A_{m}, A)$ et $h = \sup\limits(k_1, k_2, \dots, k_{m})$ > > Il est alors évident que : > > $\forall 1 \leq i \leq m,\quad \forall \overline{x}, f_{i}(\overline{x}) \leq \xi _{n}^{h}(\sup\limits(\overline{x}, B))$ $\frac{1}{}$ # Exemples