The core of one axis (no transposition)
ProvedNLogN.KFY.coreQ_allThe core of one axis (no transposition).
The following holds (Lean statement, in the scope of module Solutions.KFY3Core):
theorem NLogN.KFY.coreQ_all (ax : GL.Axis M Ctx B) (Bo : ℕ) (s : IState HS) (Q : ℕ)
(hr : AxReady2 ax Bo s Q) (hC : Ctx s) (L : List (ℤ × ℤ)) (Rest : List Item)
(hD : s.G NLogN.GL.gD = gints L ++ Rest) (hL : L.length = ax.m * ax.n) (hLB : NLogN.GL.GB B L) :
(NLogN.KFY.coreQ ax).run s = s.upd NLogN.GL.gD (gints (coreOut ax L) ++ Rest) ∧
(NLogN.KFY.coreQ ax).ok M s ∧ (NLogN.KFY.coreQ ax).cost M s ≤ NLogN.KFY.coreCost ax Q ∧
(coreOut ax L).length = ax.m * ax.n' ∧ NLogN.GL.GB Bo (coreOut ax L)
Context. The lemma belongs to the part KFY 3: generic pieces of the line passes.
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
set_option linter.unusedSectionVars false
open NLogN
open NLogN.KFY
open IntMul NLogN IntMul.HvdH.Ref NLogN.GL NLogN.AX NLogN.Rsp
variable {M : MulSpec} {Ctx : IState HS → Prop} {B : ℕ}
set_option maxHeartbeats 4000000
theorem NLogN.KFY.coreQ_all (ax : GL.Axis M Ctx B) (Bo : ℕ) (s : IState HS) (Q : ℕ)
(hr : AxReady2 ax Bo s Q) (hC : Ctx s) (L : List (ℤ × ℤ)) (Rest : List Item)
(hD : s.G NLogN.GL.gD = gints L ++ Rest) (hL : L.length = ax.m * ax.n) (hLB : NLogN.GL.GB B L) :
(NLogN.KFY.coreQ ax).run s = s.upd NLogN.GL.gD (gints (coreOut ax L) ++ Rest) ∧
(NLogN.KFY.coreQ ax).ok M s ∧ (NLogN.KFY.coreQ ax).cost M s ≤ NLogN.KFY.coreCost ax Q ∧
(coreOut ax L).length = ax.m * ax.n' ∧ NLogN.GL.GB Bo (coreOut ax L) := by sorry