Skip to content

Instantly share code, notes, and snippets.

@genadyp
Last active May 8, 2022 12:41
Show Gist options
  • Save genadyp/0f0ee62d43492b7fc155e98716e35124 to your computer and use it in GitHub Desktop.
Save genadyp/0f0ee62d43492b7fc155e98716e35124 to your computer and use it in GitHub Desktop.
BDD - Binary Decision Diagrams

Table of Contents

Python

  • dd (BSD-3, Python):
    • BDD and MDD pure Python implementation
    • Cython interface to CUDD in dd.cudd
    • Cython interface to Sylvan in dd.sylvan
    • Cython interface to BuDDy in dd.buddy
  • pyEDA (BSD, Python): BDD implementation without a manager
  • PyCUDD (?, Python): SWIG-generated bindings to CUDD
  • marduk in RATSY (LGPL, Python): Wrappers of NuSMV (which uses CUDD) (TU Graz)
  • mccarthy-to-bryant (GPL-3, Python) (mainly educational)
  • PBDD (BSD, Python) (mainly educational)
  • robdd (?, Python)

Ruby

LISP

C

  • CUDD (BSD): (Colorado U)
    • DDDMP (BSD): Decision Diagram DuMP package
    • cnf2obdd (same as MiniSAT)
    • windows port
    • Chain-CUDD (BSD-3, C): Extension of CUDD to support BDD with chain nodes
    • Cloud-BDD (?, C): Distributed implementation of BDD package, using CUDD
    • Python:
      • dd.cudd
      • PyCUDD
      • marduk
    • Ruby:
      • CUDD-rb
    • LISP:
      • CL-CUDD
    • OCaml:
      • MLCuddIDL
    • Haskell:
      • hBDD
      • hs-cudd
      • Haskell-CUDD
    • Java:
      • JBDD
      • Jedd
    • C#:
      • PAT.BDD
    • Prolog:
      • swipl_cudd
    • Rust:
      • cudd_rust
  • BuDDy (Public domain): (UMichigan)
    • fork UTwente
    • fork: re-entrant version
    • Python:
      • dd.buddy
    • ML:
      • muddy
    • OCaml:
      • ocaml-buddy
    • Java:
      • JBDD
    • Ruby:
      • Ruby-BDD
    • C#
      • BuDDySharp
  • Cal BDD (BSD): (UC Berkeley)
  • ABCD (?): (JKU)
  • CMU BDD: (CMU)
    • hBDD
  • Geert Janssen: package used in PVS and available here: ftp://ftp.ics.ele.tue.nl/pub/users/geert/ (Eindhoven)
  • MONA
  • TiGeR (C): BDDs and compacted Boolean functions (DEC)
  • PPBF (C): parallel BDD package based on partial BFS expansion (CMU)
  • Sylvan (Apache-2): Multi-core library using work-stealing framework and lock-less hash table
    • Python:
      • dd
    • Haskell:
      • Sylvan-Haskell
    • Java:
      • jSylvan
      • cpachecker
    • C#
      • SylvanSharp
  • libDDD (LGPL, C++): (CNRS)
  • TdZdd (MIT, C++): top-down breadth-first n-ary DD/ZDD manipulation, parallel processing with OpenMP
  • CacBDD (BSD-3, C++)
  • BDDSharp (MIT, C#): (U Catholique Louvain)
  • LaVaBDD (?, C++): Lattice-valued BDDs (ULB)
  • wld (FUSC, C++): word-level DDs (UFreiburg)
  • BDS (FUSC, C): (UMass)
  • Biddy (GPL-2, C): a multi-platform academic BDD package (UMaribor)
  • list of BDD packages with comparisons
  • BBDD (?, ?): biconditional BDDs
  • RicBDD (GPL, C++)
  • LiBDD (BSD, C): multi-platform BDDs package
  • BDDC: BDD-based logical calculator
  • EHV: Eindhoven BDD package
  • libvata/src/mtbdd (C++, GPL-3)

C#

Clojure

Java

  • JavaBDD (GPL-2 or LGPL-2, Java)
  • JDD (zlib, Java): BDD and ZDD support, inspired by Buddy
  • JBDD (zlib, Java): bindings to CUDD, Buddy
  • BeeDeeDee (GPL-2, Java): Multi-thread library
  • LightBDD (?, Java): simple library
  • jSylvan (Apache-2, C/C++/Java): JNI bindings for Sylvan
  • cpachecker (Apache-2, Java): Java bindings for Sylvan
  • JADE (custom, Java) (UFreiburg)
  • JINC (GPL-2, C++): utilizes multi-threading, has BDD, ADD, NADD, ZADD, TADD, MDD (UBonn)
  • djbdd (Java 7, GPL-3)
  • Java applet (?, Java) (UHamburg)
  • SableJBDD (LGPL): (McGill Univ.)
  • Jedd (Java, LGLPL-2): Java Extension for Decision Diagrams based on the polyglot framework, supports as backends: CUDD, BuDDy, SableJBDD, JavaBDD
  • zdd_java: educational ZDD implementation

Javascript

  • BDD (?, Javascript)

Julia

ML

OCaml

Haskell

Isabelle/HOL

  • bdd (BSD, Isabelle/HOL/Haskell): verified and executable implementation of ROBDDs in Isabelle/HOL, archived proofs (TUM)

Prolog

  • swipl_cudd (?, C/Prolog): bindings to CUDD
  • upbdd (?, Prolog/C++): UP-BDD data structure implementation

Lua

Erlang

  • seqbdd (BSD-like, Erlang): Sequence BDD data structure

Rust

  • boolean_expressions (MIT, Rust): BDD implementation, conversion from/to formulae with cubelist-based minimization
  • cudd_rust (BSD-3, Rust): bindings to CUDD

PHP

other

Unsorted

Abbreviations

  • BDD = Binary Decision Diagrams
@johnyf
Copy link

johnyf commented Dec 5, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment