Skip to main content

Verifying BDD Algorithms through Monadic Interpretation

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2294))

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.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. H. R. Andersen. An Introduction to Binary Decision Diagrams. Internet, September 1996.

    Google Scholar 

  2. K. R. Apt and E.-R. Olderog. Verification of sequential and concurrent programs. Springer-Verlag, 1997.

    Google Scholar 

  3. R. E. Bryant. Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers, C-35(8):677–691, August 1986.

    Article  Google Scholar 

  4. J.-C. Filliâtre. Verification of Non-Functional Programs using Interpretations in Type Theory. Journal of Functional Programming, 2001.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. S. Krstić and J. Matthews. Nested recursive definitions in Isabelle/HOL. In preparation.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. E. Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.

    Article  MATH  MathSciNet  Google Scholar 

  9. M. Norrish. C formalised in HOL. PhD thesis, University of Cambridge Computer Laboratory, 1998.

    Google Scholar 

  10. T. Nipkow and L. Paulson. Isabelle/HOL tutorial.

    Google Scholar 

  11. N. S. Papaspyrou. Denotational semantics of ANSI C. Computer Standards and Interfaces, 23:169–185, 2001.

    Article  Google Scholar 

  12. 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.

    Chapter  Google Scholar 

  13. 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.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics