A Thread-Safe Library for Binary Decision Diagrams

  • Alberto Lovato
  • Damiano Macedonio
  • Fausto Spoto
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8702)


We describe the motivations, technical problems and solutions behind the implementation of BeeDeeDee, a new thread-safe Java library for Binary Decision Diagrams (BDDs) manipulation. BeeDeeDee allows clients to share a single factory of BDDs, in real parallelism, and reduce the memory footprint of their overall execution, at a very low synchronization cost. We prove through experiments on multi-core computers that BeeDeeDee is an effective thread-safe library for BDD manipulation. As test cases, we consider multiple instances of the n-queens problem, the construction of circuits and the parallel execution of information flow static analyses of Java programs, for distinct properties of variables. For sequential-only executions, BeeDeeDee is faster than other non-thread-safe Java libraries and as fast as non-thread-safe C libraries.


Manipulation of Boolean functions Binary Decision Diagrams Java multithreading 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    2011 CWE/SANS Top 25 Most Dangerous Software Errors,
  2. 2.
  3. 3.
  4. 4.
  5. 5.
    The Hadoop Big Data Engine,
  6. 6.
  7. 7.
    The JavaBDD Library,
  8. 8.
  9. 9.
    The Julia Static Analyzer,
  10. 10.
  11. 11.
    Armstrong, T., Marriott, K., Schachte, P., Søndergaard, H.: Two Classes of Boolean Functions for Dependency Analysis. Science of Computer Programming 31(1), 3–45 (1998)CrossRefzbMATHMathSciNetGoogle Scholar
  12. 12.
    Bahar, R.I., Frohm, E.A., Gaona, C.M., Hachtel, G.D., Macii, E., Pardo, A., Somenzi, F.: Algebraic Decision Diagrams and Their Applications. Formal Methods in System Design 10(2/3), 171–206 (1997)CrossRefGoogle Scholar
  13. 13.
    Brace, K.S., Rudell, R.L., Bryant, R.E.: Efficient implementation of a BDD Package. In: DAC, pp. 40–45 (1990)Google Scholar
  14. 14.
    Bryant, R.E.: Graph-Based Algorithms for Boolean Function Manipulation. IEEE Transactions on Computers 35(8), 677–691 (1986)CrossRefzbMATHGoogle Scholar
  15. 15.
    Bryant, R.E.: Symbolic Boolean Manipulation with Ordered Binary Decision Diagrams. ACM Computing Surveys 24(3), 293–318 (1992)CrossRefGoogle Scholar
  16. 16.
    Burch, J.R., Clarke, E.M., McMillan, K.L., Dill, D.L., Hwang, L.J.: Symbolic Model Checking: 1020 States and Beyond. Information and Computation 98(2), 142–170 (1992)CrossRefzbMATHMathSciNetGoogle Scholar
  17. 17.
    Genaim, S., Spoto, F.: Information Flow Analysis for Java Bytecode. In: Cousot, R. (ed.) VMCAI 2005. LNCS, vol. 3385, pp. 346–362. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  18. 18.
    Lhoták, O., Curial, S., Amaral, J.N.: Using XBDDs and ZBDDs in Points-to Analysis. Software: Practive and Experience 39(2), 163–188 (2009)Google Scholar
  19. 19.
    Minato, S.: Zero-Suppressed BDDs for Set Manipulation in Combinatorial Problems. In: Proc. of Design Automation Conference, pp. 272–277 (1993)Google Scholar
  20. 20.
    Rossignoli, S., Spoto, F.: Detecting Non-Cyclicity by Abstract Compilation into Boolean Functions. In: Emerson, E.A., Namjoshi, K.S. (eds.) VMCAI 2006. LNCS, vol. 3855, pp. 95–110. Springer, Heidelberg (2006)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Alberto Lovato
    • 1
    • 2
  • Damiano Macedonio
    • 1
  • Fausto Spoto
    • 1
    • 2
  1. 1.Julia SrlVeronaItaly
  2. 2.Dipartimento di InformaticaUniversità di VeronaVeronaItaly

Personalised recommendations