///|
fn main {
  let manager = @bdd.Manager::new(
    ["database", "cache", "replicas", "single_node"],
    @bdd.ResourceBudget::default(),
  ).unwrap()
  let valid = manager
    .compile("database & (cache -> database) & (replicas -> !single_node)")
    .unwrap()
  println("valid configurations: " + manager.sat_count_decimal(valid).unwrap())
  match manager.sat_one(valid).unwrap() {
    Some(model) => println("one configuration: " + @debug.to_string(model))
    None => println("configuration is unsatisfiable")
  }
}