Round-six lemma `reindex`
ProvedIntMul.OpenAI.RH.reindexAn auxiliary lemma of the round-six development, published as a separate node because its proof is long or shared.
The following holds (Lean statement, in the scope of module Solutions.ResampleHvdH):
theorem IntMul.OpenAI.RH.reindex (α : ℝ) (ρ : ZMod s) (k : ZMod t) :
∑' n : ℤ, ((Real.exp (-π * α ^ 2 * ((n : ℝ) - ρ.val / s) ^ 2) : ℝ) : ℂ) *
(if (((ρ.val : ℤ) - s * n : ℤ) : ZMod t) = -((s : ZMod t) * k) then 1 else 0)
= ∑' j : ℤ, ((Real.exp (-π * α ^ 2 * (t : ℝ) ^ 2 * ((k.val : ℝ) / t - j / s) ^ 2) : ℝ) : ℂ) *
(if (t : ZMod s) * (j : ZMod s) = ρ then 1 else 0)
Context. Copy (renamed namespace IntMul.OpenAI.RH) of the base thread's HvdH Prop 4.7(i)
(intmul/base/Sol_prop_4_7_i.lean): Gaussian resampling identity, maps S, T, C, D, P_s, P_t.
Formalization Note. Part of the Lean formalization of the round-six κ-improvement (integer-multiplication-kappa campaign, target IntMul.Kappa.jain_round6_framework). The statement is copied verbatim from the Lean development; the platform node carries the same declaration name. Definitions it mentions live in the IntMul_Kappa_R6_Defs* bundles (on top of the published κ bundles IntMul_Kappa_K_Defs*).
-- Round-six κ development (integer-multiplication-kappa), generated by skeleton subtraction.
import Definitions.Def_IntMul_Kappa_K_Defs33
import Definitions.Def_IntMul_Kappa_R6_Defs1
import Mathlib
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open IntMul IntMul.OpenAI IntMul.OpenAI.RH
open Complex Real
variable {s t : ℕ} [NeZero s] [NeZero t]
theorem IntMul.OpenAI.RH.reindex (α : ℝ) (ρ : ZMod s) (k : ZMod t) :
∑' n : ℤ, ((Real.exp (-π * α ^ 2 * ((n : ℝ) - ρ.val / s) ^ 2) : ℝ) : ℂ) *
(if (((ρ.val : ℤ) - s * n : ℤ) : ZMod t) = -((s : ZMod t) * k) then 1 else 0)
= ∑' j : ℤ, ((Real.exp (-π * α ^ 2 * (t : ℝ) ^ 2 * ((k.val : ℝ) / t - j / s) ^ 2) : ℝ) : ℂ) *
(if (t : ZMod s) * (j : ZMod s) = ρ then 1 else 0) := by sorry