×

使用指针算法自动证明程序的终止和内存安全。 (英语) Zbl 1409.68077号

摘要:虽然命令式程序的自动验证已经被深入研究,但用显式指针算法证明程序的完全自动终止仍然是一个悬而未决的问题。为了缩小这个差距,我们引入了一个新的抽象域,它可以详细跟踪分配的内存。我们使用它自动构造符号执行图这过接近了程序的所有可能运行,可以用来证明内存安全。然后将此图转换为整数转换系统,其终止可以通过标准技术证明。我们在自动终止证明程序中实现了这种方法AProVE公司并演示了它使用现有工具无法处理的指针算法分析C程序的能力。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
2012年第68季度 语法和重写系统
60年第68季度 规范和验证(程序逻辑、模型检查等)
68吨15 定理证明(演绎、解析等)(MSC2010)
PDF格式BibTeX公司 XML格式引用
全文: 内政部 链接

参考文献:

[1] Albarghouthi,A.,Li,Y.,Gurfinkel,A.,Chechik,M.:Ufo:基于抽象和插值的软件验证框架。致:CAV’12会议记录·Zbl 1325.68145号
[2] Albert,E.,Arenas,P.,Codish,M.,Genaim,S.,Puebla,G.,Zanardini,D.:Java字节码的终止分析。In:FMOODS’08会议记录·Zbl 1236.68042号
[3] AProVE公司。http://aprove.informatik.rwth-aachen.de/eval/PointerJournal(http://aproves.informationk.rwth)/ ·Zbl 1325.68145号
[4] Berdine,J.、Cook,B.、Distefano,D.、O'Hearn,P.W.:具有变形堆的程序的自动终止证明。In:CAV’06会议记录·Zbl 1188.68109号
[5] Berdine,J.、Chawdhary,A.、Cook,B.、Distefano,D.、O'Hearn,P.W.:来自不变性分析的方差分析。收录:POPL'07会议记录·Zbl 1295.68076号
[6] Berdine,J.、Cook,B.、Ishtiaq,S.:SLAyer:系统级代码的内存安全。致:CAV’11会议记录
[7] 贝托特,Y.,卡塞伦,P.:CoqArt。斯普林格,2004
[8] Blanqui,F.,Koprowski,A.:CoLoR:一个基于良好重写关系的Coq库及其在自动验证终止证书中的应用。数学。结构。计算。科学。4, 827-859 (2011) ·Zbl 1223.68101号 ·doi:10.1017/S0960129511000120
[9] Bodin,M.,Jensen,T.,Schmitt,A.:经过认证的抽象解释,具有漂亮的大步语义。致:CPP’15会议记录·Zbl 1464.68071号
[10] Bouajjani,A.、Bozga,M.、Habermehl,P.、Iosif,R.、Moro,P.和Vojnar,T.:带有列表的程序是计数器自动机。形式方法系统。设计38(2),158-192(2011)·Zbl 1217.68059号 ·doi:10.1007/s10703-011-0111-7
[11] Brockschmidt,M.,Otto,C.,von Essen,C.,Giesl,J.:Java字节码的终止图。In:验证、归纳、终止分析,LNAI 6463,(2010)·Zbl 1309.68038号
[12] Brockschmidt,M.,Otto,C.,Giesl,J.:术语重写递归Java字节码程序的模块终止证明。In:RTA’11会议记录·Zbl 1236.68036号
[13] Brockschmidt,M.、Ströder,T.、Otto,C.、Giesl,J.:Java字节码非终止和NullPointerException的自动检测。In:FoVeOOS’11会议记录
[14] Brockschmidt,M.,Musiol,R.,Otto,C.,Giesl,J.:具有循环数据的Java程序的自动终止证明。致:CAV’12会议记录
[15] Brockschmidt,M.,Cook,B.,Fuhs,C.:通过合作实现更好的终止。In:CAV’13会议记录
[16] Brotherston,J.,Gorogannis,N.:归纳定义的安全和终止先决条件的循环诱拐。In:SAS’14会议记录
[17] Cachera,D.,Pichardie,D.:一位经过认证的外延抽象解释器。In:ITP’10会议记录·Zbl 1291.68331号
[18] Cadar,C.、Dunbar,D.、Engler,D.R.:KLEE:为复杂系统程序自动生成高覆盖率测试。In:OSDI’08会议记录
[19] Calcagno,C.,Distefano,D.,O’Hearn,P.W.,Yang,H.:超越可达性:指针算术存在下的形状抽象。In:SAS’06会议记录·Zbl 1225.68069号
[20] Calcagno,C.,Distefano,D.,O'Hearn,P.W.,Yang,H.:太空入侵系统代码。摘自:2008年LOPSTR会议记录
[21] Calcagno,C.,Distefano,D.:推断:用于C程序内存安全的自动程序验证器。In:NFM’11会议记录
[22] Chen,H.Y.、David,C.、Kroening,D.、Schrammel,P.、Wächter,N.:合成过程间比特-精确终止证明。致:ASE’15会议记录
[23] 叮当声编译器。http://clang.llvm.org
[24] Clarke,E.M.,Grumberg,O.,Jha,S.,Lu,Y.,Veith,H.:符号模型检查的反例引导抽象求精。J.ACM 50(5),752-794(2003)·Zbl 1325.68145号 ·doi:10.1145/876638.876643
[25] Contejean,E.,Courtieu,P.,Forest,J.,Pons,O.,Urbain,X.:CiME3自动认证证明。In:RTA’11会议记录·Zbl 1236.68219号
[26] Cook,B.,Podelski,A.,Rybalchenko,A.:终止的抽象细化。摘自:2005年SAS会议记录·Zbl 1141.68365号
[27] Cook,B.,Podelski,A.,Rybalchenko,A.:系统代码的终止证明。In:PLDI’06会议记录·Zbl 1141.68365号
[28] Cook,B.,Podelski,A.,Rybalchenko,A.:终止总结:无回报!。形式化方法系统。设计35(3),369-387(2009)·兹比尔1185.68412 ·doi:10.1007/s10703-009-0087-8
[29] Cousot,P.,Halbwachs,N.:程序变量之间线性约束的自动发现。收录:POPL'78会议记录·Zbl 1217.68059号
[30] David,C.,Kroening,D.,Lewis,M.:位向量程序的无限制终止和非终止参数。In:2015年员工持股计划会议记录·Zbl 1335.68050号
[31] de Moura,L.,Björner,N.:Z3:高效SMT求解器。In:TACAS'08会议记录·Zbl 1213.68578号
[32] D’Silva,V.,Urban,C.:冲突驱动的有条件终止。致:CAV’15会议记录·Zbl 1381.68155号
[33] Dudka,K.,Peringer,P.,Vojnar,T.:捕食者:基于符号记忆图的形状分析器(竞争贡献)。摘自:TACAS’14会议记录
[34] Dutertre,B.,de Moura,L.:Yices SMT求解器。工具纸位于http://yices.csl.sri.com/tool-paper.pdf
[35] Falke,S.、Kapur,D.、Sinz。C.:使用编译器中间语言的C程序的终止分析。In:RTA’11会议记录·Zbl 1236.68040号
[36] Falke,S.、Merz,F.、Sinz,C.:LLBMC:使用LLVM改进C的有界模型检查(竞争贡献)。在:2013年TACAS会议记录
[37] Fuhs,C.,Giesl,J.,Plücker,M.,Schneider-Kamp,P.,Falke,S.:证明整数项重写的终止。In:RTA’09会议记录·Zbl 1242.68131号
[38] Giesl,J.、Brockschmidt,M.、Emmes,F.、Frohn,F、Fuhs,C.、Otto,C.、Plücker,M.,Schneider-Kamp,P.、Ströder,T.、Swiderski,S.、Thiemann,R.:使用AProVE自动证明程序终止。摘自:2014年国际癌症研究理事会会议记录·Zbl 1409.68256号
[39] Gonnord,L.,Monniaux,D.,Radanne,G.:使用极值反例合成排名函数。In:PLDI’15会议记录
[40] Gulwani,S.、Tiwari,A.:分析堆操作低级软件的抽象领域。In:CAV’07会议记录·Zbl 1135.68366号
[41] Habermehl,P.,Iosif,R.,Rogalewicz,A.,Vojnar,T.:证明树操作程序的终止。收件人:2007年ATVA会议记录·Zbl 1141.68469号
[42] Harris,W.R.,Lal,A.,Nori,A.,Rajamani,S.K.:终止的替代。摘自:SAS’10会议记录·Zbl 1306.68027号
[43] Heizmann,M.、Hoenicke,J.、Leike,J、Podelski,A.:线性套索程序的线性排名。在:亚洲电视协会2013年会议记录·Zbl 1410.68086号
[44] Hensel,J.、Giesl,J.,Frohn,F.、Ströder,T.:通过符号执行证明位向量算术程序的终止。摘自:2016年SEFM会议记录·Zbl 1390.68181号
[45] Iosif,R.,Rogalewicz,A.:基于自动化的终端证明。计算。Inf.32(4),739-775(2013)·Zbl 1248.68148号
[46] Jourdan,J.-H.,Laporte,V.,Blazy,S.,Leroy,X.,Pichardie,D.:经正式验证的C静态分析仪。摘自:POPL'15会议记录
[47] Kop,C.,Nishida,N.:面向验证过程程序的自动约束重写归纳法。致:2014年APLAS会议记录·Zbl 1453.68050号
[48] Kop,C.,Nishida,N.:约束项重写工具。致:LPAR’15会议记录·Zbl 1471.68110号
[49] Kroening,D.,Sharygina,N.,Tsitovich,A.,Wintersteiger,C.M.:成分转换不变量的终止分析。在:CAV'10会议记录·Zbl 1315.68106号
[50] Larraz,D.,Oliveras,A.,Rodríguez-Carbonell,E.,Rubio A.:使用Max-SMT证明命令式程序的终止。In:FMCAD’13会议记录·Zbl 1452.68046号
[51] Lattner,C.,Adve V.S.:LLVM:终身程序分析和转换的编译框架。In:CGO’04会议记录
[52] Le,T.C.,Qin,S.,Chin,W.:终止和非终止规范推断。In:PLDI’15会议记录
[53] LLVM参考手册。http://llvm.org/docs/LangRef.html
[54] Löwe,S.,Mandrykin,M.,Wendler,P.:CPAchecker,显性值分析和谓词分析的顺序组合(竞争贡献)。摘自:TACAS’14会议记录
[55] Magill,S.:仪器分析:一种自动生成堆操作程序数值抽象的方法。CMU博士论文,宾夕法尼亚州匹兹堡(2010年)。可在http://www.cs.cmu.edu/smagill/papers/thesis.pdf
[56] Magill,S.、Tsai,M.、Lee,P.和Tsay,Y.:堆操作程序的自动数字抽象。摘自:POPL'10会议记录·Zbl 1312.68063号
[57] Miné,A.:八角形抽象域。高阶和符号计算19(1),31-100(2006)·Zbl 1105.68069号 ·doi:10.1007/s10990-006-8609-1
[58] Moy,Y.,Marché,C.:用于安全检查的子程序合同的模块化推理。J.塞姆。计算。,45(11), 2010 ·Zbl 1213.68385号
[59] Nieuwenhuis,R.,Oliveras,A.,Tinelli,C.:求解SAT和SAT模理论:从抽象的Davis-Putnam-Logemann-Loveland过程到DPLL(T)。《美国医学会杂志》,53(6),2006年·Zbl 1326.68164号
[60] Nipkow,T.、Paulson,L.C.、Wenzel,M.:Isabelle/HOL-高阶逻辑的证明助手。斯普林格,2002·Zbl 0994.68131号
[61] O'Hearn,P.、Reynolds,J.、Yang,H.:关于改变数据结构的程序的局部推理。In:CSL’01会议记录·Zbl 0999.68045号
[62] http://fxr.watson.org/fxr/source/lib/libsa/strlen.c?v=OPENBSD
[63] Otto,C.、Brockschmidt,M.、von Essen,C.、Giesl,J.:通过术语重写对Java字节码进行自动终止分析。In:RTA’10会议记录·Zbl 1236.68145号
[64] Podelski,A.,Rybalchenko,A.:ARMC:软件模型检查与抽象细化的逻辑选择。收件人:PADL'07会议记录
[65] Reps,T.W.,Horwitz,S.,Sagiv,S.:通过图形可达性进行精确的过程间数据流分析。收录:POPL'95会议记录·Zbl 0874.68133号
[66] 斯波托,F.,梅斯纳德,F.,帕耶特,É:基于路径长度的Java字节码终止分析器。ACM TOPLAS,32(3),2010年
[67] Ströder,T.、Giesl,J.、Brockschmidt,M.、Frohn,F.、Fuhs,C.、Hensel,J.和Schneider-Kamp,P.:用指针算术证明程序的终止和内存安全。在:2014年IJCAR会议记录·Zbl 1423.68110号
[68] Ströder,T.、Aschermann,C.、Frohn,F.、Hensel,J.、Giesl,J.:AProVE:C程序的终止和内存安全(竞争贡献)。摘自:TACAS’15会议记录·Zbl 1409.68254号
[69] Thiemann,R.,Sternagel,C.:使用CeTA的终止证明认证。In:TPHOLs'09会议记录·Zbl 1252.68265号
[70] Tsitovich,A.,Sharygina,N.,Wintersteiger,C.M.,Kroening,D.:回路总结和终止分析。In:TACAS’11会议记录·Zbl 1315.68106号
[71] Urban,C.,Gurfinkel,A.,Kahsai,T.:从比特和碎片合成排名函数。In:TACAS’16会议记录
[72] Wikibooks C编程。http://en.wikibooks.org/wiki/C_编程/
[73] Zhao,J.、Nagarakatte,S.、Martin,M.M.K.、Zdancewic,S.:为验证的程序转换形式化LLVM IR。收录:POPL'12会议记录·Zbl 1321.68207号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。