Skip to main content

Runtime Abstract Interpretation for Numerical Accuracy and Robustness

  • Conference paper
  • First Online:
Verification, Model Checking, and Abstract Interpretation (VMCAI 2021)

Abstract

Verification of numerical accuracy properties in modern software remains an important and challenging task. One of its difficulties is related to unstable tests, where the execution can take different branches for real and floating-point numbers. This paper presents a new verification technique for numerical properties, named Runtime Abstract Interpretation (RAI), that, given an annotated source code, embeds into it an abstract analyzer in order to analyze the program behavior at runtime. RAI is a hybrid technique combining abstract interpretation and runtime verification that aims at being sound as the former while taking benefit from the concrete run to gain greater precision from the latter when necessary. It solves the problem of unstable tests by surrounding an unstable test by two carefully defined program points, forming a so-called split-merge section, for which it separately analyzes different executions and merges the computed domains at the end of the section. Our implementation of this technique in a toolchain called FLDBox relies on two basic tools, FLDCompiler, that performs a source-to-source transformation of the given program and defines the split-merge sections, and an instrumentation library FLDLib that provides necessary primitives to explore relevant (partial) executions of each section and propagate accuracy properties. Initial experiments show that the proposed technique can efficiently and soundly analyze numerical accuracy for industrial programs on thin numerical scenarios.

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 79.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 99.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

Notes

  1. 1.

    http://www-users.math.umn.edu/arnold/disasters/patriot.html.

  2. 2.

    https://en.wikipedia.org/wiki/Vancouver_Stock_Exchange.

  3. 3.

    http://www-users.math.umn.edu/arnold/disasters/sleipner.html.

  4. 4.

    The source code of FLDLib is available at https://github.com/fvedrine/fldlib.

  5. 5.

    https://gmplib.org/.

  6. 6.

    https://github.com/AdaCore/libadalang.

  7. 7.

    https://gitlab.com/libeigen/eigen.

  8. 8.

    https://www.mpfr.org.

References

  1. Bard, J., Becker, H., Darulova, E.: Formally verified roundoff errors using SMT-based certificates and subdivisions. In: ter Beek, M.H., McIver, A., Oliveira, J.N. (eds.) FM 2019. LNCS, vol. 11800, pp. 38–44. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-30942-8_4

    Chapter  Google Scholar 

  2. Baudin, P., Filliâtre, J.C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language. http://frama-c.com/acsl.html

  3. Benz, F., Hildebrandt, A., Hack, S.: A dynamic program analysis to find floating-point accuracy problems. In: Conference on Programming Language Design and Implementation (PLDI 2012) (2012)

    Google Scholar 

  4. Blazy, S., Bühler, D., Yakobowski, B.: Structuring abstract interpreters through state and value abstractions. In: Bouajjani, A., Monniaux, D. (eds.) VMCAI 2017. LNCS, vol. 10145, pp. 112–130. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-52234-0_7

    Chapter  MATH  Google Scholar 

  5. Boulanger, J.: Static Analysis of Software: The Abstract Interpretation (2011)

    Google Scholar 

  6. Cadar, C., et al.: Symbolic execution for software testing in practice: preliminary assessment. In: The 33rd International Conference on Software Engineering (ICSE 2011), pp. 1066–1071. ACM (2011). https://doi.org/10.1145/1985793.1985995

  7. Cadar, C., Sen, K.: Symbolic execution for software testing: three decades later. Commun. ACM (2013)

    Google Scholar 

  8. Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Symposium on Principles of Programming Languages (POPL 1977) (1977)

    Google Scholar 

  9. Damouche, N., Martel, M.: Salsa: An automatic tool to improve the numerical accuracy of programs. In: Automated Formal Methods, AFM@NFM (2017)

    Google Scholar 

  10. Damouche, N., Martel, M., Panchekha, P., Qiu, J., Sanchez-Stern, A., Tatlock, Z.: Toward a standard benchmark format and suite for floating-point analysis. In: NSV 2016 (2016)

    Google Scholar 

  11. Darulova, E., Izycheva, A., Nasir, F., Ritter, F., Becker, H., Bastian, R.: Daisy - framework for analysis and optimization of numerical programs (Tool paper). In: Beyer, D., Huisman, M. (eds.) TACAS 2018. LNCS, vol. 10805, pp. 270–287. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-89960-2_15

    Chapter  Google Scholar 

  12. Darulova, E., Kuncak, V.: Trustworthy numerical computation in scala. In: The 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2011), part of SPLASH 2011, pp. 325–344. ACM (2011). https://doi.org/10.1145/2048066.2048094

  13. Darulova, E., Kuncak, V.: Sound compilation of reals. In: Symposium on Principles of Programming Languages (POPL) (2014)

    Google Scholar 

  14. Darulova, E., Kuncak, V.: Towards a compiler for reals. ACM Trans. Program. Lang. Syst (2017)

    Google Scholar 

  15. Daumas, M., Melquiond, G.: Certification of bounds on expressions involving rounded operators. Trans. Math. Softw. (2010). https://doi.org/10.1145/1644001.1644003

  16. Delahaye, M., Kosmatov, N., Signoles, J.: Common specification language for static and dynamic analysis of C programs. In: The 28th Annual ACM Symposium on Applied Computing, Software Verification and Testing Track (SAC-SVT 2013), pp. 1230–1235. ACM (2013). https://doi.org/10.1145/2480362.2480593

  17. Denis, C., de Oliveira Castro, P., Petit, E.: Verificarlo: Checking floating point accuracy through monte carlo arithmetic. In: Symposium on Computer Arithmetic (ARITH) (2016). https://doi.org/10.1109/ARITH.2016.31

  18. Falcone, Y., Havelund, K., Reger, G.: A tutorial on runtime verification. In: Engineering Dependable Software Systems. IOS Press (2013)

    Google Scholar 

  19. Févotte, F., Lathuilière, B.: Studying the numerical quality of an industrial computing code: a case study on code\_aster. In: Numerical Software Verification (NSV) (2017). https://doi.org/10.1007/978-3-319-63501-9_5

  20. Ghorbal, K., Goubault, E., Putot, S.: The zonotope abstract domain Taylor1+. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 627–633. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-02658-4_47

    Chapter  Google Scholar 

  21. Goubault, E., Putot, S.: Static analysis of finite precision computations. In: International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI) (2011)

    Google Scholar 

  22. Goubault, E., Putot, S.: Robustness analysis of finite precision implementations. In: Asian Symposium on Programming Languages and Systems (APLAS) (2013)

    Google Scholar 

  23. Jézéquel, F., Chesneaux, J.M.: CADNA: a library for estimating round-off error propagation. Comput. Phys. Commun. (2008)

    Google Scholar 

  24. Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-C: a software analysis perspective. Formal Aspects Comput. (2015)

    Google Scholar 

  25. Kosmatov, N., Maurica, F., Signoles, J.: Efficient runtime assertion checking for properties over mathematical numbers. In: Deshmukh, J., Ničković, D. (eds.) RV 2020. LNCS, vol. 12399, pp. 310–322. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-60508-7_17

    Chapter  Google Scholar 

  26. Léchenet, J.-C., Kosmatov, N., Le Gall, P.: Cut branches before looking for bugs: certifiably sound verification on relaxed slices. Formal Aspects Comput. 30(1), 107–131 (2017). https://doi.org/10.1007/s00165-017-0439-x

    Article  MathSciNet  MATH  Google Scholar 

  27. Magron, V., Constantinides, G.A., Donaldson, A.F.: Certified roundoff error bounds using semidefinite programming. ACM Trans. Math. Softw. 43(4), 34:1–34:31 (2017). https://doi.org/10.1145/3015465

  28. Monniaux, D.: The pitfalls of verifying floating-point computations. Trans. Program. Lang. Syst. (TOPLAS) (2008)

    Google Scholar 

  29. de Moura, L., Bjørner, N.: Z3: an efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78800-3_24

    Chapter  Google Scholar 

  30. Muller, J., et al.: Handbook of Floating-Point Arithmetic. Birkhäuser (2010). https://doi.org/10.1007/978-0-8176-4705-6

  31. Nethercote, N., Seward, J.: Valgrind: A framework for heavyweight dynamic binary instrumentation. In: Conference on Programming Language Design and Implementation (PLDI) (2007)

    Google Scholar 

  32. Prosser, R.T.: Applications of Boolean Matrices to the Analysis of Flow Diagrams. In: Eastern Joint IRE-AIEE-ACM Computer Conference (1959). https://doi.org/10.1145/1460299.1460314

  33. Sánchez, C., et al.: A survey of challenges for runtime verification from advanced application domains (Beyond software). Formal Methods Syst. Des. (2019)

    Google Scholar 

  34. Sanchez-Stern, A., Panchekha, P., Lerner, S., Tatlock, Z.: Finding root causes of floating point error. ACM Sigplan Notice (2018). http://arxiv.org/abs/1705.10416

  35. Signoles, J.: E-ACSL: Executable ANSI/ISO C Specification Language. http://frama-c.com/download/e-acsl/e-acsl.pdf

  36. Signoles, J., Antignac, T., Correnson, L., Lemerre, M., Prevosto, V.: Frama-C Plug-in Development Guide. http://frama-c.com/download/plugin-developer.pdf

  37. Signoles, J., Kosmatov, N., Vorobyov, K.: E-ACSL, a runtime verification tool for safety and security of C programs. Tool Paper. In: International Workshop on Competitions, Usability, Benchmarks, Evaluation, and Standardisation for Runtime Verification Tools (RV-CuBES) (2017)

    Google Scholar 

  38. Solovyev, A., Baranowski, M.S., Briggs, I., Jacobsen, C., Rakamaric, Z., Gopalakrishnan, G.: Rigorous estimation of floating-point round-off errors with symbolic taylor expansions. Trans. Program. Lang. Syst. (2018). https://doi.org/10.1145/3230733

    Article  MATH  Google Scholar 

  39. Titolo, L., Feliú, M.A., Moscato, M.M., Muñoz, C.A.: An abstract interpretation framework for the round-off error analysis of floating-point programs. In: Verification, Model Checking, and Abstract Interpretation - 19th International Conference, VMCAI 2018, Los Angeles, CA, USA, January 7–9, Proceedings (2018). https://doi.org/10.1007/978-3-319-73721-8_24

  40. Titolo, L., Moscato, M., Muñoz, C.A.: Automatic generation and verification of test-stable floating-point code. arXiv e-prints (2020)

    Google Scholar 

  41. Titolo, L., Muñoz, C.A., Feliú, M.A., Moscato, M.M.: Eliminating unstable tests in floating-point programs. In: Logic-Based Program Synthesis and Transformation (LOPTSR) (2018). https://doi.org/10.1007/978-3-030-13838-7_10

  42. Védrine, F., Jacquemin, M., Kosmatov, N., Signoles, J.: Companion artifact evaluated by the VMCAI 2021 artifact evaluation committee. Zenodoo (2020). https://doi.org/10.5281/zenodo.4275521

Download references

Acknowledgement

The authors thank Romain Soulat and Thales Research and Technology for providing case studies and participation in the evaluation. We are also grateful to Jean Gassino, Gregory de la Grange and IRSN for their support and evaluation on additional case studies, as well as to the anonymous reviewers for their valuable comments.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Nikolai Kosmatov .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Védrine, F., Jacquemin, M., Kosmatov, N., Signoles, J. (2021). Runtime Abstract Interpretation for Numerical Accuracy and Robustness. In: Henglein, F., Shoham, S., Vizel, Y. (eds) Verification, Model Checking, and Abstract Interpretation. VMCAI 2021. Lecture Notes in Computer Science(), vol 12597. Springer, Cham. https://doi.org/10.1007/978-3-030-67067-2_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-67067-2_12

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-67066-5

  • Online ISBN: 978-3-030-67067-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics