Questions tagged «lambda-calculus»

Church的形式系统用于可计算性,编程语言和证明理论,以表示有效的功能,程序及其计算和证明。

7
lambda演算对计算理论领域有什么贡献?
我只是在阅读lambda演算以“了解它”。我认为它是图灵机的另一种计算形式。这是一种有趣的用功能/约简做事的方式(简而言之)。一些问题一直困扰着我: Lambda微积分的意义是什么?为什么要经历所有这些功能/减少?什么目的? 结果,我不得不怀疑:lambda微积分到底是做什么来推动CS理论的?是什么使我有一个“哈哈”的时刻来了解其存在的必要性? 为什么关于自动机理论的文章中没有涵盖lambda演算?常见的途径是遍历各种自动机,语法,图灵机和复杂性类。Lambda演算仅包含在SICP样式课程的课程提纲中(也许不?)。但是我很少看到它是CS核心课程的一部分。这是否意味着它不那么有价值?也许不是,也许我在这里错过了一些东西? 我知道函数式编程语言基于lambda演算,但我不认为这是有效的贡献,因为它是在我们拥有编程语言之前就创建的。那么,了解/理解lambda演算的真正意义是什么,它对理论的应用/贡献呢?


2
可实现性理论:Lambda微积分和图灵机之间的功率差异
我有三个相关的子问题,下面由要点突出显示(不,如果您想知道的话,不能将它们拆分)。安德烈·鲍尔(Andrej Bauer)在这里写道,某些功能可以通过图灵机实现,而不是通过lambda微积分实现。他推理的关键步骤是: 但是,如果使用lambda演算,则[c]程序应该从表示函数f的lambda项中计算出一个表示Turing机的数字。这是不可能做到的(如果您将其作为一个单独的问题来问,我可以解释为什么)。 我想查看解释/非正式证明。 我在这里看不到如何应用莱斯定理。因为将谓词应用于等效项会产生相同的结果,因此它适用于“此吐鲁吐机T和该λ项L是否相等?”的问题。但是,所需的函数可能针对不同但等效的λ项计算不同但等效的TM。 而且,如果问题在于反省lambda项,我认为传递lambda项的Gödel编码也是可以接受的,不是吗? 一方面,鉴于他的示例涉及到在lambda演算中计算图灵机完成给定任务所需的步骤数,所以我并不感到惊讶。 但是,由于lambda演算无法解决与Turing机相关的问题,因此我想知道是否可以为lambda演算定义一个类似的问题,并证明它不适用于Turing机,或者实际上在支持上存在差异图灵机(这会让我感到惊讶)。


3
通过Lambda微积分解释P和NP类
在介绍和解释中,P和NP复杂度等级通常通过Turing机器给出。计算模型之一是lambda演算。我知道,所有计算模型都是等效的(如果我们可以用图灵机来介绍任何东西,我们可以用任何计算模型来介绍),但是我从未见过通过lambda演算来解释P和NP复杂度类的想法。 。任何人都可以在没有Turing机器并且仅以lambda演算作为计算模型的情况下解释P和NP复杂度概念。


2
Lambda演算和组合逻辑是否相同?
我目前正在阅读Hindley和Seldin撰写的“ Lambda微积分和组合器 ”。我不是专家,但是由于参与函数式编程(从Lisp和SICP​​开始,现在到R和Haskell),所以一直对lambda微积分感兴趣。 在“ 二进制演算和组合逻辑”,约翰·特朗普说: CL可以看作是Lambda演算的子集...理论在很大程度上是相同的,在存在可扩展性规则的情况下变得等效。 在什么条件下,人们会使用组合逻辑而不是lambda微积分? 任何参考将不胜感激。

2
创建Lambda演算的最初意图是什么?
我已经读过,最初Church提出微积分是他的逻辑假设论文的一部分(这是一本密集的读物)。但是克莱因证明了他的“系统”前后矛盾,之后,丘奇为他关于“有效可计算性”的工作提取了相关的东西,而放弃了他先前在逻辑上的工作。λλ\lambda 所以我的理解是,在 -系统和它的符号了形式的一部分东西做的逻辑。教会最初试图实现什么目的,以至于他后来又分手了?创建λ微积分的最初原因是什么?λλ\lambdaλλ\lambda

3
输入的lambda演算可以在给定的复杂度以下表示所有*算法吗?
我知道,大多数没有Y组合器原语的类型化的λ演算的复杂度是有界的,即只能表达有界复杂度的函数,随着类型系统表达能力的增强,界界也会变大。我记得例如,构造微积分最多可以表达双倍的指数复杂性。 我的问题是有关输入的lambda演算是否可以表示某个复杂度以下的所有算法,或者仅表示某些算法?例如,在Lambda Cube中是否存在任何形式主义无法表达的指数时间算法?被多维数据集的不同顶点完全覆盖的复杂性空间的“形状”是什么?

2
您如何从Lambda多维数据集的其他方面获得构造微积分?
据说CoC是Lambda Cube的所有三个维度的顶点。这一点对我来说一点都不明显。我想我了解各个方面,并且任何两个方面的结合似乎都导致相对简单的结合(也许我缺少了什么?)。但是,当我看CoC时,与其看起来像是这三者的结合,不如说是完全不同的事情。类型,属性和小型/大型字体来自哪个维度?依赖产品消失在哪里?为何为什么只关注命题和证明而不是类型和程序呢?是否有一些针对类型和程序的等效项? 编辑:如果不清楚,我要求解释CoC如何等效于Lambda Cube尺寸的直接结合。在我可以研究的某个地方是否存在所有这三个方面的实际结合(就程序和类型而言,而不是证明和命题)?这是对问题的评论,而不是当前的答案。

1
笛卡尔封闭类别中的箭头和指数对象有什么区别?
在笛卡儿闭范畴(CCC),存在所谓的指数的对象,撰写。当CCC被视为简单类型λ演算的模型时,指数对象(如B A)表征了从A类型到B类型的函数空间。指数对象由称为c u r r y的箭头引入:(A × B → C )→ (A → C BBABAB^Aλλ\lambdaBAB一种B^AAAABBB和由箭头消除称为一个p p 升ÿ :Ç 乙 × 乙→ Ç(不幸的是称为 Ë v 一个升上类别理论在大多数文本)。我在这里的问题是:指数对象 C B与箭头 B → C有什么区别?curry:(A×B→C)→(A→CB)curry:(A×B→C)→(A→CB)curry : (A \times B \rightarrow C) \rightarrow (A \rightarrow C^B)apply:CB×B→Capply:CB×B→Capply : C^B \times B \rightarrow CevalevalevalCBCBC^BB→CB→CB \rightarrow C

2
是否存在一致且图灵完成的类型化lambda演算?
是否存在类型化的Lambda演算,其中Curry-Howard对应关系下的相应逻辑是一致的,并且每个可计算函数都有可键入的Lambda表达式? 公认地,这是一个不精确的问题,缺少“类型化λ演算”的精确定义。我基本上想知道是否有(a)此方面的已知示例,或(b)该领域中某些事物的已知不可能证明。 编辑:@cody在下面的回答中给出了此问题的精确版本:是否存在一个逻辑上纯的类型系统(LPTS),该系统是一致的并且图灵完整的(在下面定义的意义上)?

1
斯科特的随机λ计算
最近,达娜·斯科特(Dana Scott)提出了随机Lambda演算,这是一种基于称为图模型的语义的将概率元素引入(无类型的)Lambda演算的尝试。您可以在此处在线找到他的幻灯片,并在Journal of Applied Logic(应用逻辑)第1卷中找到他的论文。12(2014)。 但是,通过在Web上进行快速搜索,我发现了类似的先前研究,例如,关于Hindley-Milner类型系统的研究。他们引入概率语义的方式类似于Scott的方式(在前者中,他们使用单子,而在后者中,Scott使用连续传递样式)。 在理论本身或可能的应用方面,斯科特的作品与现有的作品有何不同?

1
可逆(r-Turing可计算)函数的Lambda演算
我对Axelsen和Glück(2011)定义的“ r-Turing完整性”的概念感兴趣。如果系统可以计算出与可逆图灵机相同的功能集,而又不产生任何“垃圾”数据,则表示该系统已完成。这与能够计算(a)可计算和(b)内射式的每个函数相同。 我想以计算方式探索可计算内射函数的空间。为了做到这一点,我正在寻找“最小的”可逆编程语言-某种可以在r-Turing可计算性中扮演与lambda演算在Turing可计算性中扮演的角色相同的角色。 我知道人们已经开发出许多可逆语言,并证明它们是r-Turing完整的。但是,在开发这些程序时会考虑到实际应用,因此,他们的作者专注于为它们提供表达功能,而不是使它们最小化。 有谁知道是否已经描述了这种最小的可逆语言,或者是否有任何针对这种方向的研究?我对这个主题的文献还很陌生,所以我很容易错过它。或者,是否有人对如何创建这种语言有任何见解? 以下是我要寻找的摘要。我不知道是否可以通过修改lambda微积分本身来创建它,或者是否必须使用完全不同类型的语言。 r-Turing完整语言-计算所有可计算的可逆函数,并且只能计算可逆函数 语法和语义尽可能少。(例如,Lambda演算仅具有函数定义和应用程序,而没有其他功能。)尽管语法或语义可以与Lambda演算的语法或语义相关,但它们不一定是必需的。 程序=数据。即,程序对表达式而不是任何其他种类的数据进行操作。这样可以保证程序的输出始终可以解释为程序。这可能意味着它必须是一种实用的语言,而不是命令式的语言。 有一些系统的方法可以将程序转换为逆运算,而实际上执行逆运算所涉及的运算并不多。(并非所有可逆语言都具有此属性,但有些属性具有。) 我应该强调一点,由于Bennett,Axelsen和Glück的可逆计算方法与众所周知的方法大不相同,在Bennett中,通过返回有关计算历史记录的一些信息以及输出使(通常是不可逆的)程序可逆。r-Turing完整性是关于无需任何其他输出即可计算内射函数的问题。在Bennet的意义上,有几种称为“可逆lambda演算”的变体是可逆的-这些不是我想要的。

3
Pi型的分裂和极性
在阿格达(Agda)邮件列表上的最新帖子中,出现了法律的问题,彼得汉考克(Peter Hancock)在其中发人深省。ηη\eta 我的理解是法则带有否定类型,即。引入规则是可逆的连接词。要禁用功能,Hank建议使用定制消除器funsplit,而不是通常的应用程序规则。我想了解汉克关于两极的说法。ηη\etaηη\eta 例如,有两个演示类型。有传统的马丁- LOF 分裂消除,以积极的风格:ΣΣ\Sigma Γ⊢f:(a:A)(b:Ba)→C(a,b)Γ⊢p:Σa:A.BΓ⊢splitfp:CpΓ⊢f:(a:A)(b:Ba)→C(a,b)Γ⊢p:Σa:A.BΓ⊢splitfp:Cp \begin{array}{l} \Gamma \vdash f : (a : A)(b : B\: a) \to C (a , b) \\ \Gamma \vdash p : \Sigma a : A. B \\ \hline \\ \Gamma \vdash \mathrm{split}\: f\: p : C\: p \end{array} 还有否定版本: Γ⊢p:Σa:A.BΓ⊢π0p:AΓ⊢p:Σa:A.BΓ⊢π1p:B[π0p/a]Γ⊢p:Σa:A.BΓ⊢π0p:AΓ⊢p:Σa:A.BΓ⊢π1p:B[π0p/a] \begin{array}{l} \Gamma \vdash …

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.