Satoxid is a library to help with encoding SAT problems with a focus on ergonomics and debugability.
```rust use satoxid::{CadicalEncoder, constraints::ExactlyK};
enum Var { A, B, C }
use Var::*;
fn main() { let mut encoder = CadicalEncoder::new();
let constraint = ExactlyK {
k: 1,
lits: [A, B, C].iter().copied()
};
encoder.add_constraint(constraint);
if let Some(model) = encoder.solve() {
let true_vars = model.vars()
.filter(|v| v.is_pos())
.count();
assert_eq!(true_vars, 1);
}
} ```