Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.TapeInputBlockLoop

Unrestricted depth-three lower bound: tape input block loop #

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

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

@[reducible, inline]

The source register of the block-copy loop.

Equations
Instances For
    @[reducible, inline]

    The source-position counter of the block-copy loop.

    Equations
    Instances For
      @[reducible, inline]

      The remaining-length counter of the block-copy loop.

      Equations
      Instances For
        @[reducible, inline]

        The scratch register of the block-copy loop.

        Equations
        Instances For
          @[reducible, inline]

          The output register of the block-copy loop.

          Equations
          Instances For

            Tape-store contents at the block stage of the input block loop routine.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.blockStore_source (R : Registers) (σ : TapeStore) (pos remaining : ℕ) (bits : List Bool) :
              blockStore R σ pos remaining bits (source R) = σ (source R)
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.blockStore_index (R : Registers) (σ : TapeStore) (pos remaining : ℕ) (bits : List Bool) :
              blockStore R σ pos remaining bits (index R) = List.replicate pos true
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.blockStore_count (R : Registers) (σ : TapeStore) (pos remaining : ℕ) (bits : List Bool) :
              blockStore R σ pos remaining bits (count R) = List.replicate remaining true
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.blockStore_destination (R : Registers) (σ : TapeStore) (pos remaining : ℕ) (bits : List Bool) :
              blockStore R σ pos remaining bits (destination R) = bits
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.update_blockStore_count (R : Registers) (σ : TapeStore) (pos remaining remaining' : ℕ) (bits : List Bool) :
              Function.update (blockStore R σ pos remaining bits) (count R) (List.replicate remaining' true) = blockStore R σ pos remaining' bits
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.update_blockStore_index (R : Registers) (σ : TapeStore) (pos pos' remaining : ℕ) (bits : List Bool) :
              Function.update (blockStore R σ pos remaining bits) (index R) (List.replicate pos' true) = blockStore R σ pos' remaining bits
              @[simp]
              theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.update_blockStore_destination (R : Registers) (σ : TapeStore) (pos remaining : ℕ) (bits bits' : List Bool) :
              Function.update (blockStore R σ pos remaining bits) (destination R) bits' = blockStore R σ pos remaining bits'

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

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.runs_body (R : Registers) (σ : TapeStore) («prefix» suffix acc : List Bool) (b : Bool) (remaining : ℕ) (hsource : σ (source R) = «prefix» ++ b :: suffix) :
                RunsIn (bodyProgram R).step (TapeMultiProgram.cfg bodyStart (storeTapes (blockStore R σ («prefix».length + 1) remaining acc))) (TapeMultiProgram.cfg (bodyDone b) (storeTapes (blockStore R σ «prefix».length remaining (b :: acc)))) (2 * «prefix».length + 12)
                @[reducible, inline]

                Control states of the input block loop routine.

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

                  Transition function of the input block loop routine.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem Complexity.DepthThreeLowerBound.TapeInputBlockLoop.runs_block (R : Registers) (σ : TapeStore) («prefix» block suffix acc : List Bool) (hsource : σ (source R) = «prefix» ++ block ++ suffix) :
                    RunsIn (program R).step (TapeMultiProgram.cfg start (storeTapes (blockStore R σ («prefix».length + block.length) block.length acc))) (TapeMultiProgram.cfg done (storeTapes (blockStore R σ «prefix».length 0 (block ++ acc)))) (block.length * (2 * «prefix».length + block.length + 17) + 3)