Skip to content

Lipen/kotlin-bdd

Repository files navigation

Binary Decision Diagrams for Kotlin

Build JitPack Hits-of-Code

This project provides a Kotlin implementation of (Reduced Ordered) Binary Decision Diagrams with shared representation and complemented edges.

kotlin-bdd was heavily inspired by CUDD (C/C++), dd (Python) and lib-bdd (Rust), kobdd (Kotlin).

🔥
kotlin-bdd is currently a purely educational project and may not be as feature-complete and/or performant as full-fledged BDD packages such as CUDD, Sylvan, Adiar.

Installation

build.gradle.kts
repositories {
    maven(url = "https://jitpack.io")
}
dependencies {
    implementation("com.github.Lipen:kotlin-bdd:${Versions.kotlin_bdd}")
}

Library usage

// TODO

Run examples

PHP

gw :examples:shadowJar
java -cp examples/build/libs/examples.jar com.github.lipen.bdd.PHPKt

Bibliography

  • R. E. Bryant. "Graph-Based Algorithms for Boolean Function Manipulation," 1986. DOI.

  • K. S. Brace, R. L. Rudell, and R. E. Bryant. "Efficient implementation of a BDD package," 1990. DOI.

  • C. Meinel and T. Theobald. "Algorithms and Data Structures in VLSI Design," 1998. DOI.

  • H. R. Andersen. "An Introduction to Binary Decision Diagrams," 1999. Online.

  • R. E. Bryant. "Binary Decision Diagrams" in Handbook of Model Checking, 2018. DOI.