The Φ-address coordinates are the RCRT.Phi residues
ProvedNLogN.KFU.phiAddr_eq_PhiThe Φ-address coordinates are the RCRT.Phi residues.
The following holds (Lean statement, in the scope of module Solutions.KFU2Cover):
theorem NLogN.KFU.phiAddr_eq_Phi (H : CrtOK d sF μ) (k c : ℕ) (i : Fin d) :
have : ∀ i : Fin d, NeZero (sF i) := fun i => ⟨by have := H.pos i i.2; omega⟩
(phiAddr d sF μ k c).getD i 0 =
(OpenAI.RCRT.Phi (fun i : Fin d => sF i) (fun i : Fin d => μ i)
(k : ZMod (∏ i : Fin d, sF i)) i).val
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.phiAddr_eq_Phi (H : CrtOK d sF μ) (k c : ℕ) (i : Fin d) :
have : ∀ i : Fin d, NeZero (sF i) := fun i => ⟨by have := H.pos i i.2; omega⟩
(phiAddr d sF μ k c).getD i 0 =
(OpenAI.RCRT.Phi (fun i : Fin d => sF i) (fun i : Fin d => μ i)
(k : ZMod (∏ i : Fin d, sF i)) i).val := by sorry