×

KeY中浮点Java程序的演绎验证。 (英语) Zbl 1474.68186号

Groote,Jan Friso(编辑)等人,《系统构建和分析的工具和算法》。第27届国际会议,TACAS 2021,作为欧洲软件理论与实践联合会议的一部分,于2021年3月27日至4月1日在卢森堡卢森堡市举行。诉讼程序。第二部分。查姆:斯普林格。莱克特。票据计算。科学。12652, 242-261 (2021).
摘要:演绎验证已成功地验证了真实世界程序的有趣属性。一个显著的差距是对浮点推理的支持有限。这是很不幸的,因为由于四舍五入以及特殊值无穷大和“非数字”(NaN)的存在,浮点运算特别不直观。在本文中,我们为Java编程语言的演绎验证工具提供了第一个浮点支持。我们在KeY验证器中的支持通过SMT求解器中的浮点决策过程处理算术,并通过公理化处理超越函数。我们在新的基准上评估这种集成,并表明这种方法足够强大,可以证明不存在浮点特殊值(通常是进一步推理数值计算的先决条件)以及实际基准的某些函数属性。
有关整个系列,请参见[Zbl 1471.68016号].

MSC公司:

60年第68季度 规范和验证(程序逻辑、模型检查等)
65克50 舍入误差
68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] QF\(\_\)FP SMT基准。https://clc-gitlab.cs.uiowa.edu:2443/SMT-LIB-基准/QF_FP(2019)
[2] 结合多个浮点值的程序验证缓慢(Github问题)(2019年(2020年5月11日访问)),https://github.com/boogie-org/boogie/issues/109
[3] Abbasi,R.、Schifff,J.、Darulova,E.、Ulbrich,M.、Ahrendt,W.:KeY中浮点Java程序的演绎验证。CoRR abs/2101.08733(2021)
[4] Ahrendt,W.,Beckert,B.,Bubel,R.,Hähnle,R.,Schmitt,P.H.,Ulbrich,M.(编辑):演绎软件验证-KeY书-从理论到实践,LNCS,第10001卷。斯普林格(2016)
[5] Akbarpour,B.,Paulson,L.C.:MetiTarski:实值特殊函数的自动定理证明程序。《自动推理杂志》44(3)(2010)·Zbl 1215.68206号
[6] Astrauskas,V.、Müller,P.、Poli,F.、Summers,A.J.:利用锈蚀类型进行模块化规范和验证。In:面向对象编程系统、语言和应用(OOPSLA)(2019年)
[7] Barr,E.T.,Vo,T.,Le,V.,Su,Z.:浮点异常的自动检测。In:编程语言原理(POPL)(2013)·Zbl 1301.68087号
[8] Barrett,C.、Conway,C.L.、Deters,M.、Hadarean,L.、Jovanovi’C,D.、King,T.、Reynolds,A.、Tinelli,C.:CVC4。In:计算机辅助验证(CAV)(2011),犹他州雪鸟
[9] Barrett,C.、Stump,A.、Tinelli,C.等人:SMT-LIB标准:2.0版。摘自:第八届满意度模理论国际研讨会论文集(2010年)
[10] Beckert,B.、Nestler,B.、Kiefer,M.、Selzer,M.和Ulbrich,M.:经验报告:材料科学中的形式方法。CoRR abs/1802.02374(2018)
[11] Benz,F.,Hildebrandt,A.,Hack,S.:寻找浮点精度问题的动态程序分析。In:编程语言设计与实现(PLDI)(2012)
[12] Beyer,D.:自动化软件验证的进展:Sv-comp 2020。In:系统构建和分析工具和算法(TACAS)(2020年)
[13] Blanchet,B.,Cousot,P.,Cousot,R.,Feret,J.,Mauborgne,L.,Miné,A.,Monniaux,D.,Rival,X.:大型安全关键软件的静态分析器。In:编程语言设计与实现(PLDI)(2003)·Zbl 1026.68514号
[14] Boldo,S.,Clément,F.,Filliátre,J.C.,Mayero,M.,Melquiond,G.,Weis,P.:波动方程数值分辨率:C程序的综合机械化证明。《自动推理杂志》50(4)(2013)·Zbl 1267.68208号
[15] Boldo,S.、Filliátre,J.C.、Melquiond,G.:结合Coq和Gappa认证浮点程序。In:智能计算机数学(2009)·Zbl 1247.68232号
[16] Boldo,S.,Melquiond,G.:Flocq:证明Coq中浮点算法的统一库。在:IEEE计算机算术研讨会(ARITH)(2011)
[17] Brain,M.,Tinelli,C.,Rümmer,P.,Wahl,T.:IEEE-754浮点运算的自动形式语义。In:IEEE计算机算术(ARITH)研讨会(2015)
[18] Brain,M.,Schanda,F.,Sun,Y.:为浮点问题构建更好的位持久性。In:系统构建和分析工具和算法(TACAS)(2019年)
[19] 查普曼,R.,沙达,F.:我们到了吗?用SPARK证明工业定理20年。In:交互式定理证明(ITP)(2014)
[20] Chen,L.,Miné,A.,Cousot,P.:声音浮点多面体抽象域。In:亚洲编程语言和系统研讨会(2008年)
[21] Chiang,W.F.,Gopalakrishnan,G.,Rakamaric,Z.,Solovyev,A.:高效搜索导致高浮点错误的输入。In:并行编程原理与实践(PPoPP)(2014)
[22] Cimatti,A.,Griggio,A.,Schaafsma,B.,Sebastiani,R.:数学SAT5 SMT求解器。In:系统构建与分析工具与算法学报(TACAS)(2013)·Zbl 1381.68153号
[23] Cok,D.R.:OpenJML:通过扩展OpenJDK实现Java 7的JML。In:美国国家航空航天局正式方法(2011)
[24] Cordeiro,L.C.、Kesseli,P.、Kroening,D.、Schrammel,P.和Trtík,M.:JBMC:验证Java字节码的有界模型检查工具。In:计算机辅助验证(CAV)(2018)
[25] Cuoq,P.,Kirchner,F.,Kosmatov,N.,Prevosto,V.,Signoles,J.,Yakobowski,B.:Frama-C.In:软件工程与形式方法(SEFM)(2012)
[26] Darulova,E.,Izycheva,A.,Nasir,F,Ritter,F.,Becker,H.,Bastian,R.:Daisy-数值程序分析和优化框架。In:系统构建和分析工具和算法(TACAS)(2018)
[27] Darulova,E.,Kuncak,V.:面向Reals的编译器。TOPLAS 39(2)(2017)·Zbl 1284.68393号
[28] De Moura,L.,Björner,N.:Z3:高效SMT求解器。In:系统构建和分析的工具和算法(TACAS)(2008)
[29] Eilers,M.,Müller,P.:Nagini:Python的静态验证程序。In:计算机辅助验证(CAV)(2018)
[30] Filliátre,J.C.,Paskevich,A.:Why3-项目在哪里遇到证明人。参加:欧洲规划研讨会(ESOP)(2013年)
[31] Fox,A.、Harrison,J.、Akbarpour,B.:IEEE浮点算法的形式化模型。HOL4定理证明程序库(2017),https://github.com/HOL-Theorem-Prover/HOL/tree/master/src/f浮点
[32] Fumex,C.、Marché,C.、Moy,Y.:自动验证浮点程序。In:验证软件:理论、工具和实验(VSTTE)(2017)·Zbl 1403.68223号
[33] Gao,S.,Kong,S.、Clarke,E.M.:dReal:Reals上非线性理论的SMT求解器。In:自动扣除-CADE-24(2013)·Zbl 1381.68268号
[34] Ge,Y.,de Moura,L.:可满足模理论中量化公式的完全实例化。In:计算机辅助验证(CAV)(2009)·Zbl 1242.68280号
[35] Goubault,E.,Puto,S.:有限精度计算的静态分析。In:验证、模型检查和抽象解释(VMCAI)(2011)·Zbl 1317.68116号
[36] Goubault,E.,Puto,S.:有限精度实现的稳健性分析。参加:亚洲编程语言和系统研讨会(2013年)·Zbl 1317.68116号
[37] Harel,D.,Kozen,D.,Tiuryn,J.:动态逻辑。见:《哲学逻辑手册》,第99-217页。施普林格(2001)·Zbl 1003.03528号
[38] Harrison,J.:HOL光中的浮点验证:指数函数。系统设计中的形式化方法16(3)(2000)
[39] IEEE,C.S.:浮点运算IEEE标准。IEEE标准754-2008(2008)
[40] Izycheva,A.,Darulova,E.,Seidl,H.:反例和模拟引导浮点环路不变量合成。In:静态分析研讨会(SAS)(2020)·兹比尔1474.68055
[41] Jacobs,B.,Smans,J.,Philippearts,P.,Vogels,F.,Penninckx,W.,Piessens,F.:VeriFast:一个强大、可靠、可预测的C和Java快速验证工具。In:NASA形式方法(NFM)(2011)
[42] Jacobsen,C.,Solovyev,A.,Gopalakrishnan,G.:HOL Light中的参数化浮点形式化。理论计算机科学电子笔记317(2015)·Zbl 1352.65667号
[43] Jeannet,B.,Miné,A.:围裙:静态分析的数值抽象域库。In:计算机辅助验证(CAV)(2009)
[44] Lam,M.O.,Hollingsworth,J.K.,Stewart,G.W.:动态浮点消除检测。并行计算。39(3) (2013)
[45] Leavens,G.T.,Baker,A.L.,Ruby,C.:JML的初步设计:Java的行为接口规范语言。ACM SIGSOFT软件工程注释31(3)(2006)
[46] Leavens,G.T.,Cheon,Y.:与JML签订合同设计(2006),http://www.jmlspecs.org/jmldbc.pdf
[47] 莱诺,K.R.M.:这是《布吉2》(2008年6月),https://www.microsoft.com/en-us/research/publication/tis-is-boogie-2-2/
[48] Magron,V.,Constantinides,G.,Donaldson,A.:使用半定规划证明的舍入误差界。ACM事务处理。数学。柔和。43(4) (2017) ·Zbl 1380.65084号
[49] Marché,C.,Paulin-Mohring,C.,Urbain,X.:用于认证JML中注释的Java/JavaCard程序的KRAKATOA工具。逻辑与代数程序设计杂志58(1)(2004)·Zbl 1073.68678号
[50] McCormick,J.W.,Chapin,P.C.:《使用SPARK构建高完整性应用程序》,剑桥大学出版社(2015)·Zbl 1328.68009号
[51] Meyer,B.:应用“合同设计”。计算机25(10)(1992)
[52] Moscato,M.,Titolo,L.,Dutle,A.,Muñoz,C.:通过静态分析自动估计验证的浮点舍入误差。致:SAFECOMP(2017)·Zbl 1403.68324号
[53] Muller,J.、Brisebare,N.、de Dinechin,F.、Jeannerod,C.、Lefèvre,V.、Melquiond,G.、Revol,N.,Stehlé,D.、Torres,S.《浮点算术手册》。Birkhäuser(2010年)·Zbl 1197.65001号
[54] Müller,P.,Schwerhoff,M.,Summers,A.J.:毒蛇:基于许可推理的验证基础设施。In:验证、模型检查和抽象解释(VMCAI)(2016)·Zbl 1475.68191号
[55] Pasareanu,C.S.,Mehlitz,P.C.,Bushnell,D.H.,Gundy-Burlet,K.,Lowry,M.R.,Person,S.,Pape,M.:结合单元级符号执行和系统级具体执行来测试NASA软件。In:软件测试与分析国际研讨会(ISSTA)(2008)
[56] Siegel,S.F.、Mironova,A.、Avrunin,G.S.、Clarke,L.A.:使用带符号执行的模型检查来验证并行数值程序。参加:软件测试与分析国际研讨会(ISSTA)(2006年)
[57] Solovyev,A.,Jacobsen,C.,Rakamaric,Z.,Gopalakrishnan,G.:用符号泰勒展开严格估计浮点舍入误差。In:形式化方法(FM)(2015)·Zbl 1427.65064号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。