Round-six lemma `coreF_runs`
ProvedNLogN.KFUU.R6Fine.coreF_runscomplexity-theoryinteger-multiplicationkappa-improvement
An auxiliary lemma of the round-six development, published as a separate node because its proof is long or shared.
The following holds (Lean statement, in the scope of module Solutions.R6FineRun):
theorem NLogN.KFUU.R6Fine.coreF_runs (a f y w Z : ℕ) (ha : 1 ≤ a) (hy : 1 ≤ y) (hZ2 : 2 ≤ Z)
(hVZ : zsz ((2 * (a * 2 ^ f * y) : ℕ) : ℤ) ≤ Z)
(xs : List ℤ) (hlen : xs.length = vol [a, 2 ^ f, y, 2]) (hb : Bnd w xs)
(t : IState HS) (R Ld La Lf : List Item) (h0 : t.G 0 = ints xs ++ R)
(hd : t.G NLogN.KFUU.dP = .int (y : ℤ) :: Ld) (hA : t.G rCZ = .int (a : ℤ) :: La)
(hF : t.G rU = .int (f : ℤ) :: Lf) :
IRuns I iprog NLogN.KFUU.R6Fine.coreF t (t.upd 0 (ints (NLogN.KFUU.R6Fine.stF a (2 ^ f) y 1 (2 ^ f) xs) ++ R))
(cCore w f (a * 2 ^ f * y) Z)
Context. Fine-bit exposure §2: the procedures fineF / fineB in IL
bodyF:qX /= 2, onemvFUmove,qZ *= 2;bodyB:qZ /= 2, onemvBUmove,qX *= 2.loopF_runs/loopB_runs:fiterations (rptX nR) take stage0to stagef.coreF/coreB: withyondPanda, finrCZ, rU, setqB = y,qX,qZ,nR = f,tq = 2, run the loop, clear.coreF_runs/coreB_runs.fineE core: popw, f, afromdP(intorW, rU, rCZ), runcoreifa > 0, push them back.fineE_runs.
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_Defs70
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open NLogN NLogN.KFUU NLogN.KFUU.R6Fine
set_option maxRecDepth 20000
open IntMul NLogN.KIL NLogN.KFB NLogN.KFC NLogN.KFT NLogN.KFU AModel AModelL12 NLogN.KFUU IntMul.Kappa.R6
variable {P : ℕ} {I : List Sym} {iprog : Fin P → IStmt HS P}
Formal statement
theorem NLogN.KFUU.R6Fine.coreF_runs (a f y w Z : ℕ) (ha : 1 ≤ a) (hy : 1 ≤ y) (hZ2 : 2 ≤ Z)
(hVZ : zsz ((2 * (a * 2 ^ f * y) : ℕ) : ℤ) ≤ Z)
(xs : List ℤ) (hlen : xs.length = vol [a, 2 ^ f, y, 2]) (hb : Bnd w xs)
(t : IState HS) (R Ld La Lf : List Item) (h0 : t.G 0 = ints xs ++ R)
(hd : t.G NLogN.KFUU.dP = .int (y : ℤ) :: Ld) (hA : t.G rCZ = .int (a : ℤ) :: La)
(hF : t.G rU = .int (f : ℤ) :: Lf) :
IRuns I iprog NLogN.KFUU.R6Fine.coreF t (t.upd 0 (ints (NLogN.KFUU.R6Fine.stF a (2 ^ f) y 1 (2 ^ f) xs) ++ R))
(cCore w f (a * 2 ^ f * y) Z) := 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.KFUU.R6Fine.coreF_runs`, Solutions/R6FineRun.lean (lines 204–305) of the round-six development.