Skip to main content

Multi-Prover Verification of Floating-Point Programs

  • Conference paper
Automated Reasoning (IJCAR 2010)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 6173))

Included in the following conference series:

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).

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. IEEE standard for floating-point arithmetic. Technical report (2008), http://dx.doi.org/10.1109/IEEESTD.2008.4610935

  2. Ayad, A., Marché, C.: Behavioral properties of floating-point programs. Hisseo publications (2009), http://hisseo.saclay.inria.fr/ayad09_OnlinePDF.pdf

  3. 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)

    Chapter  Google Scholar 

  4. Barrett, C., Tinelli, C.: CVC3. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 298–302. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  5. 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

  6. Beckert, B., Hähnle, R., Schmitt, P.H. (eds.): Verification of Object-Oriented Software. LNCS (LNAI), vol. 4334. Springer, Heidelberg (2007)

    Google Scholar 

  7. 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)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. Brillout, A., Kroening, D., Wahl, T.: Mixed abstractions for floating-point arithmetic. In: FMCAD’09, pp. 69–76. IEEE, Los Alamitos (2009)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. 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)

    Google Scholar 

  12. 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

  13. 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)

    MATH  Google Scholar 

  14. 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)

    Chapter  Google Scholar 

  15. de Moura, L., Bjørner, N.: Z3, an efficient SMT solver, http://research.microsoft.com/projects/z3/

  16. Dutertre, B., de Moura, L.: The Yices SMT solver (2006), http://yices.csl.sri.com/tool-paper_OnlinePDF.pdf

  17. 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)

    Chapter  Google Scholar 

  18. The Frama-C platform (2008), http://www.frama-c.cea.fr/

  19. Goldberg, D.: What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys 23(1), 5–48 (1991)

    Article  Google Scholar 

  20. Harrison, J.: Floating point verification in HOL Light: The exponential function. Formal Methods in System Design 16(3), 271–305 (2000)

    Article  Google Scholar 

  21. Leavens, G.: Not a number of floating point problems. Journal of Object Technology 5(2), 75–83 (2006)

    Article  Google Scholar 

  22. 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/

  23. 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/

    Chapter  Google Scholar 

  24. Miner, P.S.: Defining the IEEE-854 floating-point standard in PVS. Technical Memorandum 110167, NASA Langley (1995)

    Google Scholar 

  25. Monniaux, D.: The pitfalls of verifying floating-point computations. ACM Transactions on Programming Languages and Systems 30(3), 12 (2008)

    Article  Google Scholar 

  26. Monniaux, D.: Automatic modular abstractions for linear constraints. In: 36th ACM Symposium POPL 2009, pp. 140–151 (2009)

    Google Scholar 

  27. 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)

    Article  MathSciNet  Google Scholar 

  28. 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)

    Chapter  Google Scholar 

  29. 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

  30. The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.2 (2008), http://coq.inria.fr

  31. Zee, K., Kuncak, V., Rinard, M.: Full functional verification of linked data structures. In: PLDI’08, pp. 349–361. ACM, New York (2008)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics