×

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

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

理学硕士:

68Q60型 规范和验证(程序逻辑、模型检查等)
65克50 舍入误差
68N15 程序设计语言理论
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.,Schifll,J.,Darulova,E.,Ulbrich,M.,Ahrendt,W.:密钥中浮点Java程序的演绎验证。CoRR abs/2101.08733(2021年)
[4] Ahrendt,W.,Beckert,B.,Bubel,R.,Hähnle,R.,Schmitt,P.H.,Ulbrich,M.(编辑):演绎软件验证-关键书籍-从理论到实践,LNCS,第10001卷。Springer(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版》,第8届可满足模理论国际研讨会论文集(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来认证浮点程序。智能计算机数学(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浮点运算的可自动化形式语义。在: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.:一个健全的浮点多面体抽象域。亚洲编程语言与系统研讨会(APLAS)(2008)
[21] Chiang,W.F.,Gopalakrishnan,G.,Rakamaric,Z.,Solovyev,A.:有效搜索导致高浮点错误的输入。In:并行编程原理与实践(PPoPP)(2014)
[22] Cimatti,A.,Griggio,A.,Schaafsma,B.,Sebastiani,R.:MathSAT5 SMT求解器。In:系统构建与分析的工具与算法论文集(TACAS)(2013)·Zbl 1381.68153
[23] Cok,D.R.:OpenJML:jmlforjava7,通过扩展OpenJDK。美国宇航局正式方法(2011)
[24] Cordeiro,L.C.,Kesseli,P.,Kroneing,D.,Schrammel,P.,Trtík,M.:JBMC:用于验证Java字节码的有界模型检查工具。In:计算机辅助验证(CAV)(2018)
[25] 库克,P.,基什内尔,F.,科斯马托夫,N.,普雷沃斯托,V.,西格诺尔斯,J.,亚科博夫斯基,B.:弗拉马-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] 艾勒,M.,Müller,P.:Nagini:Python的静态验证器。In:计算机辅助验证(CAV)(2018)
[30] Filli–tre,J.C.,Paskevich,A.:为什么3——程序与验证者相遇的地方。欧洲规划研讨会(ESOP)(2013年)
[31] Fox,A.,Harrison,J.,Akbarpour,B.:IEEE浮点算法的形式化模型。HOL4定理证明程序库(2017年),https://github.com/HOL-thereon-Prover/HOL/tree/master/src/floating-point
[32] Fumex,C.,Marché,C.,Moy,Y.:浮点程序的自动验证。In:验证软件:理论、工具和实验(VSTTE)(2017)·Zbl 1403.68223
[33] Gao,S.,Kong,S.,Clarke,E.M.:dReal:一个面向现实的非线性理论的SMT求解器。In:自动扣除-CADE-24(2013)·Zbl 1381.68268号
[34] Ge,Y.,de Moura,L.:模理论满足量化公式的完全实例化。In:计算机辅助验证(CAV)(2009)·兹布1242.68280
[35] Goubault,E.,Putot,S.:有限精度计算的静态分析。In:验证、模型检查和抽象解释(VMCAI)(2011)·Zbl 1317.68116
[36] Goubault,E.,Putot,S.:有限精度实现的鲁棒性分析。亚洲编程语言与系统研讨会(APLAS)(2013)·Zbl 1317.68116
[37] Harel,D.,Kozen,D.,Tiuryn,J.:动态逻辑。在:哲学逻辑手册,第99-217页。斯普林格(2001)·Zbl 1003.03528号
[38] Harrison,J.:HOL-Light中的浮点验证:指数函数。系统设计中的形式化方法16(3)(2000)
[39] IEEE,C.S.:浮点运算的IEEE标准。IEEE标准754-2008(2008)
[40] Izycheva,A.,Darulova,E.,Seidl,H.:反例和仿真引导的浮点循环不变综合。In:静态分析研讨会(SAS)(2020)
[41] Jacobs,B.,Smans,J.,Philippaerts,P.,Vogels,F.,Penninckx,W.,Piessens,F.:VeriFast:一个强大、可靠、可预测、快速的C和Java验证程序。美国宇航局正式方法(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/this-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.,布里斯巴雷,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.:Viper:基于权限推理的验证基础设施。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软件。国际软件测试与分析研讨会(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标识符,并且可能包含数据转换错误。它试图尽可能准确地反映原始论文中列出的参考文献,而不要求匹配的完整性或精确性。