The register-file core of the chunk set-up (round six, `eCcore`)
ProvedJ6Seg.PJ.Rn.eCcoreThe register-file core of the chunk set-up.
The following holds (Lean statement, in the scope of module Solutions.J6SegILPreJC4):
theorem J6Seg.PJ.Rn.eCcore {pkA pkC bA bC kA kC wA wC k pre post s t p α d W M : ℕ} {Z : Fin HS}
(hZ : Z ∉ rg) (hZ5 : Z.val < 56) (hZT : Z ≠ sTmp) (hZC : Z ≠ cRdC)
(hZx : Z ≠ J6Seg.PJ.sSt ∧ Z ≠ sX ∧ Z ≠ sOut ∧ Z ≠ sLn)
{c : Cs} (hcZ : c Z = dsc k pre post s t p α d) (hcL : c cLC = [])
(h41 : c sOut = []) (h42 : c sLn = []) (h44 : c J6Seg.PJ.sSt = []) (h45 : c sX = [])
(h13 : c 13 = []) (h51 : c 51 = []) (h53 : c 53 = []) (h54 : c 54 = []) (hcu : c PreT.Cu = [])
(hW : parBig kA kC wA wC k pre post s t p α d < 2 ^ W)
(bpk : pkA * segPF p d s + pkC ≤ 2 ^ W) (bb : bA * segPF p d s + bC ≤ 2 ^ W)
(bl : pkA + pkC + bA + bC + 2 ≤ 2 ^ W)
(hPA : segPF p d s ≤ W) (hA2 : 2 ≤ W)
(TB : PreT.TabB (segPF p d s) (p / 7) s t α (lamP d) W)
(hpkM : pkA * segPF p d s + pkC ≤ M) (hbM : bA * segPF p d s + bC ≤ M)
(hncA : t / lamP d * lamP d ≤ 2 ^ W) (hncA' : t / lamP d * (9 + 10 * lamP d) ≤ 2 ^ W) :
Rn (J6Seg.PJ.eCcore pkA pkC bA bC kA kC wA wC Z) (fun _ => 0) c (BV W)
(update (update (update c sX (cVals (wA * segPF p d s + wC) (Nat.log 2 (lamF d)) pre
(t / lamP d) post)) sOut
(tabsT (PreT.tabQ2 (segPF p d s) (p / 7) s t (lamP d) α (pkA * segPF p d s + pkC)
(bA * segPF p d s + bC)) (t / lamP d))) sLn
[((tabsT (PreT.tabQ2 (segPF p d s) (p / 7) s t (lamP d) α (pkA * segPF p d s + pkC)
(bA * segPF p d s + bC)) (t / lamP d)).length : ℤ)])
(cCcore pkA pkC bA bC kA kC wA wC W d (NF d s) (segPF p d s) (kA * segPF p d s + kC)
(lamP d) (p / 7) M (t / lamP d))
Context. B5 chunk side (eC), part 4: the register-file core
parP; cPre; cMid; chunkStoreP2 41 42; cA3 from the descriptor on Z: the table stream
tabsT (tabQ2 …) nc on 41, its length on 42, the register values ρ 0 … ρ 8 on 45
(Rn.eCcore).
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*).
-- Round-six κ development (integer-multiplication-kappa), generated by skeleton subtraction. import Definitions.Def_IntMul_Kappa_R6_Defs71 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open J6Seg J6Seg.PJ open IntMul NLogN NLogN.KIL NLogN.RS Function
theorem J6Seg.PJ.Rn.eCcore {pkA pkC bA bC kA kC wA wC k pre post s t p α d W M : ℕ} {Z : Fin HS}
(hZ : Z ∉ rg) (hZ5 : Z.val < 56) (hZT : Z ≠ sTmp) (hZC : Z ≠ cRdC)
(hZx : Z ≠ J6Seg.PJ.sSt ∧ Z ≠ sX ∧ Z ≠ sOut ∧ Z ≠ sLn)
{c : Cs} (hcZ : c Z = dsc k pre post s t p α d) (hcL : c cLC = [])
(h41 : c sOut = []) (h42 : c sLn = []) (h44 : c J6Seg.PJ.sSt = []) (h45 : c sX = [])
(h13 : c 13 = []) (h51 : c 51 = []) (h53 : c 53 = []) (h54 : c 54 = []) (hcu : c PreT.Cu = [])
(hW : parBig kA kC wA wC k pre post s t p α d < 2 ^ W)
(bpk : pkA * segPF p d s + pkC ≤ 2 ^ W) (bb : bA * segPF p d s + bC ≤ 2 ^ W)
(bl : pkA + pkC + bA + bC + 2 ≤ 2 ^ W)
(hPA : segPF p d s ≤ W) (hA2 : 2 ≤ W)
(TB : PreT.TabB (segPF p d s) (p / 7) s t α (lamP d) W)
(hpkM : pkA * segPF p d s + pkC ≤ M) (hbM : bA * segPF p d s + bC ≤ M)
(hncA : t / lamP d * lamP d ≤ 2 ^ W) (hncA' : t / lamP d * (9 + 10 * lamP d) ≤ 2 ^ W) :
Rn (J6Seg.PJ.eCcore pkA pkC bA bC kA kC wA wC Z) (fun _ => 0) c (BV W)
(update (update (update c sX (cVals (wA * segPF p d s + wC) (Nat.log 2 (lamF d)) pre
(t / lamP d) post)) sOut
(tabsT (PreT.tabQ2 (segPF p d s) (p / 7) s t (lamP d) α (pkA * segPF p d s + pkC)
(bA * segPF p d s + bC)) (t / lamP d))) sLn
[((tabsT (PreT.tabQ2 (segPF p d s) (p / 7) s t (lamP d) α (pkA * segPF p d s + pkC)
(bA * segPF p d s + bC)) (t / lamP d)).length : ℤ)])
(cCcore pkA pkC bA bC kA kC wA wC W d (NF d s) (segPF p d s) (kA * segPF p d s + kC)
(lamP d) (p / 7) M (t / lamP d)) := by sorry