Floats and Ropes: A Case Study for Formal Numerical Program Verification

  • Sylvie Boldo
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5556)


We present a case study of a formal verification of a numerical program that computes the discretization of a simple partial differential equation. Bounding the rounding error was tricky as the usual idea, that is to bound the absolute value of the error at each step, fails. Our idea is to find out a precise analytical expression that cancels with itself at the next step, and to formally prove the correctness of this approach.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    IEEE: IEEE Standard for Floating-Point Arithmetic. IEEE Std. 754-2008 (2008)Google Scholar
  2. 2.
    Wilkinson, J.H.: Rounding Errors in Algebraic Processes. Prentice-Hall, Upper Saddle River (1963)MATHGoogle Scholar
  3. 3.
    Higham, N.J.: Accuracy and stability of numerical algorithms. SIAM, Philadelphia (2002)CrossRefMATHGoogle Scholar
  4. 4.
    Even, G., Seidel, P., Ferguson, W.E.: A Parametric Error Analysis of Goldschmidt’s Division Algorithm. In: 16th IEEE Symposium on Computer Arithmetic (2003)Google Scholar
  5. 5.
    Goubault, E., Putot, S.: Static analysis of numerical algorithms. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134, pp. 18–34. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  6. 6.
    Dekker, T.J.: A floating point technique for extending the available precision. Numerische Mathematik 18(3), 224–242 (1971)MathSciNetCrossRefMATHGoogle Scholar
  7. 7.
    Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions. Springer, Heidelberg (2004)CrossRefMATHGoogle Scholar
  8. 8.
    Daumas, M., Rideau, L., Théry, L.: A generic library of floating-point numbers and its application to exact computing. In: 14th International Conference on Theorem Proving in Higher Order Logics, Edinburgh, Scotland, pp. 169–184 (2001)Google Scholar
  9. 9.
    Boldo, S.: Preuves formelles en arithmétiques á virgule flottante. PhD thesis, École Normale Supérieure de Lyon (2004)Google Scholar
  10. 10.
    Filliâtre, J.C., Marché, C.: Multi-Prover Verification of C Programs. In: Sixth International Conference on Formal Engineering Methods, pp. 15–29. Springer, Heidelberg (2004)Google Scholar
  11. 11.
    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
  12. 12.
    Boldo, S., Filliâtre, J.-C.: Formal verification of floating-point programs. In: 18th IEEE Symposium on Computer Arithmetic, Montpellier, France, pp. 187–194 (2007)Google Scholar
  13. 13.
    Bécache, E.: Étude de schémas numériques pour la résolution de léquation des ondes. In: ENSTA (2003)Google Scholar
  14. 14.
    Askey, R., Gasper, G.: Certain rational functions whose power series have positive coefficients. The American Mathematical Monthly 79, 327–341 (1972)MathSciNetCrossRefMATHGoogle Scholar
  15. 15.
    Andrews, G.E., Askey, R., Roy, R.: Special functions. Cambridge University Press, Cambridge (1999)CrossRefMATHGoogle Scholar
  16. 16.
    Boldo, S., Filliâtre, J.-C., Melquiond, G.: Combining Coq and Gappa for Certifying Floating-Point Programs. In: 16th Symposium on the Integration of Symbolic Computation and Mechanised Reasoning (2009)Google Scholar
  17. 17.
    Bertot, Y., Gonthier, G., Biha, S.O., Pasca, I.: Canonical big operators. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 86–101. Springer, Heidelberg (2008)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Sylvie Boldo
    • 1
    • 2
  1. 1.INRIA SaclayÎle-de-FranceOrsayFrance
  2. 2.LRIUniv Paris-Sud, CNRSOrsayFrance

Personalised recommendations