Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.TapeArray

Unrestricted depth-three lower bound: tape array #

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

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

Control states of the array routine.

Instances For

    Transition function of the array routine.

    Equations
    Instances For
      theorem Complexity.DepthThreeLowerBound.TapeArray.step_rewind_home {index array : TapeRegister} (hne : index ≠ array) (f : Bool → Bool) (T : TapeTapes) (I A : Turing.Tape TapeSymbol) (b : Bool) (hI : I.head.1 = TapeAtom.home) :
      (code index array f).step (TapeMultiProgram.cfg (State.rewind b) (TapeCopy.onPair index array T I A)) = some (TapeMultiProgram.cfg (State.done b) (TapeCopy.onPair index array T I A))
      theorem Complexity.DepthThreeLowerBound.TapeArray.runs_modify {index array : TapeRegister} (hne : index ≠ array) (f : Bool → Bool) (T : TapeTapes) («prefix» suffix : List Bool) (b : Bool) :
      RunsIn (code index array f).step (TapeMultiProgram.cfg State.start (TapeCopy.onPair index array T (wordTape (List.replicate «prefix».length true)) (wordTape («prefix» ++ b :: suffix)))) (TapeMultiProgram.cfg (State.done b) (TapeCopy.onPair index array T (wordTape (List.replicate «prefix».length true)) (wordTape («prefix» ++ f b :: suffix)))) (2 * «prefix».length + 4)
      theorem Complexity.DepthThreeLowerBound.TapeArray.runs_read {index array : TapeRegister} (hne : index ≠ array) (T : TapeTapes) («prefix» suffix : List Bool) (b : Bool) :
      RunsIn (code index array id).step (TapeMultiProgram.cfg State.start (TapeCopy.onPair index array T (wordTape (List.replicate «prefix».length true)) (wordTape («prefix» ++ b :: suffix)))) (TapeMultiProgram.cfg (State.done b) (TapeCopy.onPair index array T (wordTape (List.replicate «prefix».length true)) (wordTape («prefix» ++ b :: suffix)))) (2 * «prefix».length + 4)
      @[simp]