The FM multiplier satisfies MulOK in any HS table that contains the renamed mulProg (at g) and the wrapper…
ProvedNLogN.KFM.mulOK_of_embedThe FM multiplier satisfies MulOK in any HS table that contains the renamed mulProg (at g) and the wrapper (at pM).
The following holds (Lean statement, in the scope of module Solutions.KFMMul):
theorem NLogN.KFM.mulOK_of_embed {P' : ℕ} {I : List Sym} {iprog' : Fin P' → IStmt HS P'}
{g : Fin 5 → Fin P'} {pM : Fin P'} (hg : ∀ j, iprog' (g j) = (mulProg j).ren ssE g)
(hM : iprog' pM = mulWrap g) :
MulOK I iprog' pM ⟨fun a b => mulCostH (zsz a + zsz b), fun _ _ => True⟩
Context. The lemma belongs to the part KFM 6: the Schönhage–Strassen FM as a MulOK multiplication procedure.
Formalization Note. This lemma belongs to the item-language (IL) layer of the integer-multiplication-kappa campaign: tape-level programs (register programs over 64 item stacks of the NLogN multitape framework, definition bundles IntMul_HvdH_M_Defs1–IntMul_HvdH_M_Defs8) that implement the data-movement primitives of the OpenAI preprint Integer multiplication below (field moves, row split/merge, shifts, the uniform Proposition 11 interchange, Lemma 12 with fine -per-element costs, Gaussian record primitives, Proposition 14 pieces) with exact list denotations from the array-model bundles IntMul_Kappa_K_Defs* and explicit cost bounds. All names refer to the definition bundles up to IntMul_Kappa_K_Defs18.
-- OpenAI-preprint / κ-improvement development (integer-multiplication-kappa), generated by skeleton subtraction. import Definitions.Def_IntMul_Kappa_K_Defs18 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 set_option linter.unusedSimpArgs false set_option linter.unusedVariables false set_option linter.unusedSectionVars false set_option linter.style.longLine false open NLogN open NLogN.KFM open IntMul NLogN
theorem NLogN.KFM.mulOK_of_embed {P' : ℕ} {I : List Sym} {iprog' : Fin P' → IStmt HS P'}
{g : Fin 5 → Fin P'} {pM : Fin P'} (hg : ∀ j, iprog' (g j) = (mulProg j).ren ssE g)
(hM : iprog' pM = mulWrap g) :
MulOK I iprog' pM ⟨fun a b => mulCostH (zsz a + zsz b), fun _ _ => True⟩ := by sorry