×

已验证浮点计算的编译。 (英语) Zbl 1331.68047号

摘要:众所周知,浮点运算很棘手:取整、格式、异常值。IEEE-754标准推动了这一领域的发展,使浮点计算的形式化推理变得更加容易和繁荣。不幸的是,这不足以保证程序的最终结果,因为还涉及其他几个因素:编程语言、编译器和体系结构。CompCert经过形式验证的编译器提供了解决此问题的方法:此编译器提供了其源语言(ISO C99的一个大子集)和目标平台(ARM、PowerPC、x86-SSE2)语义的数学规范,并提供了编译保留语义的证明。在本文中,我们报告了我们最近在正式指定和证明CompCert编译浮点算法的正确性方面取得的成功。由于CompCert是使用Coq证明助手进行验证的,因此需要对IEEE-754标准进行适当的Coq形式化;为此,我们扩展了Flocq库。因此,我们获得了第一个经过正式验证的编译器,该编译器可证明地保留浮点程序的语义。

MSC公司:

第68页第20页 编译与解释理论
65克50 舍入误差
60年第68季度 规范和验证(程序逻辑、模型检查等)
68吨15 定理证明(演绎、解析等)(MSC2010)
PDF格式BibTeX公司 XML格式引用
全文: 内政部 哈尔

参考文献:

[1] Ayad,A.,Marché,C.:浮点程序的多验证。收录于:Giesl,J.,Hähnle,R.(eds.)第五届国际自动推理联合会议(IJCAR),《计算机科学讲稿》,第6173卷。爱丁堡施普林格(2010)·Zbl 1291.68321号
[2] 博尔多(Boldo),S.:前葡萄球菌(Preuves formelles en arithmétiquesávirgule flottante)。里昂高等师范学院博士论文(2004)·Zbl 1388.65200号
[3] Boldo,S.,Filliátre,J.C.:浮点程序的形式验证。收录:Kornerup,P.,Muller,J.M.(编辑)第18届IEEE计算机算术国际研讨会(ARITH)。IEEE,第187-194页,蒙彼利埃(2007)
[4] Boldo,S.,Melquiond,G.:FMA和整和的仿真:使用四舍五入到奇数的证明算法。IEEE传输。计算。57(4), 462-471 (2008) ·兹比尔1388.65200 ·doi:10.1109/TC.2007.70819
[5] 博尔多,S。;Melquiond,G。;Antelo,E.(编辑);Hough,D.(编辑);Ienne,P.(编辑),Flocq:证明Coq中浮点算法的统一库,243-252(2011),Tübingen
[6] Boldo,S.,Nguyen,T.M.T.:编译器优化时数值程序的证明。因诺夫。系统。柔和。工程7,151-160(2011)·doi:10.1007/s11334-011-0151-6
[7] Brisebarre,N.,Muller,J.M.,Raina,S.K.:当除数预先已知时,加速正确舍入的浮点除法。IEEE传输。计算。53(8),1069-1072(2004)·doi:10.1109/TC.2004.37
[8] Carreño,V.A.,Miner,P.S.:HOL和PVS-in中IEEE-854浮点标准的规范:第八届高阶逻辑定理证明及其应用国际研讨会(HOL95),犹他州阿斯彭格罗夫(1995)·Zbl 1108.68422号
[9] Clinger,W.D.:《如何准确读取浮点数》,《程序设计语言设计与实现》(PLDI’90),第92-101页。ACM(1990)·Zbl 1187.68141号
[10] 库索特,P。;库索特,R。;Feret,J。;Mauborgne,L。;米内,A。;Monniaux,D。;对手,X.,ASTRéE分析仪,21-30(2005),柏林-海德堡,纽约·Zbl 1108.68422号
[11] 德克尔,T.J.:一种扩展可用精度的浮点技术。数字数学18(3),224-242(1971)·Zbl 0226.65034号 ·doi:10.1007/BF01397083
[12] 德尔马斯,D。;Goubault,E。;推杆,S。;Souyris,J。;Tekkal,K。;Védrine,F.,《在安全关键航空电子软件上实现FLUCTUAT的工业应用》,53-69(2009),柏林-海德堡,纽约
[13] 菲格罗亚,S.A.:什么时候双舍入无害?。SIGNUM新闻。30(3), 21-26 (1995) ·数字对象标识代码:10.1145/221332.221334
[14] 戈德伯格:关于浮点运算,每个计算机科学家都应该知道什么。ACM计算。Surv公司。23(1), 5-47 (1991) ·doi:10.1145/103162.103163
[15] Granlund,T.,Montgomery,P.L.:用乘法除以不变整数In:编程语言设计与实现(PLDI’94),第61-72页。ACM(1994)
[16] 哈里森,J。;Bertot,Y.(编辑);Dowek,G.(编辑);Hirschowitz,A.(编辑);Paulin,C.(编辑);Théry,L.(编辑),浮点运算的机器选择理论,113-130(1999),尼斯
[17] Harrison,J.,浮点三角函数的形式验证,217-233(2000),奥斯汀
[18] IBM:PowerPC编译器编写指南。沃特曼协会(1996)
[19] 尤亚拉伦,A。;Martel,M.,数学等价表达式表示的新抽象领域,75-93(2012),柏林-海德堡,纽约
[20] ISO:国际标准ISO/IEC 9899:2011,程序设计语言-C(2011)
[21] Leavens,G.T.:不是很多浮点问题。J.对象技术。5(2), 75-83 (2006) ·doi:10.5381/jot.2006.5.2.c8
[22] Leroy,X.:真实编译器的形式化验证。Commun公司。ACM 52(7),107-115(2009)·doi:10.1145/1538788.1538814
[23] Leroy,X.:CompCert验证了编译器、软件和评论证明。可在http://compcert.inria.fr/ (2014)
[24] 李·G。;欧文斯,S。;斯林德,K。;Nicola,RD(编辑),高阶逻辑子集的证明编译器结构,205-219(2007),布拉加·Zbl 1187.68141号
[25] 微处理器标准小组委员会:浮点运算IEEE标准。IEEE标准754-2008第1-58页(2008)
[26] Milner,R.,Weyhrauch,R.:在机械化逻辑中证明编译器的正确性。收录:Meltzer,B.,Michie,D.(编辑)第七届年度机器智能研讨会,《机器智能》,第7卷,第51-72页。爱丁堡大学出版社(1972)·Zbl 0259.68008号
[27] Monniaux,D.:验证浮点计算的陷阱。ACM事务处理。程序。语言系统。30(3), 1-41 (2008) ·doi:10.1145/1353445.1353446
[28] Moore,J.S.:一种经过机械验证的语言实现。J.汽车。原因。5(4), 461-492 (1989)
[29] Muller,J.M.、Brisebare,N.、de Dinechin,F.、Jeannerod,C.P.、Lefèvre,V.、Melquiond,G.、Revol,N.,Stehlé,D.、Torres,S.:浮点运算手册。Birkhäuser(2010年)·Zbl 1197.65001号
[30] 梅林,马格纳斯O.:机器代码程序的正式验证。剑桥大学博士论文(2008)
[31] Nguyen,TMT;马奇,C。;Jouannaud,JP(编辑);Shao,Z.(编辑),数值程序的硬件依赖证明,314-329(2011),柏林-海德堡,纽约·兹比尔1350.68241
[32] Nickolls,J.,Dally,W.:GPU计算时代。IEEE Micro 30(2),56-69(2010)·doi:10.1109/MM.2010.41
[33] Rump,S.,Ogita,T.,Oishi,S.:精确浮点求和第1部分:忠实取整。SIAM J.科学。计算。31(1), 189-224 (2008) ·兹比尔1185.65082 ·doi:10.1137/050645671
[34] Russinoff,D.M.:AMD-K7处理器的浮点乘法、除法和平方根算法符合IEEE的机械检查证明。LMS J.计算。数学。1, 148-200 (1998) ·Zbl 0910.68008号 ·doi:10.1112/S1461157000000176
[35] Sterbenz,P.H.:浮点计算。普伦蒂斯·霍尔(Prentice Hall),恩格尔伍德悬崖(Englewood Cliffs)(1974年)
[36] Yang,X.,Chen,Y.,Eide,E.,Regehr,J.:发现和理解C编译器中的错误in:第32届ACM SIGPLAN编程语言设计与实现会议,第283-294页。ACM出版社(2011)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。