| Crates.io | microsat |
| lib.rs | microsat |
| version | 0.0.1 |
| created_at | 2024-11-19 02:35:32.377281+00 |
| updated_at | 2024-11-19 02:35:32.377281+00 |
| description | A simple DPLL SAT solver |
| homepage | |
| repository | https://github.com/RobScheidegger/microsat |
| max_upload_size | |
| id | 1452848 |
| size | 35,319 |
A tiny (microscopic) DPLL SAT-solver written in Rust. This is not meant to be:
But instead serves as a proof-of-concept for what a small, readable, and understandable DPLL SAT Solver could look like in Rust.
This project originated as a project for Brown's CSCI2951-O Foundations of Prescriptive Analysis.
Authors:
Although microsat isn't intended to be used as a fast SAT-solver, I felt it appropriate to compare it at a basic level to the project, minisat (a small CDCL SAT solver that disrupted the SAT solver scene many years back). Times were for release-compiled variants of microsat and minisat on the same computer, for all of the examples in examples/cnf:
microsat |
minisat |
|
|---|---|---|
| Time to solve example suite | 44.158s | 41.432s |
| Lines of code | 791 | 3517 |
As you can see, microsat does pretty remarkably well in this benchmark, despite being much smaller than the already small minisat. Further, it is important to note that for any reasonably large instance (eg. larger than the 1040 variable, 3668 clause file in examples/cnf, which is the largest in this benchmark), so in a way, this benchmark is clearly cheating (but fascinating regardless).