SAT solver: meaning and examples
A SAT solver is a program that decides whether a Boolean formula is satisfiable, returning a satisfying assignment when one exists, by search rather than by enumerating every row. The engine uses one for formulas with more than 20 inputs.
The Boolean satisfiability problem, SAT, asks whether some assignment makes a formula true. A solver answers it by propagating forced values and backtracking over choices, typically on a conjunctive normal form, and modern solvers handle formulas with thousands of variables that no truth table could list. Every exact check reduces to SAT: a tautology is a formula whose negation is unsatisfiable, and two formulas are equivalent when their XOR is unsatisfiable. The answer is exact, but a hard instance can take long, so a solver may also report that it did not finish.
The artefact on this page is a formula no table can show: all_24, the AND of 24 variables x1 to x24, whose table would have over sixteen million rows; the page has no truth table and the checks report no row count. The satisfiable check holds with the witness that sets all 24 variables TRUE, the contradiction check is violated with that same assignment, and the tautology check is violated with the counterexample that sets all 24 FALSE. Each witness was replayed through the evaluator before display, exactly as for small formulas.
SAT solvers sit under hardware verification, planning, package dependency resolution and software model checking, and SMT solvers extend them with arithmetic; the engine's SMT-LIB export hands a formula to such tools. The term is confused with a truth table generator (enumeration rather than search), with a theorem prover for richer logics, and with a simplifier. A verdict the solver cannot reach is reported as “Not determined”, never as a pass.
Example
all_24 := x1 AND x2 AND x3 AND x4 AND x5 AND x6 AND x7 AND x8 AND x9 AND x10 AND x11 AND x12 AND x13 AND x14 AND x15 AND x16 AND x17 AND x18 AND x19 AND x20 AND x21 AND x22 AND x23 AND x24 · output
Exact checks
The common slip
Reading a solver's silence as a result. When a check is not decided within its budget the engine says “Not determined”, which is neither holds nor violated; the pitfall page on timeouts explains why that is not a pass. Only a witness or an exhaustive sweep is evidence.
Questions
Is a solver's answer less trustworthy than a truth table's?
No. A satisfying assignment is checked by evaluating the formula on it, which is the same replay every witness on these pages gets. An unsatisfiable verdict rests on the solver's search being complete, and the engine reports a check it could not finish as undetermined rather than guessing.
Related
See also
- Satisfiable in logic: meaning and examples
- Exhaustive check: meaning and examples
- Conjunctive normal form (CNF): meaning and examples
- Boolean logic in SMT-LIB: declare-const, assert and check-sat with Z3
- A timeout is not a pass: “Not determined” results
- Witness (satisfying assignment): meaning and examples
Glossary
Generated from the Tangibool engine, semantics tangibool-semantics/1, engine 1.0.0, build . Every table, map, simplification and verdict on these pages was computed by the Tangibool engine when the site was built, and every claim was re-checked by the same exact checker the app uses. Limits are stated where they apply. © 2026 Foreranger LTD.