Documentation

Complexitylib.Classes.PPoly.Uniform.Unrolling.Generator.Initialization.Internal

Direct-unrolling initialization generator -- proof internals #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitConstantGate_spaceBoundByWidth_internal (value : Bool) {initialSpace : } {values : BinaryValues WorkCount} {width : } (havailable : ∀ (inputLength : ), values inputLength Work.available width inputLength) (hreference : ∀ (inputLength : ), values inputLength Work.reference₀ width inputLength) :
(emitConstantGate value).SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitCopyGate_spaceBoundByWidth_internal (reference : Fin WorkCount) (negated : Bool) {initialSpace : } {values : BinaryValues WorkCount} {width : } (havailable : ∀ (inputLength : ), values inputLength Work.available width inputLength) (hreference : ∀ (inputLength : ), values inputLength reference width inputLength) :
(emitCopyGate reference negated).SpaceBoundByWidthAt initialSpace values width

Register invariant maintained while emitting one tape's initialization gates.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.initialization_effect_internal {k : } (tm : TM k) (values : BinaryValues WorkCount) (hreference : values Work.reference₀ = 0) (hloop : values Work.loop₀ = 0) (hinput : values Work.inputLength values Work.horizon + 1) :
    (initialization tm).effect values = Function.update (Function.update values Work.available (values Work.available + Fintype.card tm.Q + (values Work.horizon + 1) * (k + 2) + 4 + 4 * (values Work.horizon + 1) + (4 + 4 * (values Work.horizon + 1)) * (k + 1))) Work.limit₀ 0
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.initialization_requires_internal {k : } (tm : TM k) (values : BinaryValues WorkCount) (hreference : values Work.reference₀ = 0) (hloop : values Work.loop₀ = 0) (hinput : values Work.inputLength values Work.horizon + 1) (hemit : values Work.emitCounter = 0) (hcopy : values Work.copyCounter = 0) :