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]
@[instance_reducible]
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[simp]
theorem
Complexity.DepthThreeLowerBound.HeadMove.apply_left
{Γ : Type uDepth1}
[Inhabited Γ]
(t : Turing.Tape Γ)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.HeadMove.apply_stay
{Γ : Type uDepth2}
[Inhabited Γ]
(t : Turing.Tape Γ)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.HeadMove.apply_right
{Γ : Type uDepth3}
[Inhabited Γ]
(t : Turing.Tape Γ)
:
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))
:
@[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)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.FiniteMultiTapeMachine.init_q
(M : FiniteMultiTapeMachine)
(input : List Bool)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.FiniteMultiTapeMachine.init_inputTape
(M : FiniteMultiTapeMachine)
(input : List Bool)
:
theorem
Complexity.DepthThreeLowerBound.FiniteMultiTapeMachine.init_otherTape
(M : FiniteMultiTapeMachine)
(input : List Bool)
(k : M.K)
(hk : k ≠ M.inputTape)
:
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