A Lesson on Proof of Programs with Frama-C. Invited Tutorial Paper

  • Nikolai Kosmatov
  • Virgile Prevosto
  • Julien Signoles
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7942)


To help formal verification tools to make their way into industry, they ought to be more widely used in software engineering classes. This tutorial paper serves this purpose and provides a lesson on formal specification and proof of programs with Frama-C, an open-source platform dedicated to analysis of C programs, and acsl, a specification language for C.


deductive verification Frama-C ACSL program specification teaching 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Randimbivololona, F., Souyris, J., Baudin, P., Pacalet, A., Raguideau, J., Schoen, D.: Applying Formal Proof Techniques to Avionics Software: A Pragmatic Approach. In: Wing, J.M., Woodcock, J., Davies, J. (eds.) FM 1999. LNCS, vol. 1709, pp. 1798–1815. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  2. 2.
    Delmas, D., Duprat, S., Baudin, P., Monate, B.: Proving temporal properties at code level for basic operators of control/command programs. In: 4th European Congress on Embedded Real Time Software (2008)Google Scholar
  3. 3.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12(10), 576–580, 583 (1969)zbMATHCrossRefGoogle Scholar
  4. 4.
    Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM 18(8), 453–457 (1975)MathSciNetzbMATHCrossRefGoogle Scholar
  5. 5.
    Correnson, L., Cuoq, P., Kirchner, F., Prevosto, V., Puccetti, A., Signoles, J., Yakobowski, B.: Frama-C User Manual (October 2011),
  6. 6.
    Cuoq, P., Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-C, a program analysis perspective. In: Eleftherakis, G., Hinchey, M., Holcombe, M. (eds.) SEFM 2012. LNCS, vol. 7504, pp. 233–247. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  7. 7.
    Moy, Y.: Automatic Modular Static Safety Checking for C Programs. PhD thesis, University Paris 11 (January 2009)Google Scholar
  8. 8.
    Moy, Y., Marché, C.: Jessie Plugin TutorialGoogle Scholar
  9. 9.
    Correnson, L., Dargaye, Z.: WP Plug-in Manual, version 0.5 (January 2012)Google Scholar
  10. 10.
    Baudin, P., Filliâtre, J.C., Hubert, T., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language (February 2011)Google Scholar
  11. 11.
    Correnson, L., Signoles, J.: Combining Analyses for C Program Verification. In: Stoelinga, M., Pinger, R. (eds.) FMICS 2012. LNCS, vol. 7437, pp. 108–130. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  12. 12.
    Feinerer, I., Salzer, G.: A comparison of tools for teaching formal software verification. Formal Aspects of Computing 21(3) (2009)Google Scholar
  13. 13.
    KeY Project: Uses of KeY for teaching,
  14. 14.
  15. 15.
    Burghardt, J., Gerlach, J., Hartig, K., Pohl, H., Soto, J.: ACSL by Example. A fairly complete tour of ACSL features through various functions inspired from C++ STL. Version 7.1.0 (for Frama-C Nitrogen)Google Scholar
  16. 16.
    Almeida, J.C.B., Frade, M.J., Pinto, J.S., de Sousa, S.M.: Rigorous Software Development, An Introduction to Program Verification. Undergraduate Topics in Computer Science. Springer (2011)Google Scholar
  17. 17.
    Quan, T., Nguyen, P., Bui, T., Le, T., Nguyen, A., Hoang, D., Nguyen, V., Nguyen, B.: iiOSProTrain: An Interactive Intelligent Online System for Programming Training. Journal of Advances in Information Technology 3(1) (2012)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Nikolai Kosmatov
    • 1
  • Virgile Prevosto
    • 1
  • Julien Signoles
    • 1
  1. 1.LIST, Software Reliability LaboratoryCEAGif-sur-YvetteFrance

Personalised recommendations