×

诺克严格性分析的安全性。 (英语) 兹比尔1153.68012

小结:本文证明了在Clean编译器中实现的Nöcker严格性分析方法的正确性,这是一种基于操作语义的惰性函数语言严格性分析的有效方法。我们从两个方面改进了Clark、Hankin和Hunt在抽象归约规则正确性方面所做的工作。我们的正确性证明基于函数核心语言和上下文语义,从而证明了更广泛的基于严格性的优化是正确的,并且我们的方法充分考虑了循环检测规则,这有助于加强Nöcker的严格性分析。
我们的算法SAL是在函数核心语言LR中对Nöcker的严格性分析算法的重新表述。这是一个具有case、构造函数、letrec和seq的高阶按需调用lambda演算,它在严格性分析期间通过Top或Inf等集合常量进行扩展,表示表达式集,这表明了不同的评价要求。还可以通过具有最大不动点语义的递归方程定义新的集合常量。LR的操作语义是一种小步骤语义。表达式的相等性由上下文语义定义,该上下文语义观察表达式的终止。基本上,SAL是一个非终止检查程序。证明其正确性,进而证明Nöcker的严格性分析主要基于对评估长度的准确分析,即WHNF的正态降阶序列。主要衡量标准是评价中“基本”减少的数量。
我们的工具和结果为按需调用lambda calculi、函数编程语言中共享的作用以及一般的严格性分析提供了新的见解。正确性结果为Nöcker在Clean中的严格性分析以及在Haskell中的使用提供了基础。

MSC公司:

68甲18 函数编程和lambda演算
68N20型 编译与解释理论

软件:

哈斯克尔
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 内政部:10.1007/3-540-45699-6_8·doi:10.1007/3-540-45699-68
[2] 内政部:10.1016/0304-3975(75)90017-1·Zbl 0325.68006号 ·doi:10.1016/0304-3975(75)90017-1
[3] 内政部:10.1017/S0960129500003066·Zbl 0955.68024号 ·doi:10.1017/S0960129500003006
[4] Burn,程序作为数据结构。第42页–(1985)
[5] 巴伦德雷格特,兰姆达微积分。它的语法和语义。(1984) ·Zbl 0551.03007号
[6] 内政部:10.1016/0304-3975(94)90014-0·Zbl 0795.68129号 ·doi:10.1016/0304-3975(94)90014-0
[7] 巴德,术语改写和所有这些。(1998) ·Zbl 0948.68098号 ·doi:10.1017/CBO9781139172752
[8] Peyton,《功能编程》,格拉斯哥,1994年。第184页–(1994)
[9] 阿里奥拉,编程语言原理。第233页–(1995)
[10] 内政部:10.1017/S0956796802004331·Zbl 1037.68042号 ·doi:10.1017/S0956796802004331
[11] 内政部:10.1016/0304-3975(94)00185-L·Zbl 0873.68016号 ·doi:10.1016/0304-3975(94)00185-L
[12] Peyton,Haskell 98语言与图书馆。(2003) ·Zbl 1067.68041号
[13] 内政部:10.1006/inco.1997.2651·Zbl 0892.68015号 ·doi:10.1006/inco.1997.2651
[14] 帕特森,静态分析研讨会(1996年)
[15] DOI:10.1016/S0168-0072(01)00104-X·Zbl 1019.03011号 ·doi:10.1016/S0168-0072(01)00104-X
[16] Abramsky,声明语言的抽象解释(1987)
[17] Pape,函数语言的实现(IFL’98),伦敦,第155页–(1998)
[18] 数字对象标识码:10.1145/165180.165219·数字对象标识代码:10.1145/165180.165219
[19] 否?《并行体系结构与语言欧洲会议录》(parle’91)第202页–(1991)·doi:10.1007/3-540-54152-7_66
[20] 莫兰,《协调》,99年。计算机科学课堂讲稿第85页–(1999)
[21] 内政部:10.1145/292540.292547·数字对象标识代码:10.1145/292540.292547
[22] 内政部:10.1016/0304-3975(76)90009-8·Zbl 0335.02016号 ·doi:10.1016/0304-3975(76)90009-8
[23] Wadler,声明语言的抽象解释(1987)
[24] DOI:10.1007/BF01018827·Zbl 05478827号 ·doi:10.1007/BF01018827
[25] van,术语图改写-理论与实践(1993)
[26] 内政部:10.1145/99370.99390·数字对象标识代码:10.1145/99370.99390
[27] Kennaway律师。RTA 95。第257页–(1993)
[28] Jensen,程序设计语言原理研讨会。第209页–(1998)
[29] Gordon,函数编程,格拉斯哥,1994年。第78页–(1994)·Zbl 0841.68022号
[30] DOI:10.1051/ita:2007010·Zbl 1146.68353号 ·doi:10.1051/ita:2007010
[31] 内政部:10.1016/S0167-6423(96)00043-3·兹伯利0941.68021 ·doi:10.1016/S0167-6423(96)00043-3
[32] 内政部:10.1016/0304-3975(92)90014-7·Zbl 0764.68094号 ·doi:10.1016/0304-3975(92)90014-7
[33] 内政部:10.1006/inco.1998.2773·Zbl 1045.68525号 ·doi:10.1006/inco.1998.2773
[34] Cousot,第四届ACM编程语言原理研讨会会议记录。(1977)
[35] DOI:10.1016/S0304-3975(00)00348-0·Zbl 0984.68028号 ·doi:10.1016/S0304-3975(00)00348-0
[36] 内政部:10.1007/3-540-36377-7_4·doi:10.1007/3-540-36377-74
[37] 伯恩,《懒惰的函数语言:抽象解释和编译》。(1991) ·Zbl 0809.68079号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。