Axelsen andGlück(2011)で定義されている「r-Turing completeness」の概念に興味があります。システムは、「ガベージ」データを生成せずに、リバーシブルチューリングマシンと同じ関数セットを計算できる場合、rチューリングが完了しています。これは、(a)計算可能、および(b)単射の両方であるすべての関数を計算できることと同じです。
計算可能な単射関数の空間を計算的に探索したいと思います。これを行うために、「最小の」リバーシブルプログラミング言語を探しています。ラムダ計算がチューリングの計算可能性に果たすr-Turing計算可能性と同等の役割を果たすことができるものです。
r-Turingが完全であると人々が開発し、証明した多くの可逆言語があることを知っています。ただし、これらは実用的なアプリケーションを念頭に置いて開発されているため、作成者は最小限にするのではなく、表現力豊かな機能を提供することに集中しています。
そのような最小限の可逆言語が記述されているかどうか、またはそのような方向に研究があるかどうか誰もが知っていますか?私はこのトピックに関する文献はかなり新しいので、簡単に見逃してしまう可能性があります。あるいは、そのような言語がどのように作成されるかについての洞察は誰にもありますか?
以下は私が探しているものの要約です。ラムダ計算自体を変更することで作成できるのか、まったく異なる種類の言語を使用する必要があるのかはわかりません。
- r-Turing完全言語-計算可能なすべての可逆関数を計算し、可逆関数のみを計算できます
- 可能な限り最小限の構文とセマンティクス。(たとえば、ラムダ計算には関数定義とアプリケーションのみがあり、他には何もありません。)
- プログラム=データ。つまり、プログラムは他の種類のデータではなく式で動作します。これにより、プログラムの出力を常にプログラムとして解釈できることが保証されます。これはおそらく、命令型の言語ではなく機能的な言語でなければならないことを意味します。
- プログラムをその逆に変換するための体系的な方法がいくつかありますが、逆の計算を実際に実行する場合よりも実質的に多くの計算を必要としません。(すべての可逆言語にこのプロパティがあるわけではありませんが、一部の言語にはあります。)
リバーシブルコンピューティングに対するAxelsenとGlückのアプローチは、Bennettによるよく知られているアプローチとはまったく異なることを強調しておく必要があります。r-Turing完全性とは、追加の出力なしで単射関数を計算できることです。「可逆ラムダ計算」のバリエーションと呼ばれるものがいくつかあり、それらはベネットの意味で可逆です-私が探しているものではありません。