Questa domanda è se ci sono tarp reversibili noti di Turing, dove "reversibile" significa nel senso di Axelsen e Glück , e "tarpit" è un concetto molto più informale (e potrebbe non essere un'ottima scelta di parole), ma farò del mio meglio per spiegare cosa intendo con questo.
Cosa intendo per "tarpit"
Alcuni modelli di calcolo sono progettati per essere utili in qualche modo. Altri sembrano essere Turing completi e non hanno proprietà particolarmente utili; questi sono noti come "Taring di Turing". Gli esempi includono il linguaggio Brainfuck , l' automa cellulare Rule 110 e il tag Bitwise Cyclic Tag (che mi piace perché è molto facile da implementare e qualsiasi stringa binaria è un programma valido).
Non esiste una definizione formale di "Tarpit di Turing", ma per questa domanda lo sto usando per indicare un sistema abbastanza semplice (in termini di avere un piccolo numero di "regole") che "capita" di essere Turing completo, senza il suo stato interno ha un evidente significato semantico. L'aspetto più importante per i miei scopi è la semplicità delle regole, piuttosto che la mancanza di una semantica ovvia. Fondamentalmente stiamo parlando del genere di cose di cui Stephen Wolfram ha scritto una volta un libro molto grande , anche se non ha usato la parola "tarpit".
Cosa intendo per "reversibile"
Sono interessato al calcolo reversibile. In particolare, sono interessato alle lingue complete di r-Turing, nel senso di Axelsen e Glück , il che significa che possono calcolare tutte le funzioni iniettive calcolabili e possono solo calcolare le funzioni iniettive. Ora, ci sono molti modelli di calcolo reversibili in questo senso, come la macchina di Turing universale reversibile di Axelsen o il linguaggio reversibile di alto livello Janus . (Ci sono molti altri esempi in letteratura; è un'area attiva di ricerca.)
Va notato che la definizione di completezza di r-Turing di Axelsen e Glück è un approccio diverso al calcolo reversibile rispetto al solito approccio dovuto a Bennett. Nell'approccio di Bennett un sistema è autorizzato a produrre "dati inutili" che vengono gettati via alla fine del calcolo; in tali condizioni un sistema reversibile può essere Turing completo. Tuttavia, nell'approccio di Axelsen e Glück, al sistema non è consentito produrre tali "dati spazzatura", il che limita la classe di problemi che può calcolare. (Quindi, "r-Turing completo" anziché "Turing completo".)
Nota: la carta Axelsen e Glück è dietro un paywall. Questo è un peccato - per quanto ne sappia, al momento non esiste alcuna risorsa non paywall sull'argomento della completezza di r-Turing. Cercherò di avviare una pagina di Wikipedia se ho tempo, ma nessuna promessa.
Quello che sto cercando
Gli esempi di elaborazione reversibile sopra menzionati sono tutti piuttosto "semanticamente carichi". Questa è una buona cosa nella maggior parte dei contesti, ma significa che le regole necessarie per aggiornare il loro stato in ogni fase sono abbastanza complesse. Sto cercando i "tarpits" dell'informatica reversibile. Cioè, sistemi arbitrari più o meno con regole abbastanza semplici che "capita" di essere lingue complete di r-Turing. Ribadisco che non esiste una definizione formale di ciò che sto cercando, ma lo saprò quando lo vedrò e penso che sia ragionevole chiederlo.
Ci sono un certo numero di cose che conosco che si adattano perfettamente al conto, ma non del tutto. Esistono diversi automi cellulari reversibili che hanno dimostrato di essere Turing completi. Anche la formica di Langton (una specie di macchina di Turing bidimensionale con una funzione di transizione di stato reversibile abbastanza arbitraria e abbastanza semplice) è completa, purché le sue condizioni iniziali possano contenere infiniti schemi ripetitivi. Tuttavia, con questi sistemi non è banale definire una mappatura dal loro stato a un "output" in modo tale che nessun dato indesiderato venga eliminato. Sono interessato in particolare ai sistemi che possono essere considerati come prendere un input, eseguire una sequenza di trasformazioni (reversibili) su di esso e quindi (se terminano) restituire un output.
(Spero che a questa domanda sarà più facile rispondere rispetto alla mia precedente correlata su un equivalente reversibile al calcolo lambda.)