Encodings of finite binary machine configurations #
The encoding stores the input, control, unary input position, work tapes, output and every query and answer buffer. Its length bound charges replies separately from the machine clock: a short oracle run may receive a long word.
Main definitions #
Turing.MultiTapeTM.encFiniteCfg: encode ordinary finite binary storage.Turing.MultiTapeTM.encFiniteConfig: include the fixed family of oracle channels.
Main results #
Turing.MultiTapeTM.length_encFiniteConfig_le: linear encoded storage underSpaceBound.
References #
Adapts Computability/Probabilistic/Configuration.lean on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8, reusing the existing finite configuration and encodings.
@[simp]
theorem Turing.MultiTapeTM.length_encFiniteConfig_le {k : ℕ} {State : Type} [Finite State] {Oracle : Type} [Fintype Oracle] :
∃ (c : ℕ),
∀ (inputSize steps answerSize : ℕ) (cfg : MultiTapeMachine.FiniteConfig k Bool State Oracle),
MultiTapeMachine.FiniteConfig.SpaceBound inputSize steps answerSize cfg →
(encFiniteConfig cfg).length ≤ c * (inputSize + steps + answerSize + 1)
The whole encoding is linear in input length, elapsed steps and the largest installed reply. The constant depends only on the fixed control, channel type and number of work tapes.