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 #
Cslib.Complexity.CookLevin.computableInPolyTime_inPos,.computableInPolyTime_head,.computableInPolyTime_cell: varying positions.Cslib.Complexity.CookLevin.computableInPolyTime_holds,.computableInPolyTime_cert: tableau variable constructors.Cslib.Complexity.CookLevin.computableInPolyTime_index: the existing variable numbering with binary output.Cslib.Complexity.CookLevin.computableInPolyTime_relabel: number all variables in a constructed tableau, producing the SAT encoding.
References #
A feature is represented by its existing index in unary.
Instances For
The unary feature index is already the encoded word.
Construct the input-symbol feature from an optional Boolean symbol.
Construct an input-head feature from a unary position.
Construct a work-head feature on a fixed tape from a signed unary position.
Attach a unary time to an encoded feature.
Construct a certificate variable from its unary index.
Emit the existing variable index in binary.
Convert a constructed tableau to the SAT encoding using its existing variable numbering.