Skip to main content

Teaching Deductive Verification Through Frama-C and SPARK for Non Computer Scientists

  • Conference paper
  • First Online:
Formal Methods Teaching (FMTea 2019)

Abstract

Deductive verification of software is a formal method that is usually taught in Computer Science curriculum. But how can students with no strong background in Computer Science be exposed to such a technique? We present in this paper two experiments made at ISAE-SUPAERO, an engineering program focusing on aerospace industry. The first one is a classic lecture introducing deductive methods through the Frama-C platform or the SPARK programming language. The second one is the production by two undergraduate students of a complete guide on how to prove complex algorithms with SPARK. Both experiments showed that students with no previous knowledge of formal methods nor theoretical Computer Science may learn deductive methods efficiently with bottom-up approaches in which they are quickly confronted to tools and practical sessions.

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 EPUB and 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

References

  1. AdaCore. Advanced SPARK - online course (2018). https://learn.adacore.com/courses/advanced-spark/index.html

  2. AdaCore. Introduction to SPARK - online course (2018). https://learn.adacore.com/courses/intro-to-spark/index.html

  3. AdaCore and Altran UK Ltd. SPARK 2014’s User Guide (2018). http://docs.adacore.com/spark2014-docs/html/ug/index.html

  4. AdaCore and Altran UK Ltd. SPARK 2014’s User Guide (2019). http://docs.adacore.com/spark2014-docs/html/ug/index.html

  5. AdaCore and Thales. Implementation Guidance for the Adoption of SPARK (2018). https://www.adacore.com/books/implementation-guidance-spark

  6. Baudin, P., et al.: ACSL: ANSI/ISO C specification language (2018). https://frama-c.com/download/acsl-implementation-Chlorine-20180501.pdf

  7. Burghardt, J., Gerlach, J.: ACSL by Example (2019). https://github.com/fraunhoferfokus/acsl-by-example

  8. Creuse, L. et al.: SPARK by Example (2018). https://github.com/tofgarion/spark-by-example

  9. Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of program. Commun. ACM 18(8), 453–457 (1975)

    Article  MathSciNet  Google Scholar 

  10. Dross, C., Moy, Y.: Auto-active proof of red-black trees in SPARK. In: Barrett, C., Davies, M., Kahsai, T. (eds.) NFM 2017. LNCS, vol. 10227, pp. 68–83. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-57288-8_5

    Chapter  Google Scholar 

  11. Filliâtre, J.-C., Paskevich, A.: Why3 — where programs meet provers. In: Felleisen, M., Gardner, P. (eds.) ESOP 2013. LNCS, vol. 7792, pp. 125–128. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-37036-6_8

    Chapter  Google Scholar 

  12. Floyd, R.W.: Assigning meanings to programs. In: Schwartz, J.T. (eds.) Mathematical Aspects of Computer Science. American Mathematical Society, pp. 19–32 (1967) ISBN: 0821867288

    Google Scholar 

  13. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)

    Article  Google Scholar 

  14. ISAE-SUPAERO. The ISAE-SUPAERO engineering program (2019). https://www.isae-supaero.fr/en/academics/ingenieur-isae-supaero-msc/engineering-program/

  15. McCormick, J.W., Chapin, P.C.: Building High Integrity Applications with SPARK. Cambridge University Press, Cambridge (2015)

    Book  Google Scholar 

  16. Kirchner, F., et al.: Frama-C: a software analysis perspective. Formal Asp. Comput. 27(3), 573–609 (2015). https://doi.org/10.1007/s00165-014-0326-7

    Article  MathSciNet  Google Scholar 

  17. Lamport, L.: Specifying Systems: The TLA+ Language and Tools forHardware and Software Engineers. Addison-Wesley Professional, Boston (2002)

    Google Scholar 

  18. Plauger, P.J., et al.: C++ Standard Template Library. Prentice Hall PTR, New Jersey (2000)

    Google Scholar 

  19. International Organization for Standardization (2011), ISO/IEC 14882:2011

    Google Scholar 

  20. The Toccata team. Why3. Where programs meet provers (2018). http://why3.lri.fr/

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Christophe Garion .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Creuse, L., Dross, C., Garion, C., Hugues, J., Huguet, J. (2019). Teaching Deductive Verification Through Frama-C and SPARK for Non Computer Scientists. In: Dongol, B., Petre, L., Smith, G. (eds) Formal Methods Teaching. FMTea 2019. Lecture Notes in Computer Science(), vol 11758. Springer, Cham. https://doi.org/10.1007/978-3-030-32441-4_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-32441-4_2

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-32440-7

  • Online ISBN: 978-3-030-32441-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics