×

用于生成验证条件的通用中间表示。 (英语) Zbl 1473.68051号

Falaschi,Moreno(编辑),基于逻辑的程序合成和转换。2015年7月13日至15日在意大利锡耶纳举行的2015年LOPSTR第25届国际研讨会。修订了选定的论文。查姆:斯普林格。勒克特。注释计算。科学。9527, 227-243 (2015).
摘要:作为计算机辅助验证平台的一部分,我们提出了一种程序的中间表示,它既独立于语言,又适合生成验证条件。我们展示了有多少命令语言和函数语言可以被翻译成这种通用的中间表示,以及生成的条件如何反映原始程序的公理语义。在这个表示级别上,属于原始程序的递归函数的循环不变量和前置条件由放置在有向图的某些边上的断言表示。
本文定义了泛型表示,简述了变换算法,并描述了如何计算不变量应该放置的位置。假设不变量已经确定,无论是手动还是平台辅助,都会显示验证条件是如何生成的。一个运行示例说明了该过程。
关于整个系列,请参见[Zbl 1326.68017号].

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
60年第68季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Ahrendt,W.、Beckert,B.、Bruns,D.、Bubel,R.、Gladisch,C.、Grebing,S.、Hähnle,R.,Hentschel,M.、Herda,M.,Klebanov,V.、Mostowski,W.,Scheben,C.、Schmitt,P.H.、Ulbrich,M.:java程序验证和分析的关键平台。收录人:Giannakopoulou,D.,Kroening,D.(编辑)VSTTE 2014。LNCS,第8471卷,第55-71页。斯普林格,海德堡(2014)·doi:10.1007/978-3-319-12154-34
[2] Allen,F.E.:控制流分析。摘自:编译器优化研讨会论文集,第1-19页。ACM,纽约(1970年)·数字对象标识代码:10.1145/800028.08479
[3] Appel,A.W.,Palsberg,J.:Java中的现代编译器实现,第2版。剑桥大学出版社,纽约(2003)
[4] Carlsson,R.:核心erlang简介。摘自:PLI01 Erlang研讨会论文集(2001年)
[5] Cormen,T.H.,Leiserson,C.E.,Rivest,R.L.,Stein,C.:算法导论,第3版。麻省理工学院出版社,剑桥(2009)·Zbl 1187.68679号
[6] De Angelis,E.、Fioravanti,F.、Pettorossi,A.、Proietti,M.:通过程序专业化基于语义的验证条件生成。在:PPDP 2015,第91-102页。ACM(2015)·doi:10.1145/2790449.2790529
[7] de Moura,L.,Björner,N.S.:Z3:高效SMT求解器。收录:Ramakrishnan,C.R.,Rehof,J.(编辑)TACAS 2008。LNCS,第4963卷,第337–340页。斯普林格,海德堡(2008)·doi:10.1007/978-3-540-78800-3_24
[8] Deters,M.,Reynolds,A.,King,T.,Barrett,C.W.,Tinelli,C.:CVC4的工作原理和使用方法之旅。收录于:FMCAD 2014,第7页。IEEE(2014)·doi:10.1109/FMCAD.2014.6987586
[9] Filliátre,J.-C.:一个逻辑可以使用所有这些。收录:Bonacina,M.P.(编辑)CADE 2013。LNCS,第7898卷,第1–20页。斯普林格,海德堡(2013)·Zbl 1381.68266号 ·doi:10.1007/978-3-642-38574-2_1
[10] Filliátre,J.-C.,Paskevich,A.:Why3——程序遇到证明者的地方。摘自:Felleisen,M.,Gardner,P.(编辑)《2013年员工持股计划》。LNCS,第7792卷,第125-128页。斯普林格,海德堡(2013)·Zbl 1435.68366号 ·doi:10.1007/978-3-642-37036-6_8
[11] Flanagan,C.,Sabry,A.,Duba,B.F.,Felleisen,M.:使用延续编译的本质。参见:PLDI 1993,第237–247页。ACM(1993)·doi:10.1145/155090.155113
[12] Gallagher,J.P.,Kafle,B.:约束horn子句验证的分析和转换工具。CoRR,abs/1405.3883(2014)
[13] Grebenshchikov,S.,Lopes,N.P.,Popeea,C.,Rybalchenko,A.:根据证明规则合成软件验证器。参见:PLDI 2012,第405-416页。ACM(2012年)·doi:10.1145/2254064.2254112
[14] Klein,G.,Nipkow,T.:类java语言、虚拟机和编译器的机器选择模型。ACM事务处理。程序。语言系统。28(4), 619–695 (2006) ·数字对象标识代码:10.1145/1146809.1146811
[15] Leino,K.R.M.:与dafny开发验证程序。摘自:Brosgol,B.,Boleng,J.,Taft,S.T.(编辑)HILT,第9-10页。ACM(2012年)·数字对象标识代码:10.1145/2402676.2402682
[16] Jones,S.L.P.,Lester,D.R.:实现函数语言(普伦蒂斯·霍尔计算机科学国际系列)。普伦蒂斯·霍尔,纽约(1992)
[17] Rémy,D.:使用、理解和解开OCaml语言从实践到理论,反之亦然。收录人:Barthe,G.、Dybjer,P.、Pinto,L.、Saraiva,J.(编辑)APPSEM 2000。LNCS,第2395卷,第413页。斯普林格,海德堡(2002)·兹比尔1065.68028 ·doi:10.1007/3-540-45699-69
[18] G.团队:格拉斯哥哈斯克尔编译器核心语言。https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/CoreSynType
2015年4月30日访问
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。