Skip to main content

Abstract

In this chapter we study a verification tool, called Frama-C, for ACSL-annotated C programs. In fact Frama-C is much more than a verification tool: it is a general, plug-in-based program analysis tool, designed to be used in practice in industrial projects. The program verification functionality of Frama-C used in the present chapter is provided by the Jessie plug-in. Jessie in turn relies on the use of a multi-prover VCGen tool that can export verification conditions to many different proof tools, including for instance the Simplify and Z3 automatic provers, and proof assistants like Coq.

Our approach in the present chapter is to start from an algorithm for which only an informal specification is given. We annotate the C code of this function as we go along, starting with the minimal annotations required for verification of safety, followed later by other functional properties.

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 29.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 39.95
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://frama-c.com.

  2. 2.

    http://research.microsoft.com/en-us/projects/havoc/.

  3. 3.

    http://research.microsoft.com/en-us/projects/vcc/.

References

  1. Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# programming system: An overview. In: CASSIS: Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, vol. 3362, pp. 49–69. Springer, Berlin (2004)

    Chapter  Google Scholar 

  2. Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.P. (eds.) FMCO. Lecture Notes in Computer Science, vol. 4111, pp. 364–387. Springer, Berlin (2005)

    Google Scholar 

  3. Filliâtre, J.-C.: Program verification using coq—introduction to the why tool. Lecture Notes TYPES Summer School (2005)

    Google Scholar 

  4. Filliâtre, J.-C.: Queens on a chessboard: An exercise in program verification (2007).http://why.lri.fr/queens/

  5. Filliâtre, J.-C., Marché, C.: The Why/Krakatoa/Caduceus platform for deductive program verification. In: Damm, W., Hermanns, H. (eds.) CAV. Lecture Notes in Computer Science, vol. 4590, pp. 173–177. Springer, Berlin (2007)

    Google Scholar 

  6. Moy, Y., Marché, C., Jessie Plugin Tutorial. LRI (February 2010). Beryllium Version

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to José Bacelar Almeida .

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag London Limited

About this chapter

Cite this chapter

Almeida, J.B., Frade, M.J., Pinto, J.S., Melo de Sousa, S. (2011). Verifying C Programs. In: Rigorous Software Development. Undergraduate Topics in Computer Science. Springer, London. https://doi.org/10.1007/978-0-85729-018-2_10

Download citation

  • DOI: https://doi.org/10.1007/978-0-85729-018-2_10

  • Publisher Name: Springer, London

  • Print ISBN: 978-0-85729-017-5

  • Online ISBN: 978-0-85729-018-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics