×

一个经过验证的高阶取消修正优化框架。 (英语) Zbl 1209.68106号

摘要:函数取消关联是函数编程语言高效执行的一项重要优化。此优化将curried函数替换为未嫁接的多参数函数,同时保留评估部分应用程序的能力。许多编译器都很好地理解和实现了一阶解rrying(当前函数仅在其定义的静态范围内进行优化),但它对高阶函数的扩展(也可以对高阶函数的参数和结果执行解rrying)具有挑战性。本文开发了一个通用框架,将高阶取消纠错优化表示为强制的类型定向插入,并证明了其正确性。证明使用了逐步归纳的逻辑关系,并使用Coq证明助手实现了完全机械化。

MSC公司:

68甲18 函数编程和lambda演算
PDF格式BibTeX公司 XML格式引用
全文: 内政部 哈尔

参考文献:

[1] Abadi,M.、Cardelli,L.、Curien,P.L.、Lévy,J.J.:显式替换。J.功能。程序。1(4), 375–416 (1991) ·Zbl 0941.68542号 ·doi:10.1017/S0956796800000186
[2] 阿卡尔(Acar,U.A.)、艾哈迈德(Ahmed,A.)、布鲁姆(Blume,M.):强制性自调整计算。摘自:第35届程序设计语言原理研讨会,第309-322页。ACM,纽约(2008)·兹比尔1295.68075
[3] Aczel,P.:归纳定义简介。收录:Barwise,J.(编辑)《数学逻辑手册》。《逻辑学和数学基础研究》,第90卷,第739-782页。荷兰北部,阿姆斯特丹(1997)
[4] Ahmed,A.J.:可变状态的类型语义。博士论文,。普林斯顿大学(2004)
[5] Ahmed,A.J.:递归和量化类型的阶梯式句法逻辑关系。摘自:《编程语言与系统》,第15届欧洲编程研讨会,ESOP 2006。计算机科学课堂讲稿,第3924卷,第69-83页。柏林施普林格出版社(2006)·Zbl 1178.68146号
[6] Appel,A.W.:基础校对代码。收录于:《2001年计算机科学中的逻辑》,第247-258页。IEEE计算机学会,Los Alamitos(2001)
[7] Appel,A.W.,McAllester,D.A.:基本校对代码的递归类型索引模型。ACM事务处理。程序。语言系统。23(5), 657–683 (2001) ·doi:10.1145/504709.504712
[8] 艾德米尔,B.E.,博哈农,A.,费尔贝恩,M.,福斯特,J.N.,皮尔斯,B.C.,苏厄尔,P.,维蒂尼奥蒂斯,D.,瓦什伯恩,G.,魏里奇,S.,兹丹塞维奇,S.:大众的机械化元理论:POPLmark挑战。In:关于高阶逻辑中定理证明的国际会议(TPHOL)。计算机科学课堂讲稿,第3603卷,第50-65页。柏林施普林格出版社(2005)·Zbl 1152.68516号
[9] Bertot,Y.,Casteéran,P.:交互式定理证明和程序开发——Coq'Art:归纳构造的微积分。EATCS理论计算机科学课文。施普林格,柏林(2004)·Zbl 1069.68095号
[10] Cardone,F.,Hindley,J.R.:λ-微积分和组合逻辑的历史。收录:Gabbay,D.M.,Woods,J.(编辑)《从罗素到教堂的逻辑》。逻辑史手册,第5卷。荷兰北部,阿姆斯特丹(2009)
[11] Coq开发团队:Coq证明助理。软件和文档位于http://coq.inia.fr/ (1989–2009)
[12] 库西诺,G.,居里,P.L.,莫尼,M.:范畴抽象机器。科学。计算。程序。8(2), 173–202 (1987) ·Zbl 0634.68078号 ·doi:10.1016/0167-6423(87)90020-7
[13] Curry,H.B.,Feys,R.:组合逻辑,第一卷,北荷兰,阿姆斯特丹(1958)。第3版。1974年·Zbl 0081.24104号
[14] Dargaye,Z.:Décurryfication certificate e e。摘自:法语应用杂志(JFLA'07,第119-134页)。INRIA,Rocquencourt(2007年)
[15] Di Cosmo,R.:类型同构:从Lambda微积分到信息检索和语言设计。Birkhauser,巴塞尔(1995)·Zbl 0819.03006号
[16] Felleisen,M.,Friedman,D.P.:控制操作符,SECD机器和{\(\lambda\)}-演算。在:编程概念的形式描述III,第131-141页。荷兰北部,阿姆斯特丹(1986年)
[17] Flanagan,C.:混合型检查。摘自:第33届程序设计语言原理研讨会,第245-256页。ACM,纽约(2006)·Zbl 1370.68202号
[18] Hannan,J.,Hicks,P.:高阶数提升。摘自:1998年函数式编程国际会议,第27-38页。ACM,纽约(1998)·兹比尔1369.68101
[19] Hannan,J.,Hicks,P.:高阶解绑。高-订购符号。计算。13(3), 179–216 (2000) ·Zbl 0972.68037号 ·doi:10.1023/A:1010006229549
[20] Henglein,F.:动态类型:句法和证明理论。科学。计算。程序。22(3), 197–230 (1994) ·Zbl 0809.68083号 ·doi:10.1016/0167-6423(94)00004-2
[21] Henglein,F.,Jörgensen,J.:形式上的最佳拳击。在:第21届程序设计语言原理研讨会,第213–226页。ACM,纽约(1994)
[22] Krivine,J.L.:一台俗称的lambda-calculus机器。高-订购符号。计算。20(3), 199–207 (2007) ·Zbl 1130.68057号 ·doi:10.1007/s10990-007-9018-9
[23] 兰丁,P.J.:表达式的机械评估。计算。J.6,308–320(1964年)·Zbl 0122.36106号
[24] Leroy,X.:ZINC实验:ML语言的经济实现。技术报告117,INRIA(1990)
[25] Leroy,X.:未装箱对象和多态类型。摘自:第19届程序设计语言原则研讨会,第177-188页。ACM,纽约(1992)
[26] Letouzey,P.:辅酶提取:综述。摘自:《逻辑与算法理论》,第四届欧洲可计算性会议,CiE 2008。计算机科学课堂讲稿,第5028卷,第359-369页。柏林施普林格出版社(2008)·Zbl 1142.68498号
[27] Marlow,S.,Peyton Jones,S.:快速烹饪:push/enter vs eval/apply for high-order languages。J.功能。程序。16(4–5), 375–414 (2006) ·Zbl 1122.68023号 ·doi:10.1017/S0956796806005995
[28] Necula,G.C.:防卡码。摘自:第24届程序设计语言原理研讨会,第106-119页。ACM,纽约(1997)
[29] Necula,G.C.:优化编译器的翻译验证。摘自:《程序设计语言设计与实现2000》,第83-95页。ACM,纽约(2000年)
[30] Peyton Jones,S.L.:在库存硬件上实现惰性函数语言:无脊椎无标签的G-machine。J.功能。程序。2(2), 127–202 (1992) ·Zbl 1159.68389号 ·doi:10.1017/S0956796800000319
[31] Pnueli,A.,Siegel,M.,Singerman,E.:翻译验证。收录:《系统构建和分析的工具和算法》,TACAS’98。计算机科学课堂讲稿,第1384卷,第151-166页。柏林施普林格(1998)
[32] Shivers,O.:方案中的控制流分析。收录于:《程序设计语言设计与实现》1988年,第164-174页。ACM,纽约(1988年)
[33] Siek,J.G.,Taha,W.:函数式语言的渐进式键入。摘自:Scheme and Functional Programming 2006,第81–92页。技术报告TR-2006-06,芝加哥大学(2006年)
[34] Statman,R.:逻辑关系和类型化{\(lambda\)}演算。Inf.Control 65(2/3),85–97(1985)·Zbl 0594.03006号 ·doi:10.1016/S0019-9958(85)80001-2
[35] Thatte,S.R.:准静态键入。摘自:第17届程序设计语言原理研讨会,第367-381页。ACM,纽约(1990年)
[36] Tristan,J.B.,Leroy,X.:翻译验证器的形式验证:指令调度优化的案例研究。摘自:第35届程序设计语言原理研讨会,第17-27页。ACM,纽约(2008)·Zbl 1295.68074号
[37] Wells,J.B.,Dimock,A.,Muller,R.,Turbak,F.:多态和多变量流类型的演算。J.功能。程序。12(3),183–227(2002)·Zbl 1005.68042号 ·doi:10.1017/S095679680104245
[38] Wright,A.K.,Cartwright,R.:一个实用的方案软类型系统。ACM事务处理。程序。语言系统。19(1), 87–152 (1997) ·数字对象标识代码:10.1145/239912.239917
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。