An Automatable Formal Semantics for IEEE-754 Floating-Point Arithmetic

Automated reasoning tools often provide little or no support to reason accurately and efficiently about floating-point arithmetic. As a consequence, software verification systems that use these tools are unable to reason reliably about programs containing floating-point calculations or may give unsound results. These deficiencies are in stark contrast to the increasing awareness that the improper use of floating-point arithmetic in programs can lead to unintuitive and harmful defects in software. To promote coordinated efforts towards building efficient and accurate floating-point reasoning engines, this paper presents a formalization of the IEEE-754 standard for floating-point arithmetic as a theory in many-sorted first-order logic. Benefits include a standardized syntax and unambiguous semantics, allowing tool interoperability and sharing of benchmarks, and providing a basis for automated, formal analysis of programs that process floating-point data.

[1]  Jan Peleska,et al.  Automated Test Case Generation with SMT-Solving and Abstract Interpretation , 2011, NASA Formal Methods.

[2]  Jeremy Gibbons,et al.  Formal Methods: Why Should I Care? The Development of the T800 Transputer Floating−Point Unit , 1993 .

[3]  Philipp Rümmer,et al.  An SMT-LIB Theory of Binary Floating-Point Arithmetic ∗ , 2010 .

[4]  Guillaume Melquiond,et al.  Floating-point arithmetic in the Coq system , 2012, Inf. Comput..

[5]  John Harrison,et al.  Floating-Point Verification Using Theorem Proving , 2006, SFM.

[6]  S Miner Paul,et al.  Defining the IEEE-854 Floating-Point Standard in PVS , 1995 .

[7]  David Monniaux,et al.  The pitfalls of verifying floating-point computations , 2007, TOPL.

[8]  W. S. Brown A Simple but Realistic Model of Floating-Point Computation , 1981, TOMS.

[9]  Guillaume Melquiond,et al.  Built-in Treatment of an Axiomatic Floating-Point Theory for SMT Solvers , 2012, SMT@IJCAR.

[10]  John Harrison,et al.  Floating Point Verification in HOL Light: The Exponential Function , 1997, Formal Methods Syst. Des..

[11]  J. Strother Moore,et al.  A Mechanically Checked Proof of the AMD5K86TM Floating Point Division Program , 1998, IEEE Trans. Computers.

[12]  Guillaume Melquiond,et al.  Flocq: A Unified Library for Proving Floating-Point Algorithms in Coq , 2011, 2011 IEEE 20th Symposium on Computer Arithmetic.

[13]  Lei Yu,et al.  A Formal Model of IEEE Floating Point Arithmetic , 2013, Arch. Formal Proofs.

[14]  Geoff Barrett,et al.  Formal Methods Applied to a Floating-Point Number System , 1989, IEEE Trans. Software Eng..

[15]  Philipp Rümmer,et al.  Approximations for Model Construction , 2014, IJCAR.

[16]  Daniel Kroening,et al.  Interpolation-Based Verification of Floating-Point Programs with Abstract CDCL , 2013, SAS.

[17]  Florent de Dinechin,et al.  Certifying the Floating-Point Implementation of an Elementary Function Using Gappa , 2011, IEEE Transactions on Computers.

[18]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[19]  James Demmel,et al.  IEEE Standard for Floating-Point Arithmetic , 2008 .

[20]  Claude Marché,et al.  Multi-Prover Verification of Floating-Point Programs , 2010, IJCAR.

[21]  John Harrison,et al.  Floating-Point Verification , 2005, J. Univers. Comput. Sci..

[22]  Cesare Tinelli,et al.  Satisfiability Modulo Theories , 2021, Handbook of Satisfiability.

[23]  Ganesh Gopalakrishnan,et al.  Proceedings of the 23rd international conference on Computer aided verification , 2011 .

[24]  Alberto Griggio,et al.  The MathSAT5 SMT Solver , 2013, TACAS.

[25]  Clark W. Barrett,et al.  The SMT-LIB Standard Version 2.0 , 2010 .

[26]  Daniel Kroening,et al.  Deciding floating-point logic with systematic abstraction , 2012, 2012 Formal Methods in Computer-Aided Design (FMCAD).

[27]  A Carreno Victor Interpretation of IEEE-854 Floating-Point Standard and Definition in the HOL System , 1995 .

[28]  Anna Philippou,et al.  Tools and Algorithms for the Construction and Analysis of Systems , 2018, Lecture Notes in Computer Science.

[29]  Laurence Rideau,et al.  A Generic Library for Floating-Point Numbers and Its Application to Exact Computing , 2001, TPHOLs.

[30]  Daniel Kroening,et al.  Mixed abstractions for floating-point arithmetic , 2009, 2009 Formal Methods in Computer-Aided Design.