Cook–Levin theorem to Finiteness of the SAT verifier alphabet (moved alias)

TheoremCook–Levin theorem#✓fully proved

CNF satisfiability is NP-complete: the decision problem accepting exactly the bit strings that encode a satisfiable CNF formula is in NP, and every decision problem in NP has a polynomial-time many-one reduction to it.

theorem cook_levin_SAT_np_complete :
    satDec ∈ ComplexityTheory.NP ∧
      ∀ L : ComplexityTheory.DecisionProblem,
        L ∈ ComplexityTheory.NP → PolyManyOneRed L satDec
Uses 7 · Used by 1

TheoremAnswer of the SAT host with the three-literal filter#✓fully proved

For all bit strings \(x\) and \(w\), the answer of the SAT host with flag true on \((x, w)\) is the conjunction of two bits. The first is false if the complete length-prefixed CNF decoder fails on \(x\); if \(x\) decodes to a CNF formula \(\varphi\), it is true exactly when every clause of \(\varphi\) has at most three literals. The second is the return value of the SAT verifier on \((x, w)\).

theorem ans_true (x w : List Bool) :
    ans true (x, w) = (((decodeCNF x).map Karp.is3).getD false && (satVerifier (x, w)).ret)
Uses 8 · Used by 1

Theorem3SAT is in NP#✓fully proved

The decision problem 3SAT, which accepts exactly the bit strings that encode a satisfiable CNF formula in which every clause has at most three literals, belongs to the class NP.

The verifier is the SAT verifier host with the three-literal clause filter switched on, and witnesses no longer than the input suffice.

theorem sat3Dec_mem_NP : Karp.sat3Dec ∈ ComplexityTheory.NP
Uses 37 · Used by 1

TheoremToken length bound for the SAT verifier (moved alias)#✓fully proved

Moved to SatVerifier.toks_length_le (SatVerifierSpec).

@[deprecated SatVerifier.toks_length_le (since := "2026-10-15")]
theorem toks_length_le (φ : CNF) : (toks φ).length ≤ (encodeCNF φ).length
Uses 5

TheoremClause token length bound for the SAT verifier (moved alias)#✓fully proved

Moved to SatVerifier.clauseToks_length_le (SatVerifierSpec).

@[deprecated SatVerifier.clauseToks_length_le (since := "2026-10-15")]
theorem clauseToks_length_le (C : CNFClause) :
    (clauseToks C).length ≤ (encodeClause C).length
Uses 5

AbbreviationFiniteness of the SAT verifier alphabet (moved alias)#✓fully proved

Moved to the instance SatVerifier.Sym.instFintype (SatVerifierSpec); kept as a definition, not an instance, so instance search sees one Fintype Sym.

@[deprecated SatVerifier.Sym.instFintype (since := "2026-10-15")]
abbrev Sym.instFintype : Fintype Sym := SatVerifier.Sym.instFintype
Uses 1
6 fully proved

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.