--- 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. > [!corollaire]+ 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 > [!corollaire] 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 > [!corollaire] 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}$ > [!corollaire] Lemme 4 – propriétés trivialles > - 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 a alors > > > # Exemples