fwdP_spec (Paper Lemma 3 (single-field move) in the framework's stack-disciplined form)
ProvedNLogN.KIL.fwdP_specThe following holds (Lean statement, in the scope of module Solutions.KILLemma3):
theorem NLogN.KIL.fwdP_spec (t : IState HS) (xs : List ℤ) (P q M B Bb : ℕ) (R L1 L2 L3 L4 : List Item)
(hlen : xs.length = P * q * M * B) (hb : Bnd Bb xs)
(hB1 : 1 ≤ B) (hM1 : 1 ≤ M) (hq1 : 1 ≤ q) (hP1 : 1 ≤ P)
(hV : zsz ((P * (q * (M * B)) : ℕ) : ℤ) ≤ Bb)
(h0 : t.G 0 = ints xs ++ R) (h1 : t.G 1 = .int P :: L1) (h2 : t.G 2 = .int q :: L2)
(h3 : t.G 3 = .int M :: L3) (h4 : t.G 4 = .int B :: L4) :
fwdP.ok t ∧ fwdP.run t = t.upd 0 (ints (AModel.pull [P, q, M, B] [P, M, q, B] gS 0 xs) ++ R) ∧
fwdP.cost t ≤ cMove P q M B Bb
Context. The lemma belongs to the part Paper Lemma 3 (single-field move) in the framework's stack-disciplined form.
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 open NLogN open NLogN.KIL open IntMul RS AModel
theorem NLogN.KIL.fwdP_spec (t : IState HS) (xs : List ℤ) (P q M B Bb : ℕ) (R L1 L2 L3 L4 : List Item)
(hlen : xs.length = P * q * M * B) (hb : Bnd Bb xs)
(hB1 : 1 ≤ B) (hM1 : 1 ≤ M) (hq1 : 1 ≤ q) (hP1 : 1 ≤ P)
(hV : zsz ((P * (q * (M * B)) : ℕ) : ℤ) ≤ Bb)
(h0 : t.G 0 = ints xs ++ R) (h1 : t.G 1 = .int P :: L1) (h2 : t.G 2 = .int q :: L2)
(h3 : t.G 3 = .int M :: L3) (h4 : t.G 4 = .int B :: L4) :
fwdP.ok t ∧ fwdP.run t = t.upd 0 (ints (AModel.pull [P, q, M, B] [P, M, q, B] gS 0 xs) ++ R) ∧
fwdP.cost t ≤ cMove P q M B Bb := by sorry