Jedd Home

Overview

Using Jedd

Installation

Download

Compiling

Copyright

Sable Home

Jedd: Java Extension for Decision Diagrams

Jedd overview top

Jedd is a Java language extension designed for implementing program analyses using binary decision diagrams (BDDs). BDDs are abstracted in Jedd as a new primitive data type, database-style relations. A detailed paper about Jedd was presented at PLDI 2004, and is available from the Sable publications page. Additional information about Jedd can also be found in my PhD thesis, in Chapter 3 and Appendix B.

Jedd is based on the Polyglot extensible compiler framework. Currently, Jedd supports four BDD libraries as backends: BuDDy, CUDD, SableJBDD, and JavaBDD. When building Jedd from source, these libraries should be downloaded separately. The binary distribution of Jedd has these libraries linked in.

Jedd is freely available for download under the GNU Lesser General Public License.




Using Jedd top

A mini-tutorial on Jedd is available in PDF format.

The javadoc documentation of the (rather small) API available to Jedd programs is available. In particular, this includes the jedd.Jedd class with methods controlling the behaviour of Jedd in general, and the jedd.Relation interface of methods that can be called on any relation type.




Installation instructions top

A precompiled binary distribution of Jedd is available for download. If you prefer to compile Jedd yourself, please see the instructions below.

To use the Jedd translator to compile Jedd programs, you need the following:

  • Add jedd-translator.jar from the Jedd distribution to your CLASSPATH environment variable.
  • Add the Polyglot classes jar to your CLASSPATH environment variable. You can download a pre-compiled jar of Polyglot from the Soot download page.
  • Install a SAT solver. I have been using Jedd with zChaff, but it should also work with other SAT solvers such as Grasp and Sato. The -s switch to Jedd is used to specify the full path of the SAT solver binary. If the solver has an unsatisfiable core extractor (like the zcore program bundled with Zchaff), specify its full path using the -sc switch to Jedd. Because the zChaff command-line syntax changes from version to version, I have written two shell scripts, zchaff and zcore, for invoking zChaff version 2004.5.13 with the correct syntax. The scripts can be found in the scripts directory of the Jedd distribution. Should the command-line syntax change again in future versions of zChaff, the scripts can be modified to match the new syntax.

(Optional) To browse the output of the Jedd profiler, an SQL database, a CGI-capable web server, Gnuplot, Python to execute the CGI scripts, and a web browser are required. I use SQLite and thttpd because of their simplicity and ease-of-installation. The SQL code and CGI scripts are somewhat SQLite-specific, but they should work with any CGI-capable web server and with any standards-compliant web browser. The version numbers of the tools used during Jedd development are given below. Other versions may also work.




Download top

Release 0.4 (July 2008)
The main changes in this release are:

  • Bug fixes

Release 0.3 (October 2005)
The main changes in this release are:

  • Updated to BuDDy 2.4 and Polyglot 1.3.2
  • More efficient attribute copying operation
  • More flexible specification of BDD variable ordering
  • Profile graphs now show physical domains
  • Bug fixes

Release 0.2 (July 2004)
The main changes in this release are:

  • Numberers changed to use longs instead of ints
  • More efficient encoding of the physical domain assignment as a SAT problem
  • Bug fixes

Release 0.1 (June 2004)
Initial public release of Jedd.




Compiling Jedd from source top

Jedd comes with an Ant build file for building it from source. Jedd has been developed on GNU/Linux and also tested on Windows XP, but few modifications should be required to build it under other operating systems.

The following tools are required to build Jedd. The version numbers specify the versions of the tools that were used in Jedd development. Other versions may also work.

Jedd links to the following libraries, and these are also required to build Jedd.

First, download and build/install all the dependencies above. After expanding the Jedd source archive, you will find a file named ant.settings.template in the Jedd directory. Copy this file to a ant.settings. This file tells the build process where to find all the tools needed to build Jedd. Edit the file with a text editor to specify the locations of all the tools. Then, just run ant, and Jedd should be built in the lib subdirectory.

(Optional) Jedd also includes a Soot-based live variable analysis that optimizes Jedd code to free the BDD nodes of relations that become dead. To build this optimizer, you will need the latest version of Soot from Soot Subversion repository. The optimizer is built using the Ant target compile-deadvaroptimizer.




Copyright information top

Jedd is Copyright (C) 2003-2008 Ondřej Lhoták, and is distributed under the GNU Lesser General Public License.

Copyright to Polyglot is held by several people listed on the Polyglot home page, and is distributed under the GNU Lesser General Public License.

The copyright notice of BuDDy is below:

==========================================================================
                              *** BuDDy ***
                         Binary Decision Diagrams
                           Library Package v2.2
--------------------------------------------------------------------------
               Copyright (C) 1996-2002 by Jorn Lind-Nielsen
                            All rights reserved

    Permission is hereby granted, without written agreement and without
    license or royalty fees, to use, reproduce, prepare derivative
    works, distribute, and display this software and its documentation
    for any purpose, provided that (1) the above copyright notice and
    the following two paragraphs appear in all copies of the source code
    and (2) redistributions, including without limitation binaries,
    reproduce these notices in the supporting documentation. Substantial
    modifications to this software may be copyrighted by their authors
    and need not follow the licensing terms described here, provided
    that the new terms are clearly indicated in all files where they apply.

    IN NO EVENT SHALL JORN LIND-NIELSEN, OR DISTRIBUTORS OF THIS
    SOFTWARE BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
    INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS
    SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHORS OR ANY OF THE
    ABOVE PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    JORN LIND-NIELSEN SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
    BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
    ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
    OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
    MODIFICATIONS.
==========================================================================

CUDD is primarily written by Fabio Somenzi at the University of Colorado. Its copyright notice is below:

This file was created at the University of Colorado at
Boulder.  The University of Colorado at Boulder makes no warranty
about the suitability of this software for any purpose.  It is
presented on an AS IS basis.

SableJBDD is Copyright (C) 2004 Feng Qian, and is distributed under the GNU Lesser General Public License.

The copyright notice for JavaBDD is below:

Copyright (C) 2003  John Whaley (jwhaley at alum.mit.edu)

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA