Skip to main content
Log in

Abstract

Deductive software verification, also known as program proving, expresses the correctness of a program as a set of mathematical statements, called verification conditions. They are then discharged using either automated or interactive theorem provers. We briefly review this research area, with an emphasis on tools.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Abrial J.-R.: The B-Book, Assigning Programs to Meaning. Cambridge University Press, Cambridge (1996)

    Book  Google Scholar 

  2. Barnett, M., DeLine, R., Jacobs, B., Evan Chang, B.-Y., 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.) Formal Methods for Components and Objects: 4th International Symposium. Lecture Notes in Computer Science, vol. 4111, pp. 364–387 (2005)

  3. Barnett M., Leino K.R.M., Schulte W.: The Spec# Programming System: An Overview, pp. 49–69. Springer, Berlin (2004)

    Google Scholar 

  4. Barrett, C., Tinelli, C.: CVC3. In: Damm, W., Hermanns, H. (eds.) Proceedings of the 19th International Conference on Computer Aided Verification (CAV’07), Berlin, Germany. Lecture Notes in Computer Science. Springer, Berlin (2007)

  5. Baudin, P., Filliâtre, J.-C., Marché, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language, version 1.4 (2009). http://frama-c.cea.fr/acsl.html

  6. Beckert, B., Hähnle, R. P.H. Schmitt (eds.) Verification of Object-Oriented Software: The KeY Approach. Lecture Notes in Computer Science, vol. 4334. Springer, Berlin (2007)

  7. Bentley J.L.: Programming Pearls. Addison-Wesley, Reading (1986)

    Google Scholar 

  8. Bloch, J.: Nearly all binary searches and mergesorts are broken (2006). http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html

  9. Bobot, F., Conchon, S., Contejean, Iguernelala, E., Lescuyer, M., Mebsout, S., Alain, M.: The Alt-Ergo automated theorem prover (2008). http://alt-ergo.lri.fr/

  10. Bobot, F., Filliâtre, J.-C., Marché, C., Paskevich, A.: The Why3 platform. LRI, CNRS & Univ. Paris-Sud & INRIA Saclay, version 0.64 edn, February (2011). http://why3.lri.fr/

  11. Bobot, F., Filliâtre, J.-C., Marché, C., Paskevich, Andrei: Why3: Shepherd your herd of provers. In: Boogie 2011: First International Workshop on Intermediate Verification Languages. Wrocław, Poland, August (2011)

  12. Bobot, F., Paskevich, A.: Expressing Polymorphic Types in a Many-Sorted Language (2011). Preliminary report. http://hal.inria.fr/inria-00591414/

  13. Bornat, R.: Proving pointer programs in Hoare logic. In: Mathematics of Program Construction, pp 102–126 (2000)

  14. Burstall R.: Some techniques for proving correctness of programs which alter data structures. Mach. Intell. 7, 23–50 (1972)

    MATH  Google Scholar 

  15. Castillos, K.C., Dadeau, F., Julliand, J.: Scenario-Based Testing from UML/OCL Behavioral Models—Application to POSIX Compliance. Special Section on VSTTE (2009). doi:10.1007/s10009-011-0189-7

  16. Cuoq, P., Monate, B., Pacalet, A., Prevosto, V.: Functional Dependencies of C Functions via Weakest Pre-Conditions. Special Section on VSTTE (2009). doi:10.1007/s10009-011-0192-z

  17. Dahlweid, M., Moskal, M., Santen, T., Tobies, S., Schulte W.: VCC: Contract-based modular verification of concurrent C. In: 31st International Conference on Software Engineering, ICSE 2009, May 16–24, 2009, Vancouver, Canada, Companion Volume, pp 429–430. IEEE Comp. Soc. Press, New York (2009)

  18. de Moura, L., Bjørner, N.: Z3, an efficient SMT solver. http://research.microsoft.com/projects/z3/

  19. de Moura, L., Dutertre, B.: Yices: An SMT Solver. http://yices.csl.sri.com/

  20. Detlefs D., Nelson G., Saxe J.B.: Simplify: a theorem prover for program checking. J. ACM 52(3), 365–473 (2005)

    Article  MathSciNet  Google Scholar 

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

    Article  MathSciNet  MATH  Google Scholar 

  22. Filliâtre J.-C.: Formal Proof of a Program: Find. Sci. Comput. Program. 64, 332–340 (2006)

    Article  Google Scholar 

  23. Filliâtre, J.-C.: Magaud Nicolas Certification of Sorting Algorithms in the System Coq. In: Theorem Proving in Higher Order Logics: Emerging Trends. Nice, France (1999)

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

    Google Scholar 

  25. Floyd, R.W.: Assigning meanings to programs. In: Schwartz, J.T. (ed.) Mathematical Aspects of Computer Science. Proceedings of Symposia in Applied Mathematics, vol. 19. American Mathematical Society, Providence, Rhode Island, pp. 19–32 (1967)

  26. Freitas, L., Mcdermott, J., Woodcock, J.: Formal Methods for Security in the Xenon Hypervisor. Special Section on VSTTE (2009). doi:10.1007/s10009-011-0195-9

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

    Google Scholar 

  28. Hoare C.A.R.: Proof of a program: Find. Commun. ACM 14, 39–45 (1971)

    Article  MathSciNet  MATH  Google Scholar 

  29. Hubert, T., Marché, C.: Separation analysis for deductive verification. In: Heap Analysis and Verification (HAV’07). Braga, Portugal, pp. 81–93 (2007)

  30. Ishii, D., Ueda, K., Hosobe, H.: An Interval-based SAT Modulo ODE Solver for Model Checking Nonlinear Hybrid Systems. Special Section on VSTTE (2009). doi:10.1007/s10009-011-0193-y

  31. Kaufmann M., Moore J.S., Manolios P.: Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, Norwell (2000)

    Google Scholar 

  32. Klein G., Andronick J., Elphinstone K., Heiser G., Cock D., Derrin P., Elkaduwe D., Engelhardt K., Kolanski R., Norrish M., Sewell T., Tuch H., Winwood S.: seL4: Formal verification of an OS kernel. Commun. ACM 53(6), 107–115 (2010)

    Article  Google Scholar 

  33. Knuth D.E.: The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms. Addison-Wesley Longman Publishing Co., Inc., Reading (1997)

    Google Scholar 

  34. Leavens, G.T., Leino, K.R.M., Poll, E., Ruby, C., Jacobs, B.: JML: notations and tools supporting detailed design in Java. In: OOPSLA 2000 Companion, Minneapolis, Minnesota, pp. 105–106 (2000)

  35. Leino K.R.M.: Efficient weakest preconditions. Inform. Process. Lett. 93(6), 281–288 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  36. Leino, K.R.M.: Dafny: An Automatic Program Verifier for Functional Correctness. In: Springer, editor, LPAR-16, vol. 6355, pp. 348–370 (2010)

  37. Leroy X.: A formally verified compiler back-end. J. Autom. Reason. 43(4), 363–446 (2009)

    Article  MathSciNet  MATH  Google Scholar 

  38. Manna, Z., Mccarthy, J.: Properties of programs and partial function logic. In: Machine Intelligence, Edinburgh Uni. Press, vol. 5. Edinburgh (1970)

  39. Meng J., Paulson L.: Translating higher-order clauses to first-order clauses. J. Autom. Reason. 40, 35–60 (2008)

    Article  MathSciNet  MATH  Google Scholar 

  40. Meyer B.: Eiffel: The Language. Prentice Hall, Hemel Hempstead (1992)

    MATH  Google Scholar 

  41. Morris F.L., Jones C.B.: An early program proof by alan turing. IEEE Ann. Hist. Comput. 6(2), 139–143 (1984)

    Article  MathSciNet  MATH  Google Scholar 

  42. Nanevski, A., Morrisett, G., Shinnar, A., Govereau, P., Birkedal, L.: Ynot: Reasoning with the awkward squad. In: Proceedings of ICFP’08 (2008)

  43. Owre S., Shankar N., Rushby J.M., Stringer-Calvert D.W.J.: PVS Language Reference. Computer Science Laboratory, SRI International, Menlo Park, CA (1999)

    Google Scholar 

  44. Paulson, L.C.: Introduction to isabelle. Technical report, University of Cambridge (1993)

  45. Reynolds, J.C.: Separation logic: a logic for shared mutable data structures. In: 17h Annual IEEE Symposium on Logic in Computer Science. IEEE Comp. Soc. Press, New York (2002)

  46. Schirmer, N.: Verification of Sequential Imperative Programs in Isabelle/HOL. PhD thesis, Technische Universität München (2006)

  47. Shostak R.E.: Deciding combinations of theories. J. ACM 31, 1–12 (1984)

    Article  MathSciNet  MATH  Google Scholar 

  48. Sutcliffe G., Suttner C.: The State of CASC. AI Commun. 19(1), 35–48 (2006)

    MathSciNet  MATH  Google Scholar 

  49. Sutcliffe G., Suttner C.: The TPTP Problem Library: CNF Release v1.2.1. J. Autom. Reason. 21(2), 177–203 (1998)

    Article  MathSciNet  MATH  Google Scholar 

  50. The Coq Development Team: The Coq Proof Assistant Reference Manual—Version V8.2 (2008). http://coq.inria.fr

  51. Tuch, H., Klein, G., Norrish, M.: Types, bytes, and separation logic. In: Hofmann, M., Felleisen, M. (eds.) Proc. 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’07), pp. 97–108, Nice, France, January (2007)

  52. Turing, A.M.: Checking a large routine. In: Report of a Conference on High Speed Automatic Calculing Machines. Mathematical Laboratory, Cambridge, pp. 67–69 (1949)

  53. Weber, T.: SMT Solvers: New Oracles for the HOL Theorem Prover. Special Section on VSTTE (2009). doi:10.1007/s10009-011-0188-8

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jean-Christophe Filliâtre.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Filliâtre, JC. Deductive software verification. Int J Softw Tools Technol Transfer 13, 397–403 (2011). https://doi.org/10.1007/s10009-011-0211-0

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-011-0211-0

Keywords