Round-six lemma `fineE_runs`
ProvedNLogN.KFUU.R6Fine.fineE_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.fineE_runs (core : IStmt HS P) (w f a Z : ℕ) (t : IState HS) (Ld : List Item)
(hd : t.G NLogN.KFUU.dP = .int (w : ℤ) :: .int (f : ℤ) :: .int (a : ℤ) :: Ld)
(zw : zsz (w : ℤ) ≤ Z) (zf : zsz (f : ℤ) ≤ Z) (za : zsz (a : ℤ) ≤ Z) (X0 : List Item) (c : ℕ)
(hcore : 1 ≤ a → IRuns I iprog core
((((t.upd NLogN.KFUU.dP Ld).upd NLogN.KFUU.rW (.int (w : ℤ) :: t.G NLogN.KFUU.rW)).upd rU (.int (f : ℤ) :: t.G rU)).upd
rCZ (.int (a : ℤ) :: t.G rCZ))
(((((t.upd NLogN.KFUU.dP Ld).upd NLogN.KFUU.rW (.int (w : ℤ) :: t.G NLogN.KFUU.rW)).upd rU (.int (f : ℤ) :: t.G rU)).upd
rCZ (.int (a : ℤ) :: t.G rCZ)).upd 0 X0) c)
(hz : a = 0 → X0 = t.G 0) :
IRuns I iprog (fineE core) t (t.upd 0 X0) (c + 6 * NLogN.KFUU.cU Z + 26)
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.fineE_runs (core : IStmt HS P) (w f a Z : ℕ) (t : IState HS) (Ld : List Item)
(hd : t.G NLogN.KFUU.dP = .int (w : ℤ) :: .int (f : ℤ) :: .int (a : ℤ) :: Ld)
(zw : zsz (w : ℤ) ≤ Z) (zf : zsz (f : ℤ) ≤ Z) (za : zsz (a : ℤ) ≤ Z) (X0 : List Item) (c : ℕ)
(hcore : 1 ≤ a → IRuns I iprog core
((((t.upd NLogN.KFUU.dP Ld).upd NLogN.KFUU.rW (.int (w : ℤ) :: t.G NLogN.KFUU.rW)).upd rU (.int (f : ℤ) :: t.G rU)).upd
rCZ (.int (a : ℤ) :: t.G rCZ))
(((((t.upd NLogN.KFUU.dP Ld).upd NLogN.KFUU.rW (.int (w : ℤ) :: t.G NLogN.KFUU.rW)).upd rU (.int (f : ℤ) :: t.G rU)).upd
rCZ (.int (a : ℤ) :: t.G rCZ)).upd 0 X0) c)
(hz : a = 0 → X0 = t.G 0) :
IRuns I iprog (fineE core) t (t.upd 0 X0) (c + 6 * NLogN.KFUU.cU Z + 26) := 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.fineE_runs`, Solutions/R6FineRun.lean (lines 549–600) of the round-six development.