rustsat

Module solvers

Source
Expand description

§Interfaces to SAT Solvers

This module holds types and functions regarding SAT solvers. The main element is the Solve trait that every SAT solver in this library implements.

§Available Solvers

Solvers are available through separate crates.

§CaDiCaL

CaDiCaL is a fully incremental SAT solver by Armin Biere implemented in Cpp. It includes incremental inprocessing. It is available through the rustsat-cadical crate.

§References

§Kissat

Kissat is a non-incremental SAT solver by Armin Biere implemented in C. It is available through the rustsat-kissat crate.

§References

§Minisat

Minisat is an incremental SAT solver by Niklas Eén and Niklas Sörensson. It is available through the rustsat-minisat crate.

§References

§Glucose

Glucose is a SAT solver based on Minisat and developed by Gilles Audemard and Laurent Simon. It is available through the rustsat-glucose crate.

§References

§BatSat

BatSat is a SAT solver based on Minisat but fully implemented in Rust. Because it is fully implemented in Rust, it is a good choice for restricted compilation scenarios like WebAssembly. BatSat is available through the rustsat-batsat crate.

§References

§External Solvers

RustSAT provides an interface for calling external solver binaries by passing them DIMACS input and parsing their output written to <stdout>. For more details, see the ExternalSolver type.

§IPASIR

IPASIR is a C API for incremental SAT solvers. IPASIR bindings for RustSAT are provided in the rustsat-ipasir crate.

Re-exports§

  • pub use external::Solver as ExternalSolver;

Modules§

  • Solver Interface for External Executables

Structs§

Enums§

Traits§

  • Trait for all solvers that can flip a literal in the current assignment
  • Trait for freezing and melting variables in solvers with pre-/inprocessing.
  • Trait for all solvers allowing access to internal search statistics
  • Trait for all solvers that can be asynchronously interrupt.
  • A thread safe interrupter for a solver
  • Trait for all solvers that can pass out learned clauses via a callback.
  • Trait for all solvers that can limit the number of conflicts
  • Trait for all solvers that can limit the number of decisions
  • Trait for all solvers that can limit the number of propagations
  • Trait for all solvers that can force a face for a literal
  • Trait for propagating a set of assumptions and getting all propagated literals
  • Trait for all SAT solvers in this library. Solvers outside of this library can also implement this trait to be able to use them with this library.
  • Trait for all SAT solvers in this library. Solvers outside of this library can also implement this trait to be able to use them with this library.
  • Trait for solvers that track certain statistics.
  • Trait for all solvers that can be terminated by a termination callback.