对于正确性证明,我正在寻找的程序等价的可用概念为Barendregt的清纯型系统(的PTS); 缺少足够的特定类型系统。我的目标只是使用概念,而不是出于自身的原因对其进行研究。
这个概念应该是“ 伸展 ” -特别是要证明,应该足以证明牛逼1表示适当类型的所有值 v。
指称等价
指称等价很容易满足所有正确的引理,但是任意PTS的指称语义似乎颇具挑战性-对于系统F来说似乎已经很困难。
上下文/观察等价
那么显然的替代方法是各种形式的上下文等效(如果没有基础上下文可以区分它们,则两个术语是等效的),但是其定义不能立即使用。各种引理并不是很容易证明的。是否已为PTS证明过?或者,该理论是“显而易见的扩展”,还是有理由相信该理论会明显不同?
编辑:我没有说什么很难。
简单的部分:定义
定义等效性并不难,并且在许多论文中都有定义(至少从Plotkin 1975对PCF的研究开始,如果不是更早的话-来源可能是1968年Morris的博士学位论文)。我们如果对所有地面上下文Ç,c ^ [ 吨1 ] ≃ Ç [ 吨2 ] -也就是说,c ^ [ 吨1 ]和c ^ [ 吨2 ]给出相同的结果。你有几个选择,这里有很多的替代品:例如,在强正火的语言,如果你有土黄的地面类型,你可以说,地面环境是那些回报土黄,然后意味着一个和b取相同的数字。对于非终止,对于合理的语言,使用“ X终止”作为观察就足够了,因为如果两个程序在观察终止时是等效的,那么在观察结果时它们也是等效的。
难点:证明
但是,这些论文通常没有说明实际使用此定义有多困难。下面的所有参考文献都显示了如何解决该问题,但是所需的理论比人们想象的要难。我们如何证明?我们是否真的根据情况进行案例分析和归纳?你不想那样做。
正如马丁·伯杰(Martin Berger)指出的那样,您想使用双仿真(由Pitts完成)或逻辑等价关系(Harper简称为“逻辑等价”)。
最后,如何证明上述定义的可扩展性?
Harper通过相当聪明和逻辑关系,在10页的System T中解决了这些问题。皮茨需要更多。某些语言更加复杂。
如何处理
实际上,我很想以一种猜想的PTS等价理论有条件地提出自己的证明,但是实际的理论需要不平凡的论据,因此我不确定这种猜想的可能性如何。
我知道(尽管没有详细介绍)以下作品:
- Andrew Pitts(例如,在扩展系统F的ATTAPL中,以及几篇论文中,例如58页的“基于操作的程序等效理论”)。
- 编程语言的实用基础(第47-48章)受到了Pitts的启发(但声称有更简单的证明)。
- 程序等效的逻辑研究。我找不到英文摘要,但它似乎在副作用(参考)上花费了很多精力,这似乎是一种正交并发症。