SK2演算是否是完整的基础,其中K2是翻转的K组合器?


10

具体地,如果我定义了一个新的ķ2作为

ķ2=λX。(λÿ。ÿ)
代替
ķ=λX。(λÿ。X)
将在{S,K2,I}演算是竞争基础?

我的猜测是“不”,只是因为我似乎无法从S,I和K2组合器构造常规K 组合器,但是我没有可遵循的算法,也没有很好的算法用这些组合器制作事物的直觉。

好像你可以定义

K2=KI
与正规{S,K,(I)}演算,但我不能从真正的工作向后获得的推导ķ来讲K2,其余。

我试图证明它在功能上不完整的尝试实质上是试图穷举构造可从这些组合器获得的每个功能,以表明无论使用哪种组合器,您都将达到死胡同(您之前已经看过的功能)。我意识到,对于功能上不完整的组合器集(例如,K组合器自身使用时,永远不会死胡同),这不一定是正确的,但这是我的最佳想法。我总是能够使用S组合器来偷偷摸摸地走出我认为最终是死路一条,因此我不再对这种方法的可行性感到不确定。

我在StackOverflow上问了这个问题,但被鼓励在这里发布。我收到了关于该帖子的一些评论,但不确定我是否正确理解它们。

奖励:如果不是一个完整的基础,那么生成的语言是否仍是图灵完整的?


这是一个很好的难题。似乎S和K'仅允许您生成其头部法线形式最多具有三个前导λs的项(即,归一化为形式λx₁.λx_2.λx₃.xᵢt₁...tₙ的项),因此可能是证明不完整性的另一种途径,尽管形式化似乎有些棘手。但是,您绝对不会达到“死胡同”:首先定义I =λx.x= K2 K2,然后通过重复变换t↦S t K2,您可以将λx.xI ... I表示为Is的任何字符串。
— Noam Zeilberger

…对不起,“不完整”是指SK'的不完整,是无类型lambda演算的组合基础。我也对它是否是图灵完备性没有很好的直觉(组合完备性暗示了这一点,反之则不行)。
— 诺姆·泽尔伯格

交叉贴:stackoverflow.com/q/55148283/781723,cs.stackexchange.com/q/108741/755。请不要在多个站点上发布相同的问题。每个社区都应该诚实地回答,而不会浪费任何时间。
— DW

我的错误@DW,有什么办法可以解决?
— 科尔

Answers:


14

将S,K2,I演算的术语视为树(二进制节点代表应用程序,S,K2叶子代表组合器)。

例如,术语小号(小号小号)ķ2将由树表示

        @
       / \
      /   \
     @    K2
    / \
   /   \
  S     @
       / \
      /   \
     S     S

将每一棵树的最右边的叶子与Ť关联起来,这是通过在每棵树上取得正确的分支而得到的@。例如,上面树的最右边的叶子是ķ2。

从下面的ASCII技术可以看出,小号,ķ2,一世演算中的所有归约规则都保留最右边的叶子。

         @                           @
        / \                         / \
       /   \                       /   \
      @     g    [reduces to]     @     @
     / \                         / \   / \
    /   \                       e   g f   g
   @     f                 
  / \
 /   \
S     e
      @
     / \
    /   \
   @     f    [reduces to]   f
  / \
 /   \
K2    e

从那里开始,很容易看到,如果某项Ť简化为Ť′,则Ť和Ť′具有相同的最右边的叶子。因此,在S ,K 2,I演算中没有项Ť使得T K 2 S减少为K 2。但是,K K 2 S减少为K 2,因此K不能用S ,K 2,I演算来表示。小号,ķ2,一世Ťķ2小号ķ2ķķ2小号ķ2ķ小号,ķ2,一世


很不错的说法!
— Noam Zeilberger

论点非常清晰明了。谢谢。也许我将再提出一个有关图灵完整性的问题。
— 科尔

5

编辑:正如评论所指出的,这只是部分答案,因为它仅适用于简单类型的小号,ķ2,一世演算(或者更确切地说,它表明不存在不包含K的K的可能定义。不良子项)。如果没有异议,我不会删除它,因为它为类型化设置提供了非常有效的证明技术。


回想一下,我们的组合器具有以下类型(Curry样式,因此一个,乙,C是可变的):

  • ķ:一个→乙→一个
  • ķ2:一个→乙→乙
  • 小号:(一个→乙→C)→(一个→乙)→(一个→C)
  • 一世:一个→一个

根据库里-霍华德(Curry-Howard)的对应关系,如果我们可以用I ,S ,K 2表示ķ,那么希尔伯特式证明演算具有三个逻辑公理A → B → B ,(A → B → C )→ (A → B )→ (A → C ),A → A和一个推论规则(从A和A → B推论B)证明了公式一世,小号,ķ2一个→乙→乙,(一个→乙→C)→(一个→乙)→(一个→C),一个→一个一个一个→乙乙一个→乙→一个。

但是我们可以给连接词→提供三值(values t,f,u)语义,这样公式A → B → B,(A → B → C )→ (A → B )→ (A→一个→乙→乙(一个→乙→C)→(一个→乙)→(一个→C)和一个→一个得到t任何解释的价值。

A B | A -> B
t t | t
t f | f
f t | t
f f | t
t u | f
f u | t
u t | t
u f | f
u u | t

ķ2,小号,一世tt一个→乙→一个fu一个t乙小号,ķ2,一世


1
我喜欢这种方法,但是您能否阐明您在进行后续演算时要遵循的规则?
— Noam Zeilberger

您能在这个受限的后续演算中画出如何证明S的草图吗?我猜你可能想说的规则似乎不可能。
— 罗宾·休斯顿

1
@ robin-houston:请看我的编辑(我还添加了一个具有相同结论的不同语义参数)。
— ZAK

2
我同意Charles Stewart(在此处:twitter.com/txtpf/status/1123962607306706944)的看法,尚不清楚如何从简单类型的lambda演算中的无人居住转变为使用组合器的不可表达性。可能有一个特定于K的参数,但是第一步“ ...然后,在简单类型的λ微积分中也可以做同样的事情”通常不成立(查尔斯提到了Y组合器的反例) 。您是否认为此论点严格?
— Noam Zeilberger

1
ķ
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.