用Letrec模拟Call-by-Need Lambda-Calculus,Case,构造函数和Seq第条作者:Manfred Schmidt-Schauß;大卫·萨贝尔; 埃琳娜·马卡索娃
空##0000-0002-5109-3273##空
曼弗雷德·施密特·沙乌;大卫·萨贝尔;埃琳娜·马卡索娃
本文展示了应用相似性的几个版本的等价性和上下文近似,因此也具有应用的双重相似性和上下文等价,在LR中,确定性的按需调用lambda演算使用由数据构造函数、case表达式和Haskell扩展的letrec顺序运算符。LR为Haskell核心语言的非类型化版本建模。这个双相似性的使用简化了微积分中的等价证明并开辟了一条途径为了更方便地证明程序转换的正确性。证据是通过一个完全抽象和抽象的转移到一个叫名字演算中,这是Abramsky懒惰lambda演算的扩展。在后者中我们的相似性和上下文近似的演算等价性可以是以豪的方法显示。相似性根据归纳定义的相似性。call-by-need-letrec的翻译将演算转换为扩展的call-by-name lambda演算是两种翻译。第一个翻译用一个调用名策略及其正确性通过使用无限树来证明它通过展开letrec表达式出现。第二次翻译使用多不动点组合子及其对letrec-expressions进行编码通过比较两种计算的约简,从语法上证明了其正确性。A类本文的进一步结果是上述计算之间的同构,这也是letrec-free表达式上的一个标识。
第11卷第1期
发布日期:2015年3月16日
进口日期:2011年10月26日
关键词:计算机科学-计算机科学中的逻辑