5 releases
| 0.1.6 | Jul 1, 2025 |
|---|---|
| 0.1.5 | Jun 13, 2025 |
| 0.1.4 | Sep 30, 2024 |
#7 in #mini-sat
308 downloads per month
24KB
346 lines
rssat
⚠️ IMPORTANT: This crate is no longer maintained. Please use satgalaxy instead, which is the actively maintained successor to rssat.
rssat is a Rust library that provides Rust bindings for multiple popular SAT solvers. Currently supported solvers include:
We thank the contributors of these excellent projects.
Features
- Unified Rust interface for different SAT solvers
- Support for adding clauses
- Solving SAT problems and returning results
- Access to native bindings for advanced functionality
- Support reading formulas from files
Build Requirements
To build RSsat, you need the following tools and libraries:
- C++ compiler (e.g., GCC, Clang)
- CMake (>3.10)
- patch command
- Other standard build tools (make, etc.)
Installation
[dependencies]
rssat = "0.1.5"
Usage Example
Here's a simple example using the CaDiCaL solver:
use rssat::solver::{CaDiCaLSolver, Status,Solver};
fn main() {
let mut solver = CaDiCaLSolver::new();
solver.add_clause(&vec![1, 2]);
solver.add_clause(&vec![-1, -2]);
solver.add_clause(&vec![3]);
match solver.solve() {
Status::SATISFIABLE(vec) => {
println!("Satisfiable solution: {:?}", vec);
},
Status::UNSATISFIABLE => {
println!("Unsatisfiable");
},
Status::UNKNOWN => {
println!("Unknown");
},
}
}
Native Bindings
For advanced usage, you can access the native bindings of each solver. This allows you to use solver-specific features that are not part of the unified interface.
Future Work
- Improve documentation to enhance user experience
Contributing
Issue reports and pull requests are welcome!
License
MIT License
Dependencies
~1–7MB
~117K SLoC