Théorème de récursion de Kleene

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Ne doit pas être confondu avec Théorème de Kleene ni Théorème du point fixe de Kleene.

En théorie de la calculabilité, plusieurs théorèmes dus à Kleene sont appelés théorèmes de la récursion. Ils établissent l'existence de points fixes pour des opérations sur les programmes, au sens où le programme et le programme image calculent la même fonction partielle et ils sont nommés également théorèmes du point fixe de Kleene. Ils ont de nombreuses applications.

Formulation avec les énumérations de fonctions récursives[modifier | modifier le code]

Si \varphi{} est une énumération acceptable des fonctions récursives et f une fonction partielle récursive alors il existe un indice {\mathbf{e}} tel que

\varphi_{\mathbf{e}}(x)=f(\mathbf{e},x).

  • Pour un langage de programmation

Si \varphi{} est un langage de programmation acceptable et f une fonction semi-calculable alors il existe un programme {\mathbf{e}} tel que pour tout x

\varphi_{\mathbf{e}}(x)=f(\mathbf{e},x).

Autre formes[modifier | modifier le code]

Ce théorème peut être décliné sous différentes formes dont l'une des plus célèbre est dues à H. Rogers. On considère un langage de programmation acceptable \varphi.

  • Forme de Rogers

Si f est une fonction calculable alors il existe un programme {\mathbf{e}} tel que pour tout x, \varphi_{\mathbf{e}}(x)=\varphi_{f(\mathbf{e})}(x).

  • Paramétrée

Il existe une fonction calculable n telle que pour tout x et y, \varphi_{n(y)}(x)=\varphi_{\varphi_{y}(n(y))}(x).

  • Récursion double

Si f et g sont des fonctions calculables, alors il existe deux programmes {\mathbf{e_1}} et {\mathbf{e_2}} tels que pour tout x,

\varphi_{\mathbf{e_1}}(x)=\varphi_{f(\mathbf{e_1},\mathbf{e_2})}(x)

\varphi_{\mathbf{e_2}}(x)=\varphi_{g(\mathbf{e_1},\mathbf{e_2})}(x).

On doit le théorème de récursion double à R. Smullyan.

Remarque[modifier | modifier le code]

La démonstration de ce théorème utilise l'auto-référence s(x,x) produite par le théorème d'itération (théorème s-m-n). Cette notion d'autoréférence est très profonde et a été largement traitée par John von Neumann dans le cadre des automates cellulaires auto-reproducteurs.

Applications[modifier | modifier le code]

Ce théorème est reconnu comme le meilleur outil permettant de produire contre-exemples et cas pathologiques. En particulier, il fournit l'existence de programmes calculant leurs propres codes. En prenant f la première projection, f(y,x)=y et en appliquant le théorème on obtient un programme {\mathbf{e}} tel que pour tout x

\varphi_{\mathbf{e}}(x)=\mathbf{e}.

L'exécution du programme \mathbf{e} produit son propre code. De tels programmes sont communément appelés quines.

Bibliographie[modifier | modifier le code]

  • René Cori et Daniel Lascar, Logique mathématique II. Fonctions récursives, théorème de Gödel, théorie des ensembles, théorie des modèles [détail des éditions], chapitre 5.