One backward record (round six, `bBodyS`)
ProvedJ6Seg.PJ.Rn.bBodySOne backward record.
The following holds (Lean statement, in the scope of module Solutions.J6SegILPreJD6):
theorem J6Seg.PJ.Rn.bBodyS {u : Vr} {D : Cs} (hF : Fx Q kk m mw cB u) (hS : StS m L Mf D)
(hB : BdS W m L Mf) (hLm : L.length = m) (hv : BV W u) {r n22 t : ℕ} (h1 : u 1 = r)
(hr : r < m) (h22 : u 22 = n22) (h23 : u 23 = t) (hD51 : D 51 = []) (hmW : m + 1 ≤ 2 ^ W)
(hn22 : n22 + 1 ≤ 2 ^ W) (ht : t + (recP kk m mw cB L Mf r).length ≤ 2 ^ W) :
Rn J6Seg.PJ.bBody u D (fun u' => u' 22 = (n22 : ℤ) + flg cB L r ∧
u' 23 = ((t + (recP kk m mw cB L Mf r).length : ℕ) : ℤ) ∧
(∀ i ∉ ([2, 3, 4, 5, 6, 7, 8, 22, 23, 29] : List (Fin HS)), u' i = u i) ∧ BV W u')
(update D 41 ((recP kk m mw cB L Mf r).reverse ++ D 41)) (cbB W m)
Context. B-line IL, J pre-table (B5-J), jTab part D6: one backward record, one forward row
Rn.bBodyS: bBody at row r pushes (recP r).reverse onto 41, adds flg r to 22 and
(recP r).length to 23; Rn.fBodyS: fBody at r' pushes (rowP (m - 1 - r')).reverse and adds
its length to 23.
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 J6Seg.PJ.E
variable {Q kk m mw cB W : ℕ} {L : List ℕ} {Mf : ℕ → ℕ → ℤ}
theorem J6Seg.PJ.Rn.bBodyS {u : Vr} {D : Cs} (hF : Fx Q kk m mw cB u) (hS : StS m L Mf D)
(hB : BdS W m L Mf) (hLm : L.length = m) (hv : BV W u) {r n22 t : ℕ} (h1 : u 1 = r)
(hr : r < m) (h22 : u 22 = n22) (h23 : u 23 = t) (hD51 : D 51 = []) (hmW : m + 1 ≤ 2 ^ W)
(hn22 : n22 + 1 ≤ 2 ^ W) (ht : t + (recP kk m mw cB L Mf r).length ≤ 2 ^ W) :
Rn J6Seg.PJ.bBody u D (fun u' => u' 22 = (n22 : ℤ) + flg cB L r ∧
u' 23 = ((t + (recP kk m mw cB L Mf r).length : ℕ) : ℤ) ∧
(∀ i ∉ ([2, 3, 4, 5, 6, 7, 8, 22, 23, 29] : List (Fin HS)), u' i = u i) ∧ BV W u')
(update D 41 ((recP kk m mw cB L Mf r).reverse ++ D 41)) (cbB W m) := by sorry