A comprehensive guide to Binary Decision Diagrams (BDDs) — from theoretical foundations to practical implementation.
This guide is written in Typst. To compile:
# Install Typst (if not already installed)
# See https://github.com/typst/typst#installation
# Compile the guide
typst compile main.typ
# Or watch for changes
typst watch main.typThe guide is organized into five parts:
Theoretical foundations of BDDs — Boolean functions, Shannon expansion, canonical form, and core operations.
Practical implementation details — architecture, node representation, unique tables, caching, and complement edges.
Advanced techniques — variable ordering, garbage collection, quantification, and BDD variants (ZDDs, ADDs).
Real-world applications — model checking, combinatorial problems, symbolic execution, and configuration management.
Survey of BDD libraries, design trade-offs, and future research directions.
Readers should have:
- Basic understanding of Boolean algebra
- Familiarity with graph data structures
- Some programming experience (examples use Rust)
This guide accompanies the bdd-rs library.
Code examples throughout the text use Rust, but concepts are language-agnostic.
Contributions are welcome! Please see the main repository for guidelines.
This guide is part of the bdd-rs project. See the repository root for license information.