Abstract
Many symbolic model checkers use Binary Decision Diagrams (BDDs) to efficiently determine whether two Boolean formulas are semantically equivalent. For realistic problems, the size of the generated BDDs can be enormous, and constructing them can easily become a performance bottleneck. As a result, most state-of-the-art BDD programs are written as highly optimized imperative C programs, increasing the risk of soundness defects in their implementation. This paper describes the use of monadic interpreters to formally verify BDD algorithms at a higher level of abstraction than the original C program, but still at a concrete enough level to retain their essential imperative features. Our hope is then that verification of the original C program can be achieved by strictly localized refinement reasoning.
During this work we encountered the surprising fact that modeling imperative recursive algorithms monadically often results in logical functions that are both partial and nestedly-recursive in their (hidden) state parameters, making termination proofs difficult.
The research reported in this paper was supported by the National Science Foundation Grants EIA-0072761 and CDA-9703218, Compaq Computer Corporation, and Intel Corporation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
H. R. Andersen. An Introduction to Binary Decision Diagrams. Internet, September 1996.
K. R. Apt and E.-R. Olderog. Verification of sequential and concurrent programs. Springer-Verlag, 1997.
R. E. Bryant. Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers, C-35(8):677–691, August 1986.
J.-C. Filliâtre. Verification of Non-Functional Programs using Interpretations in Type Theory. Journal of Functional Programming, 2001.
F. W. von Henke, S. Pfab, H. Pfeifer, and H. Rueβ. Case Studies in Meta-Level Theorem Proving. In J. Grundy and M. Newey, editors, Proc. Intl. Conf. on Theorem Proving in Higher Order Logics (TPHOLS), Lecture Notes in Computer Science, pages 461–478. Springer LNCS 1479, September 1998.
S. Krstić and J. Matthews. Nested recursive definitions in Isabelle/HOL. In preparation.
S. Liang, P. Hudak, and M. P. Jones. Monad transformers and modular interpreters. In Conference record of POPL’ 95, 22nd ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, pages 333–343, New York, NY, USA, January 1995. ACM Press.
E. Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.
M. Norrish. C formalised in HOL. PhD thesis, University of Cambridge Computer Laboratory, 1998.
T. Nipkow and L. Paulson. Isabelle/HOL tutorial.
N. S. Papaspyrou. Denotational semantics of ANSI C. Computer Standards and Interfaces, 23:169–185, 2001.
W. Reif, J. Ruf, G. Schellhorn, and T. Vollmer. Do you trust your model checker? In W. A. Hunt Jr. and S. D. Johnson, editors, Formal Methods in Computer Aided Design (FMCAD). Springer LNCS 1954, November 2000.
K. Slind. Another look at nested recursion. In M. Aagaard and J. Harrison, editors, Proc. Intl. Conf. on Theorem Proving in Higher Order Logics (TPHOLS), Lecture Notes in Computer Science, pages 498–518. Springer LNCS 1869, August 2000.
R. Sumners. Correctness proof of a BDd manager in the context of satis-fiability checking. Technical Report TR-00-29, The University of Texas at Austin, Department of Computer Sciences, November 2000.
K. N. Verma, J. Goubalt-Larrecq, S. Prasad, and S. Arun-Kumar. Refiecting BDDs in Coq. In J. He and M. Sato, editors, Proc. 6th Asian Computing Science Conference (ASIAN), Lecture Notes in Computer Science, pages 162–181. Springer LNCS 1961, November 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Krstić, S., Matthews, J. (2002). Verifying BDD Algorithms through Monadic Interpretation. In: Cortesi, A. (eds) Verification, Model Checking, and Abstract Interpretation. VMCAI 2002. Lecture Notes in Computer Science, vol 2294. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47813-2_13
Download citation
DOI: https://doi.org/10.1007/3-540-47813-2_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43631-7
Online ISBN: 978-3-540-47813-3
eBook Packages: Springer Book Archive