问题标签 [lambda-calculus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
turing-machines - 计算模型的等价性
我正在寻求解释如何证明计算模型是等价的。我一直在阅读有关该主题的书籍,但省略了等价证明。我对两个计算模型等效意味着什么有一个基本概念(自动机视图:如果它们接受相同的语言)。是否有其他思考等价的方法?如果你能帮助我理解如何证明图灵机模型等价于 lambda 演算,那就足够了。
lambda-calculus - 暴露 coq 中归纳定义项的结构
在简单类型的 lambda 演算中类型推导是唯一的证明在纸上是微不足道的。我熟悉的证明是通过对类型推导的完全归纳来进行的。但是,我无法证明通过类型派生类型表示的类型派生是唯一的。在这里,如果变量的类型为 environment ,则谓词dec Γ x τ
为真。类型谓词像往常一样定义,只需读取简单类型 lambda 演算的类型规则:x
τ
Γ
J
J
在证明类型派生是唯一的时,我无法暴露类型术语的结构。例如,我可以对以下引理中的任何一个d1
或d2
在其中进行归纳,但不能对d1
then destruct进行归纳d2
,反之亦然。Coq 给出的错误消息(对术语进行抽象会导致输入错误的术语)有点模糊,并且 Coq wiki 没有提供任何帮助。作为参考,这是我试图证明的引理:
在归纳术语时我没有问题,例如,在证明类型是唯一的时。
编辑:我添加了最少数量的定义来说明我遇到问题的结果。作为对 huitseeker 评论的回应,之所以选择这种类型J
是因为我想将派生类型作为结构化对象进行推理,以便执行提取等操作并证明唯一性等结果,这是我以前在 Coq 中没有做过的。
针对评论的第一部分,我可以执行induction
or d1
,d2
但执行后induction
我不能使用destruct
, case
, orinduction
剩下的术语。这意味着我不能公开两者的结构,d1
并且无法d2
对这两个证明树进行推理。当我尝试这样做时收到的错误表明,对剩余术语进行抽象会导致术语输入错误。
我已经尝试过从库中获得dependent induction
一些结果Coq.Logic
,但没有成功。推导是独一无二的,这似乎是一个容易证明的命题。
javascript - 函数返回值而不用给定参数替换变量
对我提出问题的愚蠢方式感到抱歉,这里有一些解释:我正在用 javascript 中的 lambda-calculus 进行试验,但遇到了一些小困难。(你不必知道任何关于 lambda 演算的知识来帮助我)
我有这个功能(教堂数字 1 顺便说一句):
表现如预期,并给出与上面完全相同的东西。
表现出乎意料并给出:
为什么javascript不用函数num1替换'c'?但
给出:
并表明第一个 c 实际上已按预期被函数替换。如果'c'不会被替换,那么就会发生这种情况:
所以总而言之,代码正在做它应该做的事情,但它不会输出替换了“c”的函数。我能做些什么?稍后,我将使用更多功能,然后我将无法区分num1(asd)
,num1(jkl)
因为“c”没有被替换。
非常感谢您的帮助!
别人
java - 在java中做一些'lambda演算'的库
我打算在 Java 中做一些基本的 lambda 表达式操作(最好使用类型化的 lambda)。
是否有我使用的库(稳定或其他)?
更新:更明确地说,我想操作 lambda 表达式,例如在一个文件中我解析一些 lambda 表达式并将其中一些组合成一个新的。基本上,它更多的是解析而不是函数式编程。
haskell - 您不了解 Hindley-Milner 的哪一部分?
我发誓曾经有一件T 恤出售,上面印着不朽的文字:
哪一部分
你不明白吗?
就我而言,答案是……全部!
特别是,我经常在 Haskell 论文中看到这样的符号,但我不知道它是什么意思。我不知道它应该是什么数学分支。
我当然认识希腊字母表中的字母和诸如“∉”之类的符号(这通常意味着某物不是集合的元素)。
另一方面,我以前从未见过“⊢”(维基百科声称它可能意味着“分区”)。我也不熟悉这里的 vinculum 的使用。(通常,它表示分数,但这里似乎并非如此。)
如果有人至少可以告诉我从哪里开始寻找理解这个符号海洋的含义,那将很有帮助。
types - 为什么 (Set -> Set) 不能有 Set 类型?
在 Agda 中, a 的类型以如下方式forall
确定:Set1
Set1
Set
A
Set
但是,以下具有类型Set
:
我知道如果Set
有 type Set
,会有矛盾,但我看不出,如果上述三个术语中的任何一个有 type Set
,我们就会有矛盾。这些可以用来证明False吗?它们可以用来证明Set : Set
吗?
lambda - Lambda 演算:alpha 转换
这是一个阿尔法转换。虽然我已经完成了这个,但我不太确定这是否是一个正确的答案。
这是一个正确的答案吗?
math - Lambda 演算简化
下面是我发现难以减少的 lambda 表达式,即我无法理解如何解决这个问题。
(λmn(λsz.ms(nsz)))(λsz.sz)(λsz.sz)
我迷失了。
如果有人能带领我朝着正确的方向前进,将不胜感激
haskell - Haskell 中的 Lambda 演算:有什么方法可以检查 Church 数字的类型吗?
我在 Haskell 中玩一些 lambda 演算的东西,特别是教堂数字。我定义了以下内容:
这有效:
发生检查失败:
我玩过我的常量iszero
,mult
它们似乎是正确的。有什么方法可以使这个可打字吗?我不认为我在做什么太疯狂了,但也许我做错了什么?