Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.TapeForLoop

Unrestricted depth-three lower bound: tape for loop #

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

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

@[reducible, inline]

Control states for the body stage of the for loop routine.

Equations
Instances For
    @[reducible, inline]

    Control states of the for loop routine.

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

      Transition function for the body stage of the for loop routine.

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

        Initial control state of the body stage of the for loop routine.

        Equations
        Instances For

          Transition function of the for loop routine.

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

            Initial control state of the for loop routine.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeForLoop.program_done {Q : Type uDepth10} (r s : TapeRegister) (P : TapeMultiProgram Q) (qStart : Q) (h : TapeHeads) :
              program r s P qStart done h = none
              theorem Complexity.DepthThreeLowerBound.TapeForLoop.runs_iteration {Q : Type uDepth12} {r s : TapeRegister} (hrs : r ≠ s) (P : TapeMultiProgram Q) (qStart qDone : Q) (T U : TapeTapes) (j n B : ℕ) (hj : j < n) (hR : T r = TapeUnary.counterTape j) (hS : T s = TapeUnary.counterTape n) (hU : U r = TapeUnary.counterTape (j + 1)) (hbody : RunsIn P.step (TapeMultiProgram.cfg qStart T) (TapeMultiProgram.cfg qDone (Function.update U r (TapeUnary.counterTape j))) B) (hhalt : P qDone (TapeMultiProgram.heads (Function.update U r (TapeUnary.counterTape j))) = none) :
              theorem Complexity.DepthThreeLowerBound.TapeForLoop.runs_exit {Q : Type uDepth13} {r s : TapeRegister} (hrs : r ≠ s) (P : TapeMultiProgram Q) (qStart : Q) (T : TapeTapes) (n : ℕ) (hR : T r = TapeUnary.counterTape n) (hS : T s = TapeUnary.counterTape n) :
              theorem Complexity.DepthThreeLowerBound.TapeForLoop.runs {Q : Type uDepth14} {r s : TapeRegister} (hrs : r ≠ s) (P : TapeMultiProgram Q) (qStart qDone : Q) (σ : ℕ → TapeTapes) (n B : ℕ) (hindex : ∀ j ≤ n, σ j r = TapeUnary.counterTape j) (hbound : ∀ j ≤ n, σ j s = TapeUnary.counterTape n) (hbody : ∀ j < n, RunsIn P.step (TapeMultiProgram.cfg qStart (σ j)) (TapeMultiProgram.cfg qDone (Function.update (σ (j + 1)) r (TapeUnary.counterTape j))) B) (hhalt : ∀ (h : TapeHeads), P qDone h = none) (i : ℕ) (hi : i ≤ n) :
              RunsIn (program r s P qStart).step (TapeMultiProgram.cfg start (σ i)) (TapeMultiProgram.cfg done (σ n)) ((n - i) * (B + 4 * n + 12) + (4 * n + 8))
              theorem Complexity.DepthThreeLowerBound.TapeForLoop.runs_zero {Q : Type uDepth15} {r s : TapeRegister} (hrs : r ≠ s) (P : TapeMultiProgram Q) (qStart qDone : Q) (σ : ℕ → TapeTapes) (n B : ℕ) (hindex : ∀ j ≤ n, σ j r = TapeUnary.counterTape j) (hbound : ∀ j ≤ n, σ j s = TapeUnary.counterTape n) (hbody : ∀ j < n, RunsIn P.step (TapeMultiProgram.cfg qStart (σ j)) (TapeMultiProgram.cfg qDone (Function.update (σ (j + 1)) r (TapeUnary.counterTape j))) B) (hhalt : ∀ (h : TapeHeads), P qDone h = none) :
              RunsIn (program r s P qStart).step (TapeMultiProgram.cfg start (σ 0)) (TapeMultiProgram.cfg done (σ n)) (n * (B + 4 * n + 12) + (4 * n + 8))