One chunk (new layout) (round six, `chB2_sp`)
ProvedJ6Seg.PreT.chB2_spOne chunk (new layout).
The following holds (Lean statement, in the scope of module Solutions.J6SegILPre24):
theorem J6Seg.PreT.chB2_sp (s : IState HS) (u : Fin HS → ℤ) (c : Fin HS → List ℤ) {O L : Fin HS}
(hO : O ∉ rg) (hO5 : O.val < 56) (hO13 : O ≠ 13) (hO50 : O ≠ 50) (hOC : O ≠ Cu)
(hL : L ∉ rg) (hL5 : L.val < 56) (hOL : O ≠ L) (hL13 : L ≠ 13)
(hc13 : c 13 = []) (hc53 : c 53 = []) (hc54 : c 54 = []) (hcu : c Cu = [])
{P R sN tN lam aN A pk b M q : ℕ} {ℓ : ℤ} {lr : List ℤ}
(hi : StIn2 u P R sN tN lam aN A) (hPA : P ≤ A) (TB : J6Seg.PreT.TabB P R sN tN aN lam A)
(h26 : u 26 = pk) (h28 : u 28 = b) (hpkM : pk ≤ M) (hbM : b ≤ M) (h4l : 4 * lam ≤ 2 ^ A)
(hl : 1 ≤ lam) (hsA : sN ≤ 2 ^ A) (hqA : q * lam ≤ 2 ^ A) (hq : q ≤ 2 ^ A)
(hcL : c L = ℓ :: lr) (hℓ : |ℓ| ≤ 2 ^ A) :
Sp (chB2 O L) (encK s (J6Seg.PreT.RF (CS u q) c))
(encK s (J6Seg.PreT.RF (CS u ((q : ℤ) - 1)) (Function.update (Function.update c O
((((tabQ2 P R sN tN lam aN pk b q).length : ℤ) :: tabQ2 P R sN tN lam aN pk b q) ++ c O)) L
((ℓ + (1 + ((tabQ2 P R sN tN lam aN pk b q).length : ℤ))) :: lr))))
(cCh2 P R A lam M)
Context. B-line IL, pre-tables (B5′, tabK2 layout), part 24: one chunk
chB2 O L = partA2 O; partB O; partC O L. From CS u q it pushes |tab q| :: tab q with
tab q = tabK2 P pk b λ di gi gam dd (descsOf … q) onto O and adds 1 + |tab q| on L.
Part C is the old program, re-costed with 2^pk, 2^b at width M + 2 (pk, b ≤ M).
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_Defs68 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open J6Seg J6Seg.PreT open IntMul NLogN NLogN.KIL NLogN.RS IntMul.HvdH
theorem J6Seg.PreT.chB2_sp (s : IState HS) (u : Fin HS → ℤ) (c : Fin HS → List ℤ) {O L : Fin HS}
(hO : O ∉ rg) (hO5 : O.val < 56) (hO13 : O ≠ 13) (hO50 : O ≠ 50) (hOC : O ≠ Cu)
(hL : L ∉ rg) (hL5 : L.val < 56) (hOL : O ≠ L) (hL13 : L ≠ 13)
(hc13 : c 13 = []) (hc53 : c 53 = []) (hc54 : c 54 = []) (hcu : c Cu = [])
{P R sN tN lam aN A pk b M q : ℕ} {ℓ : ℤ} {lr : List ℤ}
(hi : StIn2 u P R sN tN lam aN A) (hPA : P ≤ A) (TB : J6Seg.PreT.TabB P R sN tN aN lam A)
(h26 : u 26 = pk) (h28 : u 28 = b) (hpkM : pk ≤ M) (hbM : b ≤ M) (h4l : 4 * lam ≤ 2 ^ A)
(hl : 1 ≤ lam) (hsA : sN ≤ 2 ^ A) (hqA : q * lam ≤ 2 ^ A) (hq : q ≤ 2 ^ A)
(hcL : c L = ℓ :: lr) (hℓ : |ℓ| ≤ 2 ^ A) :
Sp (chB2 O L) (encK s (J6Seg.PreT.RF (CS u q) c))
(encK s (J6Seg.PreT.RF (CS u ((q : ℤ) - 1)) (Function.update (Function.update c O
((((tabQ2 P R sN tN lam aN pk b q).length : ℤ) :: tabQ2 P R sN tN lam aN pk b q) ++ c O)) L
((ℓ + (1 + ((tabQ2 P R sN tN lam aN pk b q).length : ℤ))) :: lr))))
(cCh2 P R A lam M) := by sorry