×

用于程序验证的IEEE 754浮点算法的正确近似。 (英语) Zbl 1490.68078号

摘要:使用浮点算法验证程序在多个帐户上都是一项挑战。关于此类程序的推理困难之一是由于浮点运算的特点:舍入误差、无穷大、非数字对象(NaN)、有符号零、非正规数、不同舍入模式等。解释浮点运算的一种可能性是,通过一组形式为(z=x\boxdot y)的三元约束来建模程序计算路径,并使用约束传播技术推断有关变量可能值的新信息。在此设置中,我们定义并证明了算法的正确性,以从其他两个已知的边界开始,精确地限定变量\(x)、\(y)或\(z)之一的值。我们对IEEE 754二进制浮点标准定义的每个操作和每个取整模式都这样做,即使在实际取整模式只有部分已知的情况下也是如此。这是第一次滤波算法定义了它们,并正式证明了它们的正确性。这是一块重要的石板,为使用浮点算法的程序的正式验证铺平了道路。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
65克50 舍入误差
68T20型 人工智能背景下的问题解决(启发式、搜索策略等)
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] Aharoni,M.、Asaf,S.、Fournier,L.、Koyfman,A.和Nagel,R.(2003)。FPGen—用于数据路径浮点验证的测试生成框架。在IEEE第八届国际高水平设计验证和测试研讨会上。doi:10.1109/HLDVT.2003.1252469(第17-22页)。旧金山:IEEE计算机协会。
[2] 阿霍,AV;Lam,理学硕士;Sethi,R。;Ullman,JD,《编译器:原理、技术和工具》(2006),波士顿:Addison-Wesley Longman Publishing Co.,Inc.,波士顿·Zbl 1429.68002号
[3] Arm Limited:Arm®架构参考手册,Armv8,适用于A-profile架构edn。(2021). https://developer.arm.com/architectures/cpu-architecture/a-profile/docs。上次访问日期为2021年10月27日。
[4] Bagnara,R.、Carlier,M.、Gori,R.和Gotlieb,A.(2013)。浮点程序的面向符号路径的测试数据生成。第六届IEEE软件测试、验证和确认国际会议论文集。doi:10.1109/ICST.2013.17。卢森堡市:IEEE出版社。
[5] 巴格纳拉,R。;Carlier,M。;戈里,R。;Gotlieb,A.,利用二进制浮点表示进行约束传播,INFORMS计算杂志,28,1,31-46(2016)·Zbl 1357.68010号 ·doi:10.1287/ijoc.2015.0663
[6] 巴格纳拉,R。;Chiari,M。;戈里,R。;Bagnara,A.,用math.h/cmath函数验证浮点C/C++程序的实用方法,《ACM软件工程与方法学报》,30,1,9:1-9:53(2021)·数字对象标识代码:10.1145/3410875
[7] Barr,E.T.、Vo,T.、Le,V.和Su,Z.(2013)。自动检测浮点异常。2013年1月23日至25日,在意大利罗马POPL’13举行的第40届ACM SIGPLAN-SIGACT编程语言原则年度研讨会上。doi:10.1145/2429069.2429133(第549-560页)·Zbl 1301.68087号
[8] Barrett,C.W.、Conway,C.L.、Deters,M.、Hadarean,L.、Jovanovic,D.、King,T.、Reynolds,A.和Tinelli,C.(2011年)。CVC4.在计算机辅助验证中,第23届国际会议记录(CAV 2011),计算机科学讲稿。doi:10.1007/978-3-642-22110-1_14,(第6806卷,第171-177页)。雪鸟:施普林格。
[9] Barrett,C.W.和Tinelli,C.(2018)。可满足性模理论。在E.M.Clarke、T.A.Henzinger、H.Veith和R.Bloem(编辑)《模型检查手册》中。doi:10.1007/978-3-319-10575-811(第305-343页)。斯普林格·Zbl 1392.68379号
[10] 肉毒杆菌。;哥特利布,A。;Michel,C.,浮点计算的符号执行,软件测试、验证和可靠性,16,2,97-121(2006)·doi:10.1002/svr.333
[11] 大脑,M。;D’Silva,V。;Griggio,A。;Haller,L。;Kroening,D.,用抽象冲突驱动子句学习确定浮点逻辑,系统设计中的形式化方法,45,2,213-245(2014)·Zbl 1317.68110号 ·doi:10.1007/s10703-013-0203-7
[12] Brain,M.、Schanda,F.和Sun,Y.(2019年)。为浮点问题构建更好的位持久性。在《用于系统构建和分析的工具和算法》中,第25届国际会议(TACAS 2019),第一部分,计算机科学课堂讲稿。doi:10.1007/978-3-030-17462-0_5,(第11427卷,第79-98页)。斯普林格。
[13] Brain,M.、Tinelli,C.和Rümmer,P.(2015)。T-wahl:IEEE-754浮点算法的自动形式语义。第22届IEEE计算机算术研讨会(ARITH 2015)。doi:10.1109/ARITH.2015.26(第160-167页)。里昂:IEEE。
[14] Cimatti,A.、Griggio,A.、Schaafsma,B.J.和Sebastiani,R.(2013)。mathSAT5 SMT求解器。在《用于系统构建和分析的工具和算法》(Tools and algorithms for the construction and analysis of systems)、《第19届国际会议论文集》(TACAS 2013)、《计算机科学》(computer science)讲稿中。doi:10.1007/978-3642-36742-7_7,(第7795卷,第93-107页)。斯普林格·Zbl 1381.68153号
[15] 洛杉矶克拉克;DJ理查森,符号评估的应用,《系统与软件杂志》,5,1,15-35(1985)·doi:10.1016/0164-1212(85)90004-4
[16] 库索特·P.和库索特R.(1977年)。抽象解释:通过构造或近似不动点对程序进行静态分析的统一格模型。在第四届ACM编程语言原理研讨会的会议记录中。doi:10.1145/512950.512973(第238-252页)。洛杉矶:ACM出版社。
[17] Cuyt,A。;库特纳,P。;Verdonk,B。;Verschaeren,D.,《重新审视潜流》,加州大学出版社,39,3,169-179(2002)·Zbl 1072.65067号 ·doi:10.1007/s10092020003
[18] de Moura,L.M.和Björner,N.(2008)。Z3:高效的SMT求解器。在《用于系统构建和分析的工具和算法》中,第14届国际会议(TACAS 2008),计算机科学讲稿。doi:10.1007/978-3-540-78800-3_24,(第4963卷,第337-340页)。斯普林格。
[19] Delmas,D.、Goubault,E.、Putot,S.、Souyris,J.、Tekkal,K.和Védrine,F.(2009年)。在安全关键航空电子软件上实现FLUCTAT的工业应用。《工业关键系统的形式化方法》,第14届国际研讨会论文集(FMICS 2009),计算机科学课堂讲稿。doi:10.1007/978-3642-04570-7_6,(第5825卷,第53-69页)。埃因霍温:斯普林格。
[20] Fiedler,G.(2021)。浮点决定论。2019年2月24日,Gaffer在游戏博客上发表文章。https://gafferongames.com/post/floating_point决定/(2010)上次访问日期为10月28日。
[21] 加洛瓦·旺,D。;博尔多,S。;Cuoq,P.,浮点加法的最优逆投影,数值算法,83,3,957-986(2020)·Zbl 07171729号 ·doi:10.1007/s11075-019-00711-z
[22] Gotlieb,A.、Botella,B.和Rueher,M.(1998年)。使用约束求解技术自动生成测试数据。1998年ACM SIGSOFT国际软件测试与分析研讨会论文集,ISSTA'98。doi:10.1145/271771.271790(第53-62页)。纽约:ACM。
[23] Gotlieb,A.、Botella,B.和Rueher,M.(2000)。用于计算结构测试数据的CLP框架。在计算逻辑-CL2000:第一届国际会议伦敦,英国,2000年7月24日至28日会议记录。doi:10.1007/3-540-44957-4_27(第399-413页)。斯普林格·Zbl 0983.68583号
[24] 电气与电子工程师协会:IEEE浮点运算标准,IEEE Std 754-2008(IEEE Std 754-1985修订版)edn。(2008). 可在http://ieeexplore.ieee.org/servlet/opac?punumber=4610933。
[25] 英特尔公司。英特尔®64与IA-32体系结构软件开发人员手册,325462-075us版。(2021). https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html。上次访问日期为2021年10月27日。
[26] King,JC,《符号执行和程序测试》,《ACM通信》,第19、7、385-394页(1976年)·Zbl 0329.68018号 ·doi:10.1145/360248.360252
[27] Kornerup,P.、Lefevre,V.、Louvet,N.和Muller,J.M.(2009年)。关于正确求和的计算。第19届IEEE计算机算术研讨会论文集(ARITH 2009)。doi:10.1109/ARITH.2009.16(第155-160页)。波特兰·Zbl 1365.65141号
[28] Marre,B.、Bobot,F.和Chihani,Z.(2017年)。浮点数的实际行为。在第15届可满足性模理论国际研讨会论文集中,CEUR研讨会论文集,(第1889卷,第50-62页)。
[29] Marre,B.和Michel,C.(2010年)。改进浮点加法和减法约束。D.Cohen(Ed.)《第16届约束编程原理与实践国际会议论文集》(CP 2010),计算机科学讲稿。doi:10.1007/978-3642-15396-9_30,(第6308卷,第360-367页)。圣安德鲁斯:斯普林格。
[30] Michel,C.(2002年)。浮点数约束的精确投影函数。第七届人工智能与数学国际研讨会论文集。劳德代尔堡。
[31] Michel,C.、Rueher,M.和Lebbah,Y.(2001年)。求解浮点数上的约束。2001年11月26日至12月1日在塞浦路斯帕霍斯举行的第七届国际会议《约束规划的原则和实践》。doi:10.1007/3-540-45578-7_36(第524-538页)·Zbl 1067.68658号
[32] Miné,A.(2004)。用于检测浮点运行时错误的关系抽象域。在编程语言和系统方面,第13届欧洲编程研讨会(ESOP 2004)的会议记录,计算机科学的课堂讲稿。doi:10.1007/978-3-540-24725-8_2,(第2986卷,第3-17页)。巴塞罗那:斯普林格·Zbl 1126.68353号
[33] Monniaux,D.,验证浮点计算的陷阱,《编程语言和系统的ACM事务》,30,3,12:12:41(2008)·doi:10.1145/1353445.1353446
[34] Müller,S.M.和Paul,W.J.(2000)。计算机体系结构——复杂性和正确性的源泉。doi:10.1007/978-3-662-04267-0·Zbl 0966.68023号
[35] Rump,SM,稠密线性系统的精确解,第二部分:使用定向舍入的算法,计算与应用数学杂志,242185-212(2013)·Zbl 1260.65034号 ·doi:10.1016/j.cam.2012.09.024
[36] 臀部,SM;Ogita,T.,线性系统的超快速验证解,计算与应用数学杂志,199,2,199-206(2007)·Zbl 1108.65020号 ·doi:10.1016/j.cam.2005.07.038
[37] Watte,J.(2021)。浮点决定论。Gamedev.net论坛,2008年6月30日。https://www.gamedev.net/forums/topic/499435-floating-point-determinism网站/(2008)上次访问时间为10月28日。
[38] Wu,X.,Li,L.,&Zhang,J.(2017)。用于浮点异常检测的带值范围分析的符号执行。2017年12月4日至8日,第24届亚太软件工程大会,APSEC 2017,中国南京。doi:10.109/APSEC.2017.6(第1-10页)。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。