可逆(r-Turing可计算)函数的Lambda演算


19

我对Axelsen和Glück(2011)定义的“ r-Turing完整性”的概念感兴趣。如果系统可以计算出与可逆图灵机相同的功能集,而又不产生任何“垃圾”数据,则表示该系统已完成。这与能够计算(a)可计算和(b)内射式的每个函数相同。

我想以计算方式探索可计算内射函数的空间。为了做到这一点,我正在寻找“最小的”可逆编程语言-某种可以在r-Turing可计算性中扮演与lambda演算在Turing可计算性中扮演的角色相同的角色。

我知道人们已经开发出许多可逆语言,并证明它们是r-Turing完整的。但是,在开发这些程序时会考虑到实际应用,因此,他们的作者专注于为它们提供表达功能,而不是使它们最小化。

有谁知道是否已经描述了这种最小的可逆语言,或者是否有任何针对这种方向的研究?我对这个主题的文献还很陌生,所以我很容易错过它。或者,是否有人对如何创建这种语言有任何见解?

以下是我要寻找的摘要。我不知道是否可以通过修改lambda微积分本身来创建它,或者是否必须使用完全不同类型的语言。

  • r-Turing完整语言-计算所有可计算的可逆函数,并且只能计算可逆函数
  • 语法和语义尽可能少。(例如,Lambda演算仅具有函数定义和应用程序,而没有其他功能。)尽管语法或语义可以与Lambda演算的语法或语义相关,但它们不一定是必需的。
  • 程序=数据。即,程序对表达式而不是任何其他种类的数据进行操作。这样可以保证程序的输出始终可以解释为程序。这可能意味着它必须是一种实用的语言,而不是命令式的语言。
  • 有一些系统的方法可以将程序转换为逆运算,而实际上执行逆运算所涉及的运算并不多。(并非所有可逆语言都具有此属性,但有些属性具有。)

我应该强调一点,由于Bennett,Axelsen和Glück的可逆计算方法与众所周知的方法大不相同,在Bennett中,通过返回有关计算历史记录的一些信息以及输出使(通常是不可逆的)程序可逆。r-Turing完整性是关于无需任何其他输出即可计算内射函数的问题。在Bennet的意义上,有几种称为“可逆lambda演算”的变体是可逆的-这些不是我想要的。


r-Turing complete似乎是一个相对较新的定义,它有助于证明它与Turing complete和其他作者(不同于引入该概念的作者)的解释/分析不同(&可能)
vzn 2014年

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.