Polynomial-time construction of tableau clauses #
All clause families of the existing Cook–Levin tableau are polynomial-time functions of their
input word and unary time/window bounds. Variables use encVar, so the certificates compose with
Cslib.Complexity.CookLevin.computableInPolyTime_relabel to produce binary SAT instances.
The machine, its tape count and its finite state type are fixed. Traversals of tapes and
situations therefore use fixed lists; the tape-cell window is enumerated from the input bound.
The step certificate enumerates the original constructor templates, preserving their order and
multiplicity. These certificates assemble into the complete reduction in
CslibFrontier/Computability/Complexity/CookLevin/PolyTime.lean.
Main results #
Cslib.Complexity.CookLevin.computableInPolyTime_initClauses.Cslib.Complexity.CookLevin.computableInPolyTime_acceptClauses.Cslib.Complexity.CookLevin.computableInPolyTime_sitClauses.Cslib.Complexity.CookLevin.computableInPolyTime_uniqueClauses.Cslib.Complexity.CookLevin.computableInPolyTime_oneHotClauses.Cslib.Complexity.CookLevin.computableInPolyTime_inputClauses.Cslib.Complexity.CookLevin.computableInPolyTime_readClauses.Cslib.Complexity.CookLevin.computableInPolyTime_stepClauses.
References #
Enumerate the feature groups in polynomial time in the unary input and window bounds.
Build all exactly-one clauses for one tableau row, including the input-dependent windows.
Build the existing initial-configuration clauses from a unary window bound.
Build the two accepting-configuration clauses from a unary time.
Build the situation clauses at a unary time, with the finite machine data fixed.
Build the uniqueness clauses at a unary time, with the finite machine data fixed.
Build input-symbol clauses from computed input, certificate length, time and position.
Enumerate work-tape and input-symbol clauses, charging the complete input-dependent lists.
Build the step constraints by enumerating the fixed constructor templates in their original order. Positions and bounds are unary; the machine's finite transition table is fixed.