A child step (round six, `stepH_child`)
ProvedIntMul.Kappa.R6.IL3H.stepH_childA child step (normalized: slots < s, forward) from an implementation of the child level.
The following holds (Lean statement, in the scope of module Solutions.R6IL3Child):
theorem IntMul.Kappa.R6.IL3H.stepH_child (hN : NodeRH c σ K t S0 r H E e B) (hQ : ∀ s, Q s → Agree σ s) (hhi : hi ≤ H)
(hA : 1 ≤ c.Aw) (hp : 1 ≤ c.p) (hm : 1 ≤ c.m) (hW : 1 ≤ c.Wr)
(hr : 1 ≤ r) (hS : 1 ≤ S0) (hBn : 1 ≤ B / c.W) (Z : ℕ)
(hZ : zsz ((2 * (c.Wr * (nN (B / c.W) t S0 * r)) : ℕ) : ℤ) ≤ Z) (M Bz : ℕ)
(hM : c.Aw * (E + 1) ^ c.p + (E + 1) ^ c.p + E + 2 * c.m + B + 1 ≤ M)
(hMB : zsz (M : ℤ) ≤ Bz) (s : ℕ) (hs : s < c.m)
{jL : Fin Pp} {rowC : IStmt HS Pp} (hj : tbl jL = levCH c jL rowC)
(w : Fin c.Wr) (DWc : ℕ) (cIH : ℕ → ℕ)
(IH : SImplQ Isym tbl (fun s' => Agree (σChildH σ c s (E / c.m) (B / c.W)) s') 0 H r
(fun i : Fin (s * (E / c.m)) => 2 ^ (e - K * i.val) * S0) (nN (B / c.W) t S0)
(tens Cm) (levCH c jL rowC) (c.G (s * (E / c.m))) DWc cIH) :
RImplQ Isym tbl Q lo hi r (nN (B / c.W) t S0) (stH c.m K e (E / c.m) S0)
((HStep.child w (pref c.m s) ∅ : HStep (Fin c.Wr) c.m).den (chEx (κ := Fin (E / c.m))))
(withPushI (childFrH c s) (wrapQ c.Wr w.val wL wP (.call jL)))
(c.G (s * (E / c.m))) (DWc + (c.G (s * (E / c.m)) + 2) * c.Wr)
(fun x => cChF c Bz (c.G (s * (E / c.m))) + cWrapQ c.Wr (nN (B / c.W) t S0 * r) Z
(c.G (s * (E / c.m))) DWc (fun x => cIH x + 2) x +
(4 * (2 * (Bz + c.G (s * (E / c.m)) + 1) + 2) + 1))
Context. Round six, item language (I3): the child step of a node
child w (pref m s) ∅ (normalized: the slots < s, forward) on role w: the frame childFrH
(wP = 2^{Gs (sF)}, vX = Gs (sF), vB = B/W, vk = s F) around wrapQ … (call jL). The
slots < s of role w are the top s F bits e - K i, i < s F, so the call runs the level
procedure on s F bits at the same e.
rImplQ_push: a frame around a role-stream statement (copy ofsImplQ_push);gsNE_OK,powNE_OK: side conditions of the scale expressions;levRH_child,stepH_child.
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_Defs22
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open IntMul IntMul.Kappa IntMul.Kappa.R6 IntMul.Kappa.R6.IL3H
open IntMul NLogN NLogN.KIL NLogN.KFD NLogN.KFB NLogN.KFG NLogN.KFH NLogN.KFN NLogN.KFW Complex P8Lift Butterfly IntMul.Kappa.R6.Cx
variable {Pp : ℕ} {Isym : List Sym} {tbl : Fin Pp → IStmt HS Pp} {Q : IState HS → Prop}
{lo hi : ℕ}
variable {c : IntMul.Kappa.R6.IL3H.Cfg} {σ : Fin HS → Option ℤ} {K t S0 r H E e B : ℕ}
theorem IntMul.Kappa.R6.IL3H.stepH_child (hN : NodeRH c σ K t S0 r H E e B) (hQ : ∀ s, Q s → Agree σ s) (hhi : hi ≤ H)
(hA : 1 ≤ c.Aw) (hp : 1 ≤ c.p) (hm : 1 ≤ c.m) (hW : 1 ≤ c.Wr)
(hr : 1 ≤ r) (hS : 1 ≤ S0) (hBn : 1 ≤ B / c.W) (Z : ℕ)
(hZ : zsz ((2 * (c.Wr * (nN (B / c.W) t S0 * r)) : ℕ) : ℤ) ≤ Z) (M Bz : ℕ)
(hM : c.Aw * (E + 1) ^ c.p + (E + 1) ^ c.p + E + 2 * c.m + B + 1 ≤ M)
(hMB : zsz (M : ℤ) ≤ Bz) (s : ℕ) (hs : s < c.m)
{jL : Fin Pp} {rowC : IStmt HS Pp} (hj : tbl jL = levCH c jL rowC)
(w : Fin c.Wr) (DWc : ℕ) (cIH : ℕ → ℕ)
(IH : SImplQ Isym tbl (fun s' => Agree (σChildH σ c s (E / c.m) (B / c.W)) s') 0 H r
(fun i : Fin (s * (E / c.m)) => 2 ^ (e - K * i.val) * S0) (nN (B / c.W) t S0)
(tens Cm) (levCH c jL rowC) (c.G (s * (E / c.m))) DWc cIH) :
RImplQ Isym tbl Q lo hi r (nN (B / c.W) t S0) (stH c.m K e (E / c.m) S0)
((HStep.child w (pref c.m s) ∅ : HStep (Fin c.Wr) c.m).den (chEx (κ := Fin (E / c.m))))
(withPushI (childFrH c s) (wrapQ c.Wr w.val wL wP (.call jL)))
(c.G (s * (E / c.m))) (DWc + (c.G (s * (E / c.m)) + 2) * c.Wr)
(fun x => cChF c Bz (c.G (s * (E / c.m))) + cWrapQ c.Wr (nN (B / c.W) t S0 * r) Z
(c.G (s * (E / c.m))) DWc (fun x => cIH x + 2) x +
(4 * (2 * (Bz + c.G (s * (E / c.m)) + 1) + 2) + 1)) := by sorry