Skip to content

C++ SAT solver using DPLL and CDCL algorithms to solve Boolean SAT problems supporting pure literal elimination, unit propagation, clause learning, and non-chronological backtracking. Benchmarked using SATLIB test cases, with performance evaluated through runtime analysis.

Notifications You must be signed in to change notification settings

QabasAK/SAT-Solver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SAT-Solver

A Boolean SAT solver that determines the satisfiability of propositional logic formulas in CNF (Conjuctive Normal Form) using both the DPLL (Davis-Putnam-Logemann-Loveland) algorithm and the CDCL (Conflict-Driven Clause Learning) algorithm.

DPLL Algorithm

Implements pure literal elimination and unit propagation. Uses a vector of clauses to store the CNF formula.

CDCL Algorithm

Implements conflict analysis, clause learning and non-chronological backtracking. Uses a structured approach to track assignments, including value, reason and level. It performs 1-UIP (Unique Implication Point) learning for effective clause learning.

Benchmarking & Visualization

The solvers were evaluated against SATLIB test cases with chrono-based runtime measurements and built using Manim to animate SAT solver steps (rendered with LaTeX-based representation).

Future Work

  • Implementing watched literals to improve unit propagation efficiency.
  • Add a learned clause database with deletion heuristics (LBD).
  • Introducing restart strategies for better solver performance.

About

C++ SAT solver using DPLL and CDCL algorithms to solve Boolean SAT problems supporting pure literal elimination, unit propagation, clause learning, and non-chronological backtracking. Benchmarked using SATLIB test cases, with performance evaluated through runtime analysis.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published