prodLoop_run (KFM S7: the source and inverse lists in IL (run lemmas))
ProvedNLogN.KFM.prodLoop_runThe following holds (Lean statement, in the scope of module Solutions.KFMS7):
theorem NLogN.KFM.prodLoop_run (u : IState HS) (d' Q Mh Mf i s : ℕ) (h : SrcRegs u d' Q Mh Mf)
(LS LP : List Item) (hS : u.G mS = .int (s : ℤ) :: LS) (hP : u.G mP = .int 1 :: LP)
(hs : 2 ≤ s) (hIx : ixO.eval u = i) (hIok : ixO.ok u)
(hj : ∀ j < i, (j < d' → j ≤ Mh) ∧ (d' ≤ j → j - d' ≤ Mf)) :
(RS.rep mIc ixO pmB).ok u ∧ (RS.rep mIc ixO pmB).run u =
u.upd mP (.int ((∏ j ∈ Finset.range i, srcV d' Q Mh Mf j) % s : ℕ) :: LP)
Context. The lemma belongs to the part KFM S7: the source and inverse lists in IL (run lemmas): Scratch stacks 1–5 (setup is a leaf procedure, UNIFORM amendment): mOc = 1 outer counter,
mS = 2 the source s_i, mP = 3 the running product, mM = 4 the sum, mIc = 5 the inner
counter. The parameters are read from zDp, zQ, zMh, zMf (KFMS3).
Formalization Note. This lemma belongs to layer 5 of the Lean formalization (integer-multiplication-kappa campaign) of the OpenAI preprint Integer multiplication below : the uniform item-language machine (register programs over the NLogN multitape framework) assembling the Proposition 14 / Lemma 13 / Proposition 18 pieces, the resampling and chirp stages and the cost recurrences into one fixed machine, culminating in NLogN.KFTop.kappa_bound : IntMul.KappaBound (1 / 2 ^ 182) (the bound of Def_IntMul_MultitapeModel). All names refer to the definition bundles up to IntMul_Kappa_K_Defs33.
-- OpenAI-preprint / κ-improvement development (integer-multiplication-kappa), generated by skeleton subtraction. import Definitions.Def_IntMul_Kappa_K_Defs33 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 set_option linter.unusedSimpArgs false set_option linter.unusedVariables false open NLogN open NLogN.KFM open IntMul RS set_option maxHeartbeats 1000000
theorem NLogN.KFM.prodLoop_run (u : IState HS) (d' Q Mh Mf i s : ℕ) (h : SrcRegs u d' Q Mh Mf)
(LS LP : List Item) (hS : u.G mS = .int (s : ℤ) :: LS) (hP : u.G mP = .int 1 :: LP)
(hs : 2 ≤ s) (hIx : ixO.eval u = i) (hIok : ixO.ok u)
(hj : ∀ j < i, (j < d' → j ≤ Mh) ∧ (d' ≤ j → j - d' ≤ Mf)) :
(RS.rep mIc ixO pmB).ok u ∧ (RS.rep mIc ixO pmB).run u =
u.upd mP (.int ((∏ j ∈ Finset.range i, srcV d' Q Mh Mf j) % s : ℕ) :: LP) := by sorry