LeanFun RevOLVER

2.5 Analyticity and geometric convergence

Analyticity on a Bernstein ellipse gives geometric coefficient decay and geometric approximation error. The converse theorems recover analyticity from sufficiently fast approximation.

2.5.1 Bernstein ellipses

The Joukowski map sends an annulus to an ellipse with foci \(-1\) and \(1\). This geometry relates complex analyticity to approximation on the interval.

Definition 2.5.1 Joukowski map
✓ 🤖
#

Define \(J:\mathbb C\setminus \{ 0\} \to \mathbb C\) by \(J(z)=(z+z^{-1})/2\).

Reference: [ATAP, Chapter 8].

Lean Formalisation
def Complex.joukowski (z : { z // z ≠ 0 }) : ℂ
Lean definition
/-- The Joukowski map, used away from zero (ATAP, Chapter 8). -/
@[expose] noncomputable def joukowski (z : {z : ℂ // z ≠ 0}) : ℂ := (z.val + z.val⁻¹) / 2
source
Definition 2.5.2 Open filled Bernstein ellipse
✓ 🤖
#

For \(\rho {\gt}1\), define the open filled ellipse by

\[ E_\rho =\{ w\in \mathbb {C}:|w-1|+|w+1|{\lt}\rho +\rho ^{-1}\} . \]

Reference: [ATAP, Chapter 8].

Lean Formalisation
def Complex.bernsteinEllipse (ρ : ↑(Set.Ioi 1)) : Set ℂ
Lean definition
/-- The open filled Bernstein ellipse, with parameter `ρ > 1` (ATAP, Chapter 8). -/
def bernsteinEllipse (ρ : Set.Ioi (1 : ℝ)) : Set ℂ :=
  {w | ‖w - 1‖ + ‖w + 1‖ < (ρ : ℝ) + (ρ : ℝ)⁻¹}
source
Theorem 2.5.3 Ellipse as an annulus image
✓ 🤖

For \(\rho {\gt}1\), \(E_\rho =J(\{ z:\rho ^{-1}{\lt}|z|{\lt}\rho \} )\). For nonzero \(z\), membership of \(J(z)\) in \(E_\rho \) is equivalent to these annulus inequalities.

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.joukowski_mem_bernsteinEllipse_iff {ρ : ℝ} (hρ : 1 < ρ) (z : { z // z ≠ 0 }) :
  Complex.joukowski z ∈ Complex.bernsteinEllipse ⟨ρ, hρ⟩ ↔ ρ⁻¹ < ‖↑z‖ ∧ ‖↑z‖ < ρ
Lean proof
/-- The preimage of the open ellipse is precisely the open annulus (ATAP, Chapter 8). -/
theorem joukowski_mem_bernsteinEllipse_iff {ρ : ℝ} (hρ : 1 < ρ)
    (z : {z : ℂ // z ≠ 0}) :
    joukowski z ∈ bernsteinEllipse ⟨ρ, hρ⟩ ↔ ρ⁻¹ < ‖z.val‖ ∧ ‖z.val‖ < ρ := by
  change ‖joukowski z - 1‖ + ‖joukowski z + 1‖ < ρ + ρ⁻¹ ↔ _
  rw [norm_joukowski_sub_one_add_norm_joukowski_add_one z]
  exact radius_inequality (norm_pos_iff.mpr z.property) hρ
source
Theorem 2.5.4 Approximation interval inside the ellipse
✓ 🤖

For \(\rho {\gt}1\), every real \(x\in [-1,1]\) belongs to \(E_\rho \).

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.ofReal_mem_bernsteinEllipse {ρ x : ℝ} (hρ : 1 < ρ) (hx : x ∈ Set.Icc (-1) 1) :
  ↑x ∈ Complex.bernsteinEllipse ⟨ρ, hρ⟩
Lean proof
/-- The whole approximation interval lies inside the open ellipse (ATAP, Chapter 8). -/
theorem ofReal_mem_bernsteinEllipse {ρ x : ℝ} (hρ : 1 < ρ) (hx : x ∈ Set.Icc (-1) 1) :
    (x : ℂ) ∈ bernsteinEllipse ⟨ρ, hρ⟩ := by
  have hρ0 : 0 < ρ := by linarith
  have h2 : 2 < ρ + ρ⁻¹ := by
    have h := (radius_inequality (by norm_num : (0 : ℝ) < 1) hρ).2
      ⟨(inv_lt_one₀ hρ0).2 hρ, hρ⟩
    norm_num at h ⊢
    exact h
  change ‖(x : ℂ) - 1‖ + ‖(x : ℂ) + 1‖ < _
  rw [← ofReal_one, ← ofReal_sub, ← ofReal_add, norm_real, norm_real,
    Real.norm_eq_abs, Real.norm_eq_abs, abs_of_nonpos (by linarith [hx.2]),
    abs_of_nonneg (by linarith [hx.1])]
  linarith
source
Ellipse geometry
Theorem 2.5.5 Joukowski value and unit-circle characterisation
✓ 🤖

For every nonzero \(z\), \(J(z)=(z+z^{-1})/2\). If \(|z|=1\), then \(z\ne 0\), \(-1\le \operatorname {Re}z\le 1\), and \(J(z)=\operatorname {Re}z\). Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.joukowski_apply (z : { z // z ≠ 0 }) : Complex.joukowski z = (↑z + (↑z)⁻¹) / 2
Lean proof
/-- Classical value of the Joukowski map (ATAP, Chapter 8). -/
theorem joukowski_apply (z : {z : ℂ // z ≠ 0}) :
    joukowski z = (z.val + z.val⁻¹) / 2 := rfl
source
Theorem 2.5.6 Bernstein ellipse characterisation
✓ 🤖
#

For every parameter \(\rho {\gt}1\) and \(w\in \mathbb C\),

\[ w\in E_\rho \quad \Longleftrightarrow \quad |w-1|+|w+1|{\lt}\rho +\rho ^{-1}. \]

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.mem_bernsteinEllipse_iff (ρ : ↑(Set.Ioi 1)) (w : ℂ) :
  w ∈ Complex.bernsteinEllipse ρ ↔ ‖w - 1‖ + ‖w + 1‖ < ↑ρ + (↑ρ)⁻¹
Lean proof
/-- Membership in the classical ellipse (ATAP, Chapter 8). -/
theorem mem_bernsteinEllipse_iff (ρ : Set.Ioi (1 : ℝ)) (w : ℂ) :
    w ∈ bernsteinEllipse ρ ↔ ‖w - 1‖ + ‖w + 1‖ < (ρ : ℝ) + (ρ : ℝ)⁻¹ := Iff.rfl
source
Theorem 2.5.7 Symmetry of the Joukowski map and openness of the ellipse
✓ 🤖

For every \(z\ne 0\), \(J(1/z)=J(z)\) and \(J(-z)=-J(z)\). For every \(\rho {\gt}1\), the set \(E_\rho \) is open.

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.joukowski_inv (z : { z // z ≠ 0 }) : Complex.joukowski ⟨(↑z)⁻¹, ⋯⟩ = Complex.joukowski z
Lean proof
/-- Inversion leaves the Joukowski map unchanged (ATAP, Chapter 8). -/
@[simp] theorem joukowski_inv (z : {z : ℂ // z ≠ 0}) :
    joukowski ⟨z.val⁻¹, inv_ne_zero z.property⟩ = joukowski z := by
  simp [joukowski, add_comm]
source
Theorem 2.5.8 Joukowski focal-distance identity
✓ 🤖

For \(z\ne 0\),

\[ |J(z)-1|+|J(z)+1|=|z|+|z|^{-1}. \]

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.joukowski_sub_one (z : { z // z ≠ 0 }) : Complex.joukowski z - 1 = (↑z - 1) ^ 2 / (2 * ↑z)
Lean proof
/-- Factoring the distance to the right focus (ATAP, Chapter 8). -/
theorem joukowski_sub_one (z : {z : ℂ // z ≠ 0}) :
    joukowski z - 1 = (z.val - 1) ^ 2 / (2 * z.val) := by
  unfold joukowski
  field_simp [z.property]
  ring
source
Theorem 2.5.9 Nonzero Joukowski preimages
✓ 🤖
#

Every complex \(w\) is \(J(z)\) for some \(z\ne 0\).

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.exists_joukowski_eq (w : ℂ) : ∃ z, Complex.joukowski z = w
Lean proof
/-- Every complex point has a nonzero Joukowski preimage (ATAP, Chapter 8). -/
theorem exists_joukowski_eq (w : ℂ) : ∃ z : {z : ℂ // z ≠ 0}, joukowski z = w := by
  obtain ⟨s, hs⟩ := IsAlgClosed.exists_pow_nat_eq (w ^ 2 - 1) (by decide : 0 < 2)
  have hprod : (w + s) * (w - s) = 1 := by linear_combination -hs
  have hz : w + s ≠ 0 := by intro h; simp [h] at hprod
  refine ⟨⟨w + s, hz⟩, ?_⟩
  have hinv : (w + s)⁻¹ = w - s := by
    exact inv_eq_of_mul_eq_one_right hprod
  change (w + s + (w + s)⁻¹) / 2 = w
  rw [hinv]
  ring
source

For \(\rho {\gt}1\), the boundary of \(E_\rho \) is exactly \(J(\{ |z|=\rho \} )\), which is the level set \(|w-1|+|w+1|=\rho +\rho ^{-1}\).

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.image_joukowski_sphere {ρ : ℝ} (hρ : 1 < ρ) :
  Complex.joukowski '' {z | ‖↑z‖ = ρ} = {w | ‖w - 1‖ + ‖w + 1‖ = ρ + ρ⁻¹}
Lean proof
/-- A circle of radius `ρ` maps to the focal-distance level set (ATAP, Chapter 8). -/
theorem image_joukowski_sphere {ρ : ℝ} (hρ : 1 < ρ) :
    joukowski '' {z : {z : ℂ // z ≠ 0} | ‖z.val‖ = ρ} =
      {w : ℂ | ‖w - 1‖ + ‖w + 1‖ = ρ + ρ⁻¹} := by
  have hρ0 : 0 < ρ := by linarith
  ext w
  constructor
  · rintro ⟨z, hz, rfl⟩
    change ‖joukowski z - 1‖ + ‖joukowski z + 1‖ = _
    rw [norm_joukowski_sub_one_add_norm_joukowski_add_one z, hz]
  · intro hw
    obtain ⟨z, rfl⟩ := exists_joukowski_eq w
    change ‖joukowski z - 1‖ + ‖joukowski z + 1‖ = _ at hw
    rw [norm_joukowski_sub_one_add_norm_joukowski_add_one z] at hw
    have hn : 0 < ‖z.val‖ := norm_pos_iff.mpr z.property
    have heq : (‖z.val‖ - ρ) * (‖z.val‖ * ρ - 1) = 0 := by
      have hm := congrArg (fun t : ℝ => t * (‖z.val‖ * ρ)) hw
      field_simp at hm
      nlinarith [hm]
    rcases mul_eq_zero.mp heq with h | h
    · exact ⟨z, sub_eq_zero.mp h, rfl⟩
    · refine ⟨⟨z.val⁻¹, inv_ne_zero z.property⟩, ?_, joukowski_inv z⟩
      change ‖z.val⁻¹‖ = ρ
      rw [norm_inv]
      apply (inv_eq_iff_eq_inv).2
      rw [inv_eq_one_div]
      apply (eq_div_iff (ne_of_gt hρ0)).2
      simpa using sub_eq_zero.mp h
source
Theorem 2.5.11 Analyticity of the Joukowski map
✓ 🤖

The map \(J:\mathbb C\setminus \{ 0\} \to \mathbb C\) is complex analytic and continuous on its domain.

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.analyticOnOpen_joukowski : AnalyticOnOpen { carrier := {z | z ≠ 0}, is_open' := ⋯ } Complex.joukowski
Lean proof
/-- The Joukowski map is analytic on its punctured-plane domain (ATAP, Chapter 8). -/
theorem analyticOnOpen_joukowski :
    AnalyticOnOpen ⟨{z : ℂ | z ≠ 0}, isOpen_ne⟩ joukowski := by
  intro z
  refine ⟨fun w => (w + w⁻¹) / 2, fun _ => rfl, ?_⟩
  exact (analyticAt_id.add (analyticAt_id.inv z.property)).div analyticAt_const (by norm_num)
source

2.5.2 Complex coefficients and geometric decay

Complex coefficients use the same full constant convention as real coefficients. The contour formula uses \(\mathcal I_{0,1}\), the integral around the unit circle from Definition 1.1.21.

For \(n\in \mathbb {N}\), define

\[ \mathcal I_n^{\mathbb {C}}=\{ f:\mathbb {R}\to \mathbb {C}: fT_n\text{ is }\mu _T\text{-integrable}\} , \]

retaining pointwise function values. Real functions are regarded as complex functions by scalar inclusion; real and imaginary parts are taken pointwise. Reference: [ATAP, Chapter 3].

Lean Formalisation
def Polynomial.Chebyshev.ComplexCoefficientInput (n : ℕ) : Type
Lean definition
/-- The complex nth coefficient exists exactly on this integrable-product domain. -/
abbrev ComplexCoefficientInput (n : ℕ) :=
  {f : ℝ → ℂ // Integrable (fun x ↦ f x * (((T ℝ n).eval x : ℝ) : ℂ)) classicalMeasureT}
source
Definition 2.5.13 Complex Chebyshev coefficients
✓ 🤖

For \(f\in \mathcal I_n^{\mathbb {C}}\), define \(a_n(f)\) by the weighted integrals of Definition 2.2.3, with the same full constant coefficient convention: \(a_0(f)=\pi ^{-1}\int f\, d\mu _T\) and \(a_n(f)=2\pi ^{-1}\int fT_n\, d\mu _T\) for \(n{\gt}0\).

Reference: [ATAP, Chapters 3 and 8].

Lean Formalisation
def Polynomial.Chebyshev.complexCoefficient {n : ℕ} (f : Polynomial.Chebyshev.ComplexCoefficientInput n) : ℂ
Lean definition
/-- Complex Chebyshev coefficients on their full fixed-index classical domain
(ATAP, Chapter 3), with the full constant term. -/
@[expose] noncomputable def complexCoefficient {n : ℕ} (f : ComplexCoefficientInput n) : ℂ :=
  ((if n = 0 then 1 else 2 : ℝ) / π : ℝ) *
    ∫ x, f.val x * (((T ℝ n).eval x : ℝ) : ℂ) ∂classicalMeasureT
source
Definition 2.5.14 Laurent integrand of continuous interval data
✓ 🤖

For \(f\in C([-1,1],\mathbb C)\) and \(n\ge 0\), define the integrable function on the unit circle

\[ L_n[f](z)=\frac{f(\operatorname {Re}z)}{z^{n+1}},\qquad |z|=1. \]

Its numerator is the Joukowski pullback of the interval data. Reference: [ATAP, Theorems 3.1 and 8.1].

Lean Formalisation
def Complex.joukowskiLaurentInput (f : C(↑(Set.Icc (-1) 1), ℂ)) (n : ℕ) : Complex.CircleIntegralInput 0 1
Lean definition
/-- The integrable Laurent input of continuous interval data on the unit circle.
Reference: ATAP, Theorems 3.1 and 8.1. -/
@[expose] noncomputable def joukowskiLaurentInput
    (f : C(Set.Icc (-1 : ℝ) 1, ℂ)) (n : ℕ) : CircleIntegralInput 0 1 :=
  CircleIntegralInput.ofContinuous
    (fun z => f ⟨z.val.re, unitCircle_re_mem z⟩ / z.val ^ (n + 1)) (by
      have hp : Continuous (fun z : Metric.sphere (0 : ℂ) |(1 : ℝ)| =>
          (⟨z.val.re, unitCircle_re_mem z⟩ : Set.Icc (-1 : ℝ) 1)) :=
        (Complex.continuous_re.comp continuous_subtype_val).subtype_mk _
      exact (f.continuous.comp hp).div (continuous_subtype_val.pow _)
        (fun z => pow_ne_zero _ (unitCircle_ne_zero z)))
source

For a complex-valued function whose restriction to \([-1,1]\) is continuous, the coefficient has the contour representation

\[ a_n(f)=\frac{\kappa _n}{2\pi i}\mathcal I_{0,1}(L_n[f|_{[-1,1]}]), \qquad \kappa _0=1,\quad \kappa _n=2\ (n{\gt}0). \]

Let \(\rho {\gt}1\). If \(f\) is complex analytic on \(E_\rho \) and \(|f(z)|\le M\) there, then \(|a_n(f)|\le 2M\rho ^{-n}\) for \(n\ge 1\), and \(|a_0(f)|\le M\). No boundary continuity is assumed.

Reference: [ATAP, Theorem 8.1].

Lean Formalisation
theorem Polynomial.Chebyshev.complexCoefficient_eq_laurent_integral {f : ℂ → ℂ}
  (hf : ContinuousOn (fun x => f ↑x) (Set.Icc (-1) 1)) (n : ℕ) :
  Polynomial.Chebyshev.complexCoefficient
      (Polynomial.Chebyshev.ComplexCoefficientInput.ofContinuousOn (fun x => f ↑x) hf n) =
    (if n = 0 then 1 else 2) * (2 * ↑Real.pi * Complex.I)⁻¹ *
      Complex.circleIntegralOn (Complex.joukowskiLaurentInput { toFun := fun x => f ↑↑x, continuous_toFun := ⋯ } n)
Lean proof
/-- Unit-circle contour representation of complex Chebyshev coefficients
(ATAP, Theorems 3.1 and 8.1). -/
theorem complexCoefficient_eq_laurent_integral {f : ℂ → ℂ}
    (hf : ContinuousOn (fun x : ℝ ↦ f x) (Icc (-1) 1)) (n : ℕ) :
    (complexCoefficient (ComplexCoefficientInput.ofContinuousOn (fun x : ℝ ↦ f x) hf n)) =
      (if n = 0 then 1 else 2 : ℂ) * (2 * π * I : ℂ)⁻¹ *
        circleIntegralOn (joukowskiLaurentInput ⟨fun x => f x, hf.domRestrict⟩ n) := by
  have hz (θ : ℝ) : circleMap 0 1 θ ≠ 0 := by simp [circleMap_zero]
  have he (θ : ℝ) : (circleMap 0 1 θ * I) *
      (f ((circleMap 0 1 θ).re : ℂ) / circleMap 0 1 θ ^ (n + 1)) =
      I * (f (Real.cos θ) * ((Real.cos (n * θ) : ℂ) -
        (Real.sin (n * θ) : ℂ) * I)) := by
    rw [circleMap_zero_re, one_mul]
    have hp : (circleMap 0 1 θ ^ n)⁻¹ =
        (Real.cos (n * θ) : ℂ) - (Real.sin (n * θ) : ℂ) * I := by
      rw [circleMap_zero_pow, one_pow, circleMap_zero_inv]
      simp only [inv_one, circleMap_zero, Complex.ofReal_one, one_mul, Complex.exp_mul_I]
      simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin,
        Complex.ofReal_neg, Complex.cos_neg, Complex.sin_neg, sub_eq_add_neg, neg_mul]
    rw [← hp, pow_succ]
    field_simp
  rw [complexCoefficient_eq_integral_cos hf,
    (circleIntegralOn_spec (joukowskiLaurentInput ⟨fun x => f x, hf.domRestrict⟩ n)).2]
  change _ = (if n = 0 then 1 else 2 : ℂ) * (2 * π * I : ℂ)⁻¹ *
    (∫ θ in 0..2 * π, (circleMap 0 1 θ * I) *
      (f ((circleMap 0 1 θ).re : ℂ) / circleMap 0 1 θ ^ (n + 1)))
  simp_rw [he]
  rw [intervalIntegral.integral_const_mul, integral_cos_pullback hf]
  have hπ : (π : ℂ) ≠ 0 := Complex.ofReal_ne_zero.mpr Real.pi_ne_zero
  split_ifs <;> push_cast <;> field_simp
source

For \(\rho {\gt}1\), let \(f\) be analytic on the open ellipse \(E_\rho \) and satisfy \(|f(z)|\le M\) there. Then the degree-\(N\) truncated Chebyshev expansion has uniform error at most \(2M\rho ^{-N}/(\rho -1)\) on \([-1,1]\). For \(N\ge 1\), interpolation at the \(N+1\) extrema \(\cos (j\pi /N)\) has error at most \(4M\rho ^{-N}/(\rho -1)\). No continuity on the ellipse boundary is assumed.

Reference: [ATAP, Theorem 8.2].

Lean Formalisation
theorem Polynomial.Chebyshev.norm_sub_sum_complex_le_tsum_tail {a : ℕ → ℂ} {y : ℂ} (ha : Summable fun n => ‖a n‖) {x : ℝ}
  (hx : x ∈ Set.Icc (-1) 1) (hf : HasSum (fun n => a n * ↑(Polynomial.eval x (Polynomial.Chebyshev.T ℝ ↑n))) y)
  (N : ℕ) :
  ‖y - ∑ n ∈ Finset.range (N + 1), a n * ↑(Polynomial.eval x (Polynomial.Chebyshev.T ℝ ↑n))‖ ≤
    ∑' (k : ℕ), ‖a (k + (N + 1))‖
Lean proof
/-- Absolute coefficient tails bound complex Chebyshev truncations (ATAP, equation 4.8). -/
theorem norm_sub_sum_complex_le_tsum_tail {a : ℕ → ℂ} {y : ℂ}
    (ha : Summable (fun n ↦ ‖a n‖)) {x : ℝ} (hx : x ∈ Icc (-1) 1)
    (hf : HasSum (fun n : ℕ ↦ a n * (((T ℝ n).eval x : ℝ) : ℂ)) y) (N : ℕ) :
    ‖y - ∑ n ∈ Finset.range (N + 1), a n * (((T ℝ n).eval x : ℝ) : ℂ)‖ ≤
      ∑' k, ‖a (k + (N + 1))‖ := by
  have h := norm_sub_sum_smul_le_tsum_tail (f := fun _ ↦ y) ha hx
    (by simpa only [Complex.real_smul, mul_comm] using hf) N
  simpa only [Complex.real_smul, mul_comm] using h
source

Example (Julia).

For \(f(x)=1/(1+25x^2)\), the poles \(\pm i/5\) lie on the ellipse with \(\rho =(1+\sqrt{26})/5\). Using chebcoeffs from Chapter 2.4, inspect the geometric decay of the even coefficients. Odd coefficients vanish in exact arithmetic. Rescaling high-degree numerical coefficients also magnifies their rounding errors.


c = chebcoeffs(x -> 1/(1 + 25x^2), 200)
rho = 0.2 + sqrt(1.04)
[abs(c[n+1]) * rho^n for n in 20:20:80]   # inspect the rescaled even coefficients
Complex coefficient identities and contour estimates
Definition 2.5.17 Integrable complex interval data
✓ 🤖

Let \(\mathcal L^1_T(\mathbb {C})\) be the set of functions \(f:\mathbb {R}\to \mathbb {C}\) that are \(\mu _T\)-integrable, retaining their pointwise representatives. Reference: [ATAP, Chapter 3].

Lean Formalisation
def Polynomial.Chebyshev.ComplexIntegrableInput : Type
Lean definition
/-- Complex integrable inputs retain pointwise representatives (ATAP Ch. 3). -/
abbrev ComplexIntegrableInput := {f : ℝ → ℂ // Integrable f classicalMeasureT}
source
Theorem 2.5.18 Integrability of complex interval data
✓ 🤖

Every \(f\in \mathcal L^1_T(\mathbb {C})\) is \(\mu _T\)-integrable. If \(f:\mathbb {R}\to \mathbb {C}\) is continuous on \([-1,1]\), then \(f\) is \(\mu _T\)-integrable and hence belongs to \(\mathcal L^1_T(\mathbb {C})\).

Lean Formalisation
theorem Polynomial.Chebyshev.ComplexIntegrableInput.integrable (f : Polynomial.Chebyshev.ComplexIntegrableInput) :
  MeasureTheory.Integrable (↑f) Polynomial.Chebyshev.classicalMeasureT
Lean proof
/-- A complex L1 input has a genuine finite integral. -/
theorem ComplexIntegrableInput.integrable (f : ComplexIntegrableInput) :
    Integrable f.val classicalMeasureT := f.property
source

For \(f\in \mathcal I_n^{\mathbb {C}}\), the product \(fT_n\) is \(\mu _T\)-integrable. Every \(\mu _T\)-integrable complex function, and every \(f:\mathbb {R}\to \mathbb {C}\) continuous on \([-1,1]\), belongs to \(\mathcal I_n^{\mathbb {C}}\) for every \(n\). Scalar inclusion maps \(\mathcal I_n\) into \(\mathcal I_n^{\mathbb {C}}\), and real and imaginary parts map \(\mathcal I_n^{\mathbb {C}}\) into \(\mathcal I_n\). All these operations preserve the indicated pointwise values. Membership of \(\mathcal I_0^{\mathbb {C}}\) is exactly \(\mu _T\)-integrability of \(f\).

Lean Formalisation
theorem Polynomial.Chebyshev.ComplexCoefficientInput.integrable {n : ℕ} (f : Polynomial.Chebyshev.ComplexCoefficientInput n) :
  MeasureTheory.Integrable (fun x => ↑f x * ↑(Polynomial.eval x (Polynomial.Chebyshev.T ℝ ↑n)))
    Polynomial.Chebyshev.classicalMeasureT
Lean proof
/-- The defining complex coefficient integrand is integrable. -/
theorem ComplexCoefficientInput.integrable {n : ℕ} (f : ComplexCoefficientInput n) :
    Integrable (fun x ↦ f.val x * (((T ℝ n).eval x : ℝ) : ℂ)) classicalMeasureT := f.property
source
Theorem 2.5.20 Classical complex coefficient formula
✓ 🤖

For \(f\in \mathcal I_n^{\mathbb {C}}\),

\[ a_n(f)=\frac{c_n}{\pi }\int fT_n\, d\mu _T, \qquad c_0=1,\quad c_n=2\quad (n{\gt}0). \]

The product \(fT_n\) is integrable, so this integral is finite.

Lean Formalisation
theorem Polynomial.Chebyshev.complexCoefficient_apply {n : ℕ} (f : Polynomial.Chebyshev.ComplexCoefficientInput n) :
  Polynomial.Chebyshev.complexCoefficient f =
    ↑((if n = 0 then 1 else 2) / Real.pi) *
      ∫ (x : ℝ), ↑f x * ↑(Polynomial.eval x (Polynomial.Chebyshev.T ℝ ↑n)) ∂Polynomial.Chebyshev.classicalMeasureT
Lean proof
/-- The classical weighted-integral formula (ATAP, Chapter 3). -/
theorem complexCoefficient_apply {n : ℕ} (f : ComplexCoefficientInput n) :
    complexCoefficient f = ((if n = 0 then 1 else 2 : ℝ) / π : ℝ) *
      ∫ x, f.val x * (((T ℝ n).eval x : ℝ) : ℂ) ∂classicalMeasureT := rfl
source

For \(f\in \mathcal I_n\), the complex coefficient at index \(n\) equals its real coefficient from Definition 2.2.3. For \(f\) continuous on \([-1,1]\),

\[ a_n(f)=\frac{c_n}{\pi }\int _0^\pi f(\cos \theta )\cos (n\theta )\, d\theta , \qquad c_0=1,\quad c_n=2\ (n{\gt}0). \]

Reference: [ATAP, Chapters 3 and 8].

Lean Formalisation
theorem Polynomial.Chebyshev.complexCoefficient_ofReal {n : ℕ} (f : Polynomial.Chebyshev.CoefficientInput n) :
  Polynomial.Chebyshev.complexCoefficient (Polynomial.Chebyshev.ComplexCoefficientInput.ofReal f) =
    ↑(Polynomial.Chebyshev.coefficient f)
Lean proof
/-- The complex definition extends the real weighted-integral coefficient (ATAP, Chapter 3). -/
@[simp] theorem complexCoefficient_ofReal {n : ℕ} (f : CoefficientInput n) :
    complexCoefficient (ComplexCoefficientInput.ofReal f) = ((coefficient f) : ℂ) := by
  rw [complexCoefficient, coefficient]
  simp only [ComplexCoefficientInput.ofReal_val, ← Complex.ofReal_mul,
    _root_.integral_complex_ofReal]
source
Theorem 2.5.22 Values of the unit-circle Laurent integrand
✓ 🤖

For \(f\in C([-1,1],\mathbb C)\), \(n\ge 0\) and \(|z|=1\), \(L_n[f](z)=f(\operatorname {Re}z)/z^{n+1}\).

Lean Formalisation
theorem Complex.joukowskiLaurentInput_apply (f : C(↑(Set.Icc (-1) 1), ℂ)) (n : ℕ) (z : ↑(Metric.sphere 0 |1|)) :
  ↑(Complex.joukowskiLaurentInput f n) z = f ⟨(↑z).re, ⋯⟩ / ↑z ^ (n + 1)
Lean proof
/-- Characterization of the actual-circle Laurent input (ATAP, Theorem 3.1). -/
theorem joukowskiLaurentInput_apply (f : C(Set.Icc (-1 : ℝ) 1, ℂ)) (n : ℕ)
    (z : Metric.sphere (0 : ℂ) |(1 : ℝ)|) :
    (joukowskiLaurentInput f n).val z =
      f ⟨z.val.re, unitCircle_re_mem z⟩ / z.val ^ (n + 1) := rfl
source

If \(f:[-1,1]\to \mathbb C\) is continuous and \(\sum _{n\ge 0}|a_n(f)|{\lt}\infty \), then \(f(x)=\sum _{n\ge 0}a_n(f)T_n(x)\) at every \(x\in [-1,1]\), including the endpoints. The real and imaginary parts of \(a_n(f)\) are the corresponding real Chebyshev coefficients.

Reference: [ATAP, Chapters 4 and 8].

Lean Formalisation
theorem Polynomial.Chebyshev.complexCoefficient_re {f : ℝ → ℂ} (hf : ContinuousOn f (Set.Icc (-1) 1)) (n : ℕ) :
  (Polynomial.Chebyshev.complexCoefficient (Polynomial.Chebyshev.ComplexCoefficientInput.ofContinuousOn f hf n)).re =
    Polynomial.Chebyshev.coefficient ⟨fun x => (f x).re, ⋯⟩
Lean proof
/-- Real and imaginary parts commute with Chebyshev coefficients (ATAP, Chapter 3). -/
theorem complexCoefficient_re {f : ℝ → ℂ}
    (hf : ContinuousOn f (Set.Icc (-1) 1)) (n : ℕ) :
    (complexCoefficient (ComplexCoefficientInput.ofContinuousOn f hf n)).re = (coefficient (n := n) ⟨(fun x ↦ (f x).re), by first | assumption | apply integrable_classicalMeasureT; fun_prop⟩) := by
  have hi := integrable_measureT_complex (hf.mul (by fun_prop : ContinuousOn
    (fun x : ℝ ↦ (((T ℝ n).eval x : ℝ) : ℂ)) (Set.Icc (-1) 1)))
  have hr := integral_re hi
  change (∫ x, (f x * (((T ℝ n).eval x : ℝ) : ℂ)).re ∂measureT) =
    (∫ x, f x * (((T ℝ n).eval x : ℝ) : ℂ) ∂measureT).re at hr
  simp only [Complex.mul_re, Complex.ofReal_re, Complex.ofReal_im, mul_zero, sub_zero] at hr
  rw [complexCoefficient_eq_integral, ComplexCoefficientInput.ofContinuousOn_val]
  simp only [Complex.mul_re, Complex.ofReal_re, Complex.ofReal_im, zero_mul, sub_zero, ← hr]
  by_cases hn : n = 0
  · subst n
    simp [coefficient_zero, div_eq_mul_inv, mul_comm]
  · rw [coefficient_of_ne_zero _ hn]
    simp only [hn, ite_eq_right, not_false_eq_true]
source
Theorem 2.5.24 Open-annulus Laurent coefficient bound
✓ 🤖

For \(r{\gt}0\), let \(q_r\in \mathcal C_{0,r}\) satisfy \(|z^{n+1}q_r(z)|\le M\) on \(|z|=r\). Then

\[ \left|\frac{\mathcal I_{0,r}(q_r)}{2\pi i}\right|\le M r^{-n}. \]

If \(g\) is analytic on the closed annulus \(r\le |z|\le R\), where \(0{\lt}r\le R\), and \(q_r(z)=g(z)/z^{n+1}\) and \(q_R(z)=g(z)/z^{n+1}\) on their respective circles, then \(\mathcal I_{0,r}(q_r)=\mathcal I_{0,R}(q_R)\). Finally, let \(\rho {\gt}1\). If \(g\) is analytic at every \(z\) with \(1\le |z|{\lt}\rho \) and \(|g(z)|\le M\) there, then every \(q\in \mathcal C_{0,1}\) with \(q(z)=g(z)/z^{n+1}\) satisfies

\[ \left|\frac{\mathcal I_{0,1}(q)}{2\pi i}\right|\le M\rho ^{-n}. \]

Here \(n\ge 0\); no analyticity inside the inner circle is required.

Reference: [ATAP, proof of Theorem 8.1].

Lean Formalisation
theorem Complex.norm_laurent_integral_le (r : ↑(Set.Ioi 0)) {M : ℝ} (n : ℕ) (g : Complex.CircleIntegralInput 0 ↑r)
  (hb : ∀ (z : ↑(Metric.sphere 0 |↑r|)), ‖↑z ^ (n + 1) * ↑g z‖ ≤ M) :
  ‖(2 * ↑Real.pi * Complex.I)⁻¹ * Complex.circleIntegralOn g‖ ≤ M / ↑r ^ n
Lean proof
/-- Laurent's contour estimate for every integrable contour input, expressed
through its bounded numerator (ATAP, proof of Theorem 8.1). -/
theorem norm_laurent_integral_le (r : Set.Ioi (0 : ℝ)) {M : ℝ} (n : ℕ)
    (g : CircleIntegralInput 0 r.val)
    (hb : ∀ z, ‖z.val ^ (n + 1) * g.val z‖ ≤ M) :
    ‖(2 * Real.pi * I : ℂ)⁻¹ * circleIntegralOn g‖ ≤ M / r.val ^ n := by
  have hr0 : 0 < r.val := r.property
  have hbound : ∀ z, ‖g.val z‖ ≤ M / r.val ^ (n + 1) := by
    intro z
    have hz : ‖z.val‖ = r.val := by
      simpa only [Metric.mem_sphere, dist_zero_right, abs_of_pos hr0] using z.property
    have h := hb z
    rw [norm_mul, norm_pow, hz] at h
    exact (le_div_iff₀ (pow_pos hr0 _)).2 (by simpa only [mul_comm] using h)
  have h := norm_circleIntegralOn_le g hbound
  have hpi : ‖(2 * Real.pi * I : ℂ)⁻¹‖ = (2 * Real.pi)⁻¹ := by simp
  rw [norm_mul, hpi, ← div_eq_inv_mul, div_le_iff₀ Real.two_pi_pos]
  calc
    ‖circleIntegralOn g‖ ≤ 2 * Real.pi * |r.val| * (M / r.val ^ (n + 1)) := h
    _ = M / r.val ^ n * (2 * Real.pi) := by
      rw [abs_of_pos hr0, pow_succ]
      field_simp [ne_of_gt hr0]
source
Theorem 2.5.25 Joukowski pullback coefficient bound
✓ 🤖

For \(\rho {\gt}1\) and \(f\) analytic and bounded by \(M\) in \(E_\rho \), let \(q\in \mathcal C_{0,1}\) satisfy \(q(z)=f(J(z))/z^{n+1}\), \(n\ge 0\). Then

\[ \left|\frac{\mathcal I_{0,1}(q)}{2\pi i}\right|\le M\rho ^{-n}. \]

Reference: [ATAP, proof of Theorem 8.1].

Lean Formalisation
theorem Complex.norm_joukowski_laurent_integral_le {f : ℂ → ℂ} {M : ℝ} (ρ : ↑(Set.Ioi 1))
  (hf : AnalyticOnNhd ℂ f (Complex.bernsteinEllipse ρ)) (hb : ∀ w ∈ Complex.bernsteinEllipse ρ, ‖f w‖ ≤ M) (n : ℕ)
  (g : Complex.CircleIntegralInput 0 1)
  (hg : ∀ (z : ↑(Metric.sphere 0 |1|)), ↑g z = f (Complex.joukowski ⟨↑z, ⋯⟩) / ↑z ^ (n + 1)) :
  ‖(2 * ↑Real.pi * Complex.I)⁻¹ * Complex.circleIntegralOn g‖ ≤ M / ↑ρ ^ n
Lean proof
/-- The Laurent coefficients of the Joukowski pullback decay geometrically
(ATAP, Theorem 8.1), on actual integrable unit-circle inputs. -/
theorem norm_joukowski_laurent_integral_le {f : ℂ → ℂ} {M : ℝ} (ρ : Set.Ioi (1 : ℝ)) (hf : AnalyticOnNhd ℂ f (bernsteinEllipse ρ))
    (hb : ∀ w ∈ bernsteinEllipse ρ, ‖f w‖ ≤ M) (n : ℕ)
    (g : CircleIntegralInput 0 1)
    (hg : ∀ z, g.val z = f (joukowski ⟨z.val, unitCircle_ne_zero z⟩) /
      z.val ^ (n + 1)) :
    ‖(2 * Real.pi * I : ℂ)⁻¹ * circleIntegralOn g‖ ≤ M / ρ.val ^ n := by
  have hm (z : ℂ) (hz1 : 1 ≤ ‖z‖) (hzρ : ‖z‖ < ρ.val) :
      (z + z⁻¹) / 2 ∈ bernsteinEllipse ρ := by
    have hz : z ≠ 0 := norm_pos_iff.mp (lt_of_lt_of_le zero_lt_one hz1)
    change joukowski ⟨z, hz⟩ ∈ _
    apply (joukowski_mem_bernsteinEllipse_iff ρ.property ⟨z, hz⟩).2
    exact ⟨(inv_lt_one_of_one_lt₀ ρ.property).trans_le hz1, hzρ⟩
  apply norm_laurent_integral_le_of_open_annulus (f := fun z => f ((z + z⁻¹) / 2))
    ρ ?_ ?_ n g ?_
  · intro z hz1 hzρ
    exact (hf _ (hm z hz1 hzρ)).comp (f := fun w : ℂ => (w + w⁻¹) / 2)
      (analyticAt_joukowski_expression (norm_pos_iff.mp (lt_of_lt_of_le zero_lt_one hz1)))
  · intro z hz1 hzρ
    exact hb _ (hm z hz1 hzρ)
  · intro z
    exact hg z
source

2.5.3 Converses and analytic extensions

An analytic extension gives decay at every smaller ellipse radius. Conversely, those decay estimates determine an analytic extension.

Definition 2.5.26 Complex Chebyshev series
✓ 🤖

For \(a:\mathbb N\to \mathbb C\), let \(D_a\) consist of the complex points \(z\) where the natural-order partial sums \(\sum _{n{\lt}N}a_nT_n(z)\) converge to a finite complex limit. Define \(S_a:D_a\to \mathbb C\) to be that limit. This includes conditionally convergent series; no value is assigned elsewhere.

Reference: [ATAP, Chapters 3 and 8].

Lean Formalisation
def Polynomial.Chebyshev.ComplexChebyshevSeriesPoint (a : ℕ → ℂ) : Type
Lean definition
/-- Points where the natural-order Chebyshev partial sums have a limit. -/
abbrev ComplexChebyshevSeriesPoint (a : ℕ → ℂ) :=
  {z : ℂ // ∃ s : ℂ, Tendsto (fun N : ℕ ↦ ∑ n ∈ Finset.range N,
    a n * (T ℂ n).eval z) atTop (𝓝 s)}
source

For continuous complex data \(f\) on \([-1,1]\) and \(\rho {\gt}1\), an analytic extension to \(E_\rho \) exists if and only if, for every \(1{\lt}r{\lt}\rho \), there is \(C_r\) such that \(|a_n(f)|\le C_r r^{-n}\) for every \(n\ge 0\). The constant may depend on \(r\).

Reference: [ATAP, Theorems 8.1–8.3].

Lean Formalisation
theorem Polynomial.Chebyshev.complexCoefficient_congr_of_continuousOn {f g : ℝ → ℂ} (hf : ContinuousOn f (Set.Icc (-1) 1))
  (hg : ContinuousOn g (Set.Icc (-1) 1)) (hfg : Set.EqOn f g (Set.Icc (-1) 1)) (n : ℕ) :
  Polynomial.Chebyshev.complexCoefficient (Polynomial.Chebyshev.ComplexCoefficientInput.ofContinuousOn f hf n) =
    Polynomial.Chebyshev.complexCoefficient (Polynomial.Chebyshev.ComplexCoefficientInput.ofContinuousOn g hg n)
Lean proof
/-- Continuous interval data with equal values have equal complex Chebyshev
coefficients (ATAP, Chapter 3). -/
theorem complexCoefficient_congr_of_continuousOn {f g : ℝ → ℂ}
    (hf : ContinuousOn f (Icc (-1) 1)) (hg : ContinuousOn g (Icc (-1) 1))
    (hfg : EqOn f g (Icc (-1) 1)) (n : ℕ) :
    (complexCoefficient (ComplexCoefficientInput.ofContinuousOn f hf n)) = (complexCoefficient (ComplexCoefficientInput.ofContinuousOn g hg n)) := by
  apply Complex.ext
  · rw [complexCoefficient_re hf, complexCoefficient_re hg]
    exact coefficient_congr (fun x hx ↦ congrArg Complex.re (hfg hx))
  · rw [complexCoefficient_im hf, complexCoefficient_im hg]
    exact coefficient_congr (fun x hx ↦ congrArg Complex.im (hfg hx))
source

Let \(\rho {\gt}1\) and suppose complex polynomials \(p_n\) of degree at most \(n\) satisfy \(|f(x)-p_n(x)|\le C\rho ^{-n}\) for every \(n\ge 0\) and \(x\in [-1,1]\). Then \(f\) has an analytic extension to the open ellipse \(E_\rho \). Continuity of \(f\) need not be assumed.

Reference: [ATAP, Theorem 8.3].

Lean Formalisation
theorem Polynomial.Chebyshev.continuousOn_of_geometric_polynomial_approximation {f : ℝ → ℂ} {p : ℕ → Polynomial ℂ} {C ρ : ℝ}
  (hρ : 1 < ρ) (hb : ∀ (n : ℕ), ∀ x ∈ Set.Icc (-1) 1, ‖f x - Polynomial.eval (↑x) (p n)‖ ≤ C / ρ ^ n) :
  ContinuousOn f (Set.Icc (-1) 1)
Lean proof
/-- A geometric uniform approximation by polynomials forces continuity of the
data. No degree restriction is needed for this step of ATAP 8.3. -/
theorem continuousOn_of_geometric_polynomial_approximation {f : ℝ → ℂ}
    {p : ℕ → ℂ[X]} {C ρ : ℝ} (hρ : 1 < ρ)
    (hb : ∀ n x, x ∈ Icc (-1 : ℝ) 1 → ‖f x - (p n).eval (x : ℂ)‖ ≤ C / ρ ^ n) :
    ContinuousOn f (Icc (-1) 1) := by
  have hq0 : 0 ≤ ρ⁻¹ := by positivity
  have hq1 : ρ⁻¹ < 1 := (inv_lt_one₀ (by linarith : 0 < ρ)).2 hρ
  have ht : Tendsto (fun n : ℕ ↦ C / ρ ^ n) atTop (𝓝 0) := by
    simpa only [mul_zero, inv_pow, div_eq_mul_inv] using
      (tendsto_pow_atTop_nhds_zero_of_lt_one hq0 hq1).const_mul C
  have hu : TendstoUniformlyOn (fun (n : ℕ) (x : ℝ) ↦ (p n).eval (x : ℂ)) f atTop
      (Icc (-1) 1) := by
    apply Metric.tendstoUniformlyOn_iff.mpr
    intro ε hε
    filter_upwards [ht.eventually (gt_mem_nhds hε)] with n hn x hx
    simpa only [dist_eq_norm] using (hb n x hx).trans_lt hn
  exact hu.continuousOn (Eventually.of_forall (fun n ↦ by fun_prop)).frequently
source
Construction of analytic extensions

For \(z\in D_a\), the natural-order partial sums converge to \(S_a(z)\), and any finite limit of those partial sums equals \(S_a(z)\). Unconditional summability supplies a point of \(D_a\); if the unconditional sum is \(s\), then \(S_a(z)=s\).

Lean Formalisation
theorem Polynomial.Chebyshev.tendsto_complexChebyshevSeries (a : ℕ → ℂ)
  (z : Polynomial.Chebyshev.ComplexChebyshevSeriesPoint a) :
  Filter.Tendsto (fun N => ∑ n ∈ Finset.range N, a n * Polynomial.eval (↑z) (Polynomial.Chebyshev.T ℂ ↑n)) Filter.atTop
    (nhds (Polynomial.Chebyshev.complexChebyshevSeries a z))
Lean proof
/-- Natural-order partial sums converge to the classical sum. -/
theorem tendsto_complexChebyshevSeries (a : ℕ → ℂ) (z : ComplexChebyshevSeriesPoint a) :
    Tendsto (fun N : ℕ ↦ ∑ n ∈ Finset.range N, a n * (T ℂ n).eval z.val)
      atTop (𝓝 (complexChebyshevSeries a z)) := z.property.choose_spec
source

Every point of \(E_\rho \), \(\rho {\gt}1\), belongs to some \(E_r\) with \(1{\lt}r{\lt}\rho \). For these radii, \(\overline{E_r}\) is compact and contained in \(E_\rho \).

Reference: [ATAP, Chapter 8].

Lean Formalisation
theorem Complex.exists_smaller_bernsteinEllipse {ρ : ℝ} (hρ : 1 < ρ) {z : ℂ} (hz : z ∈ Complex.bernsteinEllipse ⟨ρ, hρ⟩) :
  ∃ r, ∃ (hr : 1 < r), r < ρ ∧ z ∈ Complex.bernsteinEllipse ⟨r, hr⟩
Lean proof
/-- Every point of an open ellipse belongs to a strictly smaller ellipse
(ATAP, Chapter 8, local convergence argument). -/
theorem exists_smaller_bernsteinEllipse {ρ : ℝ} (hρ : 1 < ρ) {z : ℂ}
    (hz : z ∈ bernsteinEllipse ⟨ρ, hρ⟩) : ∃ r, ∃ hr : 1 < r, r < ρ ∧ z ∈ bernsteinEllipse ⟨r, hr⟩ := by
  rw [bernsteinEllipse_eq_image_annulus hρ] at hz
  obtain ⟨w, hw, rfl⟩ := hz
  have hρ0 : 0 < ρ := by linarith
  have hw0 : 0 < ‖w.val‖ := lt_trans (inv_pos.mpr hρ0) hw.1
  have hi : ‖w.val‖⁻¹ < ρ := (inv_lt_comm₀ hw0 hρ0).2 hw.1
  obtain ⟨r, hr, hrρ⟩ := exists_between (max_lt hρ (max_lt hw.2 hi))
  have hr1 : 1 < r := lt_of_le_of_lt (le_max_left _ _) hr
  have hwr : ‖w.val‖ < r := lt_of_le_of_lt ((le_max_left _ _).trans (le_max_right _ _)) hr
  have hir : ‖w.val‖⁻¹ < r := lt_of_le_of_lt ((le_max_right _ _).trans (le_max_right _ _)) hr
  refine ⟨r, hr1, hrρ, (joukowski_mem_bernsteinEllipse_iff hr1 w).2 ?_⟩
  exact ⟨(inv_lt_comm₀ (by linarith : 0 < r) hw0).2 hir, hwr⟩
source

For \(w\ne 0\) and \(n\ge 0\), \(T_n(J(w))=(w^n+w^{-n})/2\). Consequently \(|T_n(z)|\le r^n\) for \(r{\gt}1\) and \(z\in E_r\).

Reference: [ATAP, Exercise 8.8].

Lean Formalisation
theorem Polynomial.Chebyshev.eval_T_joukowski (w : { z // z ≠ 0 }) (n : ℕ) :
  Polynomial.eval (Complex.joukowski w) (Polynomial.Chebyshev.T ℂ ↑n) = (↑w ^ n + (↑w)⁻¹ ^ n) / 2
Lean proof
/-- The Joukowski formula for complex Chebyshev polynomials (ATAP, Chapter 8). -/
theorem eval_T_joukowski (w : {z : ℂ // z ≠ 0}) (n : ℕ) :
    (T ℂ n).eval (joukowski w) = (w.val ^ n + w.val⁻¹ ^ n) / 2 := by
  have hw := w.property
  induction n using Nat.twoStepInduction with
  | zero => simp
  | one => simp [joukowski]
  | more n hn hn1 =>
    rw [Nat.cast_add, Nat.cast_ofNat, T_add_two]
    simp only [eval_sub, eval_mul, eval_ofNat, eval_X]
    rw [show (n : ℤ) + 1 = ↑(n + 1 : ℕ) by omega, hn, hn1]
    simp only [joukowski, pow_succ]
    field_simp
    ring
source

If \(\rho {\gt}1\) and \(|a_n|\le C\rho ^{-n}\) for all \(n\ge 0\), then \(S_a\) is analytic on the open ellipse \(E_\rho \). For \(1{\lt}r{\lt}\rho \) and \(z\in E_r\), the series converges absolutely and \(|S_a(z)|\le C/(1-r/\rho )\). Boundedness on all of \(E_\rho \) is not claimed.

Reference: [ATAP, Theorem 8.3].

Lean Formalisation
theorem Polynomial.Chebyshev.summable_norm_chebyshevSeries {a : ℕ → ℂ} {C ρ r : ℝ} (hρ : 1 < ρ) (hr : 1 < r) (hrρ : r < ρ)
  (ha : ∀ (n : ℕ), ‖a n‖ ≤ C / ρ ^ n) {z : ℂ} (hz : z ∈ Complex.bernsteinEllipse ⟨r, hr⟩) :
  Summable fun n => ‖a n * Polynomial.eval z (Polynomial.Chebyshev.T ℂ ↑n)‖
Lean proof
/-- On a strictly smaller ellipse, geometric coefficient decay makes the
Chebyshev terms absolutely summable (ATAP 8.3). -/
theorem summable_norm_chebyshevSeries {a : ℕ → ℂ} {C ρ r : ℝ}
    (hρ : 1 < ρ) (hr : 1 < r) (hrρ : r < ρ) (ha : ∀ n, ‖a n‖ ≤ C / ρ ^ n)
    {z : ℂ} (hz : z ∈ bernsteinEllipse ⟨r, hr⟩) :
    Summable (fun n ↦ ‖a n * (T ℂ n).eval z‖) := by
  have hq0 : 0 ≤ r / ρ := by positivity
  have hq1 : r / ρ < 1 := (div_lt_one (by linarith : 0 < ρ)).2 hrρ
  exact ((summable_geometric_of_lt_one hq0 hq1).mul_left C).of_nonneg_of_le
    (fun n ↦ norm_nonneg _) (fun n ↦ term_norm_le hρ hr ha hz n)
source
Theorem 2.5.33 Coefficient-decay converse
✓ 🤖

Let \(f:[-1,1]\to \mathbb C\) be continuous and \(\rho {\gt}1\). If its full-constant Chebyshev coefficients satisfy \(|a_n(f)|\le C\rho ^{-n}\), then \(f\) has an analytic extension to \(E_\rho \), agreeing at every interval point.

Reference: [ATAP, Theorems 8.1–8.3].

Lean Formalisation
theorem Polynomial.Chebyshev.exists_analytic_extension_of_coefficient_decay {f : ℝ → ℂ} {C ρ : ℝ} (hρ : 1 < ρ)
  (hf : ContinuousOn f (Set.Icc (-1) 1))
  (ha :
    ∀ (n : ℕ),
      ‖Polynomial.Chebyshev.complexCoefficient (Polynomial.Chebyshev.ComplexCoefficientInput.ofContinuousOn f hf n)‖ ≤
        C / ρ ^ n) :
  ∃ F, AnalyticOnNhd ℂ F (Complex.bernsteinEllipse ⟨ρ, hρ⟩) ∧ ∀ x ∈ Set.Icc (-1) 1, F ↑x = f x
Lean proof
/-- For continuous interval data, geometric decay of the existing integral
coefficients gives an analytic extension agreeing at every interval point. -/
theorem exists_analytic_extension_of_coefficient_decay {f : ℝ → ℂ} {C ρ : ℝ}
    (hρ : 1 < ρ) (hf : ContinuousOn f (Icc (-1) 1))
    (ha : ∀ n, ‖(complexCoefficient (ComplexCoefficientInput.ofContinuousOn f hf n))‖ ≤ C / ρ ^ n) :
    ∃ F : ℂ → ℂ, AnalyticOnNhd ℂ F (bernsteinEllipse ⟨ρ, hρ⟩) ∧
      ∀ x ∈ Icc (-1 : ℝ) 1, F x = f x := by
  refine ⟨(fun z ↦ ∑' n : ℕ, complexCoefficient (ComplexCoefficientInput.ofContinuousOn f hf n) * (T ℂ n).eval z),
    analyticOnNhd_chebyshev_tsum hρ ha, ?_⟩
  have hq0 : 0 ≤ ρ⁻¹ := by positivity
  have hq1 : ρ⁻¹ < 1 := (inv_lt_one₀ (by linarith : 0 < ρ)).2 hρ
  have hs : Summable (fun n ↦ ‖(complexCoefficient (ComplexCoefficientInput.ofContinuousOn f hf n))‖) :=
    ((summable_geometric_of_lt_one hq0 hq1).mul_left C).of_nonneg_of_le
      (fun _ ↦ norm_nonneg _) (fun n ↦ by simpa only [inv_pow, div_eq_mul_inv] using ha n)
  intro x hx
  have h := (hasSum_complexCoefficient_mul_eval_T hf hs hx).tsum_eq
  simpa only [complex_ofReal_eval_T] using h
source

For continuous complex \(f\) on \([-1,1]\), \(|f|\le M\), \(M\ge 0\), implies \(|a_0(f)|\le M\) and \(|a_n(f)|\le 2M\) for \(n{\gt}0\). Coefficients commute with subtraction, complex scalar multiplication, and finite sums of continuous functions. Moreover \(a_n(T_m)=\delta _{mn}\), and \(\deg p{\lt}n\) implies \(a_n(p)=0\) for complex polynomials.

Reference: [ATAP, Chapters 3 and 8].

Lean Formalisation
theorem Polynomial.Chebyshev.norm_complexCoefficient_le {f : ℝ → ℂ} (hf : ContinuousOn f (Set.Icc (-1) 1)) (n : ℕ) {M : ℝ}
  (hM : 0 ≤ M) (hb : ∀ x ∈ Set.Icc (-1) 1, ‖f x‖ ≤ M) :
  ‖Polynomial.Chebyshev.complexCoefficient (Polynomial.Chebyshev.ComplexCoefficientInput.ofContinuousOn f hf n)‖ ≤
    (if n = 0 then 1 else 2) * M
Lean proof
/-- The sharp uniform complex coefficient bound, including index zero (ATAP 8.1). -/
theorem norm_complexCoefficient_le {f : ℝ → ℂ} (hf : ContinuousOn f (Icc (-1) 1))
    (n : ℕ) {M : ℝ} (hM : 0 ≤ M) (hb : ∀ x ∈ Icc (-1) 1, ‖f x‖ ≤ M) :
    ‖(complexCoefficient (ComplexCoefficientInput.ofContinuousOn f hf n))‖ ≤ (if n = 0 then 1 else 2) * M := by
  have hi : ‖∫ θ in 0..π, f (cos θ) * (cos (n * θ) : ℂ)‖ ≤ M * π := by
    have h := intervalIntegral.norm_integral_le_of_norm_le_const
      (a := 0) (b := π) (C := M)
      (f := fun θ ↦ f (cos θ) * (cos (n * θ) : ℂ)) (by
        intro θ _
        rw [norm_mul, Complex.norm_real, Real.norm_eq_abs]
        calc
          _ ≤ M * 1 := mul_le_mul (hb _ ⟨neg_one_le_cos θ, cos_le_one θ⟩)
            (abs_cos_le_one _) (abs_nonneg _) hM
          _ = M := mul_one _)
    simpa only [sub_zero, abs_of_pos pi_pos] using h
  have hn : 0 ≤ (if n = 0 then 1 else 2 : ℝ) / π := by positivity
  rw [complexCoefficient_eq_integral_cos hf, norm_mul, Complex.norm_real,
    Real.norm_eq_abs, abs_of_nonneg hn]
  calc
    _ ≤ ((if n = 0 then 1 else 2) / π) * (M * π) := mul_le_mul_of_nonneg_left hi hn
    _ = _ := by field_simp
source