CNF evaluation decided in quadratic time by Turing machine
OpenCookLevin.satisfiesB_machine_quadquadratic-timesatisfiesbturing-machineverifier
There exists a multi-tape Turing machine with tape count and alphabet size that evaluates whether the truth assignment encoded by satisfies the CNF formula encoded by :
within at most steps for a constant .
The evaluation parses into a clause list and into variable assignments. For each clause in the formula, the machine checks whether at least one literal evaluates to true under the assignment by seeking the corresponding bit in . Since the total number of literals is bounded by and each lookup in takes head movements, the total execution time is bounded by .
Preamble
import Definitions.Def_CookLevin_Verifier
Formal statement
namespace CookLevin
theorem satisfiesB_machine_quad :
∃ (M : Machine) (k G : Nat) (c0 : Nat),
TuringMachine k G M ∧
∀ x w : List Bool,
DecidesIn M k (boolsToSymbols x) (boolsToSymbols w)
(c0 * (x.length + w.length + 1) ^ 2)
(satisfiesB (decodeAssignment w) (decodeFormula x)) := by sorry
end CookLevinSource