Crates.io | satoxid |
lib.rs | satoxid |
version | 0.1.2 |
source | src |
created_at | 2021-05-22 21:42:07.380942 |
updated_at | 2021-05-24 17:56:23.701066 |
description | Boolean satisfiability problem encoding library written in rust. |
homepage | |
repository | https://github.com/neuring/satoxid |
max_upload_size | |
id | 400931 |
size | 150,484 |
Satoxid is a library to help with encoding SAT problems with a focus on ergonomics and debugability.
use satoxid::{CadicalEncoder, constraints::ExactlyK};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
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);
}
}
For a more complex example see this rummy solver.