Structural Abstract Interpretation: A Formal Study Using Coq

  • Yves Bertot

Abstract

Abstract interpreters are tools to compute approximations for behaviors of a program. These approximations can then be used for optimisation or for error detection. In this paper, we show how to describe an abstract interpreter using the type-theory based theorem prover Coq, using inductive types for syntax and structural recursive programming for the abstract interpreter’s kernel. The abstract interpreter can then be proved correct with respect to a Hoare logic for the programming language.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Aydemir, B., Bohannon, A., Fairbairn, M., Foster, J., Pierce, B., Sewell, P., Vytiniotis, D., Washburn, G., Weirich, S., Zdancewic, S.: Mechanized metatheory for the masses: The POPLmark challenge. In: Hurd, J., Melham, T. (eds.) TPHOLs 2005. LNCS, vol. 3603, pp. 50–65. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  2. 2.
    Bertot, Y.: Theorem proving support in programming language semantics. Technical Report 6242, INRIA (2007); to appear in a book in memory of Gilles KahnGoogle Scholar
  3. 3.
    Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development, Coq’Art: the Calculus of Inductive Constructions. Springer, Heidelberg (2004)CrossRefMATHGoogle Scholar
  4. 4.
    Bertot, Y., Grégoire, B., Leroy, X.: A structured approach to proving compiler optimizations based on dataflow analysis. In: Filliâtre, J.-C., Paulin-Mohring, C., Werner, B. (eds.) TYPES 2004. LNCS, vol. 3839, pp. 66–81. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  5. 5.
    Besson, F., Jensen, T., Pichardie, D.: Proof-carrying code from certified abstract interpretation and fixpoint compression. Theoretical Computer Science 364(3), 273–291 (2006)MathSciNetCrossRefMATHGoogle Scholar
  6. 6.
    Blazy, S., Dargaye, Z., Leroy, X.: Formal verification of a C compiler front-end. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, pp. 460–475. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  7. 7.
    Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Conference Record of the Fourth ACM Symposium on Principles of Programming Languages, POPL 1977, pp. 238–252. ACM Press, New York (1977)Google Scholar
  8. 8.
    Cousot, P., Cousot, R., Feret, J., Miné, A., Mauborgne, L., Monniaux, D., Rival, X.: The ASTREÉ analyzer. In: Sagiv, M. (ed.) ESOP 2005, vol. 3444, pp. 21–30. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  9. 9.
    Dijkstra, E.W.: A discipline of Programming. Prentice Hall, Englewood Cliffs (1976)MATHGoogle Scholar
  10. 10.
    Leroy, X.: Formal certification of a compiler back-end, or: programming a compiler with a proof assistant. In: 33rd symposium Principles of Programming Languages, pp. 42–54. ACM Press, New York (2006)Google Scholar
  11. 11.
    Pichardie, D.: Interprétation abstraite en logique intuitionniste : extraction d’analyseurs Java certifiés. PhD thesis, Université Rennes 1 (2005) (in French)Google Scholar
  12. 12.
    Pichardie, D.: Building certified static analysers by modular construction of well-founded lattices. In: Proc. of the 1st International Conference on Foundations of Informatics, Computing and Software (FICS 2008). Electronic Notes in Theoretical Computer Science (2008)Google Scholar
  13. 13.
    The Coq development team. The coq proof assistant (2008), http://coq.inria.fr

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Yves Bertot
    • 1
  1. 1.INRIA Sophia-MéditerranéeFrance

Personalised recommendations