A MuDDy Experience–ML Bindings to a BDD Library

  • Ken Friis Larsen
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5658)


Binary Decision Diagrams (BDDs) are a data structure used to efficiently represent boolean expressions on canonical form. BDDs are often the core data structure in model checkers. MuDDy is an ML interface (both for Standard ML and Objective Caml) to the BDD package BuDDy that is written in C. This combination of an ML interface to a high-performance C library is surprisingly fruitful. ML allows you to quickly experiment with high-level symbolic algorithms before handing over the grunt work to the C library. I show how, with a relatively little effort, you can make a domain specific language for concurrent finite state-machines embedded in Standard ML and then write various custom model-checking algorithms for this domain specific embedded language (DSEL).


Model Check Reachable State Boolean Expression Symbolic Execution Binary Decision Diagram 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Bryant, R.E.: Symbolic boolean manipulation with ordered binary-decision diagrams. ACM Computing Surveys 24(3), 293–318 (1992)MathSciNetCrossRefGoogle Scholar
  2. 2.
    Norrish, M., Slind, K.: A thread of HOL development. Computer Journal 45(1), 37–45 (2002)CrossRefzbMATHGoogle Scholar
  3. 3.
    Milner, R.: Communication and Concurrency. Prentice Hall, Englewood Cliffs (1989)zbMATHGoogle Scholar
  4. 4.
    Andersen, H.R.: An introduction to binary decision diagrams (1997),
  5. 5.
    Aagaard, M.D., Jones, R.B., Seger, C.J.H.: Lifted-FL: A pragmatic implementation of combined model checking and theorem proving. In: Bertot, Y., Dowek, G., Hirschowitz, A., Paulin, C., Théry, L. (eds.) TPHOLs 1999. LNCS, vol. 1690, p. 323. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  6. 6.
    Jones, R.B., O’Leary, J.W., Seger, C.J.H., Aagaard, M.D., Melham, T.F.: Practical formal verification in microprocessor design. IEEE Design & Test of Computers 18(4), 16–25 (2001)CrossRefGoogle Scholar
  7. 7.
    Day, N.A., Launchbury, J., Lewis, J.: Logical abstractions in Haskell. In: Proceedings of the 1999 Haskell Workshop, Utrecht University Department of Computer Science, Technical Report UU-CS-1999-28 (October 1999)Google Scholar
  8. 8.
    Sørensen, M.H., Secher, J.P.: From type inference to configuration. In: Mogensen, T.Æ., Schmidt, D.A., Sudborough, I.H. (eds.) The Essence of Computation. LNCS, vol. 2566, pp. 436–472. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  9. 9.
    Sittampalam, G., Moor, O.D., Larsen, K.F.: Incremental execution of transformation specifications. In: Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 26–38. ACM Press, New York (2004)CrossRefGoogle Scholar
  10. 10.
    Schmidt, D.A., Steffen, B.: Program analysis as model checking of abstract interpretations. In: Levi, G. (ed.) SAS 1998. LNCS, vol. 1503, pp. 351–380. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  11. 11.
    Syme, D., Granicz, A., Cisternino, A.: Expert F#. Apress (2007)Google Scholar
  12. 12.
    Grundy, J., Melham, T., O’Leary, J.: A reflective functional language for hardware design and theorem proving. Journal of Functional Programming 16(2), 157–196 (2006)MathSciNetCrossRefzbMATHGoogle Scholar

Copyright information

© IFIP International Federation for Information Processing 2009

Authors and Affiliations

  • Ken Friis Larsen
    • 1
  1. 1.Department of Computer ScienceUniversity of CopenhagenCopenhagen SDenmark

Personalised recommendations