From fbec9362b1a6d6547cff77c8f68693617782780e Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Wed, 18 Oct 2023 10:27:37 +0200 Subject: General recursive function: introduction. NB: The part about elimination of recursivity is flawed. Will remove --- transp-inf110-01-calc.tex | 235 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 231 insertions(+), 4 deletions(-) diff --git a/transp-inf110-01-calc.tex b/transp-inf110-01-calc.tex index c1ef885..9aeeb71 100644 --- a/transp-inf110-01-calc.tex +++ b/transp-inf110-01-calc.tex @@ -396,8 +396,8 @@ $\mathbb{N}\to\mathbb{N}$ \[ \mathbf{1}_A\colon n \mapsto \left\{ \begin{array}{ll} -1&\text{~si $n\in A$}\\ -0&\text{~si $n\not\in A$}\\ +1&\text{~si~}n\in A\\ +0&\text{~si~}n\not\in A\\ \end{array} \right. \] @@ -411,8 +411,8 @@ $\mathbb{N}\dasharrow\mathbb{N}$ (d'ensemble de définition $A$) \[ n \mapsto \left\{ \begin{array}{ll} -1&\text{~si $n\in A$}\\ -\uparrow&\text{~si $n\not\in A$}\\ +1&\text{~si~}n\in A\\ +\uparrow&\text{~si~}n\not\in A\\ \end{array} \right. \] @@ -855,6 +855,233 @@ sauver le théorème s-m-n. {\footnotesize Cette même preuve donnera alors la preuve de l'indécidabilité du problème de l'arrêt.\par} +\end{frame} +% +\begin{frame} +\frametitle{Fonctions primitives récursives : pas d'universalité (variante)} + +Rappel : la \textbf{fonction d'Ackermann} est définie par : +\[ +\begin{aligned} +A(m,n,0) &= m+n \\ +A(m,1,k+1) &= m \\ +A(m,n+1,k+1) &= A(m,\,A(m,n,k+1),\,k) +\end{aligned} +\] + +\bigskip + +\itempoint Pour un $k$ \alert{fixé}, la fonction $(m,n) \mapsto +A(m,n,k)$ est p.r. (par récurrence sur $k$, récursion primitive sur +$A(m,n,k-1)$). + +\bigskip + +\itempoint Il existe même $k \mapsto a(k)$ p.r. telle que +$\psi^{(2)}_{a(k)}(m,n) = A(m,n,k)$. + +\smallskip + +I.e., on peut calculer de façon p.r. en $k$ le code d'un programme +p.r. qui calcule $(m,n) \mapsto A(m,n,k)$. + +\bigskip + +\itempoint Si (une extension de) $(e,n) \mapsto \psi^{(1)}_e(n)$ était +p.r., on pourrait calculer $(n,k) \mapsto +\psi^{(1)}_{s_{1,1}(a(k),2)}(n) = \psi^{(2)}_{a(k)}(2,n) = A(2,n,k)$, +or elle n'est pas p.r. + +\end{frame} +% +\section{Fonctions générales récursives} +\begin{frame} +\frametitle{Fonctions générales récursives : aperçu} + +\itempoint On a vu que les fonctions p.r. sont \alert{limitées} et ne +couvrent pas la notion générale d'algorithme : +\begin{itemize} +\item les algorithmes p.r. terminent toujours car +\item le langage ne permet pas de boucles non bornées ; +\item concrètement, il n'implémente pas la fonction d'Ackermann ; +\item il ne peut pas s'interpréter lui-même. +\end{itemize} + +\bigskip + +\itempoint On veut modifier la définition des fonctions p.r. pour +lever ces limitations. On va \alert{autoriser les boucles infinies}. + +\bigskip + +\itempoint En ce faisant, on obtient forcément des cas de +non-terminaisons, donc on doit passer par des \alert{fonctions + partielles}. + +\end{frame} +% +\begin{frame} +\frametitle{L'opérateur $\mu$ de Kleene} + +\textbf{Définition :} $\mu g(\underline{x})$ est le plus petit $z$ tel +que $g(z,\underline{x}) = 0$ et $g(i,\underline{x})\downarrow$ pour +$0\leq i0$ (sous-entendant + $g(i,\underline{x})\downarrow$) pour tout $0\leq i