Skip to main content
Log in

A Framework for the Verification of Certifying Computations

  • Published:
Journal of Automated Reasoning Aims and scope Submit manuscript

Abstract

Formal verification of complex algorithms is challenging. Verifying their implementations goes beyond the state of the art of current automatic verification tools and usually involves intricate mathematical theorems. Certifying algorithms compute in addition to each output a witness certifying that the output is correct. A checker for such a witness is usually much simpler than the original algorithm—yet it is all the user has to trust. The verification of checkers is feasible with current tools and leads to computations that can be completely trusted. We describe a framework to seamlessly verify certifying computations. We use the automatic verifier VCC for establishing the correctness of the checker and the interactive theorem prover Isabelle/HOL for high-level mathematical properties of algorithms. We demonstrate the effectiveness of our approach by presenting the verification of typical examples of the industrial-level and widespread algorithmic library LEDA.

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

Access this article

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. Alkassar, E., Böhme, S., Mehlhorn, K., Rizkallah, C.: Verification of certifying computations. In: Computer Aided Verification. Lecture Notes in Computer Science, vol. 6806, pp. 67–82. Springer, New York (2011)

    Chapter  Google Scholar 

  2. Armand, M., Grégoire, B., Spiwack, A., Théry, L.: Extending Coq with imperative features and its application to SAT verification. In: Interactive Theorem Proving. Lecture Notes in Computer Science, vol. 6172, pp. 83–98. Springer, New York (2010)

    Chapter  Google Scholar 

  3. Barnett, M., Chang, B.Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: a modular reusable verifier for object-oriented programs. In: Formal Methods for Components and Objects. Lecture Notes in Computer Science, vol. 4111, pp. 364–387. Springer, New York (2006)

    Chapter  Google Scholar 

  4. Baumann, C., Beckert, B., Blasum, H., Bormer, T.: Formal verification of a microkernel used in dependable software systems. In: Computer Safety, Reliability, and Security. Lecture Notes in Computer Science, vol. 5775, pp. 187–200. Springer, New York (2009)

    Chapter  Google Scholar 

  5. Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development—Coq’Art: the Calculus of Inductive Constructions. Texts in Theoretical Computer Science. An EATCS Series. Springer, New York (2004)

    Book  Google Scholar 

  6. Blum, M., Kannan, S.: Designing programs that check their work. In: Symposium on Theory of Computing, pp. 86–97. ACM (1989)

  7. Böhme, S.: Proving theorems of higher-order logic with SMT solvers. PhD thesis, Technische Universität München (2012)

  8. Böhme, S., Leino, K.R.M., Wolff, B.: HOL-Boogie—an interactive prover for the Boogie program-verifier. In: Theorem Proving in Higher Order Logics. Lecture Notes in Computer Science, vol. 5170, pp. 150–166. Springer, New York (2008)

    Chapter  Google Scholar 

  9. Böhme, S., Moskal, M., Schulte, W., Wolff, B.: HOL-Boogie—an interactive prover-backend for the Verifying C Compiler. J. Autom. Reason. 44(1–2), 111–144 (2010)

    Article  MATH  Google Scholar 

  10. Boyer, R.S., Moore, J.S.: A theorem prover for a computational logic. In: Conference on Automated Deduction. Lecture Notes in Computer Science, vol. 449, pp. 1–15. Springer (1990)

  11. Bright, J.D., Sullivan, G.F., Masson, G.M.: A formally verified sorting certifier. IEEE Trans. Comput. 46(12), 1304–1312 (1997)

    Article  Google Scholar 

  12. Bulwahn, L., Krauss, A., Haftmann, F., Erkök, L., Matthews, J.: Imperative functional programming with Isabelle/HOL. In: Theorem Proving in Higher Order Logics. Lecture Notes in Computer Science, vol. 5170, pp. 134–149. Springer, New York (2008)

    Google Scholar 

  13. Charguéraud, A.: Characteristic formulae for the verification of imperative programs. In: International Conference on Functional Programming, pp. 418–430. ACM (2011)

  14. Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: a practical system for verifying concurrent C. In: Theorem Proving in Higher Order Logics. Lecture Notes in Computer Science, vol. 5674, pp. 23–42. Springer, New York (2009)

    Chapter  Google Scholar 

  15. Darbari, A., Fischer, B., Marques-Silva, J.: Industrial-strength certified SAT solving through verified SAT proof checking. In: Theoretical Aspects of Computing. Lecture Notes in Computer Science, vol. 6255, pp. 260–274. Springer, New York (2010)

    Google Scholar 

  16. Edmonds, J.: Maximum matching and a polyhedron with 0,1-vertices. J. Res. Natl. Bur. Stand. 69B, 125–130 (1965)

    Article  MathSciNet  Google Scholar 

  17. Filliâtre, J.C., Marché, C.: The Why/Krakatoa/Caduceus platform for deductive program verification. In: Computer Aided Verification. Lecture Notes in Computer Science, vol. 4590, pp. 173–177. Springer, New York (2007)

    Chapter  Google Scholar 

  18. Gordon, M., Milner, R., Wadsworth, C.P.: Edinburgh LCF: A Mechanised Logic of Computation. Lecture Notes in Computer Science, vol. 78. Springer, New York (1979)

    Book  Google Scholar 

  19. Gordon, M.J.C., Melham, T.F. (eds.): Introduction to HOL: a Theorem-Proving Environment for Higher-Order Logic. Cambridge University Press, Cambridge (1993)

    MATH  Google Scholar 

  20. Greenaway, D., Andronick, J., Klein, G.: Bridging the gap: automatic verified abstraction of C. In: Interactive Theorem Proving. Lecture Notes in Computer Science, vol. 7406, pp. 99–115. Springer, New York (2012)

    Google Scholar 

  21. 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 operating-system kernel. Commun ACM 53(6), 107–115 (2010)

    Article  Google Scholar 

  22. Leinenbach, D., Paul, W.J., Petrova, E.: Towards the formal verification of a C0 compiler: code generation and implementation correctness. In: Software Engineering and Formal Methods, pp. 2–12. IEEE Computer Society Press, Los Alamitos (2005)

    Google Scholar 

  23. McConnell, R.M., Mehlhorn, K., Näher, S., Schweitzer, P.: Certifying algorithms. Comput. Sci. Rev. 5(2), 119–161 (2011)

    Article  Google Scholar 

  24. Mehlhorn, K., Näher, S.: The LEDA Platform for Combinatorial and Geometric Computing. Cambridge University Press, Cambridge (1999)

    Google Scholar 

  25. de Moura, L.M., Bjørner, N.: Z3: an efficient SMT solver. In: Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science, vol. 4963, pp. 337–340. Springer, New York (2008)

    Chapter  Google Scholar 

  26. Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL—a Proof Assistant for Higher-Order Logic. Lecture Notes in Computer Science, vol. 2283. Springer, New York (2002)

    MATH  Google Scholar 

  27. de Nivelle, H., Piskac, R.: Verification of an off-line checker for priority queues. In: Software Engineering and Formal Methods, pp. 210–219. IEEE Computer Society Press, Los Alamitos (2005)

    Google Scholar 

  28. Nordhoff, B., Lammich, P.: Dijkstra’s shortest path algorithm. Archive of Formal Proofs. http://afp.sourceforge.net/entries/Dijkstra_Shortest_Path.shtml (2012). Accessed 30 Jan 2012

  29. Norrish, M.: C formalised in HOL. PhD thesis, Computer Laboratory, University of Cambridge (1998)

  30. Noschinski, L.: Graph theory. Archive of Formal Proofs. http://afp.sf.net/entries/Graph_Theory.shtml, Formal proof development (2013). Accessed 28 Apr 2013

  31. Petrova, E.: Verification of the C0 compiler implementation on the source code level. PhD thesis, Saarland University, Saarbrücken (2007)

  32. Rizkallah, C.: Maximum cardinality matching. Archive of Formal Proofs. http://afp.sourceforge.net/entries/Max-Card-Matching.shtml (2011). Accessed 21 Jul 2011

  33. Rizkallah, C.: An axiomatic characterization of the single-source shortest path problem. Archive of Formal Proofs. http://afp.sf.net/entries/ShortestPath.shtml, Formal proof development (2013). Accessed 22 May 2013

  34. Schirmer, N.: Verification of sequential imperative programs in Isabelle/HOL. PhD thesis, Technische Universität München (2006)

  35. Shi, J., He, J., Zhu, H., Fang, H., Huang, Y., Zhang, X.: ORIENTAIS: formal verified OSEK/VDX real-time operating system. In: Engineering of Complex Computer Systems, pp. 293–301. IEEE Computer Society Press, Los Alamitos (2012)

    Google Scholar 

  36. Sullivan, G.F., Masson, G.M.: Using certification trails to achieve software fault tolerance. In: Fault-Tolerant Computing, pp. 423–431. IEEE Computer Society Press, Los Alamitos (1990)

    Google Scholar 

  37. Thiemann, R., Sternagel, C.: Certification of termination proofs using CeTA. In: Theorem Proving in Higher Order Logics. Lecture Notes in Computer Science, vol. 5674, pp. 452–468. Springer, New York (2009)

    Chapter  Google Scholar 

  38. Verisoft XT: http://www.verisoftxt.de (2010). Accessed 20 May 2011

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Christine Rizkallah.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Alkassar, E., Böhme, S., Mehlhorn, K. et al. A Framework for the Verification of Certifying Computations. J Autom Reasoning 52, 241–273 (2014). https://doi.org/10.1007/s10817-013-9289-2

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10817-013-9289-2

Keywords

Navigation