Polynomial-time closure under terminal-bit deletion and output concatenation
ProvedCookLevin.polyTime_dropLast_appendclosure-propertycook-levinpolynomial-timeturing-machine
Let and be polynomial-time computable bit-string functions in the Cook-Levin multi-tape machine model. Then the function that removes the final bit from and concatenates the result with is also polynomial-time computable. This isolates the output-splicing routine needed to concatenate two encoded CNF formula streams, whose first terminal delimiter must be removed.
Preamble
import Definitions.Def_CookLevin_Complexity open CookLevin
Formal statement
namespace CookLevin
/-- Polynomial-time bit-string functions are closed under deleting the last bit of the first output and appending the second output. -/
theorem polyTime_dropLast_append
(u v : List Bool → List Bool)
(hu : IsPolyTimeComputable u)
(hv : IsPolyTimeComputable v) :
IsPolyTimeComputable (fun x => (u x).dropLast ++ v x) := by sorry
end CookLevinSource
Reusable machine-construction lemma for CookLevin.polyTime_encodeFormula_append: https://prove2.me/theorems/52bfe0b2-676b-48d9-a6ee-9a495cd865fb . The encoding splice identity is proved directly from Definitions.Def_CookLevin_Satisfiability.