Un commentaire sur tex.SE m'a fait réfléchir . La déclaration est essentiellement:
Si je peux écrire un compilateur pour la langue X dans la langue X, alors X est Turing-complete.
En termes de calcul et de langage formel, c'est:
Si décide et , alors .L ⊆ L T M ⟨ M ⟩ ∈ L F L = R E
Ici désigne la langue de tous les encodages de la machine de Turing et désigne l'ensemble des fonctions calculées par des machines à . F L L
Est-ce vrai?
Réponses:
La déclaration informelle n'est pas vraie, comme le montre le langage de programmation suivant. N'importe quelle chaîne de, disons, caractères ASCII est un programme valide et la signification de chaque programme est, "Sortie d'un programme qui sort juste une copie de son entrée." Ainsi, chaque programme dans cette langue est un compilateur pour la langue mais la langue n'est pas complète de Turing.
Je ne sais pas si votre "version de la théorie de la calculabilité" est équivalente mais ce n'est pas vrai non plus. Selon le deuxième théorème de récursivité de Kleene , pour tout codage des machines de Turing, il existe une MT qui accepte son propre codage et rejette tous les autres. 1 Cette machine est un contre-exemple de la proposition. Plus concrètement, nous pouvons atteindre le résultat en choisissant un codage. Par exemple, laissez chaque numéro impair coder la machine définie par "Si ma saisie est impaire, acceptez-la; sinon, rejetez" et laissez le numéro coder la machine codée par dans votre propre schéma de codage préféré pour les machines Turing. est dans la langue acceptée par maisM 2x x ⟨M⟩ L M FL n'est pas Turing complet.
1 Le deuxième théorème de récursivité de Kleene dit que, pour toute énumération des fonctions récursives partielles (c'est-à-dire pour tout codage de programmes sous forme d'entiers), et toute fonction récursive partielle , il existe un entier tel que est la fonction qui mappe à . Ainsi, en particulier, soit la fonction qui accepte si et rejette autrement. Par le théorème, il existe un entier qui code le programme . Autrement dit, accepte son propre codage(ϕi)i≥0 Q(x,y) p ϕp y Q(p,y) Q x=y p ϕp(y)=Q(p,y) ϕp p et rejette toutes les autres entrées.
la source