Théorème d'itération

Le théorème d'itération est dû à Stephen Kleene, il est aussi connu sous le nom de théorème smn[1] dans sa forme paramétrisée.

Énoncé modifier

Pour une énumération de fonction récursive modifier

Si   est une énumération acceptable, alors il existe une fonction partielle récursive   telle que pour tout indice   et tous nombres   et  

 .

Pour un langage de programmation modifier

Si   est un langage de programmation acceptable alors il existe une fonction calculable   telle que pour tout programme   et tous   et  

 .

  est appelée fonction d'itération ou fonction s-m-n dans sa forme paramétrisée.

Évaluation partielle modifier

La fonction d'itération est un des points fondamentaux de l'évaluation partielle. En effet, dans  , le programme   peut être vu comme la spécialisation du programme   pour l'entrée  , en d'autres termes, le programme   dont la première entrée a été fixée pour la valeur  . Pour cette notion, on pourra se référer aux travaux de N. Jones.

Auto-référence modifier

Par  , ce théorème permet de construire des programmes faisant référence à leurs propres codes puisque  . En particulier,   est fondamental dans la construction d'une machine de Turing dont l'arrêt est indécidable ou dans la preuve du théorème de récursion de Kleene.

Exemple modifier

Le programme Python suivant implémente la fonction s11 pour une fonction quelconque f et une variable x :

def S11(f,x):
    return lambda y: f(x,y)

Appliqué à la fonction d'addition entre deux nombres :

def addition(x,y):
    return x+y

def g(x):
    return S11(addition,x)

print(g(4)(3)) # affiche le résultat de addition(4,3) = 4+3 = 7

Dans l'exemple précédent, g s'écrit autrement  .

Références modifier

  1. René Cori et Daniel Lascar, Logique mathématiques II, p. 47