Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Lipen/ananke

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ananke: Decision Diagrams for Rust

CI Hits-of-Code

Ananke is a collection of Decision Diagram (DD) libraries for Rust, focused on formal verification, static analysis, and symbolic logic research.

Engines

Core engines for different symbolic representations:

  • ananke-bdd: Binary Decision Diagrams (ROBDDs) with complement edges.

  • ananke-zdd: Zero-suppressed Decision Diagrams for sparse sets and combinatorial problems.

  • ananke-sdd: Sentential Decision Diagrams for succinct representation of complex knowledge bases.

Case Studies

Symbolic algorithms and analysis frameworks:

Research

Explorations in Boolean function theory and testing:

Installation

Add the desired engine to your Cargo.toml:

[dependencies]
ananke-bdd = "0.1"
# or ananke-zdd, ananke-sdd

For research examples, clone the repository and run via cargo:

git clone https://github.com/Lipen/ananke
cd ananke
cargo run -p model-checking --example mutex

Quick Start

use ananke_bdd::bdd::Bdd;

let bdd = Bdd::default();
let x1 = bdd.mk_var(1);
let x2 = bdd.mk_var(2);

// f = x1 ∧ ¬x2
let f = bdd.apply_and(x1, -x2);

assert!(!bdd.is_zero(f)); // Satisfiable
println!("f = {}", bdd.to_bracket_string(f)); // f = ~@3:(x1, @2:(x2, ⊤, ⊥), ⊤)

Documentation

Performance

The implementation uses hash-consing, operation caching, and 32-bit node handles to manage large state spaces efficiently.

💡
Always use --release mode!

License

This project is licensed under the MIT License.