Abstract
In the context of deductive program verification, supporting floating-point computations is tricky. We propose an expressive language to formally specify behavioral properties of such programs. We give a first-order axiomatization of floating-point operations which allows to reduce verification to checking the validity of logic formulas, in a suitable form for a large class of provers including SMT solvers and interactive proof assistants. Experiments using the Frama-C platform for static analysis of C code are presented.
This work was supported by the French national projects: CerPan (Certification of numerical programs, ANR-05-BLAN-0281-04), Hisseo (Static and dynamic analysis of floating-point programs, Digiteo 09/2008-08/2011), and U3CAT (Unification of Critical C Code Analysis Techniques, ANR-09-ARPEGE).
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
IEEE standard for floating-point arithmetic. Technical report (2008), http://dx.doi.org/10.1109/IEEESTD.2008.4610935
Ayad, A., Marché, C.: Behavioral properties of floating-point programs. Hisseo publications (2009), http://hisseo.saclay.inria.fr/ayad09_OnlinePDF.pdf
Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# Programming System: An Overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)
Barrett, C., Tinelli, C.: CVC3. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 298–302. Springer, Heidelberg (2007)
Baudin, P., Filliâtre, J.-C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language (2008), http://frama-c.cea.fr/acsl.html
Beckert, B., Hähnle, R., Schmitt, P.H. (eds.): Verification of Object-Oriented Software. LNCS (LNAI), vol. 4334. Springer, Heidelberg (2007)
Boldo, S., Filliâtre, J.-C.: Formal Verification of Floating-Point Programs. In: 18th IEEE International Symposium on Computer Arithmetic, Montpellier, France, pp. 187–194 (2007)
Boldo, S., Nguyen, T.M.T.: Hardware-independent proofs of numerical programs. In: Proceedings of the Second NASA Formal Methods Symposium. NASA Conference Publication, Washington D.C (April 2010)
Brillout, A., Kroening, D., Wahl, T.: Mixed abstractions for floating-point arithmetic. In: FMCAD’09, pp. 69–76. IEEE, Los Alamitos (2009)
Burdy, L., Cheon, Y., Cok, D., Ernst, M., Kiniry, J., Leavens, G.T., Leino, K.R.M., Poll, E.: An overview of JML tools and applications. International Journal on Software Tools for Technology Transfer (2004)
Chalin, P.: Reassessing JML’s logical foundation. In: Proceedings of the 7th Workshop on Formal Techniques for Java-like Programs (FTfJP’05), Glasgow, Scotland (July 2005)
Cok, D.R., Kiniry, J.R.: ESC/Java2 implementation notes. Technical report (May 2007), http://secure.ucd.ie/products/opensource/ESCJava2/ESCTools/docs/Escjava2-ImplementationNotes_OnlinePDF.pdf
Conchon, S., Contejean, E., Kanig, J., Lescuyer, S.: CC(X): Semantical combination of congruence closure with solvable theories. In: Proceedings of the 5th International Workshop SMT’2007. ENTCS, vol. 198-2, pp. 51–69. Elsevier Science Publishers, Amsterdam (2008)
Daumas, M., Rideau, L., Théry, L.: A generic library for floating-point numbers and its application to exact computing. In: Boulton, R.J., Jackson, P.B. (eds.) TPHOLs 2001. LNCS, vol. 2152, p. 169+. Springer, Heidelberg (2001)
de Moura, L., Bjørner, N.: Z3, an efficient SMT solver, http://research.microsoft.com/projects/z3/
Dutertre, B., de Moura, L.: The Yices SMT solver (2006), http://yices.csl.sri.com/tool-paper_OnlinePDF.pdf
Filliâtre, J.-C., Marché, C.: The Why/Krakatoa/Caduceus platform for deductive program verification. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 173–177. Springer, Heidelberg (2007)
The Frama-C platform (2008), http://www.frama-c.cea.fr/
Goldberg, D.: What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys 23(1), 5–48 (1991)
Harrison, J.: Floating point verification in HOL Light: The exponential function. Formal Methods in System Design 16(3), 271–305 (2000)
Leavens, G.: Not a number of floating point problems. Journal of Object Technology 5(2), 75–83 (2006)
Melquiond, G.: Floating-point arithmetic in the Coq system. In: Proceedings of the 8th Conference on Real Numbers and Computers, pp. 93–102. Santiago de Compostela, Spain (2008), http://gappa.gforge.inria.fr/
Melquiond, G.: Proving bounds on real-valued functions with computations. In: Armando, A., Baumgartner, P., Dowek, G. (eds.) IJCAR 2008. LNCS (LNAI), vol. 5195, pp. 2–17. Springer, Heidelberg (2008), http://www.lri.fr/~melquion/soft/coq-interval/
Miner, P.S.: Defining the IEEE-854 floating-point standard in PVS. Technical Memorandum 110167, NASA Langley (1995)
Monniaux, D.: The pitfalls of verifying floating-point computations. ACM Transactions on Programming Languages and Systems 30(3), 12 (2008)
Monniaux, D.: Automatic modular abstractions for linear constraints. In: 36th ACM Symposium POPL 2009, pp. 140–151 (2009)
Moore, J.S., Lynch, T., Kaufmann, M.: A mechanically checked proof of the correctness of the kernel of the AMD5k86 floating-point division algorithm. IEEE Transactions on Computers 47(9), 913–926 (1998)
Reeber, E., Sawada, J.: Combining ACL2 and an automated verification tool to verify a multiplier. In: Sixth International Workshop on the ACL2 Theorem Prover and its Applications, pp. 63–70. ACM, New York (2006)
Schulte, W., Xia, S., Smans, J., Piessens, F.: A glimpse of a verifying C compiler, http://www.cs.ru.nl/~tews/cv07/cv07-smans_OnlinePDF.pdf
The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.2 (2008), http://coq.inria.fr
Zee, K., Kuncak, V., Rinard, M.: Full functional verification of linked data structures. In: PLDI’08, pp. 349–361. ACM, New York (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Ayad, A., Marché, C. (2010). Multi-Prover Verification of Floating-Point Programs . In: Giesl, J., Hähnle, R. (eds) Automated Reasoning. IJCAR 2010. Lecture Notes in Computer Science(), vol 6173. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-14203-1_11
Download citation
DOI: https://doi.org/10.1007/978-3-642-14203-1_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-14202-4
Online ISBN: 978-3-642-14203-1
eBook Packages: Computer ScienceComputer Science (R0)