TL; DR。绑定的元数学是微妙的:它们看起来微不足道,但不是—无论您是处理(高阶)逻辑还是𝜆微积分。它们是如此微妙,以致于具有约束力的表示形式形成了一个开放的研究领域,并在几年前举办了一场竞赛(POPLmark挑战)。该领域的人们甚至开玩笑说绑定方法的复杂性。
因此,如果您关心元数学(大多数数学家并不关心),则需要处理绑定问题。但是,许多数学家可以安全地将绑定形式化视为“基础”问题。
另一点是,绑定是具有高阶函数的语言中唯一的“新”问题,因为具有绑定的语言的理论只是代数(对于常量)+绑定。米切尔(Mitchell)的“编程语言基础”实际上是以这种顺序呈现事物的,并且颇具启发性。
我知道他的工作如何为λ演算铺平道路,以及“它”对总体计算和函数编程的影响。我的问题主要针对的是λ微积分创建之前和Schönfinkel论文发表之后的时间。
我一定想念一些东西,但这句话似乎没什么作用。在高阶逻辑中进行绑定和在λ微积分中进行绑定似乎很困难,因此,只要人们关心高阶逻辑,就必须处理绑定。我偏向于使用基于Curry-Howard同构的定理证明,这些证明只是通过简单地执行类型理论(其中类型是公式,程序是证明项)来实现逻辑,因此我只处理绑定一次。
另一方面,IIRC当时确实很少有人关心Schönfinkel的工作-部分是因为他(没有)发表它-这些论文主要是由同事根据他所做的研究撰写的(请参阅此处,第4页) ; 然后,库里独立地重新发现了这一理论。
警告:我不是历史学家,而是PL的博士生,所以我的观点是现代的(希望是准确的)观点。
编辑:
为什么绑定比较细微,更具体一点
它有两个方面-首先,实现它很困难。其次,超数学是证明操纵的数学:这种操纵通常是自动的,也就是说,它是一种算法 -因此,从本质上讲,您面临实现的所有困难,并为其提供证明。下面我举个例子。这些示例具有现代观点-它们实际上是形式化的证明。但是,只要您不作弊,某些困难将扩展到准确的手动打样。
这表明Schönfinkel只是简单地为这个问题提供了第一个解决方案,但这远非确定的。
由于存在阴影,实现它很微妙
(λ ˚F。F 1 + f 2 )(λ X 。X )(λ X 。X )1 + (λ X 。X )2 (λ ˚FX 。F(fX ))(λ 克 ÿ。G ÿ)z (λ 克ÿ。G ÿ)(λ 克 ÿ。G ÿ)z (λ ÿ。(λ 克ÿ。G ÿ)ÿ )z
λ X ÿ。Xÿλ ÿ。ÿλ ÿ′。ÿ
更糟糕的是,当您已经知道问题时,很难构造幼稚算法的反例,更不用说不知道该问题了。几乎正确的算法中的错误通常多年未发现。我听说,即使是优秀的学生,也通常无法(靠自己)提出避免捕获替代的正确定义。实际上,博士生(包括我在内)和教授都无法摆脱这些问题。
这就是为什么有些人(包括本杰明·皮尔斯撰写的关于编程语言,类型和编程语言的最佳教科书之一)推荐无名表示的原因(尽管使用了不完全的组合逻辑,但使用了deBrujin索引)。
关于它的证明是微妙的
事实证明,如上所述,关于绑定的证明并不比实现简单。当然,存在正确的算法,并且存在关于它们的证明,但是没有先进的设备,对于每种使用装订的语言,您都需要重复这些证明,而如果您使用定义在笔和纸上装订的话,这些证明将非常庞大且令人讨厌。
乙一种一种乙乙
接下来,我查看了“最好的例子,如果您尝试对标准定义进行形式化会出问题”。Russell O'Connor(在此站点上的人)在Coq(上述类型的定理证明者)中形式化了第一个Gödel不完全性定理—并且该定理在另一个逻辑中(用的语法为第一个逻辑编码为数字)。他使用了纸上使用的定义,并将其直接形式化。搜索“替代”或“变量”,并计算它们在参考问题时出现的频率,以获得印象。
http://r6.ca/Goedel/goedel1.html
我在工作中从未使用过这些定义,但是每种替代方法都有一些缺点。