组合器演算的基础集


19

众所周知,S和K组合器构成了组合器演算的基础集,从这个意义上说,所有其他组合器都可以用它们来表示。还有Curry的B,C,K,W基础,具有相同的属性。这样的基础一定是无限的,但我不知道其他任何一个。

我知道有很多单一组合器基础,例如Iota组合器和Fokker构建/审查的各种其他组合器。但是,这些是“不合适的”组合器,这意味着它们是用其他组合器而不是纯抽象来表示的。1 出于这个问题的目的,我只对由适当的组合器组成的基集感兴趣。

是否还存在对其他可能基础集的研究?理想的做法是按照Wolfram 对其他各种计算模型进行的研究,其中系统地研究了各种组合。我尤其对以下事情的简单示例感兴趣:

  • 包含I组合器的最小基础集。(我用“最小”表示如果删除任何成员,它将不再是基础,因此SKI基础将不计。)
  • 包含Y组合器或组合器(又名模仿鸟)的最小基础集ω

除S,K和B,C,K,W之外,有关组合逻辑其他可能基础的任何其他信息也将非常有帮助。

广而言之,我对作为纯机械系统的组合演算的研究感兴趣,即作为带有标记节点的二叉树上的一组转换规则的研究,不需要给出任何特定的语义解释。任何采用这种方法的资源指向都将不胜感激。(要嘲笑一只模仿鸟则采用了这种方法,但却给出了一个不完整的表述,而Barendregt的Lambda微积分与语义紧密相关,这使我很难提取我感兴趣的纯粹机械方面。)

1 确切地说:在lambda演算中,适当的组合器是形式的表达式,其中仅具有,等作为自由变量,并且不包含任何抽象。因此,例如是适当的组合器,但不是合适的组合器,因为它包含应用于lambda项的。P X 1X 2... X 1 X 2λ X ý ž X Ž Ž λ X X λ ÿ Ý X(λ.x1x2P(x1,x2,))P(x1,x2,)x1x2(λxyz.x(zz))(λx.x(λy.y))x

Answers:


2

通过将组合器从一个基础与执行类似操作的基础中切换出来,很容易建立其他基础。例如,从BCKW,可以切换为(因为围绕两个开关而言)和为(因为这两个重复的东西)。您知道这仍然是基础,因为您可以从中恢复和:和。Ť = λ X ý ÿ X w ^ ω = λ X X X C ^ w ^ C ^ = Ť Ť Ť w ^ = Ç ω Ť CT=(λxy.yx)Wω=(λx.xx)CWC=ŤŤŤw ^=CωŤ


1

包含取消组合器(如K),组合组合器(如B),置换组合器(如C),复制组合器(如W)和标识组合器I的任何一组组合器都是基础。如果I组合器恰好是从您的其他四个组合器派生的,那么仅这四个组合器就足够了。

这意味着像B,T,M,K,I之类的东西也是基础,其中Tab = ba和Ma = aa。确实,B,T,M,K就足够了,因为我可能是从B,T,M,K派生的(这不容易证明;证明是先从B,T,M推导S然后取I =瑞典克朗)。

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.