最小的通用组合器


17

我正在寻找最小的通用组合器,该组合器是通过在lambda演算中指定这种组合器所需的抽象次数和应用程序数量来衡量的。通用组合器的示例包括:

  • 大小23: λf.f(fS(KKKI))K
  • 大小18: λf.f(fS(KK))K
  • 大小14: λf.fKSK
  • 大小12: λf.fS(λxyz.x)
  • 大小11: λf.fSK

其中S = 大小为6的 λxyz.xz(yz)和K = 大小为2的 λxy.x 是SK组合器演算的组合器本文描述了前4个示例。

我的问题是:

  • 是否有尺寸更小的通用组合器?
  • 最小的通用组合器是什么?

编辑:另请参阅/math//a/180263/76284,它具有λazbc.bc(a(λy.c))大小为8,与SK基础的大小之和匹配)。有人知道如何从该组合器表达S和K吗?



您对尺寸的定义是什么?您可以将其编写为函数吗?
Joshua Herman

由于6 + 2 = 8 <11,这使我想知道{S,K}是否是以总大小衡量的最小组合器基础?
Noam Zeilberger

您最近的编辑听起来像是(部分)答案。
EmilJeřábek

您对“ 组合器 ”的定义有多严格?是否有这样的形式λx*.E,其中E是抽象免费的吗?
彼得·泰勒

Answers:


9

应当指出,找到具有某些还原性能的组合器总是很困难,并且找到最小的这种组合器可能很容易无法决定(由于琐碎的原因,因为无法确定证明该组合器的某种应用甚至停止)。

有几个类似问题的简单开放式问题,例如TLCA开放式问题列表中的问题#4,#6和#10 。

需要注意的一件事是,您的组合器肯定需要至少有2个绑定变量,其中一个是重复的(与任何完整的组合器集合一样),而一个则需要删除。我认为,这将下限设置为4(2个抽象和2个变量的外观),距离上限11并不远。

编辑:Noam的评论和参考将下限推到5!如果证明还要求同时显示额外的变量,我也不会感到惊讶,这会将我们推到了6。


3
实际上,两个变量是不够(dl.acm.org/citation.cfm?id=2100917cstheory.stackexchange.com/a/36344/674),所以这给出了一个稍高下限(大小5 = 3层的抽象和2个应用程序)。
Noam Zeilberger

@NoamZeilberger好吧,这是我没有意识到的奇妙结果!
科迪

7

对于您的第一个问题,我相信本文可能会有所帮助。它具有也是UTM的6位组合器演算。它还具有一个通用组合器,该组合器的大小似乎为7,其中包含一个您想要的元素。他们称其为Zot。 http://arxiv.org/pdf/cs/0508056v1.pdf

我不确定您是否可以说或证明有最少的组合器。该文件建议必须至少小于6位。


2
Zot的组合器实际上是OP中列出的最后一个:λx.xSK(与其父语言Iota和Jot共享),长度为11。在“ 6位组合器演算”(Keraia)中,“ 6位”是UTM的大小;看起来它只是lambda演算的编码,而不是组合器演算(因此没有内置的通用组合器)。
2012rcampion
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.