SableJBDD, a Java Binary Decision Diagram Package

Author: Feng Qian
Sable research group, McGill University


The SableJBDD is a Java implementation of binary decision diagrams (BDDs). It supports ordinary BDD functions in this initial version.

The initiative of this package is to experiment BDD implementations using Java's high-level languge features such as object-oriented design and garbage collection. Automatic memory management is a key component of BDD packages implemented in C. Popular BDD packages, e.g, Cudd and BuDDy , use a simple reference counting algorithm to manage allocated BDD nodes. (JavaBDD is a Java implementation of BuDDy, and it is more like a C-style program.) There are works on using other GC algorithms.

Garbage collection is the default memory management scheme of the Java programming language. Java programmers are freed from explict object deallocation. A modern JVM may have implemented various GC algorithms. A Java BDD package could utilize the GC support from the language instead of re-implementing a GC by itself. In Java, GC is transparent to applications except some limited interactions provided by java.lang.ref package. In summary, SableJBDD uses following Java langauge features to implement key BDD data structures:

From applications, an efficient and native Java BDD package is desirable for tools written in Java. The object-oriented design and finite-domain interface are suitable for high-level specifications.

Our future work includes improving the efficiency and complete the functionarity of the package:


This library is released under LGPL. Current release is 0.02.


You can browse APIs and examples .


This work is supported by an NSERC fellowship.

Last updated: $Date: 2004/04/06 21:05:27 $