可以使用 SKI 组合子表示 XOR 吗?

Posted

技术标签:

【中文标题】可以使用 SKI 组合子表示 XOR 吗?【英文标题】:Can XOR be expressed using SKI combinators? 【发布时间】:2016-09-04 07:14:11 【问题描述】:

我对 SKI-Combinators 有疑问。

XOR(异或)能否仅使用 SK 组合子来表示?

我有

True = Cancel
False = (Swap Cancel)

在哪里

Cancel x y = K x y = x   
Swap: ff x y = S ff x y = ff y x

【问题讨论】:

I 可以表示为S K K。所以,如果你可以用SKI表达NOR,你可以用SK来表达。 它会中缀吗?括号怎么样? (p.s 试了好几种方法都没有成功)谢谢! 假设您将逻辑连接词括在括号中,即NOR = (... some expression ...)(1) NOR 不能表示为后缀运算符(如AND)--看到这个观察T T NOR = T,不管NOR是什么(但应该是F); (2) NOR 不能表示为中缀运算符 -- F NOR F = F(但应该是T 啊,当然!实际上我犯了一个巨大的错误,问错了问题!我的意思是问XOR而不是NOR!非常抱歉! 【参考方案1】:

布尔值

你的问题在细节上有点不清楚,但似乎你的意思是你有以下布尔表示:

T := K
F := S K

这是有效的,因为它意味着以下减少成立:

T t e => t
F t e => e

换句话说,b t e 可以解释为IF b THEN t ELSE e

IF _ THEN _ ELSE _ 进行异或

那么给定这个框架,我们如何实现异或呢?我们可以将 XOR 公式化为 IF 表达式:

xor x y := IF x THEN (not y) ELSE y = (IF x THEN not ELSE id) y

可以 eta 化简为

XOR x := IF x THEN not ELSE id = x not id

一些函数组合器

我们有id = SKK作为标准,not可以表示为flip,因为flip b t e = b e t = IF b THEN e ELSE t = IF (not b) THEN t ELSE eflip it self is quite involved 但可行

flip := S (S (K (S (KS) K)) S) (KK)

现在我们只需要找到一种方法来编写一个函数,该函数接受x 并将其应用于NOTID 这两个术语。要到达那里,我们首先要注意,如果我们设置

app := id

然后

app f x = (id f) x = f x

等等,

(flip app) x f = f x

我们快到了,因为到目前为止的一切都表明

((flip app) id) ((flip app) not x) = ((flip app) not x) id = (x not) id = x not id

最后一步是在x 上使最后一行无点。我们可以使用函数组合运算符来做到这一点:

((flip app) id) ((flip app) not x) = compose ((flip app) id) ((flip app) not) x

compose 的要求在哪里

compose f g x = f (g x)

我们可以通过设置得到

compose f g := S (K f) g

把它们放在一起

总而言之,我们得到了

xor := compose ((flip app) id) ((flip app) not)

或者,完全展开:

xor = S (K ((flip app) id)) ((flip app) not)
    = S (K ((flip app) (SKK))) ((flip app) flip)
    = S (K ((flip SKK) (SKK))) ((flip SKK) flip)
    = S (K (((S (S (K (S (KS) K)) S) (KK)) SKK) (SKK))) (((S (S (K (S (KS) K)) S) (KK)) SKK) (S (S (K (S (KS) K)) S) (KK)))

【讨论】:

以上是关于可以使用 SKI 组合子表示 XOR 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Ski-Trails for Robots

POJ 2375 Cow Ski Area (强连通分量)

Coolest Ski Route-不定起点和终点----在有向变的情况下---求最长路

USACO 1.3 Ski Course Design

组合框更改后子表单不重新查询

[题解]USACO 1.3 Ski Course Design