Documentation

CslibFrontier.Computability.Complexity.CookLevin.Encoding

Encodings for constructing the Cook–Levin tableau #

Intermediate features and variables are encoded by their existing indices in unary. The indices use a fixed nesting depth of the polynomial pairing function, so constructing features from unary times and positions has polynomial cost. States, tape numbers and symbols are fixed parameters. The final variable numbering converts the same indices to the binary encoding used by SAT.

These certificates concern construction and numbering. They do not provide a polynomial-time decoder or certify pattern matching on an arbitrary encoded feature.

Main definitions #

Main results #

References #

A feature is represented by its existing index in unary.

Instances For
    noncomputable def Cslib.Complexity.CookLevin.encVar {k : ℕ} {State : Type} [Fintype State] :
    Var k State ↪ List Bool

    A tableau variable is represented by its existing index in unary.

    Instances For

      Construct a work-head feature on a fixed tape from a signed unary position.

      Construct a cell feature for a fixed tape and symbol from a signed unary position.

      Convert a constructed tableau to the SAT encoding using its existing variable numbering.