Documentation

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

Direct-unrolling finalization generator -- proof internals #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPadding_spaceBoundByWidth_internal {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} {width : ℕ → ℕ} (hfrontier : ∀ (inputLength : ℕ), values inputLength Work.frontier ≤ width inputLength) (hreference : ∀ (inputLength : ℕ), values inputLength Work.reference₀ ≤ width inputLength) :
emitPadding.SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.finalization_spaceBoundByPolynomial_internal {k : ℕ} (tm : TM k) (p : Polynomial ℕ) {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} (hvalues : ∀ (inputLength : ℕ) (index : Fin WorkCount), values inputLength index ≤ Polynomial.eval inputLength p) :
∃ (width : Polynomial ℕ), (finalization tm).SpaceBoundByWidthAt initialSpace values fun (x : ℕ) => Polynomial.eval x width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.finalization_space_bigO_log_internal {k : ℕ} (tm : TM k) (p : Polynomial ℕ) {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} (hinitial : BigO initialSpace fun (inputLength : ℕ) => Nat.log 2 inputLength) (hvalues : ∀ (inputLength : ℕ) (index : Fin WorkCount), values inputLength index ≤ Polynomial.eval inputLength p) :
(finalization tm).SpaceBoundInLogAt initialSpace values
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.finalization_requires_internal {k : ℕ} (tm : TM k) (values : BinaryValues WorkCount) (hemit : values Work.emitCounter = 0) (hcopy : values Work.copyCounter = 0) (hadd : values Work.addCounter = 0) (hmultiply : values Work.multiplyCounter = 0) (hle : values Work.available + 1 ≤ values Work.frontier) :
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.finalization_emitted_eq_numericSchedule_internal {k : ℕ} (tm : TM k) (values : BinaryValues WorkCount) (n originalRawGateCount closedBound T finalConfigBase : ℕ) (hn : 0 < n) (havailable : values Work.available = n + originalRawGateCount - 1) (hfrontier : values Work.frontier = n + closedBound) (hhorizon : values Work.horizon = T) (hconfigBase : values Work.configBase = finalConfigBase) :
(finalization tm).emitted values = List.flatMap CircuitCode.RawGate.encode ([numericAcceptanceGate (Fintype.card tm.Q) (stateIndex tm.toNTM tm.qhalt) (k + 2) T finalConfigBase] ++ directFinalizationSuffix n originalRawGateCount closedBound)