NSAT Problem
We may restrict the number of literals in each clause to be able to use more efficient algorithms to solve SAT, e.g. for some Boolean Satisfiability Problem NSAT:
- Input: propositional formula in CNF with at most literals in each clause
- Output: if and only if is satisfiable
NSAT Theorems
Theorem: This also produces a chain of polynomial reductions:
Proof: This reduction is easy since every CNF formula with at most literals in each clause also has at most literals in each clause.
Theorem: We also have a chain of polynomial reactions going the other way:
Proof: It is enough to show that because
- Let be an arbitrary formula in CNF:
- Find a clause which contains more than 3 literals:
- Introduce a new propositional variable to break up this clause:
- Repeat until all clauses contain at most 3 literals.
Solving 2SAT
Theorem: 2SAT is solvable in polynomial time Proof: we can solve 2SAT by using the Strongly Connected Component algorithm
- Write each clause as two implications:
- Construct the implication graph: (the edges represent implications)

- If any vertex / literal is true, then all nodes that it directs to must also be true as per the implication. It follows strongly connected components must either be assigned true or false under any assignment.
- Check whether any SCC contains a literal and its negation:

- Since we can compute and check each strongly connected component in polynomial time, we have that 2SAT is solvable in polynomial time.
Easy variants of SAT
- (Definite) Propositional Horn clause Every clause contains exactly one positive literal Every clause can be written in implication form with a single positive head
