The low bits by digit pieces
ProvedNLogN.KFN.cLowThe low bits by digit pieces.
The following holds (Lean statement, in the scope of module Solutions.KFNTop):
theorem NLogN.KFN.cLow (hGc : GClass J A) (hrow : RowHyp Isym iprog K m r Z Ψ CR τ) (hCR : 0 ≤ CR) (hτ : 0 ≤ τ)
(hW : 1 ≤ W) (hsW : W ≤ s) (hm : 1 ≤ m) (hr : 1 ≤ r) (hΨm : Monotone Ψ)
(hZΨ : ∀ v, Z + 2 ≤ Ψ v) (k D' : ℕ) (hD' : D' < m ^ (k + 1)) (pos : Fin D' → ℕ)
(hinj : Function.Injective pos) (t S0 B : ℕ) (hpos : ∀ i, pos i < t) (haff : AffK K t pos)
(hS : 1 ≤ S0)
(hB : 1 ≤ B) (hdvd : W ^ k ∣ B) (hZ : zsz ((16 * (B * 2 ^ t * S0 * r) : ℕ) : ℤ) ≤ Z) :
∃ (code : ℕ → IStmt HS Pp) (e dw : ℕ) (cost : ℕ → ℕ),
SImplI Isym iprog r (fun i => 2 ^ pos i * S0) (B * 2 ^ t * S0) (Butterfly.tens Cm : Butterfly.Op (Fin D'))
code e dw cost ∧
e ≤ (k + 1) * m * Eb J.net.length s k ∧ dw ≤ (k + 1) * m * DWb J.net.length s W A k ∧
∀ w, (cost w : ℝ) ≤ ((((k + 1) * m : ℕ) : ℝ) * cb J.net.length s W A m CR τ k + 1) *
((B * 2 ^ t * S0 : ℕ) : ℝ) *
(Xf r Ψ (w + (k + 1) * m * DWb J.net.length s W A k + Whb J.net.length s W A k) : ℝ)
Context. The lemma belongs to the part KFN: tens Cm on any number of bits at power-of-two strides.
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_Defs20.
-- OpenAI-preprint / κ-improvement development (integer-multiplication-kappa), generated by skeleton subtraction.
import Definitions.Def_IntMul_Kappa_K_Defs20
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.KFN
open IntMul RS AModel KIL KFD KFB KFG KFH Complex P8Lift Butterfly
variable {Pp : ℕ} {Isym : List Sym} {iprog : Fin Pp → IStmt HS Pp} {K : ℕ}
variable {W m s : ℕ} (J : Prop8IfaceR W m s) {A r Z : ℕ} {Ψ : ℕ → ℕ} {CR τ : ℝ}
theorem NLogN.KFN.cLow (hGc : GClass J A) (hrow : RowHyp Isym iprog K m r Z Ψ CR τ) (hCR : 0 ≤ CR) (hτ : 0 ≤ τ)
(hW : 1 ≤ W) (hsW : W ≤ s) (hm : 1 ≤ m) (hr : 1 ≤ r) (hΨm : Monotone Ψ)
(hZΨ : ∀ v, Z + 2 ≤ Ψ v) (k D' : ℕ) (hD' : D' < m ^ (k + 1)) (pos : Fin D' → ℕ)
(hinj : Function.Injective pos) (t S0 B : ℕ) (hpos : ∀ i, pos i < t) (haff : AffK K t pos)
(hS : 1 ≤ S0)
(hB : 1 ≤ B) (hdvd : W ^ k ∣ B) (hZ : zsz ((16 * (B * 2 ^ t * S0 * r) : ℕ) : ℤ) ≤ Z) :
∃ (code : ℕ → IStmt HS Pp) (e dw : ℕ) (cost : ℕ → ℕ),
SImplI Isym iprog r (fun i => 2 ^ pos i * S0) (B * 2 ^ t * S0) (Butterfly.tens Cm : Butterfly.Op (Fin D'))
code e dw cost ∧
e ≤ (k + 1) * m * Eb J.net.length s k ∧ dw ≤ (k + 1) * m * DWb J.net.length s W A k ∧
∀ w, (cost w : ℝ) ≤ ((((k + 1) * m : ℕ) : ℝ) * cb J.net.length s W A m CR τ k + 1) *
((B * 2 ^ t * S0 : ℕ) : ℝ) *
(Xf r Ψ (w + (k + 1) * m * DWb J.net.length s W A k + Whb J.net.length s W A k) : ℝ) := by sorry