Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.MultiTapeMachine

Unrestricted depth-three lower bound: multi tape machine #

Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a. Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/MultiTapeMachine.lean

Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.

@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.
theorem Complexity.DepthThreeLowerBound.multiTapeStep_eq_some {K : Type uDepth4} {Γ : Type uDepth5} {Q : Type uDepth6} [Inhabited Γ] {code : MultiTapeCode K Γ Q} {c : MultiTapeCfg K Γ Q} {q : Q} {writes : K → Γ} {moves : K → HeadMove} (h : (code c.q fun (k : K) => (c.tapes k).head) = some (q, writes, moves)) :
multiTapeStep code c = some (multiTapeUpdate c q writes moves)
@[simp]
theorem Complexity.DepthThreeLowerBound.multiTapeStep_eq_none_iff {K : Type uDepth7} {Γ : Type uDepth8} {Q : Type uDepth9} [Inhabited Γ] (code : MultiTapeCode K Γ Q) (c : MultiTapeCfg K Γ Q) :
multiTapeStep code c = none ↔ (code c.q fun (k : K) => (c.tapes k).head) = none
theorem Complexity.DepthThreeLowerBound.multiTapeHaltsIn_iff_runsIn (M : FiniteMultiTapeMachine) (input : List Bool) (output : Bool) (time : ℕ) :
MultiTapeHaltsIn M input output time ↔ ∃ (c : M.Cfg), RunsIn M.step (M.init input) c time ∧ M.step c = none ∧ M.accept c.q = output
theorem Complexity.DepthThreeLowerBound.MultiTapeHaltsIn.mono {M : FiniteMultiTapeMachine} {input : List Bool} {output : Bool} {m n : ℕ} (h : MultiTapeHaltsIn M input output m) (hmn : m ≤ n) :
MultiTapeHaltsIn M input output n

A fixed finite multitape machine decides the language in polynomial time.

Equations
  • One or more equations did not get rendered due to their size.
Instances For