A SAT solver which implements DPLL algorithm.
g++ -o polysat polysat.cpp
./polysat dimacs.txt
where, dimacs.txt contains the logical formula in DIMACS representation
- Removed Duplicate elements from clauses
- Remove Tautologies (a V -a)
- Apply Unit Propogation on clauses of unit length
- Assign values to pure literals
- If all clauses are SAT then return SAT
- If decision level 0 led to conflict then return UNSAT
- Assign value to a variable chose by using MOMS algorithm.
- Apply unit propogation on it.
- In case of conflict, Backtrack to the previously unassigned literal and repeat
- Applied Watchted list/literal Concept to optimise unit propogation
- To implement CDCL(Conflict Driven Clause Learning) with it.