×

用于合同验证和反驳的高阶符号执行。 (英语) Zbl 1418.68061号

摘要:通过赋予符号执行一个高阶符号值的概念,我们提出了一种新的方法来自动推理高阶程序。为了验证我们的方法,我们使用它来开发和评估一个系统,用于验证和反驳功能语言中组件的行为软件契约,我们称之为软合同验证在此过程中,我们发现行为契约和高阶符号执行之间存在互利关系。合同通过提供丰富的规范语言作为符号高阶值的基础来帮助符号执行;责备理论支持模块化验证,并导致以下定理不能怪经过验证的组件合同的运行时监控使软的通过验证,已验证和未验证的组件可以安全交互。相反,符号执行通过提供编译时验证和从反例到验证的自动测试用例生成来帮助合同。象征性执行与合同之间的这种关系产生了一个良性循环,鼓励合同的逐步使用。
我们的方法能够分析一级契约、递归数据结构、未知函数和对控制流敏感的值的细化,这些都是动态语言中的惯用法。它有效地利用了非自助解算器来决定问题,而无需大量编码。对于基本类型值的一阶解算器而言,反例搜索是合理且相对完整的,反例报告为具体值,包括函数。因此,它可以为高阶程序的自动验证和错误查找工具奠定基础。该方法在自己的基准上与一系列现有工具(包括类型系统、流分析器和模型检查器)竞争。我们构建了一个原型来分析用Racket编写的程序,并报告其在验证和反驳合同方面的有效性。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68甲19 其他编程范式(面向对象、顺序、并发、自动等)

软件:

艾菲尔;CVC4型
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] 艾肯纳。,WimmersE公司。L.和LakshmanT。K.(1994)使用条件类型的软类型。在第21届ACM SIGPLAN-SIGACT编程语言原理研讨会的会议记录中。ACM-纽约,美国纽约,第163-173页。
[2] 奥斯汀。H.、迪斯尼和弗拉纳甘。(2011年10月)语言扩展的虚拟值。2011年ACM面向对象编程系统语言和应用国际会议论文集。ACM,第921-938页。
[3] BarrettC.、。,康威公司。,DetersHadarean L.、JovanovićD.、。,KingT.公司。,雷诺公司蒂内利克。(2011)Cvc4。在计算机辅助验证国际会议上。施普林格,第171-177页。
[4] 卡达尔C。,邓巴D&D恩格尔D。(2008)KLEE:为复杂系统程序自动生成高覆盖率测试。第八届USENIX操作系统设计与实现会议记录。USENIX协会,第209-224页。
[5] 卡达尔C。,加内什五世。,帕洛夫斯基。M.、DillD。L.和EnglerD。R.(2006)EXE:自动生成死亡输入。第13届ACM计算机和通信安全会议记录。ACM,第322-335页。
[6] 卡特赖特公司FaganM。(1991)软键入。1991年ACM SIGPLAN编程语言设计和实现会议记录。ACM,第278-292页。
[7] 卡特彼勒R&费利森。(1996年6月)通过软键入进行程序验证。ACM计算。调查28(2)349-351.10.1145/234528.234747·doi:10.145/234528.234747
[8] 丘吉尔。,Herman D.&公司贾拉。(2012a,10月)JavaScript的依赖类型。《ACM面向对象编程系统语言和应用国际会议论文集》。ACM,第587-606页。
[9] 丘吉尔。,RondonP。M.和JhalaR。(2012b,1月)嵌套优化:鸭子类型的逻辑。第39届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。ACM,第231-244页·Zbl 1321.68189号
[10] 克莱森K.&Hughes J。(2000)QuickCheck:用于Haskell程序随机测试的轻量级工具。第五届ACM SIGPLAN函数编程国际会议论文集。ACM,第268-279页。
[11] 迪穆拉斯C。,佛罗里达州芬德勒R.B.&费利森。(2011年1月)纠正对合同的指责:不再成为替罪羊。第38届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。ACM,第215-226页·Zbl 1284.68176号
[12] 迪斯尼。(2013年7月)合同。咖啡。
[13] 迪斯尼。,弗拉纳甘公司麦卡锡J。(2011年9月)临时高阶合同。在ICFP’11第16届ACM SIGPLAN函数编程国际会议上。ACM,第176-188页·Zbl 1323.68068号
[14] FähndrichM.&洛戈佐夫。(2011)带有抽象解释的静态合同检查。2010年面向对象软件形式验证国际会议论文集。施普林格,第10-30页·Zbl 1308.68033号
[15] Findler R.B.&Felleisen M公司。(2002年9月)高阶函数的合同。在ICFP'02:第七届ACM SIGPLAN函数编程国际会议的会议记录。ACM,第48-59页·Zbl 1322.68039号
[16] 弗拉纳甘公司费利森。(1999年3月)基于成分集的分析。ACM事务处理。程序。语言系统21(2)370-416.10.1145/316686.316703·数字对象标识代码:10.1145/316686.316703
[17] 佛罗里达州。,扁平M。,克里希纳穆提斯。,Weirich S.&公司费利森。(1996年5月)捕捉程序不变量网络中的错误。在PLDI’96:ACM SIGPLAN 1996年编程语言设计和实现会议记录。ACM,第23-32页。
[18] 扁平金属与PLT(2010)参考:支架。技术报告PLT-TR-2010-1,PLT公司。
[19] Foster J.S.、TerauchiT和艾克纳。(2002年5月)流敏感类型限定符。在ACM SIGPLAN编程语言设计和实现会议记录中。ACM,第1-12页。
[20] FreemanT.&公司PfenningF。(1991年6月)ML的精化类型。《1991年ACM SIGPLAN编程语言设计与实现会议论文集》。ACM,第268-277页。
[21] 戈德弗里德。,克拉伦德(KlarlundN.&)森克。(2005年6月)DART:直接自动化随机测试。2005年ACM SIGPLAN编程语言设计与实现会议记录。ACM,第213-223页。
[22] Greenberg M.、PierceB。C.和Weirich S。(2010)合同已明确。在POPL’10:第37届ACM SIGPLAN-SIGCT编程语言原理年度研讨会论文集。ACM,第353-364页·Zbl 1312.68133号
[23] 海德格公司蒂曼P。(2010)合同驱动的JavaScript代码测试。在对象、模型、组件、模式中。柏林-海德堡:施普林格,第154-172页。
[24] HengleinF公司。(1994年6月)动态类型:句法和证明理论。科学。计算。项目22(3)197-230。荷兰阿姆斯特丹爱思唯尔,10.1016/0167-6423(94)00004-1286543·Zbl 0809.68083号 ·doi:10.1016/0167-6423(94)00004-2
[25] HickeyR.、。,FogusM.&公司贡献者(2013年7月)。核心合同。
[26] 约翰逊J。I.和Van HornD。(2014年10月)抽象控制。第十届ACM动态语言研讨会论文集。ACM,第11-22页。
[27] 川口。,RondonP.和贾拉。(2010)Dsolve:通过液体类型进行安全验证。在计算机辅助验证中。柏林-海德堡:施普林格,第123-126页。
[28] 克莱因C。,扁平金属与FindlerR.B.(2010)高阶有状态程序的随机测试。《ACM面向对象编程系统语言和应用国际会议论文集》。ACM,第555-566页。
[29] KnowlesK.&弗拉纳根C。(2010年2月)混合型检查。ACM事务处理。程序。语言系统32(2)第6条。
[30] 小林寺。(2009a)模型检查高阶函数。第11届ACM SIGPLAN声明性编程原理与实践会议记录。ACM,第25-36页。
[31] 小林市。(2009b,一月)用于验证高阶程序的类型和高阶递归方案。第36届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。ACM,第416-428页·Zbl 1315.68099号
[32] 小林寺伊加拉什亚。(2013)使用递归类型对高阶程序进行模型检查。在欧洲编程研讨会上。柏林-海德堡:施普林格,第431-450页·Zbl 1381.68170号
[33] 小林寺OngC公司。H.L.(2009年8月)相当于高阶递归方案的模态Mu-Calculus模型检查的一种类型系统。第24届IEEE计算机科学逻辑年会论文集。IEEE,第179-188页。
[34] 小林寺。,周六及UnnoH公司。(2011年6月)谓词抽象和CEGAR用于高阶模型检查。第32届ACM SIGPLAN编程语言设计与实现会议论文集。ACM,第222-233页。
[35] 小林寺。,田口&UnnoH公司。(2010年1月)用于程序验证的高阶多参数树变换器和递归方案。第37届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。ACM,第495-508页·Zbl 1312.68136号
[36] 梅尼尔普。,Findler R.B.&Felleisen M公司。(2006年1月)基于合同的模块化集分析。在POPL'06:第33届ACM SIGPLAN-SIGACT编程语言原理研讨会的会议记录。ACM,第218-231页·Zbl 1369.68147号
[37] 梅耶尔B。(1991年10月)埃菲尔:语言。普伦蒂斯·霍尔·Zbl 0779.68013号
[38] 穆拉。D.&BjørnerN。(2008)Z3:一个高效的SMT求解器。《软件理论与实践学报》,第14届国际系统构建与分析工具与算法会议。Springer-Verlag,第337-340页。
[39] NguyênP。C.、Tobin-HochstadtS.和范霍恩。(2014)软合同验证。第19届ACM SIGPLAN函数编程国际会议论文集。ACM,第139-152页·Zbl 1346.68062号
[40] NguyínP。C.和Van HornD。(2015)相对完整的高阶项目反例。第36届ACM SIGPLAN编程语言设计与实现会议论文集。ACM,第446-456页。
[41] OngC公司。H.L.(2006)关于高阶递归方案生成的模型检查树。第21届IEEE计算机科学逻辑年会(LICS’06)。IEEE,第81-90页。
[42] OngC公司。H.L.和RamsayS。J.(2011年1月)用模式匹配的代数数据类型验证高阶函数程序。第38届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。ACM,第587-598页·Zbl 1284.68193号
[43] PloschR公司。(1997年12月)Python合同设计。亚太联合软件工程会议论文集。IEEE,第213-219页。
[44] RondonP。M.、KawaguciM和贾拉。(2008)液体类型。2008年ACM SIGPLAN编程语言设计与实现会议记录。ACM,第159-169页。
[45] 塞德尔。,VazouN.&贾拉。(2015)类型目标测试。在程序设计语言和系统中。柏林-海德堡:施普林格,第812-836页。
[46] ShiversO公司。(1988)方案中的控制流分析。在PLDI’88:ACM SIGPLAN 1988编程语言设计与实现会议论文集。ACM,第164-174页。
[47] 圣穆尔V。,Tobin-HochstadtS。,扁平金属与费利森。(2012)键入数字塔。在声明语言的实际方面。柏林-海德堡,施普林格,第289-303页。
[48] 斯特里克兰德。S.、Tobin-HochstadtS.、。,Findler R.B.&FlattM公司。(2012年10月)随行人员和模拟人员:合理干预的运行时支持。《ACM面向对象编程系统语言和应用国际会议论文集》。ACM,第943-962页。
[49] 特劳奇。(2010)反例中的从属类型。第37届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。ACM,第119-130页·Zbl 1312.68041号
[50] Tobin-HochstadtS.和费利森。(2010年9月)非类型化语言的逻辑类型。在ICFP’10:函数式编程国际会议上。ACM,第117-128页。
[51] Tobin-HochstadtS。,圣穆尔V。,Culpiper R.、FlattM.和费利森。(2011年6月)语言作为图书馆。第32届ACM SIGPLAN编程语言设计与实现会议论文集。ACM,第132-141页。
[52] Tobin-HochstadtS.和范霍恩。(2012)通过合同进行的更高阶符号执行。《ACM面向对象编程系统语言和应用国际会议论文集》。ACM,第537-554页。
[53] TsukadaT.&小林市。(2010)无类型递归方案和无限交集类型。第13届软件科学和计算结构基础国际会议论文集。施普林格出版社,第343-357页·Zbl 1284.68139号
[54] 范霍恩&MightM公司。(2010年9月)抽象抽象机器。第15届ACM SIGPLAN函数编程国际会议论文集。ACM,第51-62页·Zbl 1323.68231号
[55] 范霍恩&MightM公司。(2012)抽象机器的系统抽象。功能编程杂志22(专刊4-5)剑桥大学出版社,705-746.10.1017/S095679681200238S0956781200238·Zbl 1252.68123号 ·doi:10.1017/S095679681200238
[56] 瓦祖。,RondonP.和贾拉。(2013)抽象精炼类型。在欧洲编程研讨会上。柏林-海德堡:施普林格,第209-228页·Zbl 1381.68038号
[57] 瓦祖。,塞德尔。L.、JhalaR.、。,VytinitisD.和琼斯。P.(2014年8月)Haskell的精炼类型。第19届ACM SIGPLAN函数编程国际会议论文集。ACM,第269-282页·Zbl 1345.68080号
[58] VytinitisD。,琼斯。P.、ClaessenK.和RosénD。(2013)Halo:Haskell通过指称语义转向逻辑。第40届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。ACM,第431-442页·Zbl 1301.68085号
[59] 令状A。K.和Cartwright R。(1997年1月)Scheme的实用软类型系统。ACM事务处理。程序。语言系统19(1)ACM,87-152.10.1145/239912.239917·数字对象标识代码:10.1145/239912.239917
[60] 谢伊&艾克纳。(2005年1月)使用布尔可满足性的可伸缩错误检测。第32届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。ACM,第351-363页·Zbl 1369.68162号
[61] 许继。N.(2012)通过符号简化进行混合合同检查。ACM SIGPLAN 2012部分评估和程序操作研讨会会议记录。ACM,第107-116页。
[62] 许继。N.、Peyton Jones、S.和Claessen。(2009)Haskell的静态合同检查。在POPL'09:第36届ACM SIGPLAN-SIGACT编程语言原理年度研讨会论文集。ACM,第41-52页·Zbl 1315.68107号
[63] 杨杰。,TwoheyP.公司。,EnglerD.&公司穆苏瓦提姆。(2004)使用模型检查查找严重的文件系统错误。第六届操作系统设计与实现研讨会论文集。USENIX,第273-287页。
[64] ZhuH.&贾加纳森。(2013)ML的合成和轻量级依赖型推理。在验证、模型检查和抽象解释会议上,Springer,295-314·Zbl 1426.68036号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。