跳到主要内容
研究论文

从证明规则合成软件验证器

出版:2012年6月11日出版历史
跳过抽象节

摘要

自动生成的工具可以显著提高程序员的生产力。例如,解析器和数据流分析器可以从语法形式的声明性规范中自动生成,这大大简化了实现编译器的任务。本文提出了一种软件验证工具的自动综合方法。我们的合成过程将所使用的证明规则的描述作为输入,例如,通过归纳不变量进行程序安全检查,并生成一个工具,自动发现证明规则所需的辅助断言,例如,归纳循环不变量和过程摘要。我们依赖于证明规则的(标准)表示,在辅助断言上使用递归方程。发现辅助断言,即求解方程,是基于一个迭代过程,该过程外推方程有限展开所获得的解。我们展示了我们的方法是如何为带有过程、多线程程序和函数程序的程序综合自动安全性和活性验证器的。我们将由此产生的验证器与现有最先进的验证工具进行了实验比较,证实了该方法的实用性。

工具书类

  1. A.V.Aho、M.S.Lam、R.Sethi和J.D.Ullman。编译器:原理、技术和工具。皮尔逊,2006年。谷歌学者谷歌学者数字图书馆数字图书馆
  2. A.艾肯。介绍基于集合约束的程序分析。科学。计算。程序。,35 (2), 1999.谷歌学者谷歌学者数字图书馆数字图书馆
  3. A.Aiken、M.Fähndrich、J.S.Foster和Z.Su。构建基于类型和约束的程序分析的工具包。《编译类型》,1998年。谷歌学者谷歌学者数字图书馆数字图书馆
  4. T.Ball和S.K.Rajamani。SLAM项目:通过静态分析调试系统软件。在POPL,2002年。谷歌学者谷歌学者数字图书馆数字图书馆
  5. T.Ball、A.Podelski和S.K.Rajamani。用于模型检查C程序的布尔和笛卡尔抽象。在TACAS,2001年。谷歌学者谷歌学者数字图书馆数字图书馆
  6. D.拜尔。软件验证竞争(SV-COMP)。在TACAS,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  7. D.Beyer和M.E.Keremoglu。CPAchecker:用于可配置软件验证的工具。在CAV,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  8. A.R.Bradley、Z.Manna和H.B.Sipma。具有可达性的线性排名。在CAV,2005年。谷歌学者谷歌学者数字图书馆数字图书馆
  9. R.Bruttomesso、A.Cimatti、A.Franzén、A.Griggio和R.Sebastiani。MathSAT 4SMT求解器。在CAV,2008年。谷歌学者谷歌学者数字图书馆数字图书馆
  10. E.M.Clarke、O.Grumberg、S.Jha、Y.Lu和H.Veith。反例引导的抽象细化。在CAV,2000年。谷歌学者谷歌学者数字图书馆数字图书馆
  11. B.Cook、A.Podelski和A.Rybalchenko。系统代码的终止证明。PLDI,2006年。谷歌学者谷歌学者数字图书馆数字图书馆
  12. B.Cook、A.Podelski和A.Rybalchenko。终止汇总:不退货!《系统设计中的形式化方法》,35(3),2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  13. C.弗拉纳根和S.卡迪尔。线程模块模型检查。SPIN,2003年。谷歌学者谷歌学者数字图书馆数字图书馆
  14. T.弗里曼和F.普芬宁。ML的精炼类型。PLDI,1991年。谷歌学者谷歌学者数字图书馆数字图书馆
  15. S.Graf和H.Saídi。用PVS构造抽象状态图。1997年,CAV。谷歌学者谷歌学者数字图书馆数字图书馆
  16. S.Grebenshchikov、A.Gupta、N.P.Lopes、C.Popeea和A.Rybalchenko。HSF(C):基于Horn子句-(竞争贡献)的软件验证器。在TACAS,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  17. A.Gupta、C.Popeea和A.Rybalchenko。求解LIUIF上的无递归horn子句。2011年APLAS谷歌学者谷歌学者数字图书馆数字图书馆
  18. A.Gupta、C.Popeea和A.Rybalchenko。Threader:多线程程序的基于约束的验证器。在CAV,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  19. A.Gupta、C.Popeea和A.Rybalchenko。用于验证多线程程序的谓词抽象和精化。POPL,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  20. T.A.Henzinger、R.Jhala、R.Majumdar和G.Sutre。懒惰的抽象。在POPL,2002年。谷歌学者谷歌学者数字图书馆数字图书馆
  21. T.A.Henzinger、R.Jhala、R.Majumdar和K.L.McMillan。证据摘要。在POPL,2004年。谷歌学者谷歌学者数字图书馆数字图书馆
  22. K.Hoder、N.Björner和L.de Moura。μZ-一个有效的带约束的不动点引擎。在CAV,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  23. F.Ivancic、Z.Yang、M.K.Ganai、A.Gupta、I.Shlyakhter和P.Ashar。F-Soft:软件验证平台。在CAV,2005年。谷歌学者谷歌学者数字图书馆数字图书馆
  24. R.Jhala、R.Majumdar和A.Rybalchenko。HMC:使用抽象解释器验证函数程序。在CAV,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  25. C.B.琼斯。针对干扰程序的开发方法的初步步骤。ACM事务处理。程序。语言系统。,5(4),1983年。谷歌学者谷歌学者数字图书馆数字图书馆
  26. K.W.Knowles和C.Flanagan。常规细化类型的类型重建。在2007年的员工持股计划中。谷歌学者谷歌学者数字图书馆数字图书馆
  27. J.Kodumal和A.Aiken。Banshee:一个可扩展的基于约束的分析工具包。2005年,SAS。谷歌学者谷歌学者数字图书馆数字图书馆
  28. M.S.Lam、J.Whaley、V.B.Livshits、M.C.Martin、D.Avots、M.Carbin和C.Unkel。作为数据库查询的上下文敏感程序分析。PODS,2005年。谷歌学者谷歌学者数字图书馆数字图书馆
  29. S.Lerner、T.D.Millstein、E.Rice和C.Chambers。通过本地规则进行数据流分析和转换的自动化稳健性证明。在POPL,2005年。谷歌学者谷歌学者数字图书馆数字图书馆
  30. Z.Manna和A.Pnueli。反应系统的临时验证:安全。1995谷歌学者谷歌学者交叉引用交叉引用
  31. F.马丁。PAG——一个高效的程序分析器生成器。STTT,2(1),1998年。谷歌学者谷歌学者
  32. K.L.McMillan。插值定理证明器。TCS,2005年。谷歌学者谷歌学者数字图书馆数字图书馆
  33. K.L.McMillan。用插值进行懒惰的抽象。在CAV,2006年。谷歌学者谷歌学者数字图书馆数字图书馆
  34. M.Naik、A.Aiken和J.Whaley。有效的Java静态竞争检测。PLDI,2006年。谷歌学者谷歌学者数字图书馆数字图书馆
  35. G.C.Necula、S.McPeak、S.P.Rahul和W.Weimer。CIL:用于分析和转换C程序的中间语言和工具。在CC,2002年。谷歌学者谷歌学者数字图书馆数字图书馆
  36. S.S.Owicki和D.Gries。并行程序的公理证明技术I.Acta Inf.,61976。谷歌学者谷歌学者
  37. A.Podelski和A.Rybalchenko。变换不变量。LICS,2004年。谷歌学者谷歌学者数字图书馆数字图书馆
  38. A.Podelski和A.Rybalchenko。线性排序函数综合的完整方法。在VMCAI,2004年。谷歌学者谷歌学者交叉引用交叉引用
  39. C.Popeea和A.Rybalchenko。多线程程序的组合终止证明。在TACAS,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  40. W.H.Press、B.P.Flannery、S.A.Teukolsky和W.T.Vetterling。C中的数字食谱:科学计算的艺术。1992谷歌学者谷歌学者数字图书馆数字图书馆
  41. Y.S.Ramakrishna、C.R.Ramakrishnan、I.V.Ramakrishnan、S.A.Smolka、T.Swift和D.S.Warren。使用表格分辨率进行有效的模型检查。1997年,CAV。谷歌学者谷歌学者数字图书馆数字图书馆
  42. T.W.Reps、S.Horwitz和S.Sagiv。通过图形可达性进行精确的过程间数据流分析。1995年,POPL。谷歌学者谷歌学者数字图书馆数字图书馆
  43. P.M.Rondon、M.Kawaguchi和R.Jhala。液体类型。PLDI,2008年。谷歌学者谷歌学者数字图书馆数字图书馆
  44. G.Rosu和A.Stefanescu。匹配逻辑:一种新的程序验证方法。ICSE,2011年。谷歌学者谷歌学者数字图书馆数字图书馆
  45. T.Rus、E.V.Wyk和T.Halverson。根据代数规范生成模型检查器。系统设计中的形式化方法,20(3),2002。谷歌学者谷歌学者数字图书馆数字图书馆
  46. A.Rybalchenko和V.Sofrone-Stokkermans。插值的约束求解。VMCAI,2007年。谷歌学者谷歌学者数字图书馆数字图书馆
  47. M.萨吉夫。程序流分析的高级形式化及其在编译中的使用。Technion博士论文,1991年。谷歌学者谷歌学者
  48. T.Terauchi。反例中的从属类型。在POPL,2010年。谷歌学者谷歌学者数字图书馆数字图书馆
  49. S.L.Torre、P.Madhusudan和G.Parlato。使用定点演算分析递归程序。PLDI,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  50. H.Unno和N.Kobayashi。带插值的依赖类型推断。在PPDP中,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  51. J.Whaley和M.S.Lam。使用二进制决策图进行基于克隆的上下文敏感指针别名分析。PLDI,2004年。谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. 从证明规则综合软件验证器

              建议

              评论

              登录选项

              检查您是否可以通过登录凭据或您的机构访问本文。

              登录

              完全访问权限

              • 发布于

                封面图片ACM SIGPLAN注意事项
                ACM SIGPLAN通知 第47卷第6期
                2012年PLDI
                2012年6月
                534页
                国际标准编号:0362-1340
                EISSN公司:1558-1160
                DOI(操作界面):10.1145/2345156
                问题目录
                • 封面图片ACM会议
                  PLDI’12:第33届ACM SIGPLAN编程语言设计与实现会议记录
                  2012年6月
                  572页
                  国际标准图书编号:9781450312059
                  DOI(操作界面):10.1145/2254064

                版权所有©2012 ACM

                如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人拥有的本作品组件的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

                出版商

                计算机协会

                美国纽约州纽约市

                出版历史

                • 出版:2012年6月11日

                检查更新

                限定符

                • 研究论文

              PDF格式

              以PDF文件查看或下载。

              PDF格式

              电子阅读器

              使用eReader联机查看。

              电子阅读器