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.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
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)
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)
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)
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)
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)
Blum, M., Kannan, S.: Designing programs that check their work. In: Symposium on Theory of Computing, pp. 86–97. ACM (1989)
Böhme, S.: Proving theorems of higher-order logic with SMT solvers. PhD thesis, Technische Universität München (2012)
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)
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)
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)
Bright, J.D., Sullivan, G.F., Masson, G.M.: A formally verified sorting certifier. IEEE Trans. Comput. 46(12), 1304–1312 (1997)
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)
Charguéraud, A.: Characteristic formulae for the verification of imperative programs. In: International Conference on Functional Programming, pp. 418–430. ACM (2011)
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)
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)
Edmonds, J.: Maximum matching and a polyhedron with 0,1-vertices. J. Res. Natl. Bur. Stand. 69B, 125–130 (1965)
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)
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)
Gordon, M.J.C., Melham, T.F. (eds.): Introduction to HOL: a Theorem-Proving Environment for Higher-Order Logic. Cambridge University Press, Cambridge (1993)
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)
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)
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)
McConnell, R.M., Mehlhorn, K., Näher, S., Schweitzer, P.: Certifying algorithms. Comput. Sci. Rev. 5(2), 119–161 (2011)
Mehlhorn, K., Näher, S.: The LEDA Platform for Combinatorial and Geometric Computing. Cambridge University Press, Cambridge (1999)
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)
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)
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)
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
Norrish, M.: C formalised in HOL. PhD thesis, Computer Laboratory, University of Cambridge (1998)
Noschinski, L.: Graph theory. Archive of Formal Proofs. http://afp.sf.net/entries/Graph_Theory.shtml, Formal proof development (2013). Accessed 28 Apr 2013
Petrova, E.: Verification of the C0 compiler implementation on the source code level. PhD thesis, Saarland University, Saarbrücken (2007)
Rizkallah, C.: Maximum cardinality matching. Archive of Formal Proofs. http://afp.sourceforge.net/entries/Max-Card-Matching.shtml (2011). Accessed 21 Jul 2011
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
Schirmer, N.: Verification of sequential imperative programs in Isabelle/HOL. PhD thesis, Technische Universität München (2006)
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)
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)
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)
Verisoft XT: http://www.verisoftxt.de (2010). Accessed 20 May 2011
Author information
Authors and Affiliations
Corresponding author
Rights 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
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10817-013-9289-2