Unrolling a linear level recursion
ProvedR6.level_unrollcomplexity-theoryinteger-multiplicationkappa-improvement
Let , , and with and for all . Then
In Lean:
theorem R6.level_unroll (E : ℝ) (s : ℕ) (D : ℕ → ℝ) (hs : 2 ≤ s) (hE : 0 ≤ E) (hD0 : 0 ≤ D 0)
(hstep : ∀ k, D (k + 1) ≤ E + s * D k) :
∀ k, D k ≤ (E + D 0) * (2 * (s : ℝ) ^ k - 1)
Formalization Note. Part of the Lean formalization of the round-six κ-improvement (integer-multiplication-kappa campaign, target IntMul.Kappa.jain_round6_framework). The statement is copied verbatim from the Lean development; the platform node carries the same declaration name. Definitions it mentions live in the IntMul_Kappa_R6_Defs* bundles (on top of the published κ bundles IntMul_Kappa_K_Defs*).
Preamble
-- Round-six κ development (integer-multiplication-kappa), generated by skeleton subtraction. import Mathlib set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open Real
Formal statement
theorem R6.level_unroll (E : ℝ) (s : ℕ) (D : ℕ → ℝ) (hs : 2 ≤ s) (hE : 0 ≤ E) (hD0 : 0 ≤ D 0)
(hstep : ∀ k, D (k + 1) ≤ E + s * D k) :
∀ k, D k ≤ (E + D 0) * (2 * (s : ℝ) ^ k - 1) := by sorrySource
S. Jain, round-six networks for the integer-multiplication κ-improvement campaign (https://github.com/Swapnil-jain/integer-mult-kappa, commit 5868dc7) and D. Colkitt, integer-mult-bounds (https://github.com/CrocSwap/integer-mult-bounds); target `IntMul.Kappa.jain_round6_framework`. Lean declaration `R6.level_unroll`, Solutions/R6Guard.lean (lines 241–253) of the round-six development.