<= section préc.
Remarque : calcul et manipulation de symboles sont équivalents. Les entiers correspondent à des mots sur un alphabet, en unaire, base b, nombres romains…
fonctions polynomiales telles P\left(x\right) = x^3 + 2 x^2 + x + 52 sont construites avec
Nous allons voir comment Alonzo Church a exploité ce paradigme pour analyser la construction de notre système de calcul sur les entiers.
| L'ensemble de fonctions primitives récursives est le plus petit ensemble de fonctions arithmétiques qu'on peut définir avec les fonctions de base (a), (b) et © et les opérations de composition (1) et définition récursive (2). |
\left.
\begin{eqnarray} f: & \mathbb{N} \rightarrow \mathbb{N} \\
& n \mapsto n+2 \\
\end{eqnarray}
\right\}_{\text{est primitive recursive}}
plus : \mathbb{N}^2 \rightarrow \mathbb{N}
\left(n,m\right) \mapsto n+m
plus(n,0) = n
plus(n,m+1)=succ(plus(n,m))
plus = DR(g,h)
g: n\mapsto n, g=id_{1,1}
h: \left(n,m,k\right) \mapsto succ\left(id_{3,3}\left(n,m,k\right)\right) = succ\left(k\right)
idée : succ\left(plus\left(n,m\right)\right) \rightarrow succ\left(id_{3,3}\left(n,m,plust\left(n,m\right)\right)\right)
multiplication
mult\left(n,0\right) = 0 = zero_1 \left(n\right)
mult\left(n,m+1\right) = plus\left(n,mult\left(n,m\right)\right)
mult = DR\left(zero, , h\right) 1)
pred : n\mapsto n-1 \text{ si } n\geq 1, 0 \text{ si } n=0
“soustraction” noté ~
n ~ 0 = 0
n ~ (m+1) = pred(n ~ m)
puissance : n\uparrow m = n^m : exercice
Fonctions logiques avec “iszero”.
P : \mathbb{N}^k \rightarrow \left\{0,1\right\}
iszero(0) = 1
iszero(m+1) = 0
\left(n \leq m\right) \; = \; iszero\left(n \sim m\right)
\left( n \equiv m\right)
\left(n \equiv 0\right)=iszero\left(n\right)
\left(n \equiv m+1\right)=iszero\left(pred\left(n\right) \sim m\right)
iszero\left(n\sim m\right) \text{ et } iszero\left(m\sim n\right)
\left(non\; n \right)=1 \sim n
n\text{ et } m = 1 \sim iszero\left(n\cdot m\right)
n\text{ ou } m = 1 \sim iszero\left(n + m\right)
f\left(n_1 , \ldots , n_k\right) = \left\{
\begin{eqnarray}
f_1\left(n_1 , \ldots , n_k\right) & si & p\left(n_1 , \ldots , n_k\right) \\
f_2\left(n_1 , \ldots , n_k\right) & sinon \end{eqnarray} \right.
Ce type de définition convient pour la fonction modulo, le reste de la division euclidienne de m par n, puis pour la division :
mod(0,n) = 0
mod(m+1,n) =
0 si pred(n)=mod(m,n)
mod(m,n)+1 sinon
div(0,n) = 0
div(m+1,n) =
L'ensemble des fonctions primitives récursives est dénombrable.
C'est un ensemble de mots sur l'alphabet \Sigma_{pr} = \left\{zero, id, 0, 1,\circ , \mapsto, DR, (, ), ';'\right\} et \Sigma_{pr}^* est dénombrable.
Il existe une bijection entre l'ensemble {fonctions primitives récursives} et \mathbb{N}. On sait dénombrer de manière explicite les fonctions primitives récursives.
Il existe des fonctions calculables qui ne sont pas primitives récursives.
Définition : Soit g une fonction \mathbb{N}^{k+1} \rightarrow \mathbb{N} . La minimisation de g est la fonction f : \mathbb{N}^k \rightarrow \mathbb{N} définie par
f\left(n_1, \ldots ,n_k \right) = \left\{
\begin{eqnarray}
\min_m & | & g\left(n_1,\ldots ,n_k, m \right) = 1 \\
0 & si & \forall m\in\mathbb{N}, g\left(n_1,\ldots,n_k,m\right)\neq 1
\end{eqnarray}
\right\}
f\left(n_1,\ldots ,n_k\right) = \mu m\left[g\left(n_1,\ldots, n_k, m\right)\right]
On n'utilise cette notation que si, quelque soient \left(n_1,\ldots,n_k\right) un tel m existe. Dans ce cas (\forall n_1,\ldots ,n_k\in\mathbb{N}\quad \exists m : g\left(n_1,\ldots n_k,m\right)=1 ) , on dit que la fonction est minimisable.
Savoir si une fonction est minimisable est indécidable.
Définition : les fonctions \mu-récursives sont les fonctions obtenues à partir des fonctions de base (a), (b) et © et les opérations de composition, de définition récursive, et de minimisation pour les fonctions minimisables.
Une fonction f:\mathbb{N}^k \rightarrow \mathbb{N} est \mu -récursive si et seulement si elle est récursive (calculable avec une MT).