RSDD
Rust Decision Diagrams
What's RSDD?
Glad you asked! RSDD is a new knowledge compilation and decision diagram library. One of its standout features is being written in Rust: this provides compile-time memory safety guarantees without sacrificing the performance of low-level code.
RSDD has some unique features, including:
- an SDD compiler that specializes for right-linear vtree fragments; we believe this makes RSDD the fastest SDD compiler
- support for various knowledge compilers: BDDs, SDDs, and Bayesian Networks
- utilities for operating on d-DNNFs, including model counting and marginal MAP
- an (in-progress) WebAssembly compilation target
In addition, ambitious goals are on the roadmap, including:
- alternative compilation strategies that do not rely on strict canonicity
- garbage collection for internal data structures
- parallelism
- FFI bindings for other languages (ex Python, Julia, C)
- end-to-end documentation and examples (this website!)
RSDD (and this website) is in early-stage active development; this website is incomplete, and the API is still subject to change. However, we'd love for you to use it! If you have further questions, contact Steven Holtzen at s.holtzen@northeastern.edu.
Demo: Comparing vtrees
One advantage of RSDD is its WebAssembly compilation target, made easy with Rust's WASM ecosystem. This means that you can run RSDD in the browser! Throughout the documentation for the library, we'll include interactive demos that showcase RSDD's features. Here is one example, which compares the succicntness of two SDDs for the same CNF, but with a different vtree.