SAT: propositional satisfiability #
The problem SAT, as a decision problem on first-order structures. A CNF
formula is a FirstOrder.Language.sat-structure: elements are clauses and
propositional variables, satIsClause c distinguishes the clauses, and
satPosIn c x / satNegIn c x say that the literal x / ¬x occurs in
clause c. DescriptiveComplexity.Satisfiable is the usual satisfiability, and
DescriptiveComplexity.SAT the bundled decision problem.
SAT is the archetypical NP-complete problem: this is the Cook–Levin theorem
(Cook 1971; Levin 1973;
DescriptiveComplexity.SAT_NP_complete, in DescriptiveComplexity.Problems.Sat.Hardness). With
NP defined as existential-second-order definability
(DescriptiveComplexity.Hierarchy), its membership half is the theorem
DescriptiveComplexity.sat_sigmaSODefinable proved here – “there is a truth assignment
making every clause true” – and its hardness half is the machine-free,
Dahlhaus-style (Dahlhaus 1983) generic reduction
DescriptiveComplexity.sat_hard_of_sigmaSODefinable
of DescriptiveComplexity.Problems.Sat.Hardness. Other problems' NP-completeness
proofs derive from it through first-order reductions; see e.g.
DescriptiveComplexity.Problems.ThreeColorability.
Relation symbols of the language of CNF instances.
- isClause : satRel 1
isClause c: the elementcis a clause. - posIn : satRel 2
posIn c x: the variablexoccurs positively in the clausec. - negIn : satRel 2
negIn c x: the variablexoccurs negatively in the clausec.
Instances For
Dependency graph
Dependency graph
Equations
- FirstOrder.Language.instDecidableEqSatRel.decEq FirstOrder.Language.satRel.isClause FirstOrder.Language.satRel.isClause = isTrue FirstOrder.Language.instDecidableEqSatRel.decEq._proof_1
- FirstOrder.Language.instDecidableEqSatRel.decEq FirstOrder.Language.satRel.posIn FirstOrder.Language.satRel.posIn = isTrue FirstOrder.Language.instDecidableEqSatRel.decEq._proof_2
- FirstOrder.Language.instDecidableEqSatRel.decEq FirstOrder.Language.satRel.posIn FirstOrder.Language.satRel.negIn = isFalse FirstOrder.Language.instDecidableEqSatRel.decEq._proof_3
- FirstOrder.Language.instDecidableEqSatRel.decEq FirstOrder.Language.satRel.negIn FirstOrder.Language.satRel.posIn = isFalse FirstOrder.Language.instDecidableEqSatRel.decEq._proof_4
- FirstOrder.Language.instDecidableEqSatRel.decEq FirstOrder.Language.satRel.negIn FirstOrder.Language.satRel.negIn = isTrue FirstOrder.Language.instDecidableEqSatRel.decEq._proof_5
Instances For
Dependency graph
The relational language of CNF instances: a unary predicate singling out clauses, and two binary predicates for positive and negative occurrences of a variable in a clause.
Equations
- FirstOrder.Language.sat = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.satRel }
Instances For
Dependency graph
Dependency graph
The symbol for “is a clause”.
Instances For
Dependency graph
The symbol for “occurs positively in”.
Instances For
Dependency graph
The symbol for “occurs negatively in”.
Instances For
Dependency graph
A Language.sat-structure is satisfiable if some assignment of truth
values to its elements makes every clause contain a true literal. (Elements
that are not variables of the CNF formula may be assigned arbitrarily; they are
harmless since no clause mentions them.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Satisfiability is isomorphism-invariant.
Dependency graph
SAT, as a problem on Language.sat-structures.
Equations
- DescriptiveComplexity.SAT = { Holds := fun (A : Type) (inst : FirstOrder.Language.sat.Structure A) => DescriptiveComplexity.Satisfiable A, iso_invariant := ⋯ }
Instances For
Dependency graph
SAT is existential second-order definable #
SAT is Σ₁-definable in the sense of DescriptiveComplexity.SecondOrder – “there
exists a truth assignment (a unary relation) making every clause true”, the
inner part being first-order. Since NP is defined as Σ₁-definability,
this is the membership half of the Cook–Levin theorem.
The single existential block of the Σ₁ definition of SAT: one unary
relation variable, the truth assignment.
Equations
Instances For
Dependency graph
The symbol of the truth-assignment relation variable.
Instances For
Dependency graph
The vocabulary of the kernel: CNF instances together with the truth-assignment relation variable.
Equations
Instances For
Dependency graph
The symbol for “is a clause” in the kernel's vocabulary.
Instances For
Dependency graph
The symbol for “occurs positively in” in the kernel's vocabulary.
Instances For
Dependency graph
The symbol for “occurs negatively in” in the kernel's vocabulary.
Instances For
Dependency graph
The truth-assignment symbol in the kernel's vocabulary.
Instances For
Dependency graph
The first-order kernel of the Σ₁ definition of SAT: every clause
contains a true literal. The universally quantified variable is the clause,
the existentially quantified one the literal's variable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Realization of the kernel under an assignment of the truth-assignment variable: every clause contains a true literal. (Reused by the membership proof of HORN-SAT, whose kernel is this one conjoined with the first-order Horn condition.)
Dependency graph
SAT is Σ₁-definable: satisfiability of a CNF structure is expressed
by existentially quantifying a truth assignment and checking, in first-order
logic, that every clause contains a true literal.