Skip to main content

Floating-Point Verification Using Theorem Proving

  • Conference paper
Formal Methods for Hardware Verification (SFM 2006)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3965))

Abstract

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

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

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.

References

  1. Aagaard, M.D., Harrison, J. (eds.): TPHOLs 2000. LNCS, vol. 1869. Springer, Heidelberg (2000)

    MATH  Google Scholar 

  2. Aigner, M., Ziegler, G.M.: Proofs from The Book, 2nd edn. Springer, Heidelberg (2001)

    Book  MATH  Google Scholar 

  3. Appel, K., Haken, W.: Every planar map is four colorable. Bulletin of the American Mathematical Society 82, 711–712 (1976)

    Article  MathSciNet  MATH  Google Scholar 

  4. Baker, A.: A Concise Introduction to the Theory of Numbers. Cambridge University Press, Cambridge (1985)

    Google Scholar 

  5. Boldo, S.: Preuves formelles en arithmétiques à virgule flottante. PhD thesis, ENS Lyon (2004), Available on the Web from: http://www.ens-lyon.fr/LIP/Pub/Rapports/PhD/PhD2004/PhD2004-05.pdf

  6. Brown, W.S.: A simple but realistic model of floating-point computation. ACM Transactions on Mathematical Software 7, 445–480 (1981)

    Article  MATH  Google Scholar 

  7. Bryant, R.E.: Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers C-35, 677–691 (1986)

    Article  MATH  Google Scholar 

  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)

    Article  MathSciNet  MATH  Google Scholar 

  9. Church, A.: A formulation of the Simple Theory of Types. Journal of Symbolic Logic 5, 56–68 (1940)

    Article  MathSciNet  MATH  Google Scholar 

  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)

    Chapter  Google Scholar 

  11. Clenshaw, C.W., Olver, F.W.J.: Beyond floating point. Journal of the ACM 31, 319–328 (1984)

    Article  MathSciNet  MATH  Google Scholar 

  12. Cornea, M., Harrison, J., Tang, P.T.P.: Scientific Computing for Itanium Based Systems. Intel Press, Hillsboro (2002)

    Google Scholar 

  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: http://developer.intel.com/technology/itj/q21998/articles/art_3.htm

    Google Scholar 

  14. Cousineau, G., Mauny, M.: The Functional Approach to Programming. Cambridge University Press, Cambridge (1998)

    Book  MATH  Google Scholar 

  15. Davis, M., Logemann, G., Loveland, D.: A machine program for theorem proving. Communications of the ACM 5, 394–397 (1962)

    Article  MathSciNet  MATH  Google Scholar 

  16. Dekker, T.J.: A floating-point technique for extending the available precision. Numerical Mathematics 18, 224–242 (1971)

    Article  MathSciNet  MATH  Google Scholar 

  17. Dulong, C.: The IA-64 architecture at work. IEEE Computer 64(7), 24–32 (1998)

    Article  Google Scholar 

  18. Erdös, P.: Beweis eines Satzes von Tschebyshev. Acta Scientiarum Mathematicarum (Szeged) 5, 194–198 (1930)

    Google Scholar 

  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. 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. Gordon, M.J.C., Melham, T.F.: Introduction to HOL: a theorem proving environment for higher order logic. Cambridge University Press, Cambridge (1993)

    MATH  Google Scholar 

  22. Gordon, M.J.C., Milner, R., Wadsworth, C.P.: Edinburgh LCF: A Mechanised Logic of Computation. LNCS, vol. 78. Springer, Heidelberg (1979)

    MATH  Google Scholar 

  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)

    Chapter  Google Scholar 

  24. Harrison, J.: Proof style. In: Giménez, E. (ed.) TYPES 1996. LNCS, vol. 1512, pp. 154–172. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  25. Harrison, J.: Theorem Proving with the Real Numbers. Springer, Heidelberg (1998) Revised version of author’s PhD thesis

    Book  MATH  Google Scholar 

  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)

    Chapter  Google Scholar 

  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)

    Chapter  Google Scholar 

  28. Harrison, J.: Formal verification of IA-64 division algorithms. In: Aagaard, Harrison (eds.) [1], pp. 234–251

    Google Scholar 

  29. Harrison, J.: Formal verification of square root algorithms. Formal Methods in System Design 22, 143–153 (2003)

    Article  MATH  Google Scholar 

  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: http://www.dec.usc.es/arith16/papers/paper-150.pdf

    Google Scholar 

  31. Holm, J.E.: Floating-Point Arithmetic and Program Correctness Proofs. PhD thesis, Cornell University (1980)

    Google Scholar 

  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. Jacobi, C.: Formal Verification of a Fully IEEE Compliant Floating Point Unit. PhD thesis, University of the Saarland (2002), available on the Web as: http://engr.smu.edu/~seidel/research/diss-jacobi.ps.gz

  34. Kaivola, R., Aagaard, M.D.: Divider circuit verification with model checking and theorem proving. In: Aagaard, Harrison (eds.) [1], pp. 338–355

    Google Scholar 

  35. Linnainmaa, S.: Analysis of some known methods of improving the accuracy of floating-point sums. BIT 14, 167–202 (1974)

    Article  MathSciNet  MATH  Google Scholar 

  36. Loveland, D.W.: Mechanical theorem-proving by model elimination. Journal of the ACM 15, 236–251 (1968)

    Article  MATH  Google Scholar 

  37. Markstein, P.: IA-64 and Elementary Functions: Speed and Precision. Prentice-Hall, Englewood Cliffs (2000)

    Google Scholar 

  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)

    Article  MathSciNet  Google Scholar 

  39. Møller, O.: Quasi double-precision in floating-point addition. BIT 5, 37–50 (1965)

    Article  MathSciNet  MATH  Google Scholar 

  40. Moore, J.S., Lynch, T., Kaufmann, M.: A mechanically checked proof of the correctness of the kernel of the AMD5 K 86 floating-point division program. IEEE Transactions on Computers 47, 913–926 (1998)

    Article  MathSciNet  Google Scholar 

  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. Muller, J.-M.: Elementary functions: Algorithms and Implementation. Birkhäuser, Basel (1997)

    Book  MATH  Google Scholar 

  43. Muller, J.-M.: On the definition of ulp(x). Research Report 2005-09, ENS Lyon (2005)

    Google Scholar 

  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: http://developer.intel.com/technology/itj/q11999/articles/art/_5.htm

    Google Scholar 

  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)

    Chapter  Google Scholar 

  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: ftp://ftp.icsi.berkeley.edu/pub/theory/priest-thesis.ps.Z

  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)

    Chapter  Google Scholar 

  48. Quinn, K.: Ever had problems rounding off figures? The stock exchange has. Wall Street Journal (November 8, 1983)

    Google Scholar 

  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)

    MATH  Google Scholar 

  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: http://www.onr.com/user/russ/david/k7-div-sqrt.html

    Article  MathSciNet  Google Scholar 

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

    Article  Google Scholar 

  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)

    Chapter  Google Scholar 

  54. Sterbenz, P.H.: Floating-Point Computation. Prentice-Hall, Englewood Cliffs (1974)

    Google Scholar 

  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. 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. Weis, P., Leroy, X.: Le langage Caml. InterEditions (1993), see also the CAML Web page: http://pauillac.inria.fr/caml/

  58. Wijngaarden, A.v.: Numerical analysis as an independent science. BIT 6, 68–81 (1966)

    MathSciNet  MATH  Google Scholar 

  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)

    MATH  Google Scholar 

  60. Wirth, N.: Systematic Programming: An Introduction. Prentice-Hall, Englewood Cliffs (1973)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Harrison, J. (2006). Floating-Point Verification Using Theorem Proving. In: Bernardo, M., Cimatti, A. (eds) Formal Methods for Hardware Verification. SFM 2006. Lecture Notes in Computer Science, vol 3965. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11757283_8

Download citation

  • DOI: https://doi.org/10.1007/11757283_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-34304-2

  • Online ISBN: 978-3-540-34305-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics