Mixed abstractions for floating-point arithmetic

Floating-point arithmetic is essential for many embedded and safety-critical systems, such as in the avionics industry. Inaccuracies in floating-point calculations can cause subtle changes of the control flow, potentially leading to disastrous errors. In this paper, we present a simple and general, yet powerful framework for building abstractions from formulas, and instantiate this framework to a bit-accurate, sound and complete decision procedure for IEEE-compliant binary floatingpoint arithmetic. Our procedure benefits in practice from its ability to flexibly harness both over- and underapproximations in the abstraction process. We demonstrate the potency of the procedure for the formal analysis of floating-point software.

[1]  Matthieu Martel,et al.  Static Analysis of the Numerical Stability of Loops , 2002, SAS.

[2]  Joël Ouaknine,et al.  Deciding Bit-Vector Arithmetic with Abstraction , 2007, TACAS.

[3]  Armin Biere,et al.  Bounded model checking , 2003, Adv. Comput..

[4]  John Harrison Formal Verification of Square Root Algorithms , 2003, Formal Methods Syst. Des..

[5]  Bertrand Jeannet,et al.  Apron: A Library of Numerical Abstract Domains for Static Analysis , 2009, CAV.

[6]  Yahia Lebbah,et al.  Solving Constraints over Floating-Point Numbers , 2001, CP.

[7]  Niklas Sörensson,et al.  An Extensible SAT-solver , 2003, SAT.

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

[9]  Eric Goubault,et al.  Static Analyses of the Precision of Floating-Point Operations , 2001, SAS.

[10]  David Monniaux,et al.  On using floating-point computations to help an exact linear arithmetic decision procedure , 2009, CAV.

[11]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.

[12]  John Harrison,et al.  Formal Verification of Floating Point Trigonometric Functions , 2000, FMCAD.

[13]  Eric Goubault,et al.  Asserting the Precision of Floating-Point Computations: A Simple Abstract Interpreter , 2002, ESOP.

[14]  David M. Russinoff A Mechanically Checked Proof of Correctness of the AMD K5 Floating Point Square Root Microcode , 1999, Formal Methods Syst. Des..

[15]  Eric Goubault,et al.  Static Analysis-Based Validation of Floating-Point Computations , 2003, Numerical Software with Result Verification.

[16]  Edmund M. Clarke,et al.  Counterexample-Guided Abstraction Refinement , 2000, CAV.

[17]  Miodrag Potkonjak,et al.  MediaBench: a tool for evaluating and synthesizing multimedia and communications systems , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[18]  David M. Russinoff A Case Study in Fomal Verification of Register-Transfer Logic with ACL2: The Floating Point Adder of the AMD AthlonTM Processor , 2000, FMCAD.

[19]  Arnaud Gotlieb,et al.  Symbolic execution of floating-point computations: Research Articles , 2006 .

[20]  Patrick Cousot,et al.  A static analyzer for large safety-critical software , 2003, PLDI.

[21]  Christoph Berg,et al.  Formal Verification of the VAMP Floating Point Unit , 2005, Formal Methods Syst. Des..

[22]  Antoine Miné,et al.  Relational Abstract Domains for the Detection of Floating-Point Run-Time Errors , 2004, ESOP.

[23]  John Harrison Floating Point Verification in HOL Light: The Exponential Function , 1997, AMAST.

[24]  Patrick Cousot,et al.  A Sound Floating-Point Polyhedra Abstract Domain , 2008, APLAS.

[25]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.