This chapter describes our work on formal verification of floating-point algorithms using the HOL Light theorem prover.


Model Check Inference Rule Point Number Transcendental Function Point Format 
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.
    Aagaard, M.D., Harrison, J. (eds.): TPHOLs 2000. LNCS, vol. 1869. Springer, Heidelberg (2000)MATHGoogle Scholar
  2. 2.
    Aigner, M., Ziegler, G.M.: Proofs from The Book, 2nd edn. Springer, Heidelberg (2001)CrossRefMATHGoogle Scholar
  3. 3.
    Appel, K., Haken, W.: Every planar map is four colorable. Bulletin of the American Mathematical Society 82, 711–712 (1976)MathSciNetCrossRefMATHGoogle Scholar
  4. 4.
    Baker, A.: A Concise Introduction to the Theory of Numbers. Cambridge University Press, Cambridge (1985)Google Scholar
  5. 5.
    Boldo, S.: Preuves formelles en arithmétiques à virgule flottante. PhD thesis, ENS Lyon (2004), Available on the Web from:
  6. 6.
    Brown, W.S.: A simple but realistic model of floating-point computation. ACM Transactions on Mathematical Software 7, 445–480 (1981)CrossRefMATHGoogle Scholar
  7. 7.
    Bryant, R.E.: Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers C-35, 677–691 (1986)CrossRefMATHGoogle Scholar
  8. 8.
    Burch, J.R., Clarke, E.M., McMillan, K.L., Dill, D.L., Hwang, L.J.: Symbolic model checking: 1020 states and beyond. Information and Computation 98, 142–170 (1992)MathSciNetCrossRefMATHGoogle Scholar
  9. 9.
    Church, A.: A formulation of the Simple Theory of Types. Journal of Symbolic Logic 5, 56–68 (1940)MathSciNetCrossRefMATHGoogle Scholar
  10. 10.
    Clarke, E.M., Emerson, E.A.: Design and synthesis of synchronization skeletons using branching-time temporal logic. In: Kozen, D. (ed.) Logic of Programs 1981. LNCS, vol. 131, pp. 52–71. Springer, Heidelberg (1982)CrossRefGoogle Scholar
  11. 11.
    Clenshaw, C.W., Olver, F.W.J.: Beyond floating point. Journal of the ACM 31, 319–328 (1984)MathSciNetCrossRefMATHGoogle Scholar
  12. 12.
    Cornea, M., Harrison, J., Tang, P.T.P.: Scientific Computing for Itanium Based Systems. Intel Press, Hillsboro (2002)Google Scholar
  13. 13.
    Cornea-Hasegan, M.: Proving the IEEE correctness of iterative floating-point square root, divide and remainder algorithms. Intel Technology Journal 1998-Q2, 1–11 (1998), available on the Web as: Google Scholar
  14. 14.
    Cousineau, G., Mauny, M.: The Functional Approach to Programming. Cambridge University Press, Cambridge (1998)CrossRefMATHGoogle Scholar
  15. 15.
    Davis, M., Logemann, G., Loveland, D.: A machine program for theorem proving. Communications of the ACM 5, 394–397 (1962)MathSciNetCrossRefMATHGoogle Scholar
  16. 16.
    Dekker, T.J.: A floating-point technique for extending the available precision. Numerical Mathematics 18, 224–242 (1971)MathSciNetCrossRefMATHGoogle Scholar
  17. 17.
    Dulong, C.: The IA-64 architecture at work. IEEE Computer 64(7), 24–32 (1998)CrossRefGoogle Scholar
  18. 18.
    Erdös, P.: Beweis eines Satzes von Tschebyshev. Acta Scientiarum Mathematicarum (Szeged) 5, 194–198 (1930)Google Scholar
  19. 19.
    Goldberg, E., Novikov, Y.: BerkMin: a fast and robust Sat-solver. In: Kloos, C.D., Franca, J.D. (eds.) Design, Automation and Test in Europe Conference and Exhibition (DATE 2002), Paris, France, pp. 142–149. IEEE Computer Society Press, Los Alamitos (2002)Google Scholar
  20. 20.
    Gordon, M.J.C.: Representing a logic in the LCF metalanguage. In: Néel, D. (ed.) Tools and notions for program construction: an advanced course, pp. 163–185. Cambridge University Press, Cambridge (1982)Google Scholar
  21. 21.
    Gordon, M.J.C., Melham, T.F.: Introduction to HOL: a theorem proving environment for higher order logic. Cambridge University Press, Cambridge (1993)MATHGoogle Scholar
  22. 22.
    Gordon, M.J.C., Milner, R., Wadsworth, C.P.: Edinburgh LCF: A Mechanised Logic of Computation. LNCS, vol. 78. Springer, Heidelberg (1979)MATHGoogle Scholar
  23. 23.
    Harrison, J.: HOL Light: A tutorial introduction. In: Srivas, M., Camilleri, A. (eds.) FMCAD 1996. LNCS, vol. 1166, pp. 265–269. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  24. 24.
    Harrison, J.: Proof style. In: Giménez, E. (ed.) TYPES 1996. LNCS, vol. 1512, pp. 154–172. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  25. 25.
    Harrison, J.: Theorem Proving with the Real Numbers. Springer, Heidelberg (1998) Revised version of author’s PhD thesisCrossRefMATHGoogle Scholar
  26. 26.
    Harrison, J.V.: A machine-checked theory of floating point arithmetic. In: Bertot, Y., Dowek, G., Hirschowitz, A., Paulin, C., Théry, L. (eds.) TPHOLs 1999. LNCS, vol. 1690, pp. 113–130. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  27. 27.
    Harrison, J.V.: Formal verification of floating point trigonometric functions. In: Johnson, S.D., Hunt Jr., W.A. (eds.) FMCAD 2000. LNCS, vol. 1954, pp. 217–233. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  28. 28.
    Harrison, J.: Formal verification of IA-64 division algorithms. In: Aagaard, Harrison (eds.) [1], pp. 234–251Google Scholar
  29. 29.
    Harrison, J.: Formal verification of square root algorithms. Formal Methods in System Design 22, 143–153 (2003)CrossRefMATHGoogle Scholar
  30. 30.
    Harrison, J.: Isolating critical cases for reciprocals using integer factorization. In: Bajard, J.-C., Schulte, M. (eds.) Proceedings, 16th IEEE Symposium on Computer Arithmetic, Santiago de Compostela, Spain, pp. 148–157. IEEE Computer Society, Los Alamitos (2003), currently available from symposium Web site at: Google Scholar
  31. 31.
    Holm, J.E.: Floating-Point Arithmetic and Program Correctness Proofs. PhD thesis, Cornell University (1980)Google Scholar
  32. 32.
    IEEE. Standard for binary floating point arithmetic. ANSI/IEEE Standard 754-1985, The Institute of Electrical and Electronic Engineers, Inc., 345 East 47th Street, New York 10017, USA (1985)Google Scholar
  33. 33.
    Jacobi, C.: Formal Verification of a Fully IEEE Compliant Floating Point Unit. PhD thesis, University of the Saarland (2002), available on the Web as:
  34. 34.
    Kaivola, R., Aagaard, M.D.: Divider circuit verification with model checking and theorem proving. In: Aagaard, Harrison (eds.) [1], pp. 338–355Google Scholar
  35. 35.
    Linnainmaa, S.: Analysis of some known methods of improving the accuracy of floating-point sums. BIT 14, 167–202 (1974)MathSciNetCrossRefMATHGoogle Scholar
  36. 36.
    Loveland, D.W.: Mechanical theorem-proving by model elimination. Journal of the ACM 15, 236–251 (1968)CrossRefMATHGoogle Scholar
  37. 37.
    Markstein, P.: IA-64 and Elementary Functions: Speed and Precision. Prentice-Hall, Englewood Cliffs (2000)Google Scholar
  38. 38.
    Markstein, P.W.: Computation of elementary functions on the IBM RISC System/6000 processor. IBM Journal of Research and Development 34, 111–119 (1990)MathSciNetCrossRefGoogle Scholar
  39. 39.
    Møller, O.: Quasi double-precision in floating-point addition. BIT 5, 37–50 (1965)MathSciNetCrossRefMATHGoogle Scholar
  40. 40.
    Moore, J.S., Lynch, T., Kaufmann, M.: A mechanically checked proof of the correctness of the kernel of the AMD5K86 floating-point division program. IEEE Transactions on Computers 47, 913–926 (1998)MathSciNetCrossRefGoogle Scholar
  41. 41.
    Moskewicz, M.W., Madigan, C.F., Zhao, Y., Zhang, L., Malik, S.: Chaff: Engineering an efficient SAT solver. In: Proceedings of the 38th Design Automation Conference (DAC 2001), pp. 530–535. ACM Press, New York (2001)Google Scholar
  42. 42.
    Muller, J.-M.: Elementary functions: Algorithms and Implementation. Birkhäuser, Basel (1997)CrossRefMATHGoogle Scholar
  43. 43.
    Muller, J.-M.: On the definition of ulp(x). Research Report 2005-09, ENS Lyon (2005)Google Scholar
  44. 44.
    O’Leary, J., Zhao, X., Gerth, R., Seger, C.-J.H.: Formally verifying IEEE compliance of floating-point hardware. Intel Technology Journal 1999-Q1, 1–14 (1999), available on the Web as: Google Scholar
  45. 45.
    Pratt, V.R.: Anatomy of the Pentium bug. In: Mosses, P.D., Schwartzbach, M.I., Nielsen, M. (eds.) CAAP 1995, FASE 1995, and TAPSOFT 1995. LNCS, vol. 915, pp. 97–107. Springer, Heidelberg (1995)CrossRefGoogle Scholar
  46. 46.
    Priest, D.M.: On Properties of Floating Point Arithmetics: Numerical Stability and the Cost of Accurate Computations. PhD thesis, University of California, Berkeley (1992), available on the Web as:
  47. 47.
    Queille, J.P., Sifakis, J.: Specification and verification of concurrent programs in CESAR. In: Dezani-Ciancaglini, M., Montanari, U. (eds.) Programming 1982. LNCS, vol. 137, pp. 195–220. Springer, Heidelberg (1982)CrossRefGoogle Scholar
  48. 48.
    Quinn, K.: Ever had problems rounding off figures? The stock exchange has. Wall Street Journal (November 8, 1983)Google Scholar
  49. 49.
    Remes, M.E.: Sur le calcul effectif des polynomes d’approximation de Tchebichef. Comptes Rendus Hebdomadaires des Séances de l’Académie des Sciences 199, 337–340 (1934)MATHGoogle Scholar
  50. 50.
    Rusinoff, D.: A mechanically checked proof of IEEE compliance of a register-transfer-level specification of the AMD-K7 floating-point multiplication, division, and square root instructions. LMS Journal of Computation and Mathematics 1, 148–200 (1998), available on the Web via: MathSciNetCrossRefGoogle Scholar
  51. 51.
    Sawada, J.: Formal verification of divide and square root algorithms using series calculation. In: Borrione, D., Kaufmann, M., Moore, J. (eds.) 3rd International Workshop on the ACL2 Theorem Prover and its Applications, pp. 31–49. University of Grenoble (2002)Google Scholar
  52. 52.
    Seger, C.-J.H., Bryant, R.E.: Formal verification by symbolic evaluation of partially-ordered trajectories. Formal Methods in System Design 6, 147–189 (1995)CrossRefGoogle Scholar
  53. 53.
    Stålmarck, G., Säflund, M.: Modeling and verifying systems and software in propositional logic. In: Daniels, B.K. (ed.) Safety of Computer Control Systems, 1990 (SAFECOMP 1990), Gatwick, UK, pp. 31–36. Pergamon Press, Oxford (1990)CrossRefGoogle Scholar
  54. 54.
    Sterbenz, P.H.: Floating-Point Computation. Prentice-Hall, Englewood Cliffs (1974)Google Scholar
  55. 55.
    Story, S., Tang, P.T.P.: New algorithms for improved transcendental functions on IA-64. In: Koren, I., Kornerup, P. (eds.) Proceedings, 14th IEEE symposium on on computer arithmetic, Adelaide, Australia, pp. 4–11. IEEE Computer Society, Los Alamitos (1999)Google Scholar
  56. 56.
    Tang, P.T.P.: Table-lookup algorithms for elementary functions and their error analysis. In: Kornerup, P., Matula, D.W. (eds.) Proceedings of the 10th Symposium on Computer Arithemtic, pp. 232–236 (1991)Google Scholar
  57. 57.
    Weis, P., Leroy, X.: Le langage Caml. InterEditions (1993), see also the CAML Web page:
  58. 58.
    Wijngaarden, A.v.: Numerical analysis as an independent science. BIT 6, 68–81 (1966)MathSciNetMATHGoogle Scholar
  59. 59.
    Wilkinson, J.H.: Rounding Errors in Algebraic Processes. National Physical Laboratory Notes on Applied Science, vol. 32. Her Majesty’s Stationery Office (HMSO), London (1963)MATHGoogle Scholar
  60. 60.
    Wirth, N.: Systematic Programming: An Introduction. Prentice-Hall, Englewood Cliffs (1973)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • John Harrison
    • 1
  1. 1.Intel Corporation, JF1-13HillsboroUSA

Personalised recommendations