Multi-Prover Verification of Floating-Point Programs

  • Ali Ayad
  • Claude Marché
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6173)


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.


Theorem Prover Behavioral Property Automatic Prover Interactive Prove Rounding Mode 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    IEEE standard for floating-point arithmetic. Technical report (2008),
  2. 2.
    Ayad, A., Marché, C.: Behavioral properties of floating-point programs. Hisseo publications (2009),
  3. 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)CrossRefGoogle Scholar
  4. 4.
    Barrett, C., Tinelli, C.: CVC3. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 298–302. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  5. 5.
    Baudin, P., Filliâtre, J.-C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language (2008),
  6. 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. 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. 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. 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. 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. 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. 12.
    Cok, D.R., Kiniry, J.R.: ESC/Java2 implementation notes. Technical report (May 2007),
  13. 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)Google Scholar
  14. 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)CrossRefGoogle Scholar
  15. 15.
    de Moura, L., Bjørner, N.: Z3, an efficient SMT solver,
  16. 16.
    Dutertre, B., de Moura, L.: The Yices SMT solver (2006),
  17. 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)CrossRefGoogle Scholar
  18. 18.
    The Frama-C platform (2008),
  19. 19.
    Goldberg, D.: What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys 23(1), 5–48 (1991)CrossRefGoogle Scholar
  20. 20.
    Harrison, J.: Floating point verification in HOL Light: The exponential function. Formal Methods in System Design 16(3), 271–305 (2000)CrossRefGoogle Scholar
  21. 21.
    Leavens, G.: Not a number of floating point problems. Journal of Object Technology 5(2), 75–83 (2006)Google Scholar
  22. 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),
  23. 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), CrossRefGoogle Scholar
  24. 24.
    Miner, P.S.: Defining the IEEE-854 floating-point standard in PVS. Technical Memorandum 110167, NASA Langley (1995)Google Scholar
  25. 25.
    Monniaux, D.: The pitfalls of verifying floating-point computations. ACM Transactions on Programming Languages and Systems 30(3), 12 (2008)CrossRefGoogle Scholar
  26. 26.
    Monniaux, D.: Automatic modular abstractions for linear constraints. In: 36th ACM Symposium POPL 2009, pp. 140–151 (2009)Google Scholar
  27. 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)CrossRefMathSciNetGoogle Scholar
  28. 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)CrossRefGoogle Scholar
  29. 29.
    Schulte, W., Xia, S., Smans, J., Piessens, F.: A glimpse of a verifying C compiler,
  30. 30.
    The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.2 (2008),
  31. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Ali Ayad
    • 1
    • 3
  • Claude Marché
    • 2
    • 3
  1. 1.Software Safety LaboratoryCEA LISTGif-sur-Yvette
  2. 2.INRIA Saclay - Île-de-FranceOrsay
  3. 3.LRIUniv. Paris-Sud, CNRSOrsay

Personalised recommendations