Φ⁻¹ on whole arrays
ProvedNLogN.KFU.PhiInvD_eqΦ⁻¹ on whole arrays.
The following holds (Lean statement, in the scope of module Solutions.KFU2Cover):
theorem NLogN.KFU.PhiInvD_eq (H : CrtOK d sF μ) (h : ℕ) (bL : ℕ → Bool) (hst : ∀ j < d, sF j ≤ 2 ^ h)
(ys : List ℤ) :
PhiInvD h d bL sF μ ys = (List.range (vol (shK d (sP d sF)))).map fun m =>
ys.getD (encode (shR d (NLogN.KFU.tP d h bL)) (phiAddr d sF μ (m / 2) (m % 2))) 0
Context. The lemma belongs to the part KFU2 §1: coverage of the Φ-addresses and whole-array denotations: Hypotheses (RCRT side): 1 ≤ s_j, pairwise coprime s_j (j < d), μ_j P_j ≡ 1 (mod s_j).
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.KFU
open IntMul KFC AModel AModelL12
variable {d : ℕ} {sF μ : ℕ → ℕ}
theorem NLogN.KFU.PhiInvD_eq (H : CrtOK d sF μ) (h : ℕ) (bL : ℕ → Bool) (hst : ∀ j < d, sF j ≤ 2 ^ h)
(ys : List ℤ) :
PhiInvD h d bL sF μ ys = (List.range (vol (shK d (sP d sF)))).map fun m =>
ys.getD (encode (shR d (NLogN.KFU.tP d h bL)) (phiAddr d sF μ (m / 2) (m % 2))) 0 := by sorry