Questions tagged «combinatory-logic»

对于通过组合程序的应用程序和术语重写定义的逻辑系统的问题。这些系统通常与lambda演算有密切的联系。

2
Y组合器如何举例说明“ Lambda演算不一致”?
在定点组合器的Wikipedia页面上,写着相当神秘的文字 Y组合器是导致Lambda微积分不一致的一个示例。因此,应该怀疑。但是,仅在数学逻辑中定义时考虑Y组合器是安全的。 我读过某种间谍小说吗?“ -calculus”是“不一致的”并且应该“被怀疑”的说法在世界上意味着什么?λλ\lambda

4
定点组合器(Y组合器)的清晰直观的推导?
(无类型)lambda演算()中的定点组合器FIX(aka Y组合器)定义为:λλ\lambda FIX≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))\triangleq \lambda f.(\lambda x. f~(\lambda y. x~x~y))~(\lambda x. f~(\lambda y. x~x~y)) 我了解它的目的,并且可以很好地跟踪其应用程序的执行。我想了解如何从第一原理中得出FIX。 这是我尝试自己导出时所得到的: FIX是一个函数:FIX ≜λ…≜λ…\triangleq \lambda_\ldots FIX使用另一个函数fff使其递归:FIX ≜λf.…≜λf.…\triangleq \lambda f._\ldots 函数f的第一个参数是函数fff的“名称”,用于打算递归应用程序的地方。因此,f的第一个参数的所有出现fff都应由一个函数替换,并且该函数应预期f的其余参数fff(假设f带有fff一个参数):FIX ≜λf.…f (λy.…y)≜λf.…f (λy.…y)\triangleq \lambda f._\ldots f~(\lambda y. _\ldots y) 这是我不知道如何在推理中“迈出一步”的地方。小椭圆表示我的FIX缺少了什么(尽管我只能通过将其与“真实” FIX进行比较来知道)。 我已经阅读了Types and …


2
组合器演算的基础集
众所周知,S和K组合器构成了组合器演算的基础集,从这个意义上说,所有其他组合器都可以用它们来表示。还有Curry的B,C,K,W基础,具有相同的属性。这样的基础一定是无限的,但我不知道其他任何一个。 我知道有很多单一组合器基础,例如Iota组合器和Fokker构建/审查的各种其他组合器。但是,这些是“不合适的”组合器,这意味着它们是用其他组合器而不是纯抽象来表示的。1 出于这个问题的目的,我只对由适当的组合器组成的基集感兴趣。 是否还存在对其他可能基础集的研究?理想的做法是按照Wolfram 对其他各种计算模型进行的研究,其中系统地研究了各种组合。我尤其对以下事情的简单示例感兴趣: 包含I组合器的最小基础集。(我用“最小”表示如果删除任何成员,它将不再是基础,因此SKI基础将不计。) 包含Y组合器或组合器(又名模仿鸟)的最小基础集ωω\omega 除S,K和B,C,K,W之外,有关组合逻辑其他可能基础的任何其他信息也将非常有帮助。 广而言之,我对作为纯机械系统的组合演算的研究感兴趣,即作为带有标记节点的二叉树上的一组转换规则的研究,不需要给出任何特定的语义解释。任何采用这种方法的资源指向都将不胜感激。(要嘲笑一只模仿鸟则采用了这种方法,但却给出了一个不完整的表述,而Barendregt的Lambda微积分与语义紧密相关,这使我很难提取我感兴趣的纯粹机械方面。) 1 确切地说:在lambda演算中,适当的组合器是形式的表达式,其中仅具有,等作为自由变量,并且不包含任何抽象。因此,例如是适当的组合器,但不是合适的组合器,因为它包含应用于lambda项的。P (X 1,X 2,... )X 1 X 2(λ X ý ž 。X (Ž Ž ))(λ X 。X (λ ÿ 。Ý ))X(λ 。X1个X2… P(x1个,X2,… ))(λ.x1x2…P(x1,x2,…))(\lambda.x_1x_2\dots P(x_1,x_2,\dots))P(x1个,X2,… )P(x1,x2,…)P(x_1,x_2,\dots)X1个x1x_1X2x2x_2( λ X ÿž。X (žž))(λxyz.x(zz))(\lambda x y z. x(z z))(λ X 。X ( λ ÿ。ÿ))(λx.x(λy.y))(\lambda …

2
Y组合器是否与Curry-Howard对应矛盾?
Y组合器的类型为。根据库里·霍华德 Curry-Howard)的对应关系,因为类型被居住,所以它必须对应于一个真定理。但是始终为真,因此似乎Y组合器的类型对应于定理,但并不总是正确的。怎么会这样?(a → a )→ a(一种→一种)→一种(a \rightarrow a) \rightarrow a(a → a )→ a(一种→一种)→一种(a \rightarrow a) \rightarrow a一→ 一一种→一种a \rightarrow a一种一种a

1
组合器演算表达式可以计算哪些函数?
可以将组合器表达式(假设以SK为基础)视为将组合器演算表达式映射到组合器演算表达式的函数。也就是说,可以将表达式视为函数,其中是在SK基础上所有语法有效的组合器表达式的集合。通过将输入应用于表达式,然后简化为正常形式以获取输出,可以执行此映射。XXXX:L→LX:L→LX:L \to LLLL 由于SK基础是Turing完整的,因此可能会天真的认为存在一个SK表达式,该表达式实现了从到任何可计算函数。但是,显然不是这种情况,因为减少的结果将始终为正常形式。这意味着表达式无法具有非正常形式的输出。XXXLLLLLL 因此,我可以将SK微积分表达式视为将映射到,其中是标准形式的SK表达式集。对于任何可计算的映射,是否存在一个实现此映射的SK表达式?还是对组合器演算表达式可以这种方式计算的函数集有进一步的限制?L′L′L'L′L′L'L′L′L'f:L′→L′f:L′→L′f:L'\to L'XXX

2
SK2演算是否是完整的基础,其中K2是翻转的K组合器?
具体地,如果我定义了一个新的ķ2ķ2K_2作为 ķ2= λ X 。(λÿ。ÿ)ķ2=λX。(λÿ。ÿ)K_2 = \lambda x. (\lambda y. y) 代替 ķ= λ X 。(λ ÿ。X )ķ=λX。(λÿ。X)K = \lambda x. (\lambda y. x) 将在{S,K2,I}{S,K2,I}\{S, K_2,I\}演算是竞争基础? 我的猜测是“不”,只是因为我似乎无法从SSS,III和K2K2K_2组合器构造常规K 组合器,但是我没有可遵循的算法,也没有很好的算法用这些组合器制作事物的直觉。 好像你可以定义 K2=KIK2=KIK_2 = K I 与正规{S,K,(I)}{S,K,(I)}\{S, K, (I)\}演算,但我不能从真正的工作向后获得的推导KķK来讲K2K2K_2,其余。 我试图证明它在功能上不完整的尝试实质上是试图穷举构造可从这些组合器获得的每个功能,以表明无论使用哪种组合器,您都将达到死胡同(您之前已经看过的功能)。我意识到,对于功能上不完整的组合器集(例如,KKK组合器自身使用时,永远不会死胡同),这不一定是正确的,但这是我的最佳想法。我总是能够使用SSS组合器来偷偷摸摸地走出我认为最终是死路一条,因此我不再对这种方法的可行性感到不确定。 我在StackOverflow上问了这个问题,但被鼓励在这里发布。我收到了关于该帖子的一些评论,但不确定我是否正确理解它们。 奖励:如果不是一个完整的基础,那么生成的语言是否仍是图灵完整的?

2
Lambda演算的组合解释
根据彼得·塞林格(Peter Selinger)的观点,拉姆达微积分是代数(PDF)。在本文的开头,他说: 众所周知,lambda演算的组合解释是不完善的,因为它不满足:在这种解释下,并不意味着\ lambda xM = \ lambda xN(Barendregt,1984)。ξξξM=NM=NM = Nλx.M=λx.Nλx.M=λx.N\lambda x.M = \lambda x.N 问题: 在这里意味着什么等价? 给定等效性的定义,隐含的反例是什么?

1
平面表达式的最简单完整组合器基础对
在克里斯·冈崎(Chris Okasaki)的论文“ 拼合组合器:没有括号的情况下生存 ”中,他表明,两个组合器既足以作为编码图灵完备表达式的基础,又不需要应用运算符或括号。 通过使用应用程序运算符对S和K组合器进行前缀编码,与John Trump在“ 二进制Lambda微积分和组合逻辑 ”中对组合逻辑的编码相比,只需要两个组合器来进行平面表达式,就可以将代码密度提高到最优。产生的Goedel编号将每个整数映射为有效的,格式正确的闭项表达式,这与大多数计算和最小描述长度的esolang不同,后者的规范表示通常允许描述语法无效的程序。 但是Okasaki的编码在从lambda演算项到位串的单向映射中是最有用的,而不一定是相反的,因为当用作实用的替换指令时,此归约中使用的两个组合器相对复杂。 什么是不需要应用程序运算符的最简单的完整组合器基础对?

1
组合逻辑项是否总是更大?
因此,存在一种使用SK组合器将lambda微积分项转换为组合逻辑的算法。它产生的东西会爆炸。我想进一步了解这种规模的爆炸。我似乎无法想到更好的算法。我听说功能语言实际上已经编译为组合器,因此似乎必须存在更好的算法。我查阅了大卫·特纳(David Turner)关于该主题的论文,他基本上只是说要应用一些优化,并且它们会带来“显着的改进”。 “显着改善”是否意味着大小下降到仅多项式增长?是否有一种已知的方法可以将lambda项转换为仅增加(或更少)多项式的组合逻辑?如果存在这样的算法是否可行?
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.