Abstract
Software is vital for modern society. It is used in many safety- or security-critical applications, where a high degree of correctness is desirable. Over the last years, technologies for the formal specification and verification of software—using logic-based specification languages and automated deduction—have matured and can be expected to complement and partly replace traditional software engineering methods in the future. Program verification is an increasingly important application area for automated deduction. The field has outgrown the area of academic case studies, and industry is showing serious interest. This article describes the aspects of automated deduction that are important for program verification in practise, and it gives an overview of the reasoning mechanisms, the methodology, and the architecture of modern program verification systems.
Similar content being viewed by others
References
Ahrendt W (2002) Deductive search for errors in free data type specifications using model generation. In: Voronkov A (ed) Proceedings of 18th international conference on automated deduction (CADE-18), Copenhagen, Denmark. LNCS, vol 2392. Springer, Berlin
Ahrendt W, Beckert B, Hähnle R, Rümmer P, Schmitt PH (2007) Verifying object-oriented programs with KeY: a tutorial. In: de Boer F, Bonsangue M, Graf S, de Roever W (eds) Revised lectures. 5th international symposium on formal methods for components and objects (FMCO 2006), Amsterdam, The Netherlands. LNCS, vol 4709. Springer, Berlin
Arts T, Giesl J (2000) Termination of term rewriting using dependency pairs. Theor Comput Sci 236(1–2):133–178
Barnett M, Leino R, Schulte W (2005) The Spec# programming system: An overview. In: Construction and analysis of safe, secure, and interoperable smart devices (CASSIS). International workshop, 2004, Marseille, France, Revised Selected Papers. LNCS, vol 3362. Springer, Berlin, pp 49–69
Barrett C, Tinelli C (2007) CVC3. In: Damm W, Hermanns H (eds) Proceedings of 19th international conference on computer aided verification (CAV ’07). LNCS, vol 4590. Springer, Berlin, pp 298–302
Beckert B, Hähnle R, Schmitt PH (eds) (2007) Verification of object-oriented software: the KeY approach. LNCS, vol 4334. Springer, Berlin
Beckert B., Moskal M. (2010) Deductive verification of system software in the Verisoft XT project. KI (in this issue)
Bertot Y (2008) A short presentation of Coq. In: Aït Mohamed O, Muñoz C, Tahar S (eds) Proceedings of 21st international conference on theorem proving in higher order logics (TPHOLs), Montreal, Canada. LNCS, vol 5170. Springer, Berlin, pp 12–16
Bradley AR, Manna Z, Sipma HB (2005) Termination of polynomial programs. In: Cousot R (ed) VMCAI. LNCS, vol 3385. Springer, Berlin, pp 113–129
Claessen K, Sörensson N (2003) New techniques that improve MACE-style model finding. In: Proc of workshop on model computation (MODEL)
de Moura L, Bjørner N (2008) Z3: An efficient SMT solver. In: Tools and algorithms for the construction and analysis of systems. Proceedings of the 14th international conference, Budapest, Hungary. LNCS, vol 4963. Springer, Berlin, pp 337–340
DeLine R, Leino KRM (2005) BoogiePL: a typed procedural language for checking object-oriented programs. Technical Report MSR-TR-2005-70. Microsoft Research
Dutertre B (2007) System description: Yices 1.0.10. In: SMT-COMP’07
Falke S, Kapur D (2009) A term rewriting approach to the automated termination analysis of imperative programs. In: Schmidt RA (ed) CADE. LNCS, vol 5663. Springer, Berlin, pp 277–293
Filliâtre J-C, Marché C (2004) Multi-prover verification of C programs. In: Proceedings, formal methods and software engineering. LNCS, vol 3308. Springer, Berlin, pp 15–29
Giese M (2001) Incremental closure of free variable tableaux. In: Proc intl joint conf on automated reasoning, Siena, Italy. LNCS, vol 2083. Springer, Berlin, pp 545–560
Harrison J (1996) HOL light: a tutorial introduction. In: Srivas MK, Camilleri AJ (eds) Proceedings, first international conference on formal methods in computer-aided design (FMCAD), Palo Alto, USA. LNCS, vol 1166. Springer, Berlin, pp 265–269
Hoare CAR (1969) An axiomatic basis for computer programming. Commun ACM 12(10):576–580, 583
Ireland A, Kovács L (eds) (2009) WING 2009, Workshop on invariant generation
Kaufmann M, Manolios P, Moore JS (2000) Computer-aided reasoning: an approach. Kluwer Academic, Boston
Klein G, Elphinstone K, Heiser G, Andronick J, Cock D, Derrin P, Elkaduwe D, Engelhardt K, Kolanski R, Norrish M, Sewell T, Tuch H, Winwood S (2009) seL4: formal verification of an OS kernel. In: Proceedings of the 22nd ACM symposium on operating systems principles, Big Sky, MT, USA. ACM, October 2009
Podelski A, Rybalchenko A (2004) A complete method for the synthesis of linear ranking functions. In: VMCAI. LNCS, vol 2937. Springer, Berlin, pp 239–251
Rümmer P (2007) A sequent calculus for integer arithmetic with counterexample generation. In: Proceedings, 4th international verification workshop (VERIFY’07). CEUR, vol 259 (http://ceur-ws.org/)
Rümmer P, Shah MA (2007) Proving programs incorrect using a sequent calculus for Java dynamic logic. In: Gurevich Y, Meyer B (eds) Tests and proofs, first international conference, TAP 2007, Zurich, Switzerland, February 12–13, 2007. Revised papers. LNCS, vol 4454. Springer, Berlin, pp 41–60
Schulte W, Songtao X, Smans J, Piessens F (2007) A glimpse of a verifying C compiler. In: Proceedings, C/C++ Verification workshop
Shankar N (2002) Little engines of proof. In: Proceedings, international symposium of formal methods Europe, Copenhagen, Denmark. LNCS, vol 2391. Springer, Berlin, pp 1–20
Velroyen H, Rümmer P (2008) Non-termination checking for imperative programs. In: Beckert B, Hähnle R (eds) Tests and proofs, second international conference, TAP 2008, Prato, Italy. LNCS, vol 4966. Springer, Berlin, pp 154–170
Wenzel M, Paulson LC, Nipkow T (2008) The Isabelle framework. In: Mohamed OA, Muñoz C, Tahar S (eds) Proceedings of 21st international conference on theorem proving in higher order logics (TPHOLs), Montreal, Canada. LNCS, vol 5170. Springer, Berlin, pp 33–38
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Ahrendt, W., Beckert, B., Giese, M. et al. Practical Aspects of Automated Deduction for Program Verification. Künstl Intell 24, 43–49 (2010). https://doi.org/10.1007/s13218-010-0001-y
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s13218-010-0001-y