The inverse move: the single field q (at position |A| + |Mf|) in front of Mf
ProvedNLogN.KIL.moveFieldBack_specThe inverse move: the single field q (at position |A| + |Mf|) in front of Mf.
The following holds (Lean statement, in the scope of module Solutions.KILLemma3):
theorem NLogN.KIL.moveFieldBack_spec (t : IState HS) (xs : List ℤ) (A Mf C : Shape) (q Bb : ℕ)
(R L1 L2 L3 L4 : List Item)
(hlen : xs.length = AModel.vol (A ++ Mf ++ [q] ++ C)) (hb : Bnd Bb xs)
(hC1 : 1 ≤ AModel.vol C) (hM1 : 1 ≤ AModel.vol Mf) (hq1 : 1 ≤ q) (hA1 : 1 ≤ AModel.vol A)
(hV : zsz ((AModel.vol A * (q * (AModel.vol Mf * AModel.vol C)) : ℕ) : ℤ) ≤ Bb)
(h0 : t.G 0 = ints xs ++ R) (h1 : t.G 1 = .int (AModel.vol A) :: L1) (h2 : t.G 2 = .int q :: L2)
(h3 : t.G 3 = .int (AModel.vol Mf) :: L3) (h4 : t.G 4 = .int (AModel.vol C) :: L4) :
bwdP.ok t ∧ bwdP.run t = t.upd 0 (ints (AModel.pull (A ++ Mf ++ [q] ++ C) (A ++ [q] ++ Mf ++ C)
(swapMid A.length Mf.length 1) 0 xs) ++ R) ∧
bwdP.cost t ≤ cMove (AModel.vol A) q (AModel.vol Mf) (AModel.vol C) 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.moveFieldBack_spec (t : IState HS) (xs : List ℤ) (A Mf C : Shape) (q Bb : ℕ)
(R L1 L2 L3 L4 : List Item)
(hlen : xs.length = AModel.vol (A ++ Mf ++ [q] ++ C)) (hb : Bnd Bb xs)
(hC1 : 1 ≤ AModel.vol C) (hM1 : 1 ≤ AModel.vol Mf) (hq1 : 1 ≤ q) (hA1 : 1 ≤ AModel.vol A)
(hV : zsz ((AModel.vol A * (q * (AModel.vol Mf * AModel.vol C)) : ℕ) : ℤ) ≤ Bb)
(h0 : t.G 0 = ints xs ++ R) (h1 : t.G 1 = .int (AModel.vol A) :: L1) (h2 : t.G 2 = .int q :: L2)
(h3 : t.G 3 = .int (AModel.vol Mf) :: L3) (h4 : t.G 4 = .int (AModel.vol C) :: L4) :
bwdP.ok t ∧ bwdP.run t = t.upd 0 (ints (AModel.pull (A ++ Mf ++ [q] ++ C) (A ++ [q] ++ Mf ++ C)
(swapMid A.length Mf.length 1) 0 xs) ++ R) ∧
bwdP.cost t ≤ cMove (AModel.vol A) q (AModel.vol Mf) (AModel.vol C) Bb := by sorry