Error bound for the segmented inverse of the resampling system (complex form)
ProvedJ6Seg.segInvC_errLet be lengths with , let be the Gaussian parameter and assume (xθ s t α). Let be a valid block structure (BlocksOK s t B: wrap-free runs partitioning with coupling width ) whose blocks all have length at most , and let be precomputed fixed-point tables of precision accurate to ulps with per-block constants bounded by (TabOK P s t α B T E Dm). Put (segG), where is the number of near-boundary positions of the block structure. Let be a fixed-point complex input whose real and imaginary parts satisfy (), and let satisfy , the system with the exact coupling operator Eexact s t α for , and , . Write . If , then for every the complex segmented inverse segInvC P T B U has real and imaginary parts each within of , , and (as a complex number via toC).
In Lean:
theorem J6Seg.segInvC_err {P lam : ℕ} {B : Blocks} {T : Tables} {E Dm Bu εin Wm : ℝ}
(hs : 0 < s) (hst : s ≤ t) (hα : 2 ≤ α) (hx : 3 ≤ xθ s t α)
(hB : BlocksOK s t B) (hlam : ∀ i < s, B.len i ≤ lam)
(hT : TabOK P s t α B T E Dm) (hE : 0 ≤ E)
(U : ℕ → ℤ × ℤ) (hBu : 0 ≤ Bu)
(hU : ∀ i < s, |((U i).1 : ℝ) / 2 ^ P| ≤ Bu ∧ |((U i).2 : ℝ) / 2 ^ P| ≤ Bu)
(v w : ℕ → ℂ) (hw : ∀ i < s, ‖w i‖ ≤ Wm)
(hsys : ∀ i < s, w i + Eexact s t α w i = v i)
(hin : ∀ i < s, |((U i).1 : ℝ) / 2 ^ P - (v i).re| ≤ εin ∧
|((U i).2 : ℝ) / 2 ^ P - (v i).im| ≤ εin)
(hP : 1000 * segG B lam E Dm Bu ≤ 2 ^ P) :
∀ i < s,
|((segInvC P T B U i).1 : ℝ) / 2 ^ P - (w i).re| ≤ 60 * segG B lam E Dm Bu / 2 ^ P +
3 * (4 * exp (-(π * (α : ℝ) ^ 2 * (B.w * (B.w + 1))))) * (Bu + 1) + 8 / 7 * εin ∧
|((segInvC P T B U i).2 : ℝ) / 2 ^ P - (w i).im| ≤ 60 * segG B lam E Dm Bu / 2 ^ P +
3 * (4 * exp (-(π * (α : ℝ) ^ 2 * (B.w * (B.w + 1))))) * (Bu + 1) + 8 / 7 * εin ∧
‖toC (segInvC P T B U i) / 2 ^ P - w i‖ ≤ 2 * (60 * segG B lam E Dm Bu / 2 ^ P +
3 * (4 * exp (-(π * (α : ℝ) ^ 2 * (B.w * (B.w + 1))))) * (Bu + 1) + 8 / 7 * εin)
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_R6_Defs3
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open J6Seg
open Finset Real
open IntMul.HvdH IntMul.HvdH.JPf J6QLU
variable {s t α : ℕ}
theorem J6Seg.segInvC_err {P lam : ℕ} {B : Blocks} {T : Tables} {E Dm Bu εin Wm : ℝ}
(hs : 0 < s) (hst : s ≤ t) (hα : 2 ≤ α) (hx : 3 ≤ xθ s t α)
(hB : BlocksOK s t B) (hlam : ∀ i < s, B.len i ≤ lam)
(hT : TabOK P s t α B T E Dm) (hE : 0 ≤ E)
(U : ℕ → ℤ × ℤ) (hBu : 0 ≤ Bu)
(hU : ∀ i < s, |((U i).1 : ℝ) / 2 ^ P| ≤ Bu ∧ |((U i).2 : ℝ) / 2 ^ P| ≤ Bu)
(v w : ℕ → ℂ) (hw : ∀ i < s, ‖w i‖ ≤ Wm)
(hsys : ∀ i < s, w i + Eexact s t α w i = v i)
(hin : ∀ i < s, |((U i).1 : ℝ) / 2 ^ P - (v i).re| ≤ εin ∧
|((U i).2 : ℝ) / 2 ^ P - (v i).im| ≤ εin)
(hP : 1000 * segG B lam E Dm Bu ≤ 2 ^ P) :
∀ i < s,
|((segInvC P T B U i).1 : ℝ) / 2 ^ P - (w i).re| ≤ 60 * segG B lam E Dm Bu / 2 ^ P +
3 * (4 * exp (-(π * (α : ℝ) ^ 2 * (B.w * (B.w + 1))))) * (Bu + 1) + 8 / 7 * εin ∧
|((segInvC P T B U i).2 : ℝ) / 2 ^ P - (w i).im| ≤ 60 * segG B lam E Dm Bu / 2 ^ P +
3 * (4 * exp (-(π * (α : ℝ) ^ 2 * (B.w * (B.w + 1))))) * (Bu + 1) + 8 / 7 * εin ∧
‖toC (segInvC P T B U i) / 2 ^ P - w i‖ ≤ 2 * (60 * segG B lam E Dm Bu / 2 ^ P +
3 * (4 * exp (-(π * (α : ℝ) ^ 2 * (B.w * (B.w + 1))))) * (Bu + 1) + 8 / 7 * εin) := by sorry