兰姆达微积分(一)

1.简介

1.1多参数操作

1.2非拓展性

2.语法

2.1变量,绑定和自由

2.2组合器

3.λ-微积分的简史

4.减少

4.1其他减少概念

4.2减少策略

5.λ-理论

5.1基本理论λ

5.2扩展基本理论λ

6.λ-微分的一致性

7.λ-微分的语义

7.1λ-模型

7.2模型结构

8.扩展和变体

8.1组合逻辑

8.2添加类型

9.应用程序

9.1逻辑àlaλ

9.2计算

9.3关系

参考书目

学术工具

其他互联网资源

相关条目

1.简介

λ-calculus是一个优雅的符号,用于与函数应用于参数。 要采取数学例子,假设我们被赋予一种简单的多项式,例如x2-2⋅x+ 5。 当x = 2时,此表达式的值是多少? 我们通过表达式的x“插入”来计算这一点:我们得到22-2⋅2+ 5,我们可以进一步减少以获得答案5.要使用λ-微积分来代表情况,我们从λ-术语开始

λx[x2-2⋅x+ 5]。

λ运算符允许我们摘要x。 可以直观地读取“λx[x2-2⋅x+ 5]'作为等待变量x的值a的表达式。 当给定这样的值A(例如数字2)时,表达式的值是a2-2⋅a+ 5。 “λ”自身没有意义; 它仅绑定变量x,保护它,因为它来自外部干扰。 λ-微积分中的术语是我们想要将此表达式应用于参数,并获得值。 我们写'ma'表示函数m的应用于参数a。 继续举例:

(λx[x2-2χx+ 5])2⊳22-2⋅2+5⟨substitute2,x⟩= 4-4 +5⟨arithmetic⟩算法=5⟨arithmetic⟩

此计算的第一步,插入“2”,用于表达式“x2-2⋅x+ 5”中的x的出现,是通过替换操作从抽象术语到另一个术语的段落。 剩下的平等是通过计算自然数来证明。

该示例表明λ-微积分的中心原理,称为β-β-钙,其也有时称为β-转换:

(λx[是])n⊳m[x:= n]

理解是,通过简单地插入n内部的n(这就是所在的情况符号'm [x:= n]'表达)。 β-还原或β-转化,是λ-微分的核心。 当一个人实际应用β-减少以减少一个术语时,存在必须观察到的重要附带。 但是,当我们讨论绑定和自由变量时,将在第2.1节中描述。

1.1多参数操作

多个参数的功能呢? λ-微积分可以表示操作,例如计算右三角形的斜边的长度:

右侧三角形的斜边,具有长度x和y⇒√x2+ y2的腿。

斜边长度的操作将两个正实数x和y映射到另一个正实数。 一种可以通过将操作视为一次输入来表示使用λ-微积分的装置来表示这种多个arity操作。 因此,操作可以看出,拍摄一个输入,x,正实数,并产生其值而不是一个数字,而是操作:即,将正真数y作为输入的操作作为输入,作为输出正真数√x2+ y2。 一个可以通过说操作,斜边长度,计算右三角形的斜边的长度,给出右三角的长度,给出右三角的长度,这是:

斜边长度:=λa[λb[√a2+ b2的]]

通过β-还原的原理,我们具有例如斜边长度3,斜边长度为3的应用是λB[√32+ b2],这是另一个论点的“等待”的函数。 λ-术语斜边长度3可以被视为计算右三角形的斜边的长度的函数,其中一条腿具有长度3.我们发现(斜边长度3)4 - 斜边长度的应用到3然后按预期到4 - 是5。

理解到一个地方函数的多个函数减少的另一种方法是想象一台机器M,它最初通过将多个参数a,b,b中的第一参数a,b,...加载到内存中来启动。 如果在将第一个参数加载到内存后暂停机器,则可以将结果视为等待较少输入的另一个机器MA; 第一个参数现在是固定的。

1.2非拓展性

关于λ-微积分的一个重要哲学问题是其潜在职能概念的问题。 在集合理论中,函数被标准理解为一组参数值对。 更具体地,函数被理解为满足(x,y)∈f和(x,z)ψf意味着y = z的属性的有序对的组f。 如果f是函数和(x,y)∈f,则这意味着函数f将值y分配给参数x。 这是AS-Sets函数的概念。 因此,函数的平等的概念 - AS-lease是平等的QUA集,在标准的扩展性原则下,在它们包含相同的有序对时需要两个函数等同。 换句话说,且仅当它们为相同的参数分配相同的值时,两个函数才是相同的。 从这个意义上讲,函数 - AS-Set是扩展对象。

相反,λ-微积分在工作中的函数的概念是函数被理解为规则的函数:函数是由如何从其参数确定其值的规则给出的。 更具体地,我们可以观察λ-术语λx[m]作为给定x产生m的操作的描述; 抽象术语的身体m本质上是与x有关的规则。 这是函数的概念 - 与规则为规则。 直观地,给定规则M和N,我们不能一般决定λx[m]是否等于λx[n]。 这两个术语可能“表现相同”(具有给出相同的参数的相同值),但可能不清楚显示条款平等所需的资源。 从这个意义上讲,函数 - AS-规则是非扩展对象。

为了将函数的扩展概念与函数的非扩展概念区分开,后者通常被称为“海面”功能概念,部分原因是所涉及的规则的过硬化概念。 该术语在数学逻辑学家和数学哲学家的哲学中尤其占主导地位。 但从语言哲学的角度来看,术语可能有些误导,因为在这种情况下,延伸 - 密集区别略有不同。

在标准可能的哲学语义的框架中,我们将区分延伸和密集功能概念如下。 让我们说,如果它们分配相同的值为这个世界的相同参数,则两个函数在世界范围内扩展到期。 让我们说,只有当它们在每个可能的世界中分配相同的参数时,才有两个函数非常等同。 为了说明,考虑最高山上和喜马拉雅山的功能,最高山上的地球上的最高山地分配了地球上最高的山脉,因为每个参数和喜爱最高的喜马拉雅山的价值分配了最高山喜马拉雅山作为每个论点的价值。 这两种功能是基础等同于(在实际的世界),但没有上统一体。 在实际的世界中,两个函数为每个参数分配相同的值,即everest。 现在考虑一个MT.珠穆朗玛峰不是地球上最高山的世界,而是说,山。拉什莫尔是。 旨在进一步推移这是如此,只是因为山上的山脉高出30.000英尺/ 9.100米,而MT.珠穆朗玛峰,大约是29.000英尺/ 8.800米,仍是喜马拉雅山的最高山。 在这个世界上,最高的山上的地球现在分配了山。Rushmore是对每个论点的价值,而最高山上的喜马拉雅山仍然分配Mt. everest到每个对象。 换句话说,最高山上和最高的喜马拉雅山的基础上是相同的(在实际世界)但没有上乎所不同。

如果它需要在实际世界处于相同的基础上的函数,则函数概念现在可以称为扩展。 并且函数概念可以被归类为且才能且仅当它需要相同的等效函数相同时才被归类为密集。 请注意,这些分类概念性地与数学基础常用的区别不同。 在数学基础上使用的术语上,函数 - as-lease被归类为扩展,因为它们使用了扩展性的公理作为他们的身份标准,而且函数 - 以函数被归类为密普,因为它们依赖于方面依赖规则的密集概念。 在目前可能的世界术语中,功能概念被归类为在可能的世界中基于其行为的扩展或密集。

可能出现概念混乱的问题是,两个术语可能在λ-微分的工作中潜在地通过不同的判决。 要查看此功能,请考虑以下两个功能:

添加一个:=λx[x + 1]添加-两减去一:=λx[[x + 2] -1]

这两个函数显然是等效的:它们在实际世界中分配相同的值。 此外,给定可能的世界语义中的标准假设,这两个功能也非常等同。 如果我们假设数学事实,就像加法和减法的事实一样,他们就是在每个可能的世界中都是相同的感觉,那么我们得到了两个函数对每个可能的世界的参数具有相同的价值。 因此,隐藏函数概念将需要两个功能相同。 然而,在λ-微积分中,我们应该识别两种功能并不清楚。 正式说话,在没有其他一些原则的帮助下,我们不能表明两个λ-术语表示相同的功能。 此外,非正式地发言,就函数的概念 - 根据规则,甚至不清楚我们应该识别它们:这两个术语涉及真正不同的规则,因此我们可能会说他们表示他们表示不同的功能。

允许含有宽容等效功能的函数概念被称为超敏感。 关键是,在可能的世界术语中,λ-微积分的工作中的功能概念可能被认为不像数学基础所说的常见常见一样有意而是有意的但超负力的对比。 请注意,目前尚不清楚一个密室语义框架,如可能的世界框架,甚至可以原则上占非密集功能概念。 在λ - 微积分的语义上,参见第7节。这里的点只是阐明了在哲学话语中发挥的不同术语可能出现的任何概念混淆。

λ-微积分的超高度在其应用中作为不仅是函数的理论而言,但更为一般的n-ary关系时尤为重要。 在此,请参见第9.3节。 它有效地是在这种背景下使其成为有吸引力的工具的λ-微积分的超高度。 然而,应该注意的是,通过假设关于λ-术语平等的额外规律,可以使λ-微积分进行延伸(以及强度)。 在此,请参见第5节。

2.语法

λ-微分的官方语法非常简单; 它包含在下一个定义中。

λ-微积分语言的字母表的定义我们拍摄左右括号,左右方括号,符号'λ'和无限的变量集。 λ-术语的类定义如下:

每个变量都是一个λ术语。

如果m和n是λ-术语,则所以是(mn)。

如果m是λ-term,并且x是一个变量,那么(λx[m])是λ术语。

按“术语”我们总是意味着'λ-term'。 根据规则(2)形成的术语称为应用程序条款。 根据规则(3)形成的术语称为抽象条款。

在处理具有分组符号的正式语言时常见(在我们的情况下左侧和右括号)时,将省略某些括号(即,当它们只能以一种明智的方式重新引入时)。 并置了两个以上的λ-术语是,严格来说是非法的。 为避免常务编写所有必需的括号的乏味,我们采用以下公约:

惯例(左侧的关联):当两个以上的术语M1M2M3 ... MN并置时,我们可以通过将左侧与左键相关联,组M1和M2组合在一起,屈服(M1M2)M3 ... MN; 然后使用M3:((m1m2)m3)... mn等,等等。

因此,该惯例给出了与长度大于2的任何λ-术语的序列的独特读数。

2.1变量,绑定和自由

λ在抽象项中的函数(λx[m])是它在术语M之后立即结合出现的变量。因此,λ类似于万向逻辑的通用和存在量词∀和∃。 一个人可以根据预期的方式定义,类似地定义自由和绑定变量的概念,如下所述。

定义语法函数FV和BV(分别为“自由变量”和“绑定变量”)通过结构诱导在λ-术语上定义:

对于每个变量x,术语m和术语n:

freebound(1)fv(x)= {x} bv(x)=∅(2)fv(mn)= fv(是)∪fv(n)bv(mn)= bv(是)∪bv(n)(3)fv(λx[是])= fv(是) - {x} bv(λx[是])= bv(是)∪{x}

如果fv(m)=∅然后m称为组合器。

条款(3)在两个定义中支持λ绑定变量的意图(确保它们不是免费的)。 注意变量BV和FV之间的差异。

与其他主题一样典型的概念,例如一阶逻辑,人们需要小心问题; 关于替代的休闲态度可能导致句法困难。[1] 我们可以通过采用我们在术语本身的公约中捍卫休闲的态度,但在某种等价方面。 我们现在定义替换,然后放下允许我们避免此类困难的公约。

定义(替换)我们编写'm [x:= n]',表示n的替换为m的自由出现。在λ-inall上的次数上递归的精确定义[2]如下:对于所有术语a,b和m,以及所有变量x和y,我们定义

x [x:=是]≡m

y [x:= m]≡y(y不同于x)

(ab)[x:=是]≡a[x:=是] b [x:=是]

(λx[一个])[x:=是]≡λx[一个]

(λy[a])[x:= m]≡λyλy[a [x:= m]](y不同于x)

该定义的条款(1)简单地说,如果我们要替换M for X,我们就会简单地处理X,那么结果只是M.子句(2)说我们在与X不同的变量时(仅限),但我们要替换X. 条款(3)告诉我们,替代无条件地分配应用。 子句(4)和(5)涉及抽象术语和平行条款(1)和(2)(或相当,条款(2)和(1),相反的顺序):如果抽象项λz[a]的绑定变量z与变量相同我们要做替代的X,那么我们不会执行任何替代(即,替换“停止”)。 这使得拟合M [x:= n]应该表示n的替换为在m中的自由出现。如果m是抽象项λx[a],其绑定变量是x,则x在m中没有自由发生,所以没有要做。 这解释了第4条第4章(5),最后说,如果抽象项的绑定变量与x不同,则至少x有“机会”在抽象项中自由发生,并且替换继续进入抽象项的主体。

定义(绑定变量的变化,α-易转换性)。 如果粗略地,则通过λy[a [x:= y]]替换的任何抽象项λx[a],从术语m从术语m获得术语n。

如果有一系列从M开始并结束N.

公理。 β-转换(用无捕获附带陈述):

(λx[是])n⊳m[x:= n],

不提供在替换到M时,n内没有自由发生的变量。

粗略地,我们需要坚持免费变量仍然自由的原则; 当变量发生威胁要被替换变得束缚时,只需执行足够的α-转换以回避问题。 如果我们记住这一点,我们可以使用λ-微积分,而不担心这些NetTluesome句法困难。 因此,例如,我们无法将功能λx[λy[x(y-5)]]]到参数2y,因为在“2y”替换为“x”时,将由变量绑定运算符“λy”捕获“2y”中的“Y”。 这种替代将产生与预期不同的功能。 但是,通过α转换,我们可以首先将λx[λy[x(y-5)]]转换为λx[λz[x(z-5)]],然后将后一种函数应用于参数2y。 所以但是以下是β-转换的有效使用:(λx[λy[x(y-5)]])2y⊳λyλy[2y(y-5)]我们可以有效地使用β-转换得出结论:(λx[λz[x(z-5)]])2y⊳λz[2y(z-5)]这个例子有助于一个看看β-转换的原因是如此重要。 附带条件与谓词微积分的公理说明中使用的函数没有什么不同,即:∀xφ→φτx,不提供术语替换后术语τ的术语τ中没有的变量。

λ-微积分的语法非常灵活。 人们可以形成各种各样的术语,甚至是XX等自我应用程序。 此类术语乍一看是可疑的; 人们可能怀疑使用此类术语可能导致不一致,并且在任何情况下,人们可能会发现自己达到一个禁止此类术语的工具。 如果要查看某种某种的函数和一组有序对,那么xx中的x将是一个函数(一组有序对),它包含作为元素的元素(x,y),其第一元素为x本身。 但是没有任何设定可以用这种方式包含自己,以免侵犯基础(或规律性)的公理。 因此,从一个设置的理论透视中,这些术语显然是可疑的。 下面可以找到一个这样的工具的简要草图,型理论。 但实际上,这种术语不会导致不一致并在λ-微积分的背景下提供有用的目的。 此外,禁止这样的术语,如理论中,不可自由(例如,没有任何一个无型λ-微积分的表现力丢失)。

2.2组合器

如前所述,组合器是一个λ-术语,没有自由变量。 人们可以直观地了解组合者作为“完全指定”的操作,因为它们没有空闲变量。 有一种在λ-微分的历史中证明的组合器; 下表突出了一些这些特殊的组合器。 可以给予更多更多(并且显然存在无限的组合者),但以下具有简明的定义,并证明了他们的效用。 以下是一些标准λ-术语和组合器的表。

NamedeFinition&Commentssλx[λy[λz[xz(yz)]]]]

请记住,“XZ(yz)”应理解为XZ到YZ的应用程序(XZ)(YZ),因此可以被理解为替代和应用操作员:X和Y之间的Z'intervenes':而不是将x施加到y,而不是将x施加到y之间我们将xz应用于yz.kλx[λy[x]]

KM的值是常量函数,其对任何参数的值只是m.iλx[x]

标识函数.bλx[λy[λz[x(yz)]]]]

回想一下,“XYZ”应理解为(XY)Z,因此该组合器不是琐碎的标识功能.Cλx[λy[λz[xzy]]]

互争吵[λx[λy[x]]

真理值为真。 与K相同。我们稍后会看到真相值的这些表示如何在逻辑和λ-conculus.fλx的混合中发挥作用[λy[y]]

真值False.ωλx[xx]

自申请CombinatorωωΩ

自我申请自我申请组合者。 减少到自己.Yλf[(λx[f(xx)])(λx[f(xx)])]

咖喱矛盾的组合者。 对于每个λ-术语x,我们有:yx⊳(λx[x(xx)])(λx[x(xx)])⊳x((λx[x(xx)])(λx[x(xx)]))第一步还原表明YX减少到施加术语(λx[x(xx)])(λx[x(xx)]),其在第三步骤重复。 因此,Y具有yx和x(yx)减少到公共术语的好奇特性。θ(λx[λf[f(xxf)]))(λx[λf[f(xxf)]])

图灵的定点组合器。 对于每个λ-术语x,θx减小到x(θx),可以用手确认。 (咖喱矛盾的组合者Y没有这个属性。)

以下是本条目中使用的符合符合法公约的表。

注释&Commentsmn函数m对参数n的应用。

通常,括号用于将函数与参数分开,如:'m(n)'。 然而,在λ-微积分中,括号用作分组符号。 因此,写入函数和与另一个相邻的函数是安全的。

PQR函数pq的应用 - 这本身就是函数p的应用到参数q-to r.

(本章完)

相关推荐