sat solving

**SAT solving** is the problem of **determining whether a boolean formula can be satisfied** — finding an assignment of true/false values to variables that makes the formula true, or proving that no such assignment exists, serving as the foundation for many automated reasoning and verification tasks. **What Is SAT?** - **Boolean Formula**: Logical expression with variables, AND (∧), OR (∨), NOT (¬). - Example: (x ∨ y) ∧ (¬x ∨ z) ∧ (¬y ∨ ¬z) - **Satisfiability**: Can we assign true/false to variables to make the formula true? - **SAT**: Formula is satisfiable — there exists a satisfying assignment. - **UNSAT**: Formula is unsatisfiable — no assignment makes it true. **Why SAT Solving?** - **Fundamental Problem**: SAT is the first problem proven NP-complete — many problems reduce to SAT. - **Practical Importance**: Despite NP-completeness, modern SAT solvers are remarkably efficient on real-world instances. - **Versatility**: SAT solving is used in verification, testing, planning, scheduling, and more. **CNF (Conjunctive Normal Form)** - **Standard Form**: Formula is AND of clauses, each clause is OR of literals. - Clause: (x ∨ ¬y ∨ z) - CNF: (x ∨ y) ∧ (¬x ∨ z) ∧ (¬y ∨ ¬z) - **Conversion**: Any boolean formula can be converted to CNF. - **Why CNF?**: SAT solvers work on CNF formulas — standard input format. **Example: SAT Problem** ``` Formula: (x ∨ y) ∧ (¬x ∨ z) ∧ (¬y ∨ ¬z) Try x=true: Clause 1: (true ∨ y) = true ✓ Clause 2: (¬true ∨ z) = (false ∨ z) = z → Must have z=true Clause 3: (¬y ∨ ¬true) = (¬y ∨ false) = ¬y → Must have y=false Check: (true ∨ false) ∧ (false ∨ true) ∧ (true ∨ false) = true ∧ true ∧ true = true ✓ Solution: x=true, y=false, z=true (SAT) ``` **DPLL Algorithm** - **Classic SAT Algorithm**: Backtracking search with optimizations. - **Steps**: 1. **Unit Propagation**: If clause has only one unassigned literal, assign it to satisfy the clause. 2. **Pure Literal Elimination**: If variable appears only positive (or only negative), assign it to satisfy all clauses. 3. **Branching**: Pick unassigned variable, try both true and false. 4. **Backtrack**: If conflict, undo assignments and try alternative. **CDCL (Conflict-Driven Clause Learning)** - **Modern SAT Solvers**: Extend DPLL with learning. - **Key Idea**: When conflict found, analyze to learn new clause preventing same conflict. - **Process**: 1. Make decisions and propagate. 2. If conflict: Analyze conflict, learn clause, backtrack. 3. Learned clause prevents repeating same mistake. 4. Continue until SAT or UNSAT proven. **Example: CDCL Learning** ``` Formula: (x ∨ y) ∧ (¬x ∨ z) ∧ (¬y ∨ ¬z) ∧ (¬z ∨ w) ∧ (¬w) Decisions: x=true, y=true Propagation: From (¬x ∨ z): z=true From (¬y ∨ ¬z): conflict! (y=true and z=true violate this) Conflict Analysis: Why conflict? Because x=true → z=true and y=true → ¬z Learn clause: (¬x ∨ ¬y) # x and y can't both be true Add learned clause to formula, backtrack, continue. ``` **Applications** - **Hardware Verification**: Verify chip designs — equivalence checking, property verification. - **Software Verification**: Bounded model checking, symbolic execution. - **Planning**: AI planning problems encoded as SAT. - **Scheduling**: Resource allocation, timetabling. - **Cryptanalysis**: Breaking cryptographic systems. - **Bioinformatics**: Haplotype inference, phylogeny. **SAT Solvers** - **MiniSat**: Small, efficient, widely used as baseline. - **Glucose**: Focuses on learned clause management. - **CryptoMiniSat**: Specialized for cryptographic problems. - **Lingeling**: Competition-winning solver. - **CaDiCaL**: Modern, efficient solver. **Example: Encoding Graph Coloring as SAT** ``` Problem: Color graph with 3 colors such that adjacent nodes have different colors. Variables: x_i_c = "node i has color c" For 3 nodes, 3 colors: x_1_1, x_1_2, x_1_3, x_2_1, x_2_2, x_2_3, x_3_1, x_3_2, x_3_3 Constraints: 1. Each node has exactly one color: (x_1_1 ∨ x_1_2 ∨ x_1_3) ∧ (¬x_1_1 ∨ ¬x_1_2) ∧ (¬x_1_1 ∨ ¬x_1_3) ∧ (¬x_1_2 ∨ ¬x_1_3) ... (similar for nodes 2 and 3) 2. Adjacent nodes have different colors: If nodes 1 and 2 are adjacent: (¬x_1_1 ∨ ¬x_2_1) ∧ (¬x_1_2 ∨ ¬x_2_2) ∧ (¬x_1_3 ∨ ¬x_2_3) SAT solver finds satisfying assignment → valid coloring. ``` **MaxSAT** - **Optimization Variant**: Maximize number of satisfied clauses. - **Partial MaxSAT**: Some clauses are hard (must be satisfied), others are soft (prefer to satisfy). - **Applications**: Optimization problems where not all constraints can be satisfied. **Incremental SAT** - **Idea**: Solve sequence of related SAT problems efficiently. - **Technique**: Reuse learned clauses and solver state across problems. - **Applications**: Bounded model checking, iterative refinement. **Challenges** - **NP-Completeness**: Worst-case exponential time. - **Hard Instances**: Some formulas are extremely difficult for all known solvers. - **Encoding Quality**: Efficiency depends on how problem is encoded as SAT. **SAT Solver Heuristics** - **Variable Selection**: Which variable to branch on? (VSIDS, EVSIDS) - **Phase Selection**: Try true or false first? (Phase saving) - **Restart Strategy**: When to restart search? (Luby, geometric) - **Clause Deletion**: Which learned clauses to keep? (LBD, activity) **LLMs and SAT Solving** - **Problem Encoding**: LLMs can help translate problems into SAT formulas. - **Result Interpretation**: LLMs can explain SAT solver results. - **Debugging UNSAT**: LLMs can help identify conflicting constraints. - **Heuristic Tuning**: LLMs can suggest solver configurations for specific problem types. **Benefits** - **Automation**: Automatically finds solutions or proves unsatisfiability. - **Efficiency**: Modern solvers handle millions of variables and clauses. - **Versatility**: Applicable to diverse problems via encoding. - **Mature Technology**: Decades of research and engineering. **Limitations** - **Exponential Worst Case**: Some instances are intractable. - **Encoding Overhead**: Translating problems to SAT can be complex. - **Black Box**: Solvers don't explain why formula is UNSAT (though some provide UNSAT cores). SAT solving is a **cornerstone of automated reasoning** — despite being NP-complete, modern SAT solvers are remarkably effective on real-world problems, making SAT solving essential for verification, testing, planning, and many other applications.

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account