The array lengths (round six, `arr_lens`)
ProvedJ6Seg.Ax.arr_lenscomplexity-theoryinteger-multiplicationkappa-improvement
The array lengths.
The following holds (Lean statement, in the scope of module Solutions.J6SegAxis5):
theorem J6Seg.Ax.arr_lens (h : AxReg P n src D k) (L : List GI)
(hL : L.length = axpre6 P n D k * (axnc6 P n k * axl6 P n * axpost6 P n D k)) :
let pre := axpre6 P n D k; let post := axpost6 P n D k; let N := axnc6 P n k * axl6 P n
let G := axG6 P n src k
(arrS6 P n src D k L).length = pre * (N * post) ∧
(arrY6 P n src D k L).length = pre * (N * post) ∧
(arrJ6 P n src D k L).length = pre * (G * post) ∧
(arrW6 P n src D k L).length = pre * (G * post) ∧
(arrWp6 P n src D k L).length = pre * (N * post) ∧
(arrY26 P n src D k L).length = pre * (N * post)
Context. B-line axis program (AxisU6), part 5: the regime of one axis, array lengths, row facts
AxReg P n src D k:1 ≤ λ,0 < n_c,s ≤ t,n_c λ = t,0 < post(fromr6_maps_eqand the positivity of the box);arr_lens: the lengths of the six intermediate arrays (asLRepblocks);AB_lineAt: a bound on all entries passes to the rows;bnd_of_GB:GB wbounds the integers ofgflat.
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 Definitions.Def_IntMul_Kappa_R6_Defs67
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open J6Seg J6Seg.Ax
open IntMul NLogN NLogN.KIL NLogN.KFB IntMul.Kappa.R6 Function
variable {P : Prm} {n : ℕ} {src : ℕ → ℕ} {D k : ℕ}
Formal statement
theorem J6Seg.Ax.arr_lens (h : AxReg P n src D k) (L : List GI)
(hL : L.length = axpre6 P n D k * (axnc6 P n k * axl6 P n * axpost6 P n D k)) :
let pre := axpre6 P n D k; let post := axpost6 P n D k; let N := axnc6 P n k * axl6 P n
let G := axG6 P n src k
(arrS6 P n src D k L).length = pre * (N * post) ∧
(arrY6 P n src D k L).length = pre * (N * post) ∧
(arrJ6 P n src D k L).length = pre * (G * post) ∧
(arrW6 P n src D k L).length = pre * (G * post) ∧
(arrWp6 P n src D k L).length = pre * (N * post) ∧
(arrY26 P n src D k L).length = pre * (N * post) := 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 `J6Seg.Ax.arr_lens`, Solutions/J6SegAxis5.lean (lines 50–99) of the round-six development.