组合逻辑公理

我正在用组合逻辑进行定理验证的一些实验,这看起来很有希望,但是有一个绊脚石:已经指出在组合逻辑中,确实如此。 I = SKK但这不是一个定理,它必须作为公理添加。有谁知道需要添加的公理的完整列表? 编辑:你当然可以手工证明我= SKK,但除非我遗漏了某些东西,否则它不是具有相等性的组合逻辑系统中的定理。话虽如此,你可以将我扩展到SKK ......但我仍然缺少一些重要的东西。取一组子句p(X)和~p(X),这很容易解决普通一阶逻辑中的矛盾,并将它们转换为SK,执行替换并评估S和K的所有调用,我的程序生成以下(我使用'用于Unlambda的反击): ''eq''s''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'k true'k true 看起来我需要的是一套适当的规则来处理部分调用'k和',我只是没看到这些规则应该是什么,我在这个领域找到的所有文献都是为数学家的目标受众而不是程序员。我怀疑一旦你明白答案可能很简单。     
已邀请:
你不需要将我定义为公理。从以下开始:
I.x = x
K.x y = x
S.x y z = x z (y z)
由于
SKanything = anything
,然后
SKanything
是一个身份函数,就像
I
。 所以,
I = SKK
I = SKS
。不需要将I定义为公理,您可以将其定义为别名SKK的语法糖。 S和K的定义只是公理。     
对于beta等式,通常的公理是完整的,但是不要给予eta平等。库里发现了一套大约三十个公理的公理,以获得完整的β-eta平等。它们被列入Hindley&塞尔丁对组合子和lambda演算的介绍。 Roger Hindley,Curry的最后一个问题,列出了我们可能想要的lambda演算之间的映射以及我们没有满足所有这些映射的映射的额外需求。您可能不会太在意所有标准。     

要回复问题请先登录注册