Lemme 1Arithmétisation de la syntaxe
Récurrence de valeurs
Soit et une fonction. Pour et , on note le code de la suite de ses valeurs avant , au sens de Codages ; ainsi . Comme , on a pour tout , où est la fonction primitive récursive de Codages, (iii), définie pour tous et par la formule qui y est donnée.
Pour une relation , on note de même pour .
(i) Soit une fonction primitive récursive. Il existe une unique fonction telle que, pour tous et , et elle est primitive récursive.
(ii) Soit une relation primitive récursive. Il existe une unique relation telle que, pour tous et , et elle est primitive récursive.
C'est le principe de récurrence de valeurs : une fonction dont la valeur en se calcule, de façon primitive récursive, à partir de toutes ses valeurs en des entiers plus petits que est primitive récursive.
Démonstration
(i) Existence. Définissons par récurrence primitive (Primitives récursives) : où est la fonction d'ajout de Codages. Pour , c'est la récurrence primitive sans paramètre, avec l'entier initial . La fonction est primitive récursive, par composition.
Montrons par récurrence sur que . Pour , les deux membres valent , code de la suite vide. Si , alors par définition de , et puisque l'ajout place à la fin de la suite codée par . Ainsi pour tous et .
Unicité. Soit une autre fonction qui vérifie la même égalité, et fixé. Montrons par récurrence forte sur que : si c'est vrai pour tout , les suites et sont égales, donc , et les deux égalités donnent .
(ii) Appliquons (i) à : la fonction obtenue ne prend que les valeurs et , et la relation a pour fonction caractéristique . Elle est primitive récursive, et Si vérifie la même équivalence, vérifie l'égalité de (i) avec , donc par l'unicité de (i).
□Dans toutes les applications de ce chapitre, la fonction , ou la relation , ne lit sa dernière variable qu'à travers des termes pour des entiers ; lorsque , ce sont les valeurs . L'erreur la plus répandue est d'oublier cette condition : une définition qui ferait appel à pour calculer n'est pas une récurrence de valeurs, et elle peut n'avoir aucune solution, comme , qui imposerait , ou en avoir plusieurs, comme . Les entiers consultés seront toujours des codes de sous-mots propres, plus petits que par le point (ii) du codage des mots.
La récurrence de valeurs ne sort pas de la classe des fonctions primitives récursives, contrairement à la double récurrence qui définit la fonction d'Ackermann. Elle ne fait que réorganiser une récurrence primitive autour de l'historique , que l'on transporte d'une étape à la suivante comme une pile : à chaque étape, on calcule une valeur et on l'ajoute à la fin.