Cette question est de savoir s'il existe des tarpits de Turing réversibles connus, où "réversible" signifie au sens d' Axelsen et de Glück , et "tarpit" est un concept beaucoup plus informel (et pourrait ne pas être un très bon choix de mot), mais je ferai de mon mieux pour expliquer ce que je veux dire par là.
Ce que je veux dire par "tarpit"
Certains modèles de calcul sont conçus pour être utiles d'une manière ou d'une autre. D'autres se trouvent être Turing complet et n'ont pas vraiment de propriétés particulièrement utiles; ce sont les "bâches de Turing". Les exemples incluent le langage Brainfuck , l' automate cellulaire Rule 110 et le langage Bitwise Cyclic Tag (que j'aime parce qu'il est très facile à implémenter et que toute chaîne binaire est un programme valide).
Il n'y a pas de définition formelle de "tarpit de Turing", mais pour cette question, je l'utilise pour désigner un système assez simple (en termes d'avoir un petit nombre de "règles") qui "se trouve" être Turing complet, sans son état interne ayant une signification sémantique évidente. L'aspect le plus important pour moi est la simplicité des règles, plutôt que le manque de sémantique évidente. Fondamentalement, nous parlons du genre de choses sur lesquelles Stephen Wolfram a écrit un très gros livre , bien qu'il n'ait pas utilisé le mot "tarpit".
Ce que je veux dire par "réversible"
Je m'intéresse au calcul réversible. En particulier, je m'intéresse aux langages qui sont r-Turing complets, au sens d' Axelsen et de Glück , ce qui signifie qu'ils peuvent calculer chaque fonction injective calculable, et ne peuvent calculer que des fonctions injectives. Or, il existe de nombreux modèles de calcul réversibles dans ce sens, comme la machine universelle Turing réversible d'Axelsen , ou le langage réversible de haut niveau Janus . (Il existe de nombreux autres exemples dans la littérature; c'est un domaine de recherche actif.)
Il convient de noter que la définition d'Axelsen et Glück de l'exhaustivité de r-Turing est une approche différente de l'informatique réversible que l'approche habituelle due à Bennett. Dans l'approche de Bennett, un système est autorisé à produire des "données d'ordures" qui sont jetées à la fin du calcul; dans de telles conditions, un système réversible peut être Turing complet. Cependant, dans l'approche d'Axelsen et de Glück, le système n'est pas autorisé à produire de telles "données indésirables", ce qui restreint la classe de problèmes qu'il peut calculer. (Par conséquent, "r-Turing complet" plutôt que "Turing complet".)
Remarque: le papier Axelsen et Glück est derrière un mur payant. C'est malheureux - à ma connaissance, il n'y a actuellement aucune ressource non paywall sur le sujet de l'exhaustivité de r-Turing. J'essaierai de démarrer une page Wikipédia si j'ai le temps, mais sans promesse.
Ce que je cherche
Les exemples de calcul réversible mentionnés ci-dessus sont tous plutôt "chargés sémantiquement". C'est une bonne chose dans la plupart des contextes, mais cela signifie que les règles requises pour mettre à jour leur état à chaque pas de temps sont assez complexes. Je cherche les "tarpits" de l'informatique réversible. Autrement dit, des systèmes plus ou moins arbitraires avec des règles assez simples qui "se trouvent" être des langages complets r-Turing. Je répète qu'il n'y a pas de définition formelle de ce que je recherche, mais je le saurai quand je le verrai, et je pense que c'est une chose raisonnable à poser.
Il y a un certain nombre de choses que je connais qui correspondent presque au projet de loi, mais pas tout à fait. Il existe plusieurs automates cellulaires réversibles qui se sont révélés être Turing complets. La fourmi de Langton (une sorte de machine de Turing bidimensionnelle avec une fonction de transition d'état réversible assez arbitraire et assez simple) est également Turing complète, tant que ses conditions initiales peuvent contenir des motifs répétitifs infinis. Cependant, avec ces systèmes, il n'est pas trivial de définir un mappage de leur état vers une "sortie" de telle manière qu'aucune donnée indésirable ne soit jetée. Je m'intéresse spécifiquement aux systèmes qui peuvent être considérés comme prenant une entrée, effectuant une séquence de transformations (réversibles) dessus, puis (s'ils se terminent) renvoyant une sortie.
(J'espère que cette question sera plus facile à répondre que ma précédente sur un équivalent réversible au calcul lambda.)