×

基于SMT的软件验证的统一观点。 (英语) Zbl 1426.68041号

J.自动化。推理 60,第3号,299-335(2018); 更正同上,第65号,第3461(2021)。
总结:在成功开发了多年的软件验证新方法之后,需要巩固关于不同抽象领域和算法的知识。本文的目标是提供四种基于SMT的验证方法的简洁易懂的演示,以便在理论和实践中进行研究。我们提出并比较了以下不同的软件验证“思想流派”:有界模型检查、\(k)-归纳、谓词抽象和带插入项的惰性抽象。这些方法在软件验证中是众所周知且成功的,它们的共同点是基于SMT解决作为后端技术。我们在可配置程序分析的统一理论框架中重新制定了所有四种方法,并在验证框架CPA中实现了它们检查器基于此,我们可以提出一个评估,对不同方法进行彻底比较,其中核心差异用配置参数表示,所有其他变量保持不变(例如解析器前端、SMT求解器、SMT公式中使用的理论)。我们评估了这些方法在一系列验证任务中的有效性和效率,并讨论了结论。

MSC公司:

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

参考文献:

[1] Aho,A.V.,Sethi,R.,Ullman,J.D.:《编译器:原理、技术和工具》。马萨诸塞州雷丁市艾迪森·韦斯利(1986)·Zbl 1155.68020号
[2] Albarghouthi,A.,Gurfinkel,A.,Chechik,M.:从欠近似到过近似再到反近似。收录于:TACAS会议记录,LNCS 7214,第157-172页。施普林格(2012)·Zbl 1352.68140号
[3] Albarghouthi,A.,Li,Y.,Gurfinkel,A.,Chechik,M.:Ufo:基于抽象和插值的软件验证框架。收录于:《CAV会议录》,LNCS 7358,第672-678页。施普林格(2012)·Zbl 0329.68018号
[4] Alberti,F.、Bruttomesso,R.、Ghilardi,S.、Ranise,S.和Sharygina,N.:数组程序的惰性抽象与插值的扩展。形式方法系统。设计。45(1), 63-109 (2014) ·Zbl 1317.68107号 ·doi:10.1007/s10703-014-0209-9
[5] Ball,T.、Cook,B.、Levin,V.、Rajamani,S.K.:猛击和静态驱动验证:微软内部形式化方法的技术转让。摘自:IFM会议记录,LNCS 2999,第1-20页。斯普林格(2004)·Zbl 1325.68145号
[6] Ball,T.、Levin,V.、Rajamani,S.K.:使用SLAM进行软件模型检查的十年。Commun公司。ACM 54(7),68-76(2011)·数字对象标识代码:10.1145/1965724.1965743
[7] Ball,T.、Podelski,A.、Rajamani,S.K.:模型检查C程序的布尔和笛卡尔抽象。摘自:《TACAS学报》,LNCS 2031,第268-283页。斯普林格(2001)·Zbl 0978.68540号
[8] Ball,T.,Rajamani,S.K.:大满贯项目:通过静态分析调试系统软件。摘自:《POPL会议录》,第1-3页。ACM(2002)·兹伯利0329.68018
[9] Beckert,B.,Hähnle,R.:推理和验证:现状和当前趋势。IEEE智能。系统。29(1), 20-29 (2014) ·doi:10.1109/MIS.2014.3
[10] Beyer,D.:软件验证和结果验证(2017年SV-COMP报告)。收录于:TACAS会议记录,LNCS 10206,第331-349页。施普林格(2017)
[11] Beyer,D.,Cimatti,A.,Griggio,A.,Keremoglu,M.E.,Sebastiani,R.:通过大块编码进行软件模型检查。摘自:《FMCAD会议录》,第25-32页。IEEE(2009)
[12] Beyer,D.,Dangl,M.:基于SMT的软件模型检查:四种算法的实验比较。载于:VSTTE会议记录,LNCS 9971,第181-198页。斯普林格(2016)
[13] Beyer,D.,Dangl,M.,Wendler,P.:使用连续重定义不变量提升k-归纳法。收录于:《CAV会议录》,LNCS 9206,第622-640页。斯普林格(2015)
[14] Beyer,D.,Dangl,M.,Wendler,P.:将k-归纳与连续定义不变量相结合。帕索大学MIP-1503技术报告(2015年1月)。arXiv:1502.00096
[15] Beyer,D.,Henzinger,T.A.,Jhala,R.,Majumdar,R.:软件模型检查器Blast。国际期刊软件。技术工具。Transf公司。9(5-6), 505-525 (2007) ·doi:10.1007/s10009-007-0044-z
[16] Beyer,D.,Henzinger,T.A.,Majumdar,R.,Rybalchenko,A.:组合理论的不变综合。在:VMCAI会议记录,LNCS 4349,第378-394页。施普林格(2007)·Zbl 1132.68333号
[17] Beyer,D.,Henzinger,T.A.,Majumdar,R.,Rybalchenko,A.:路径不变量。摘自:PLDI会议记录,第300-309页。ACM(2007)
[18] Beyer,D.,Henzinger,T.A.,Théoduloz,G.:可配置软件验证:具体化模型检查和程序分析的收敛。收录于:《CAV会议录》,LNCS 4590,第504-518页。施普林格(2007)·Zbl 1135.68466号
[19] Beyer,D.,Henzinger,T.A.,Théoduloz,G.:动态精度调整的程序分析。摘自:ASE会议记录,第29-38页。IEEE(2008)·Zbl 1154.68079号
[20] Beyer,D.,Keremoglu,M.E.:CPAchecker:可配置软件验证工具。收录于:《CAV会议录》,LNCS 6806,第184-190页。施普林格(2011)
[21] Beyer,D.,Keremoglu,M.E.,Wendler,P.:具有可调整块编码的谓词抽象。摘自:《FMCAD会议录》,第189-197页。FMCAD(2010)·Zbl 0329.68018号
[22] Beyer,D.,Löwe,S.:基于CEGAR和插值的显式软件模型检查。摘自:FASE会议记录,LNCS 7793,第146-162页。施普林格(2013)
[23] Beyer,D.,Löwe,S.,Wendler,P.:基准和资源测量。摘自:《SPIN学报》,LNCS 9232,第160-178页。斯普林格(2015)
[24] Beyer,D.,Petrenko,A.K.:Linux驱动程序验证。摘自:ISoLA会议记录,LNCS 7610,第1-6页。施普林格(2012)
[25] Beyer,D.,Wendler,P.:软件模型检查算法:谓词抽象与影响。摘自:FMCAD会议记录,第106-113页。FMCAD(2012)·Zbl 0081.24402号
[26] Biere,A.,Cimatti,A.,Clarke,E.M.,Zhu,Y.:没有BDD的符号模型检查。载于:TACAS会议记录,LNCS 1579,第193-207页。斯普林格(1999)
[27] Birgmeier,J.、Bradley,A.R.、Weissenbacher,G.:归纳引导抽象再定义(CTIGAR)的反例。收录于:CAV会议记录,LNCS 8559,第831-848页。斯普林格(2014)
[28] Bradley,A.R.:基于SAT的模型检查,无需展开。收录于:《VMCAI会议录》,LNCS 6538,第70-87页。施普林格(2011)·Zbl 1317.68109号
[29] Brain,M.,Joshi,S.,Kröning,D.,Schrammel,P.:通过k不变量和k归纳法进行安全性验证和反驳。摘自:《SAS学报》,LNCS 9291,第145-161页。斯普林格(2015)·Zbl 0081.24402号
[30] Brückner,I.,Dräger,K.,Finkbeiner,B.,Wehrheim,H.:切片抽象。芬丹。通知。89(4), 369-392 (2008) ·兹比尔1154.68079
[31] Bryant,R.E.:布尔函数操作的基于图形的算法。IEEE传输。计算。35(8), 677-691 (1986) ·Zbl 0593.94022号 ·doi:10.1109/TC.1986.1676819
[32] Cimatti,A.,Griggio,A.:通过IC3进行软件模型检查。收录于:《CAV会议录》,LNCS 7358,第277-293页。施普林格(2012)
[33] Cimatti,A.、Griggio,A.、Mover,S.、Tonetta,S.:通过隐式谓词抽象的IC3模理论。摘自:《TACAS学报》,LNCS 8413,第46-61页。斯普林格(2014)·Zbl 1368.68245号
[34] 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
[35] Clarke,E.M.,Kroening,D.,Lerda,F.:检查ANSI-C程序的工具。摘自:《TACAS会议录》,LNCS 2988,第168-176页。斯普林格(2004)·Zbl 1126.68470号
[36] Colón,M.,Sankaranarayanan,S.,Sipma,H.B.:使用非线性约束求解生成线性不变量。收录于:《CAV会议录》,LNCS 2725,第420-432页。斯普林格(2003)·Zbl 1278.68164号
[37] Cordeiro,L.C.、Morse,J.、Nicole,D.、Fischer,B.:使用Esbmc 1.17(竞争贡献)进行上下文模型检查。摘自:《TACAS学报》,LNCS 7214,第534-537页。施普林格(2012)
[38] 克雷格:线性推理。Herbrand-Gentzen定理的一种新形式。J.塞姆。日志。22(3), 250-268 (1957) ·Zbl 0081.24402号 ·doi:10.2307/2963593
[39] Cytron,R.,Ferrante,J.,Rosen,B.K.,Wegman,M.N.,Zadeck,F.K.:高效计算静态单一赋值形式和控制依赖图。ACM事务处理。程序。语言系统。13(4), 451-490 (1991) ·数字对象标识代码:10.1145/115372.115320
[40] Dillig,I.、Dillig、T.、Li,B.、McMillan,K.L.:通过溯因推理产生归纳不变量。摘自:OOPSLA会议记录,第443-456页。ACM(2013)·Zbl 1381.68057号
[41] Donaldson,A.F.、Haller,L.、Kroening,D.、Rümmer,P.:使用k-归纳法进行软件验证。摘自:《SAS学报》,LNCS 6887,第351-368页。施普林格(2011)
[42] Eén,n.,Mishchenko,A.,Brayton,R.K.:属性定向可达性的有效实现。摘自:《FMCAD会议录》,第125-134页。FMCAD公司(2011)
[43] Ermis,E.,Hoenicke,J.,Podelski,A.:通过插值分裂。收录于:《VMCAI会议录》,LNCS 7148,第186-201页。施普林格(2012)·Zbl 1326.68091号
[44] Gadelha,M.Y.R.,Ismail,H.I.,Cordeiro,L.C.:通过k-归纳法处理C程序有界模型检查中的循环。国际期刊软件。技术工具。Transf公司。19(1), 97-114 (2017) ·doi:10.1007/s10009-015-0407-9
[45] Ghilardi,S.,Ranise,S.:模型检验模理论的目标定向不变综合。在:TABLEAUX会议记录,LNCS 5607,第173-188页。施普林格(2009)·Zbl 1260.68230号
[46] Ghilardi,S.,Ranise,S.:基于SMT求解的阵列系统的向后可达性:终止和不变合成。日志。方法计算。科学。6(4) (2010) ·Zbl 1213.68379号
[47] Graf,S.,Saídi,H.:用Pvs构造抽象状态图。收录于:《CAV会议录》,LNCS 1254,第72-83页。施普林格(1997)
[48] Gurfinkel,A.、Kahsai,T.、Navas,J.A.:SeaHorn:验证C程序的框架(竞争贡献)。摘自:《TACAS会议录》,LNCS 9035,第447-450页。斯普林格(2015)
[49] 阿拉巴马州哈伊杜。,Tóth,T.,Vörös,A.,Majzik,I.:一个具有基于插值的细化的可配置CEGAR框架。收录于:《FORTE学报》,LNCS 9688,第158-174页。斯普林格(2016)·Zbl 1347.68226号
[50] Heizmann,M.,Hoenicke,J.,Podelski,A.:痕迹抽象的细化。摘自:《SAS学报》,LNCS 5673,第69-85页。施普林格(2009)·Zbl 1248.68146号
[51] Henzinger,T.A.、Jhala,R.、Majumdar,R.和Sutre,G.:懒惰抽象。摘自:《POPL会议录》,第58-70页。ACM(2002)·Zbl 1323.68374号
[52] Hoder,K.,Björner,N.:广义属性定向可达性。收录于:SAT会议记录,LNCS 7317,第157-171页。施普林格(2012)·Zbl 1273.68229号
[53] Jhala,R.、Majumdar,R.:软件模型检查。ACM计算机。Surv公司。41(4),21:1-21:54(2009)·Zbl 1507.68188号 ·数字对象标识代码:10.1145/1592434.1592438
[54] Jovanovic,D.,Dutertre,B.:属性定向k-归纳法。收录于:FMCAD会议记录,第85-92页。IEEE(2016)
[55] Kahsai,T.,Tinelli,C.:PKind:基于并行k归纳的模型检查器。摘自:《验证中并行和分布式方法国际研讨会论文集》,EPTCS 72,第55-62页(2011年)
[56] Khoroshilov,A.V.、Mutilin,V.S.、Petrenko,A.K.、Zakharov,V.:建立Linux驱动程序验证过程。参见:《埃尔肖夫纪念会议记录》,LNCS 5947,第165-176页。施普林格(2009)
[57] Kildall,G.A.:全球程序优化的统一方法。载于:《持久性有机污染物法律汇编》,第194-206页。ACM(1973)·Zbl 0309.68020号
[58] King,J.C.:符号执行和程序测试。Commun公司。ACM 19(7),385-394(1976)·Zbl 0329.68018号 ·doi:10.1145/360248.360252
[59] Komuravelli,A.,Gurfinkel,A.,Chaki,S.,Clarke,E.M.:基于SMT的无界软件模型检查中的自动抽象。收录于:《CAV会议录》,LNCS 8044,第846-862页。施普林格(2013)
[60] McMillan,K.L.:插值和基于SAT的模型检查。收录于:《CAV会议录》,LNCS 2725,第1-13页。斯普林格(2003)·Zbl 1278.68184号
[61] McMillan,K.L.:带插值的惰性抽象。载于:CAV会议记录,LNCS 4144,第123-136页。斯普林格(2006)·Zbl 1188.68196号
[62] McMillan,K.L.,Amla,N.:无反例的自动抽象。摘自:《TACAS会议录》,LNCS 2619,第2-17页。斯普林格(2003)·Zbl 1031.68520号
[63] 尼尔森,F.,尼尔森,H.R.,汉金,C.:程序分析原理。柏林施普林格(1999)·Zbl 0932.68013号 ·doi:10.1007/978-3-662-03811-6
[64] Rakamarić,Z.,Emmi,M.:SMACK:从验证器实现中分离源语言细节。收录于:《CAV会议录》,LNCS 8559,第106-113页。斯普林格(2014)
[65] Rocha,H.,Ismail,H.I.,Cordeiro,L.C.,Barreto,R.S.:使用k-归纳法和不变量对嵌入式C软件进行模型检查。摘自:SBESC会议记录,第90-95页。IEEE(2015)
[66] Schrammel,P.,Kroening,D.:项目分析的2LS(竞争贡献)。摘自:《TACAS会议录》,LNCS 9636,第905-907页。斯普林格(2016)
[67] Schuppan,V.,Biere,A.:生命检查是无限状态空间的安全检查。电子。理论注释。计算。科学。149(1), 79-96 (2006) ·Zbl 1273.68240号 ·doi:10.1016/j.entcs.2005.11.018
[68] Sheeran,M.,Singh,S.,Stálmarck,G.:使用归纳法和SAT解决方案检查安全性能。收录于:FMCAD会议记录,LNCS 1954,第127-144页。斯普林格(2000)·Zbl 0081.24402号
[69] Sinz,C.、Merz,F.、Falke,S.:Llbmc:Llvm的中间表示(竞争贡献)的有界模型检查器。摘自:《TACAS会议录》,LNCS 7214,第542-544页。施普林格(2012)
[70] Wahl,T.:k-归纳原理。可在http://www.ccs.neu.edu/home/wahl/Publications/k-induction.pdf (2013)
[71] Wendler,P.:CPAchecker,显性状态分析和谓词分析的顺序组合(竞争贡献)。摘自:《TACAS会议录》,LNCS 7795,第613-615页。施普林格(2013)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。