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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
AdaCore. Advanced SPARK - online course (2018). https://learn.adacore.com/courses/advanced-spark/index.html
AdaCore. Introduction to SPARK - online course (2018). https://learn.adacore.com/courses/intro-to-spark/index.html
AdaCore and Altran UK Ltd. SPARK 2014’s User Guide (2018). http://docs.adacore.com/spark2014-docs/html/ug/index.html
AdaCore and Altran UK Ltd. SPARK 2014’s User Guide (2019). http://docs.adacore.com/spark2014-docs/html/ug/index.html
AdaCore and Thales. Implementation Guidance for the Adoption of SPARK (2018). https://www.adacore.com/books/implementation-guidance-spark
Baudin, P., et al.: ACSL: ANSI/ISO C specification language (2018). https://frama-c.com/download/acsl-implementation-Chlorine-20180501.pdf
Burghardt, J., Gerlach, J.: ACSL by Example (2019). https://github.com/fraunhoferfokus/acsl-by-example
Creuse, L. et al.: SPARK by Example (2018). https://github.com/tofgarion/spark-by-example
Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of program. Commun. ACM 18(8), 453–457 (1975)
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
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
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
Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)
ISAE-SUPAERO. The ISAE-SUPAERO engineering program (2019). https://www.isae-supaero.fr/en/academics/ingenieur-isae-supaero-msc/engineering-program/
McCormick, J.W., Chapin, P.C.: Building High Integrity Applications with SPARK. Cambridge University Press, Cambridge (2015)
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
Lamport, L.: Specifying Systems: The TLA+ Language and Tools forHardware and Software Engineers. Addison-Wesley Professional, Boston (2002)
Plauger, P.J., et al.: C++ Standard Template Library. Prentice Hall PTR, New Jersey (2000)
International Organization for Standardization (2011), ISO/IEC 14882:2011
The Toccata team. Why3. Where programs meet provers (2018). http://why3.lri.fr/
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
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)