Documentation

CslibFrontier.Computability.Complexity.Problems.SAT.PolyTime

SAT belongs to NP #

The existing verifier is polynomial-time on the framed binary encoding of CNF formulas and raw certificate bits. It looks up each variable's first occurrence, so arbitrary binary variable labels do not inflate certificates. Repeated variables read the same certificate position.

Together with Cslib.Complexity.SAT.isVerifier, this proves membership in NP Arora and Barak, Section 2.3. Combined with the tableau reduction in CslibFrontier/Computability/Complexity/CookLevin/PolyTime.lean, this gives Cslib.Complexity.CookLevin.SAT_npComplete in CslibFrontier/Computability/Complexity/CookLevin/Completeness.lean.

Main definitions #

Main results #

References #

Formulas in conjunctive normal form are decoded along their encoding encCNF.

Instances For
    @[reducible, inline]

    Encoding of a literal occurrence: unary clause and position indices with a binary-numbered literal.

    Instances For

      The number of clauses of a polynomial-time formula, in unary, is polynomial-time.

      The number of variable occurrences of a polynomial-time formula, in unary, is polynomial-time.

      Satisfiability is in NP, with certificates of length equal to the encoded formula length.

      Checking that every clause has at most k literals is polynomial-time.

      Unsatisfiability is in coNP.