Prédicat T et fonction U de Kleene

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article est orphelin. Moins de trois articles lui sont liés ().

Vous pouvez aider en ajoutant des liens vers [[Prédicat T et fonction U de Kleene]] dans les articles relatifs au sujet.

En calculabilité, le prédicat T, étudié pour la première fois par le mathématicien Stephen Cole Kleene, est un ensemble particulier de triplets de nombres naturels utilisé pour représenter des fonctions calculables dans les théories formelles de l'arithmétique. De manière informelle, le prédicat T {\displaystyle T} indique si un programme informatique donné, lancé sur une entrée particulière, nécessitera un certain nombre d'étapes de calcul pour terminer, et la fonction U est utilisée pour obtenir les résultats du calcul si le programme s'arrête. Comme pour le théorème smn, la notation originale utilisée par Kleene est devenue la terminologie standard pour le concept.

Définition

T(int f(int n) { return n==1?:n%2==0?f(n/2):f(3*n+1); }, 5, f(5)=f(16)=f(8)=f(4)=f(2)=f(1)=1)
Illustration du prédicat T. Le premier argument, en bleu, représente le code de la fonction (ici, la fonction de Collatz), donnée dans le langage C plutôt que dans un codage de Gödel. Le deuxième argument, en rouge, est le nombre 5, qui représente l'entrée de la fonction. Le troisième argument, en vert, représente la suite des étapes de calcul pour obtenir le résultat final, 1.

La définition dépend d'un codage de Gödel adéquat qui encode les machines de Turing comme des entiers naturels. Ce codage doit permettre, étant donnés l'index de la fonction, de simuler le calcul de la fonction sur une entrée donnée. Le prédicat T {\displaystyle T} est obtenu en formalisant cette simulation.

Le prédicat T ( e , i , t ) {\displaystyle T(e,i,t)} prend trois nombres naturels comme arguments. T ( e , i , t ) {\displaystyle T(e,i,t)} est vraie si t {\displaystyle t} est le nombre d'étapes nécessaires pour que la machine de Turing qu'encode e {\displaystyle e} s'arrête sur l'entrée i {\displaystyle i} [1]. La première définition qu'avait donnée Kleene remplaçait t {\displaystyle t} par un codage de la trace d'éxecution de la machine lancée sur i {\displaystyle i} , et T {\displaystyle T} décidait si cette trace était bien une trace valide et qui correspondait à un calcul terminé[2],[3]. Dans tous les cas, ce prédicat est décidable[4] et primitif récursif[3]. Il peut être décidé par l'algorithme suivant :

  • Tout d'abord, l'algorithme détermine si e {\displaystyle e} est bien le code d'une machine de Turing. Si ce n'est pas le cas, il renvoie faux, sinon, on passe à l'étape suivante.
  • Ensuite, il effectue t {\displaystyle t} transitions successives en utilisant les transitions codées par e {\displaystyle e} , en utilisant comme état initial l'entrée i {\displaystyle i} .
  • Enfin, si au bout de t {\displaystyle t} transitions, le calcul de e {\displaystyle e} sur i {\displaystyle i} vient de se terminer, il renvoie vrai, sinon, on renvoie faux.

Il y a une fonction récursive primitive U {\displaystyle U} , telle que U ( e , i , t ) {\displaystyle U(e,i,t)} renvoie le résultat inscrit sur la bande de calcul par e {\displaystyle e} au bout de t {\displaystyle t} étapes lorsqu'on lance la machine sur i {\displaystyle i} . Ainsi, si T ( e , i , t ) {\displaystyle T(e,i,t)} est vraie, alors U ( e , i , t ) {\displaystyle U(e,i,t)} renvoie la sortie de la fonction que représente e {\displaystyle e} sur l'entrée i {\displaystyle i} .

Pour chaque entier k 1 {\displaystyle k\geq 1} , il est possible de définir le prédicat T k ( e , i 1 , , i k , t ) {\displaystyle T_{k}(e,i_{1},\dots ,i_{k},t)} et la fonction U k ( e , i 1 , , i k , t ) {\displaystyle U_{k}(e,i_{1},\dots ,i_{k},t)} , analogues à T {\displaystyle T} et U {\displaystyle U} , qui prennent k {\displaystyle k} entrées au lieu d'une seule[5].

Comme T {\displaystyle T} et U {\displaystyle U} , T k {\displaystyle T_{k}} et U k {\displaystyle U_{k}} sont aussi primitifs récursifs. De ce fait, toute théorie arithmétique capable de représenter chaque fonction récursive primitive est capable de représenter T {\displaystyle T} et U {\displaystyle U} , par exemple l'arithmétique de Robinson ou des théories plus fortes comme l'arithmétique de Peano[6]. Le prédicat T {\displaystyle T} permet par exemple de représenter que la machine de Turing encodée par e {\displaystyle e} termine sur une entrée donnée i {\displaystyle i} , par la formule t , T ( e , i ) {\displaystyle \exists t,T(e,i)} .

Théorème de la forme normale

Les prédicats T k {\displaystyle T_{k}} peuvent être utilisés pour obtenir le théorème de forme normale de Kleene pour les fonctions calculables[7]. Il énonce qu'une fonction f : N k N {\displaystyle f:\mathbb {N} ^{k}\rightarrow \mathbb {N} } est récursive générale si et seulement s'il existe un nombre e {\displaystyle e} tel que pour tout entiers n 1 , , n k {\displaystyle n_{1},\ldots ,n_{k}} , on a

f ( n 1 , , n k ) U k ( e , n 1 , , n k , μ t . T k ( e , n 1 , , n k , t ) ) {\displaystyle f(n_{1},\ldots ,n_{k})\simeq U_{k}(e,n_{1},\ldots ,n_{k},\mu t.T_{k}(e,n_{1},\ldots ,n_{k},t))}

μ {\displaystyle \mu } est l' opérateur de minimisation non bornée ( μ x . ϕ ( x ) {\displaystyle \mu x.\phi (x)} est le plus petit nombre naturel x {\displaystyle x} pour lequel ϕ ( x ) {\displaystyle \phi (x)} est vrai, et n'est pas défini s'il n'y en a pas) et {\displaystyle \simeq } est vrai si les deux côtés sont indéfinis ou si les deux sont définis et qu'ils sont égaux. Par ce théorème, la définition de chaque fonction récursive générale f peut être réécrite sous une forme normale dans laquelle l'opérateur μ ne soit utilisé qu'une seule fois, le reste des calculs étant contenus dans U k {\displaystyle U_{k}} et T k {\displaystyle T_{k}} , qui sont indépendants de la fonction calculable f {\displaystyle f} et primitifs récursifs. Cela permet de démontrer notamment que les fonctions calculées par les machines de Turing sont toutes des fonctions générales récursives.

Hiérarchie arithmétique

En plus d'encoder la calculabilité, le prédicat T peut être utilisé pour générer des ensembles complets dans la hiérarchie arithmétique, et pour démontrer le théorème de Post[8]. En particulier, pour tout n {\displaystyle n} , le prédicat sur e {\displaystyle e}

Q 1 x 1 Q n x n T n ( e , e , x 1 , , x n ) {\displaystyle Q_{1}x_{1}\cdots Q_{n}x_{n}T_{n}(e,e,x_{1},\dots ,x_{n})}

où les Q i {\displaystyle Q_{i}} désignent une alternance de n {\displaystyle n} quantificateurs qui terminent par un {\displaystyle \exists } , est Σ n 0 {\displaystyle \Sigma _{n}^{0}} -complet. En particulier, t , T 1 ( e , e , t ) {\displaystyle \exists t,T_{1}(e,e,t)} a le même degré de Turing que le problème de l'arrêt, et est donc indécidable.

Bibliographie

Références

  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Kleene's T predicate » (voir la liste des auteurs).
  1. Kleene 1966, p. 243
  2. (en) Stephen Cole Kleene, « Recursive predicates and quantifiers », Transactions of the American Mathematical Society, vol. 53, no 1,‎ , p. 41–73 (ISSN 0002-9947 et 1088-6850, DOI 10.1090/S0002-9947-1943-0007371-8 Accès libre)
  3. a et b Kleene 1952, p. 281
  4. Kleene 1966, p. 244
  5. Kleene 1966, p. 269
  6. Kleene 1952, p. 296
  7. Kleene 1952, p. 288
  8. Kleene 1966, p. 271
  • icône décorative Portail de la logique
  • icône décorative Portail de l'informatique théorique