rssat

Crates.iorssat
lib.rsrssat
version0.1.4
sourcesrc
created_at2024-09-30 04:52:31.14052
updated_at2024-09-30 10:04:30.698059
descriptionrssat is a Rust library that provides Rust bindings for multiple popular SAT solvers
homepage
repositoryhttps://github.com/francisol/rssat.git
max_upload_size
id1391327
size53,331
Xie Zhongtao (francisol)

documentation

README

rssat

github crates.io docs.rs

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
  • patch command
  • Other standard build tools (make, etc.)

Installation

[dependencies]
rssat = "0.1.2"

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

Commit count: 19

cargo fmt