Documentation

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

Dynamic recent-wire offsets -- proof internals #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.decrementReferenceBy_spaceBoundByWidth_internal (reference offset counter : Fin WorkCount) (hdistinct : DecrementReferenceDistinct reference offset counter) {initialSpace : } {values : BinaryValues WorkCount} {width : } (hcounterOffset : ∀ (inputLength : ), values inputLength counter values inputLength offset) (hiterationsFit : ∀ (inputLength : ), values inputLength offset - values inputLength counter values inputLength reference) (hreference : ∀ (inputLength : ), values inputLength reference width inputLength) (hoffset : ∀ (inputLength : ), values inputLength offset width inputLength) :
(decrementReferenceBy reference offset counter).SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.prepareDynamicRecentReference_spaceBoundByWidth_internal (reference offset counter : Fin WorkCount) (hdistinct : DynamicRecentDistinct reference offset counter) {initialSpace : } {values : BinaryValues WorkCount} {width : } (havailable : ∀ (inputLength : ), values inputLength Work.available width inputLength) (hreference : ∀ (inputLength : ), values inputLength reference width inputLength) (hcounter : ∀ (inputLength : ), values inputLength counter = 0) (hoffset : ∀ (inputLength : ), values inputLength offset values inputLength Work.available) :
(prepareDynamicRecentReference reference offset counter).SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.decrementReferenceBy_requires_internal (reference offset counter : Fin WorkCount) (values : BinaryValues WorkCount) :
(decrementReferenceBy reference offset counter).requires values DecrementReferenceDistinct reference offset counter values counter = 0 values offset values reference
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.decrementReferenceBy_effect_internal (reference offset counter : Fin WorkCount) (values : BinaryValues WorkCount) (hdistinct : DecrementReferenceDistinct reference offset counter) (hcounter : values counter = 0) :
(decrementReferenceBy reference offset counter).effect values = Function.update (Function.update values reference (values reference - values offset)) counter 0
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.prepareDynamicRecentReference_requires_internal (reference offset counter : Fin WorkCount) (values : BinaryValues WorkCount) :
(prepareDynamicRecentReference reference offset counter).requires values DynamicRecentDistinct reference offset counter values Work.copyCounter = 0 values counter = 0 values offset values Work.available
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.prepareDynamicRecentReference_effect_internal (reference offset counter : Fin WorkCount) (values : BinaryValues WorkCount) (hdistinct : DynamicRecentDistinct reference offset counter) (hcounter : values counter = 0) :
(prepareDynamicRecentReference reference offset counter).effect values = Function.update (Function.update values reference (values Work.available - values offset)) counter 0
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitDynamicRecentGate_spaceBoundByWidth_internal (op : AndOrOp) (negated₀ negated₁ : Bool) (offset counter : Fin WorkCount) (fixedOffset₁ : ) (hdistinct : DynamicRecentGateDistinct offset counter) {initialSpace : } {values : BinaryValues WorkCount} {width : } (havailable : ∀ (inputLength : ), values inputLength Work.available width inputLength) (hreference₀ : ∀ (inputLength : ), values inputLength Work.reference₀ width inputLength) (hreference₁ : ∀ (inputLength : ), values inputLength Work.reference₁ width inputLength) (hcounter : ∀ (inputLength : ), values inputLength counter = 0) (hoffset : ∀ (inputLength : ), values inputLength offset values inputLength Work.available) (hfixedOffset₁ : ∀ (inputLength : ), fixedOffset₁ values inputLength Work.available) :
(emitDynamicRecentGate op negated₀ negated₁ offset counter fixedOffset₁).SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitDynamicRecentGate_requires_internal (op : AndOrOp) (negated₀ negated₁ : Bool) (offset counter : Fin WorkCount) (fixedOffset₁ : ) (values : BinaryValues WorkCount) :
(emitDynamicRecentGate op negated₀ negated₁ offset counter fixedOffset₁).requires values DynamicRecentGateDistinct offset counter values Work.copyCounter = 0 values counter = 0 values offset values Work.available fixedOffset₁ values Work.available values Work.emitCounter = 0
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitDynamicRecentGate_effect_internal (op : AndOrOp) (negated₀ negated₁ : Bool) (offset counter : Fin WorkCount) (fixedOffset₁ : ) (values : BinaryValues WorkCount) (hdistinct : DynamicRecentGateDistinct offset counter) (hcounter : values counter = 0) :
(emitDynamicRecentGate op negated₀ negated₁ offset counter fixedOffset₁).effect values = Function.update (Function.update (Function.update (Function.update values counter 0) Work.available (values Work.available + 1)) Work.reference₀ 0) Work.reference₁ 0
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitDynamicRecentGate_emitted_internal (op : AndOrOp) (negated₀ negated₁ : Bool) (offset counter : Fin WorkCount) (fixedOffset₁ : ) (values : BinaryValues WorkCount) (hdistinct : DynamicRecentGateDistinct offset counter) (hcounter : values counter = 0) :
(emitDynamicRecentGate op negated₀ negated₁ offset counter fixedOffset₁).emitted values = { op := op, input₀ := values Work.available - values offset, input₁ := values Work.available - fixedOffset₁, negated₀ := negated₀, negated₁ := negated₁ }.encode
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitDynamicRecentGate_sound_internal (op : AndOrOp) (negated₀ negated₁ : Bool) (offset counter : Fin WorkCount) (fixedOffset₁ : ) :
(emitDynamicRecentGate op negated₀ negated₁ offset counter fixedOffset₁).Sound