Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.TapePower

Unrestricted depth-three lower bound: tape power #

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

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

@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.

Transition function of the power routine.

Equations
Instances For

    The counter-tape contents after the recursive power computation.

    Equations
    Instances For

      Transition budget for the power routine.

      Equations
      Instances For
        theorem Complexity.DepthThreeLowerBound.TapePower.runs_power (k : ℕ) {outer source scratch destination : TapeRegister} (hos : outer ≠ source) (hoc : outer ≠ scratch) (hod : outer ≠ destination) (hsc : source ≠ scratch) (hsd : source ≠ destination) (hcd : scratch ≠ destination) (T : TapeTapes) (n m : ℕ) :
        RunsIn (program k outer source scratch destination).step (TapeMultiProgram.cfg (start k) (TapeMultiply.tapes outer source scratch destination T n m 0 0)) (TapeMultiProgram.cfg (done k) (resultTapes k outer source scratch destination T n m)) (cost k n m)
        theorem Complexity.DepthThreeLowerBound.TapePower.program_done (k : ℕ) (outer source scratch destination : TapeRegister) (h : TapeHeads) :
        program k outer source scratch destination (done k) h = none
        theorem Complexity.DepthThreeLowerBound.TapePower.resultTapes_result (k : ℕ) (outer source scratch destination : TapeRegister) (T : TapeTapes) (n m : ℕ) :
        resultTapes k outer source scratch destination T n m (resultRegister k outer destination) = TapeUnary.counterTape (n * m ^ k)
        theorem Complexity.DepthThreeLowerBound.TapePower.resultTapes_source (k : ℕ) {outer source scratch destination : TapeRegister} (hos : outer ≠ source) (hsd : source ≠ destination) (T : TapeTapes) (n m : ℕ) :
        resultTapes k outer source scratch destination T n m source = TapeUnary.counterTape m
        theorem Complexity.DepthThreeLowerBound.TapePower.resultTapes_scratch (k : ℕ) {outer source scratch destination : TapeRegister} (hoc : outer ≠ scratch) (hsc : source ≠ scratch) (hcd : scratch ≠ destination) (T : TapeTapes) (n m : ℕ) :
        resultTapes k outer source scratch destination T n m scratch = TapeUnary.counterTape 0
        theorem Complexity.DepthThreeLowerBound.TapePower.resultTapes_other (k : ℕ) (outer source scratch destination : TapeRegister) (T : TapeTapes) (n m : ℕ) (r : TapeRegister) (ho : r ≠ outer) (hs : r ≠ source) (hc : r ≠ scratch) (hd : r ≠ destination) :
        resultTapes k outer source scratch destination T n m r = T r
        theorem Complexity.DepthThreeLowerBound.TapePower.cost_eq_sum (k n m : ℕ) :
        cost k n m = n * (10 * m + 14) * ∑ j ∈ Finset.range k, m ^ j + 4 * k