文件Open Access徽标

精确分离逻辑:缩小验证和缺陷发现之间的差距

作者 彼得·马克西莫维奇, 卡罗琳·克朗杰, 安德烈亚斯·洛夫, 朱利安·萨瑟兰, 菲利普·加德纳



PDF格式
缩略图PDF

文件

LIPIcs公司。ECOOP.2023.19.pdf
  • 文件大小:0.87 MB
  • 27页

文件标识符

作者详细信息

彼得·马克西莫维奇
  • 英国伦敦帝国理工学院
  • Runtime Verification Inc.,美国伊利诺伊州乌尔班纳
卡罗琳·克朗杰
  • 德国波鸿大学
安德烈亚斯·洛夫
  • 英国伦敦帝国理工学院
朱利安·萨瑟兰
  • 英国伦敦Nethermin
菲利普·加德纳
  • 英国伦敦帝国理工学院

致谢

我们要感谢萨沙·埃利·阿永和丹尼尔·南特斯·索布利尼奥的多次讨论,这些讨论提高了论文的质量。我们还要感谢匿名评论员的评论。

引用为获取BibTex

Petar Maksimović、Caroline Cronjäger、Andreas Löw、Julian Sutherland和Philippa Gardner。精确分离逻辑:缩小验证和缺陷发现之间的差距。第37届欧洲面向对象编程会议(ECOOP 2023)。莱布尼茨国际信息学会议录(LIPIcs),第263卷,第19:1-19:27页,达格斯图尔宫-莱布尼兹-泽特鲁姆-富尔信息学(2023)
https://doi.org/10.4230/LIPIcs.ECOOP.2023.19

摘要

过逼近(OX)程序逻辑,如分离逻辑(SL),用于验证堆操作程序的属性:所有终止行为都是特征化的,但不需要达到已确定的结果和错误。因此,OX函数规范与符号执行工具(如Pulse和Pulse-X)支持的真正错误查找不兼容。相比之下,欠近似(UX)程序逻辑(如错误分离逻辑)用于查找真实结果和错误:可以获得已确定的结果和错误,但如果所有终止行为都已被描述出来,则没有机制来理解。我们引入了精确分离逻辑(ESL),它提供了与OX验证和UX真正的错误融资兼容的完全验证的功能规范:所有终止行为都是特征化的,所有已建立的结果和错误都是可达到的。我们用相互递归函数证明ESL的可靠性,首次证明了UX逻辑的函数组合性。我们表明,与常见的OX逻辑定义相比,UX程序逻辑需要内部和外部功能规范的精细定义。我们通过验证各种数据结构算法的抽象ESL规范,研究了ESL的表示性,并首次探索了抽象在UX推理中的作用。在这样做的过程中,我们强调了抽象(隐藏信息)和过度近似(丢失信息)之间的区别。我们的研究结果表明,抽象不能像OX逻辑那样在UX逻辑中自由使用,而且使用ESL为自包含的关键代码提供易于处理的功能规范应该是可行的,然后将其用于验证和真正的错误查找。

主题分类

ACM科目分类
  • 计算理论→逻辑和验证
  • 计算理论→程序推理
  • 计算理论→分离逻辑
  • 计算理论→霍尔逻辑
  • 计算理论→抽象
关键词
  • 分离逻辑
  • 程序正确性
  • 程序错误
  • 抽象

韵律学

工具书类

  1. Saswat Anand、Patrice Godefroid和Nikolai Tillmann。需求驱动的合成符号执行。《系统构建和分析的工具和算法》(TACAS),2008年。网址:https://doi.org/10.1007/978-3-540-78800-3_28
  2. Saswat Anand、Corina S.Pasareanu和Willem Visser。抽象的象征性执行。国际技术转让软件工具杂志,11(1),2009年。网址:https://doi.org/10.1007/s10009-008-0090-1
  3. 安德鲁·W·阿佩尔。Coq充满活力的验证工程生态系统。在认证程序和证明会议(CPP)上,2022年。网址:https://doi.org/10.1145/3497775.3503951
  4. 罗伯托·布鲁尼、罗伯托·贾科巴齐、罗伯塔·戈里和弗朗西斯科·兰扎托。局部完整抽象解释的逻辑。在2021年计算机科学逻辑研讨会上。网址:https://doi.org/10.1109/LICS52264.2021.9470608
  5. 罗伯托·布鲁尼、罗伯托·贾科巴齐、罗伯塔·戈里和弗朗西斯科·兰扎托。一种正确和不正确的程序逻辑。美国医学会杂志,70(2),2023。网址:https://doi.org/10.1145/3582267
  6. 亚瑟·查古埃罗(Arthur Charguéraud)。顺序程序的分离逻辑(功能珍珠)。美国计算机学会程序设计语言会议录,4(ICFP),2020年。网址:https://doi.org/10.1145/3408998
  7. 佩德罗·达·罗查·平托(Pedro da Rocha Pinto)、托马斯·丁斯代尔·杨(Thomas Dinsdale-Young)、菲利普·加德纳(Philippa Gardner)和朱利安·萨瑟兰(Julian Sutherland)。非阻塞并发的模块化终止验证。在2016年欧洲规划研讨会(ESOP)上。网址:https://doi.org/10.1007/978-3-662-49498-1_8
  8. Edsko de Vries和Vasileios Koutavas。反转Hoare逻辑。软件工程与形式化方法(SEFM),2011年。网址:https://doi.org/10.1007/978-3-642-24690-6_12
  9. 罗伯特·W·弗洛伊德。为程序指定含义。应用数学研讨会论文集,1967年19日。谷歌学者
  10. 何塞·弗拉戈索·桑托斯(JoséFragoso Santos)、彼得·马克西莫维奇(Petar Maksimović)、萨沙·埃利·阿永(Sacha-E lie Ayoun)和菲利普·加德纳(Philippa Gardner)。Gillian,第一部分:符号执行的多语言平台。编程语言设计与实现(PLDI),2020年。网址:https://doi.org/10.1145/3385412.3386014
  11. JoséFragoso Santos、Petar Maksimović、Théotime Grohens、Julian Dolby和Philippa Gardner。JavaScript的符号执行。《声明性编程的原则与实践》(PPDP),2018年。网址:https://doi.org/10.1145/3236950.3236956
  12. 何塞·弗拉戈索·桑托斯(JoséFragoso Santos)、彼得·马克西莫维奇(Petar Maksimović)、戴瓦·诺季涅(Daiva Naudíiániené)、托马斯·伍德(Thomas Wood)和菲利普·加德纳(Philippa Gardner)。JaVerT:JavaScript验证工具链。《美国计算机学会程序设计语言会议录》,2018年第2期(POPL)。网址:https://doi.org/10.1145/3158138
  13. JoséFragoso Santos、Petar Maksimović、Gabriela Sampaio和Philippa Gardner。JaVerT 2.0:JavaScript的合成符号执行。《美国计算机学会程序设计语言会议录》,2019年第3期(POPL)。网址:https://doi.org/10.1145/3290379
  14. 菲利普·加德纳(Philippa Gardner)、塞尔吉奥·马菲斯(Sergio Maffeis)和加雷斯·大卫·史密斯(Gareth David Smith)。面向JavaScript的程序逻辑。《程序设计语言原理》(POPL),2012年。网址:https://doi.org/10.1145/203656.2103663
  15. 帕特里斯·戈德弗里德。合成动态测试生成。《程序设计语言原理》(POPL),2007年。网址:https://doi.org/10.1145/1190216.1190226
  16. Patrice Godefroid、Aditya V.Nori、Sriram K.Rajamani和Sai Deep Tetali。组合可能必须的程序分析:释放交替的力量。《编程语言原理》(POPL),2010年。网址:https://doi.org/10.1145/1706299.1706307
  17. 本杰明·希勒里(Benjamin Hillery)、埃里克·默瑟(Eric Mercer)、内哈·朗塔(Neha Rungta)和苏泽特·珀森(Suzette Person)。符号执行的精确堆摘要。验证、模型检查和抽象解释(VMCAI),2016年。网址:https://doi.org/10.1007/978-3-662-49122-5_10
  18. C.A.R.霍尔。计算机程序设计的公理化基础。ACM通信(CACM),12(10),1969年。网址:https://doi.org/10.1145/363235.363259
  19. Bart Jacobs、Jan Smans、Pieter Philipparts、Frédéric Vogels、Willem Penninckx和Frank Piessens。VeriFast:针对C和Java的强大、可靠、可预测、快速的验证器。在2011年美国国家航空航天局正式方法研讨会(NFM)上。网址:https://doi.org/10.1007/978-3-642-20398-5_4
  20. 拉尔夫·荣格(Ralf Jung)、大卫·斯瓦西(David Swasey)、菲利普·西奇科夫斯基(Filip Sieczkowski)、卡斯珀·斯文森(Kasper Svendsen)、亚伦·图伦(Aaron Turon)、拉尔斯·比克达尔(Lars Birkedal)和德里克·德雷尔。虹膜:作为并行推理的正交基础的单体和不变量。《程序设计语言原理》(POPL),2015年。网址:https://doi.org/10.1145/2676726.2676980
  21. Quang Loc Le、Azalea Raad、Jules Villard、Josh Berdine、Derek Dreyer和Peter W.O'Hearn。在逻辑不正确的大程序中发现真正的错误。美国计算机学会程序设计语言会议录,6(OOPSLA1),2022年。网址:https://doi.org/10.1145/3527325
  22. Yude Lin、Tim Miller和Harald Sondergaard。使用细粒度摘要的组合符号执行。2015年澳大利亚软件工程会议。网址:https://doi.org/10.109/ASWEC.2015.32
  23. Petar Maksimović、Sacha-e lie Ayoun、JoséFragoso Santos和Philippa Gardner。Gillian,第二部分:JavaScript和C的真实世界验证。计算机辅助验证(CAV),2021年。网址:https://doi.org/10.1007/978-3-030-81688-9_38
  24. Petar Maksimović、Caroline Cronjäger、Andreas Löw、Julian Sutherland和Philippa Gardner。精确分离逻辑(扩展版),2023年。网址:https://arxiv.org/abs/2208.070200
  25. 托比·默里(Toby Murray)、彭博·燕(Pengbo Yan)和吉登·恩斯特(Gidon Ernst)。使用不安全分离逻辑的增量漏洞检测,2021年。网址:https://arxiv.org/abs/2107.05225
  26. 彼得·奥赫恩(Peter W.O'Hearn)。逻辑错误。美国计算机学会程序设计语言论文集,4(POPL),2019。网址:https://doi.org/10.1145/3371078
  27. Peter W.O'Hearn、John C.Reynolds和Hongseok Yang。关于改变数据结构的程序的局部推理。《计算机科学逻辑》,2001年。网址:https://doi.org/10.1007/3-540-44802-0_1
  28. 杜鹃花、乔什·伯丁、黄海棠、德里克·德雷尔、彼得·奥赫恩和朱尔斯·维拉德。关于错误存在的局部推理:错误分离逻辑。计算机辅助验证(CAV),2020年。网址:https://doi.org/10.1007/978-3-030-53291-8_14
  29. 杜鹃·拉德(Azalea Raad)、乔什·伯丁(Josh Berdine)、德里克·德雷尔(Derek Dreyer)和彼得·奥赫恩(Peter W.O'Hearn)。并发错误分离逻辑。美国计算机学会程序设计语言会议录,6(POPL),2022年。网址:https://doi.org/10.1145/3498695
  30. 约翰·雷诺兹(John C.Reynolds)。分离逻辑:用于共享可变数据结构的逻辑。2002年,计算机科学逻辑(LICS)。网址:https://doi.org/10.109/LICS.2002.1029817
  31. 格林·温斯克尔。编程语言的形式语义:导论,第10章。麻省理工学院出版社,1993年。谷歌学者
  32. 格雷塔·约什(Greta Yorsh)、埃兰·雅哈(Eran Yahav)和萨蒂什·钱德拉(Satish Chandra)。生成准确简明的程序摘要。《编程语言原理》(POPL),2008年。网址:https://doi.org/10.1145/1328438.1328467
  33. 诺姆·齐尔伯斯坦(Noam Zilberstein)、德里克·德雷尔(Derek Dreyer)和亚历山德拉·席尔瓦(Alexandra Silva)。结果逻辑:正确性和错误性推理的统一基础。美国计算机学会程序设计语言论文集,第7期(OOPSLA1),2023年。网址:https://doi.org/10.1145/3586045
问题/备注/反馈
X(X)

Dagstuhl出版社反馈


感谢您的反馈!

已提交反馈

无法发送消息

请稍后再试或发送电子邮件