prog as IL procedures (bit data)
ProvedNLogN.KIL.prog_ilprog as IL procedures (bit data). For a fixed circuit over ZMod 2 whose frame changes have 0/1 permutation parts and whose Lemma 10 shifts have coefficients ±k'·d⁻¹ (k', d ≤ D) at every field size q ^ m ^ j, the procedure table progTbl (one procedure per reachable configuration; level j + 1 procedures call level j ones) runs the root procedure from the encoded input to the encoded prog C q k P L A B Cs xs, with cost ilCost C D q Bb k V (|A| + |B| + |Cs|).
The following holds (Lean statement, in the scope of module Solutions.KIL3Prog):
theorem NLogN.KIL.prog_il (D q : ℕ) (hq : 2 ≤ q) (hm : 1 ≤ m)
(hfr : ∀ j, FramesOK (FrOK C (q ^ m ^ j) (ShFrac (q ^ m ^ j) D)) C.gates C.Min C.Mout)
(k P L : ℕ) (A B Cs : Shape) (hP : 1 ≤ P) (hL : W ^ k ∣ L) (hL1 : 1 ≤ L)
(hA : ∀ a ∈ A, 1 ≤ a) (hB : ∀ a ∈ B, 1 ≤ a) (hC : ∀ a ∈ Cs, 1 ≤ a) (Bb : ℕ)
(hV : zsz ((vol (P :: L :: swShape A B Cs (q ^ m ^ k)) : ℕ) : ℤ) ≤ Bb)
(I : List Sym) (t : IState HS) (R : List Item) (xs : List (ZMod 2))
(hxs : xs.length = vol (P :: L :: swShape A B Cs (q ^ m ^ k))) :
IRuns I (progTbl C D q P k (rootCfg k L A B Cs))
(progTbl C D q P k (rootCfg k L A B Cs) (cfgIdx q k (rootCfg k L A B Cs) (rootCfg k L A B Cs)))
(t.upd 0 (ints (enc2 xs) ++ R))
(t.upd 0 (ints (enc2 (AModel.prog C q k P L A B Cs xs)) ++ R))
(ilCost C D q Bb k (vol (P :: L :: swShape A B Cs (q ^ m ^ k)))
(A.length + B.length + Cs.length))
Context. The lemma belongs to the part KIL3: the recursive interchange program prog as IL procedures: AModelProp11.prog C q k P L A B Cs (bit data, ZMod 2) is realised by a finite table of IL
procedures, one per configuration (level, rows, A, B, Cs) reachable from the root, each level
j + 1 procedure being the level code (levelC with the unit shift code scodeF) whose
interchanges call the level-j procedures of the children, and each level-0 procedure being the
digit interchange (two Lemma 3 field moves).
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
set_option linter.unnecessarySeqFocus false
open NLogN
open NLogN.KIL
open IntMul RS AModel AModelL12 AModelFac
variable {m W : ℕ} [NeZero W] (C : Circuit (ZMod 2) m W)
theorem NLogN.KIL.prog_il (D q : ℕ) (hq : 2 ≤ q) (hm : 1 ≤ m)
(hfr : ∀ j, FramesOK (FrOK C (q ^ m ^ j) (ShFrac (q ^ m ^ j) D)) C.gates C.Min C.Mout)
(k P L : ℕ) (A B Cs : Shape) (hP : 1 ≤ P) (hL : W ^ k ∣ L) (hL1 : 1 ≤ L)
(hA : ∀ a ∈ A, 1 ≤ a) (hB : ∀ a ∈ B, 1 ≤ a) (hC : ∀ a ∈ Cs, 1 ≤ a) (Bb : ℕ)
(hV : zsz ((vol (P :: L :: swShape A B Cs (q ^ m ^ k)) : ℕ) : ℤ) ≤ Bb)
(I : List Sym) (t : IState HS) (R : List Item) (xs : List (ZMod 2))
(hxs : xs.length = vol (P :: L :: swShape A B Cs (q ^ m ^ k))) :
IRuns I (progTbl C D q P k (rootCfg k L A B Cs))
(progTbl C D q P k (rootCfg k L A B Cs) (cfgIdx q k (rootCfg k L A B Cs) (rootCfg k L A B Cs)))
(t.upd 0 (ints (enc2 xs) ++ R))
(t.upd 0 (ints (enc2 (AModel.prog C q k P L A B Cs xs)) ++ R))
(ilCost C D q Bb k (vol (P :: L :: swShape A B Cs (q ^ m ^ k)))
(A.length + B.length + Cs.length)) := by sorry