Unrestricted depth-three lower bound: tape multi routines #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/TapeMultiRoutines.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
def
Complexity.DepthThreeLowerBound.TapeMultiProgram.mapCfg
{Q : Type uDepth5}
{R : Type uDepth6}
(f : Q → R)
(c : TapeMultiCfg Q)
:
Map a configuration's control state while retaining all of its tapes.
Equations
Instances For
theorem
Complexity.DepthThreeLowerBound.TapeMultiProgram.step_move
{Q : Type uDepth8}
(P : TapeMultiProgram Q)
(q q' : Q)
(T : TapeTapes)
(r : TapeRegister)
(d : HeadMove)
(h : P q (heads T) = move r d q' (heads T))
:
theorem
Complexity.DepthThreeLowerBound.TapeMultiProgram.step_writeMove
{Q : Type uDepth9}
(P : TapeMultiProgram Q)
(q q' : Q)
(T : TapeTapes)
(r : TapeRegister)
(symbol : TapeSymbol)
(d : HeadMove)
(h : P q (heads T) = writeMove r symbol d q' (heads T))
:
theorem
Complexity.DepthThreeLowerBound.TapeMultiProgram.step_map
{Q : Type uDepth10}
{R : Type uDepth11}
(P : TapeMultiProgram Q)
(P' : TapeMultiProgram R)
(f : Q → R)
(hcode :
∀ (q : Q) (h : TapeHeads) (q' : Q) (writes : TapeHeads) (moves : TapeMoves),
P q h = some (q', writes, moves) → P' (f q) h = some (f q', writes, moves))
(a b : TapeMultiCfg Q)
(h : P.step a = some b)
:
theorem
Complexity.DepthThreeLowerBound.TapeMultiProgram.runs_map
{Q : Type uDepth12}
{R : Type uDepth13}
(P : TapeMultiProgram Q)
(P' : TapeMultiProgram R)
(f : Q → R)
(hcode :
∀ (q : Q) (h : TapeHeads) (q' : Q) (writes : TapeHeads) (moves : TapeMoves),
P q h = some (q', writes, moves) → P' (f q) h = some (f q', writes, moves))
{a b : TapeMultiCfg Q}
{n : ℕ}
(h : RunsIn P.step a b n)
: