The forward procedure with one chunk per axis (round six, `cFwd_q1`)
ProvedNLogN.KFV.R6P.cFwd_q1complexity-theoryinteger-multiplicationkappa-improvement
The forward procedure with one chunk per axis.
The following holds (Lean statement, in the scope of module Solutions.R6P18Lay):
theorem NLogN.KFV.R6P.cFwd_q1 (hK : 0 < K) (hℓ : 1 ≤ ℓ) (hb0 : bb ℓ K = 0) {W B cCh U : ℕ} (hDW : D ≤ W)
(hS : 10 ^ 12 * (B + 2) ^ 3 ≤ 2 ^ ℓ) (hBW : B + 2 ≤ 6 * (W + 1)) (hDl : D * ℓ ≤ B)
(hU : zsz (U : ℤ) ≤ B) :
NLogN.KFV.cFwd D ℓ K long W B cCh U ≤
10 ^ 12 * (W + 1) * (2 ^ nB D ℓ K long * 2 ^ ℓ) * (ℓ + 2 * (D + 1)) + ℓ * cCh
Context. Round six, Proposition 18: the layout and round costs with one chunk per axis
At the round-six parameters K = ℓ - 1 (Idea C), so q = ⌊(ℓ-1)/K⌋ = 1 and
b = (ℓ-1) mod K = 0. Then
- phase 3 of the layout has
Dsteps whose exchange is trivial (xT t = t, cost1):cLayIn_q1,cLayOut_q1: the layout programs cost≤ 10^6 (D+1)(W+1) 2^{n+ℓ}(no exchange is ever called, so the swap's exponent does not enter the cost); - there are no prefix leaves:
cFwd_q1,cOpp_q1: the Lemma 16 procedures cost≤ 10^12 (W+1) X (ℓ + 2(D+1)) + ℓ · cCh.
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_K_Defs33 import Definitions.Def_IntMul_Kappa_R6_Defs1 import Mathlib import Definitions.Def_IntMul_HvdH_M_Defs8 import Definitions.Def_IntMul_MultitapeModel import Definitions.Def_IntMul_HvdH_Numeric import Definitions.Def_IntMul_HvdH_ExpApprox import Definitions.Def_IntMul_HvdH_RealExp import Definitions.Def_IntMul_HvdH_Twiddle import Definitions.Def_IntMul_HvdH_SApprox import Definitions.Def_IntMul_HvdH_DiagApprox import Definitions.Def_IntMul_HvdH_EApprox import Definitions.Def_IntMul_HvdH_JApprox import Definitions.Def_IntMul_HvdH_BApprox import Definitions.Def_IntMul_HvdH_FPApprox import Definitions.Def_IntMul_HvdH_MachineRef set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open NLogN NLogN.KFV open IntMul NLogN.RS NLogN.KIL NLogN.KFD NLogN.KFB NLogN.KFH NLogN.KFC NLogN.KFT Synth AModel AModelL12 GlueLayout GlueP14 GlueError variable (D ℓ K : ℕ) [NeZero D] (long : Fin D → Bool)
Formal statement
theorem NLogN.KFV.R6P.cFwd_q1 (hK : 0 < K) (hℓ : 1 ≤ ℓ) (hb0 : bb ℓ K = 0) {W B cCh U : ℕ} (hDW : D ≤ W)
(hS : 10 ^ 12 * (B + 2) ^ 3 ≤ 2 ^ ℓ) (hBW : B + 2 ≤ 6 * (W + 1)) (hDl : D * ℓ ≤ B)
(hU : zsz (U : ℤ) ≤ B) :
NLogN.KFV.cFwd D ℓ K long W B cCh U ≤
10 ^ 12 * (W + 1) * (2 ^ nB D ℓ K long * 2 ^ ℓ) * (ℓ + 2 * (D + 1)) + ℓ * cCh := 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 `NLogN.KFV.R6P.cFwd_q1`, Solutions/R6P18Lay.lean (lines 140–185) of the round-six development.