A SAT solver implemented in Java using the DPLL algorithm with some optimizations.
The project supports:
- solving single CNF files or directories recursively
- HTML export of benchmark results
Prebuilt JAR files are available in GitHub Releases:
https://github.com/david-soliar/SATSolver/releases
Requirements:
Build project:
mvn clean package
This produces:
target/SATSolver-A.B.jar
java -jar SATSolver-A.B.jar path/to/file.cnf
java -jar SATSolver-A.B.jar path/to/folder
Processes all .cnf files recursively.
java -jar SATSolver-A.B.jar <file|folder> --export
Output: ~/results.html
- filename
SATorUNSAT- List of true literals, sorted in ascending order by the variable number, or a newline if UNSAT
- Time taken to initialize the solver
- Time taken to solve
- Number of unit propagations that happened during the entire run
- Depth of the decision tree (number of decision variables)
- Only DIMACS CNF format is supported
- Time is measured in nanoseconds internally and displayed in milliseconds (remove
/ 1_000_000inSATInfoto show nanoseconds) - Around 5000 benchmark files are included in
benchmarks.zip.