Files
cours/fonction d'ackermann de cori et lascar.md
2026-03-24 14:51:19 +01:00

245 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
up:
- "[[fonction récursive primitive]]"
tags:
- s/maths/logique
- s/informatique
aliases:
---
> [!info] But de la note
> Cette note à pour but de montrer qu'une certaine fonction $\xi \in \mathbb{N}^{2} \to \mathbb{N}$ n'est pas [[fonction récursive primitive|récursive primitive]].
> Cela permet d'affirmer que toutes les fonctions de $\mathbb{N}^{p} \to \mathbb{N}$ ne sont pas récursives primitives.
> [!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)$
> >
^lemme-4
## Domination : $C_{n}$
> [!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]]
^fonctions-dans-C0
> [!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]+ Lemme 5 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))$
> > et que $\forall \overline{x},\quad g(\overline{x})\leq \xi _{n}^{k}(\sup\limits(\overline{x}, B))$
> > Alors, en passant les $f_1, f_2, \dots, f_{m}$ en argument de $g$ on obtient :
> > $\forall \overline{x},\quad g(f_1(\overline{x}), f_2(\overline{x}), \dots, f_{m}(\overline{x})) \leq \xi _{n}^{k}(\sup\limits(f_1(\overline{x}), f_2(\overline{x}), \dots, f_{m}(\overline{x}), B))$
> > Et, par la majoration de tous les $f_{i}$ que l'on a déjà faîte (et car $\xi _{n}^{k}$ est croissante et respecte $\xi _{n}^{k}(x) > x$) , on obtient :
> > $\forall \overline{x},\quad g(f_1(\overline{x}), f_2(\overline{x}), \dots, f_{m}(\overline{x})) \leq \xi _{n}^{k}(\xi _{n}^{h}(\sup\limits(\overline{x}, B)))$
> > Or, par les propriétés du [[fonction d'ackermann de cori et lascar#^lemme-4|Lemme 4]] on a $\xi _{n}^{k} \circ \xi _{n}^{h} = \xi _{n}^{k+h}$, donc :
> > $\forall \overline{x},\quad g(f_1(\overline{x}), f_2(\overline{x}), \dots, f_{m}(\overline{x})) \leq \xi _{n}^{k+h}(\sup\limits(\overline{x}, B))$
> > Ce qui montre bien que $g(f_1, f_2, \dots, f_{m}) \in C_{n}$
^lemme-5
> [!proposition]+ Lemme 6
> Pour tous entiers $n, k$ et $x$ on a :
> $\xi _{n}^{k}(x) \leq \xi _{n+1}(x+k)$
> > [!démonstration]- Démonstration
> > On procède par récurrence sur $k$
> > - **Initialisation :** Pour $k=0$ et $k=1$, l'égalité est claire par croissance de $\xi _{n}$
> > - **Récurrence :** Supposons que $\xi _{n}^{k}(x) \leq \xi _{n+1}(x+k)$
> > $\xi _{n}^{k+1}(x) = \xi _{n} \circ \xi _{n}^{k}(x) \underbrace{\leq \xi _{n}(\xi _{n+1}(x+k))}_{\text{par hypothèse}} \underbrace{=\xi _{n}(x+k+1)}_{\text{par définition de }\xi _{n}}$
^lemme-6
> [!proposition]+ Lemme 7 - Clôture par schéma de récurrence
> Soient $g \in \mathscr{F}_{p}$ et $h \in \mathscr{F}_{p+2}$
> Si $g$ et $h$ sont dans $C_{n}$
> Alors la fonction $f$ [[fonction récursive primitive#^definition|définie par récurrence à partir]] de $g$ et $h$ ($f = \rho(g, h)$) appartient à $C_{n+1}$
> - ! Ce n'est pas $C_{n}$ mais $\displaystyle\bigcup _{n \in \mathbb{N}}C_{n}$ qui sera stable par schéma de récurrence
>
> > [!démonstration]- Démonstration
> > Ecrivons d'abord les hypothèses explicitement :
> > On utilise la notation $\overline{x}$ pour $x_1, x_2, \dots, x_{p}$
> > $f(\overline{x}, 0) = g(\overline{x})$
> > $f(\overline{x}, y+1) = h(\overline{x}, y, f(\overline{x}, y))$
> > Ensuite, comme $g, h \in C_{n}$ on a :
> > $\exists A_{g}, A_{h}, k_{g}, k_{h},\quad \forall \overline{x}, y, z,\quad \begin{cases} g(\overline{x}) \leq \xi _{n}^{k_{g}}(\sup\limits(\overline{x}, A_{g}))\\ h(\overline{x}, y, z) \leq \xi _{n}^{k_{h}}(\sup\limits(\overline{x}, y, z, A_{h})) \end{cases}$
> > Montrons maintenant par récurrence sur $y$ que $\forall \overline{x}, y,\quad f(\overline{x}, y) \leq \xi _{n}^{k_{g}+yk_{h}}(\sup\limits(\overline{x}, y, A_{g}, A_{h}))$
> > - **Initialisation** $y = 0$
> > Pour $y=0$ on a $f(\overline{x}, y) = g(\overline{x}) \leq \underbrace{\xi _{n}^{k_{g}}(\sup\limits(\overline{x}, A_{g}))}_{\text{car } g \in C_{n}} \leq \xi _{n}^{k_{g} + \overbrace{yk_{h}}^{=0}}(\sup\limits(\overline{x}, y, A_{g}, A_{h}))$
> > - **Récurrence** on suppose que $f(\overline{x}, y) \leq \xi _{n}^{k_{g} +y k_{h}}(\sup\limits(\overline{x}, y, A_{g}, A_{h}))$, montrons que c'est vrai pour $y+1$
> > $\begin{align} f(\overline{x}, y+1) &= h(\overline{x}, y, f(\overline{x}, y))\\ &\leq \xi _{n}^{k_{h}}(\sup\limits(\overline{x}, y, f(\overline{x}, y), A_{h})) \quad \text{car } h \in C_{n} \\&\leq \xi _{n}^{k_{h}}(\sup\limits(\overline{x}, y, \xi _{n}^{k_{g} + yk_{h}}(\sup\limits(\overline{x}, y, A_{g}, A_{h})), A_{g}, A_{h})) \quad \text{par hyp. de récurrence} \\&\leq \xi _{n}^{k_{h}}\circ\xi _{n}^{k_{g}+yk_{h}}(\sup\limits(\overline{x}, y, A_{g}, A_{h})) \quad \text{par les propriétés du Lemme 4} \\&\leq \xi _{n}^{k_{h} +yk_{h}}(\sup\limits(\overline{x}, y, A_{g}, A_{h})) \quad\text{encore par le Lemme 4} \\&\leq \xi _{n+1}(\sup\limits(\overline{x}, y, A_{g}, A_{h}) + k_{h}+yk_{h}) \quad\text{par le Lemme 6}\end{align}$
> > Or, la fonction $\lambda \overline{x}y. \xi _{n+1}(\sup\limits(\overline{x}, y, A_{g}, A_{h})+k_{h}+yk_{h})$ s'obtient par composition de fonctions de $C_{n+1}$ et est donc dans $C_{n+1}$ ([[fonction d'ackermann de cori et lascar#^lemme-5|Lemme 5]]), ce qui montre que $f \in C_{n+1}$
^cloture-par-recurrence
> [!proposition] Corollaire : toutes les fonctions récursives primitives sont dans un $C_{n}$
> $\displaystyle\bigcup _{n \in \mathbb{N}} C_{n}$ contient toutes les [[fonction récursive primitive|fonctions récursives primitives]].
> > [!démonstration]- Démonstration
> > En effet :
> > - $\displaystyle\bigcup_{n \in \mathbb{N}}C_{n}$ contient toutes les fonctions constantes, toutes les fonctions projection, et la fonction sucesseur (car il contient $C_0$, qui [[fonction d'ackermann de cori et lascar#^fonctions-dans-C0|contient ces fonctions comme on l'a vu]])
> > - $\displaystyle\bigcup _{n \in \mathbb{N}}C_{n}$ est [[fonction d'ackermann de cori et lascar#^lemme-5|stable par composition]] et [[fonction d'ackermann de cori et lascar#^cloture-par-recurrence|stable par schéma de récurrence]]
> >
> > Ce qui, [[fonction récursive primitive#^definition-courte|par définition]] de $\mathscr{F}$ montre que $\displaystyle\mathscr{F} \subseteq \bigcup _{n \in \mathbb{N}}C_{n}$
> [!proposition]+ Théorème : $\xi$ n'est pas [[fonction récursive primitive|récursive primitive]]
> La fonction d'Ackermann $\xi$ n'est pas [[fonction récursive primitive|récursive primitive]].
> > [!démonstration]- Démonstration
> > Supposons par l'absurde que $\xi$ est récursive primitive.
> > Il en est alors de même pour $\lambda x. \xi(x, 2x)$.
> > Il existe donc des entiers $n, k$ et $A$ tels que pour tout $x > A$ on a $\xi (x, 2x) \leq \xi _{n}^{k}(x)$
> > Donc, par le [[fonction d'ackermann de cori et lascar#^lemme-6|Lemme 6]] on a que pour tout $x > A$ : $\xi _{x, 2x} \leq \xi _{n}^{k}(x) \leq \xi _{n+1}(x+k)$
> >
> > Or, si $x > \sup\limits(A, k, n+1)$ on a :
> > $\begin{align} \xi _{n+1}(x+k) &= \xi _{n}(\xi _{n+1}(x+k-1)) \\&\leq \xi _{n}(\xi _{n+1}(2x)) \quad\text{par croissance (Lemme 4)} \\&< \xi _{n+1}(2x) < \xi _{x}(2x) = \xi(x, 2x) \quad\text{(Lemme 4)} \end{align}$
> >
> > Ainsi, on a montré $\xi(x, 2x) \leq \xi _{n+1}(x+k)$ et $\xi(x, 2x) > \xi _{n+1}(x+k)$, ce qui est absurde.
> > Cela montre bien que notre supposition est absurde, et donc que $\xi$ ne peut pas être récursive primitive.
^thm-pas-recursive-primitive