fmPre_runs (`FM`: correctness of the preprocessing segments)
ProvedNLogN.fmPre_runsThe following holds (Lean statement, in the scope of module NLogN.SSFM1):
theorem NLogN.fmPre_runs (s : IState NS) (N : ℕ) (a b : ℤ) (LA LN : List Item) (ha : 0 ≤ a ∧ a ≤ 2 ^ N)
(hb : 0 ≤ b ∧ b ≤ 2 ^ N) (hA : s.G ARG = .int a :: .int b :: LA)
(hN : s.G RN = .int (2 ^ N) :: LN) :
IRuns I iprog fmPre s
(s.upd ARG (.int (a % 2 ^ N + -(a / 2 ^ N)) :: .int (b % 2 ^ N + -(b / 2 ^ N)) :: LA))
(5000 * (N + 2))
Context. The lemma belongs to the part FM: correctness of the preprocessing segments.
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
open NLogN
open IntMul
variable {P : ℕ} {I : List Sym} {iprog : Fin P → IStmt NS P}
theorem NLogN.fmPre_runs (s : IState NS) (N : ℕ) (a b : ℤ) (LA LN : List Item) (ha : 0 ≤ a ∧ a ≤ 2 ^ N)
(hb : 0 ≤ b ∧ b ≤ 2 ^ N) (hA : s.G ARG = .int a :: .int b :: LA)
(hN : s.G RN = .int (2 ^ N) :: LN) :
IRuns I iprog fmPre s
(s.upd ARG (.int (a % 2 ^ N + -(a / 2 ^ N)) :: .int (b % 2 ^ N + -(b / 2 ^ N)) :: LA))
(5000 * (N + 2)) := by sorry