Φ⁻¹, pointwise: entry 2k + c is read back from the Φ-address of k
ProvedNLogN.KFU.PhiInvD_atΦ⁻¹, pointwise: entry 2k + c is read back from the Φ-address of k.
The following holds (Lean statement, in the scope of module Solutions.KFUPhiMath):
theorem NLogN.KFU.PhiInvD_at (h d : ℕ) (bL : ℕ → Bool) (sF μ : ℕ → ℕ) (hs : ∀ j < d, 1 ≤ sF j)
(hst : ∀ j < d, sF j ≤ 2 ^ h)
(hμ : ∀ j < d, ((μ j * OpenAI.RCRT.Ppre sF j : ℕ) : ZMod (sF j)) = 1) (ys : List ℤ) (k c : ℕ)
(hk : k < OpenAI.RCRT.Ppre sF d) (hc : c < 2) :
(PhiInvD h d bL sF μ ys).getD (2 * k + c) 0 =
ys.getD (encode (shR d (NLogN.KFU.tP d h bL)) (phiAddr d sF μ k c)) 0
Context. The lemma belongs to the part KFU §10: what Φ and Φ⁻¹ compute (against RCRT.upd).
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
theorem NLogN.KFU.PhiInvD_at (h d : ℕ) (bL : ℕ → Bool) (sF μ : ℕ → ℕ) (hs : ∀ j < d, 1 ≤ sF j)
(hst : ∀ j < d, sF j ≤ 2 ^ h)
(hμ : ∀ j < d, ((μ j * OpenAI.RCRT.Ppre sF j : ℕ) : ZMod (sF j)) = 1) (ys : List ℤ) (k c : ℕ)
(hk : k < OpenAI.RCRT.Ppre sF d) (hc : c < 2) :
(PhiInvD h d bL sF μ ys).getD (2 * k + c) 0 =
ys.getD (encode (shR d (NLogN.KFU.tP d h bL)) (phiAddr d sF μ k c)) 0 := by sorry