LeanFun RevOLVER

5.4 The annulus: Zernike-type bases and a convergent solver

On the annulus \(q{\lt}x^2+y^2{\lt}1\) the radial factor of a Zernike-type basis is a semiclassical Jacobi polynomial in \(t(1-r^2)\), with \(t=(1-q)^{-1}\). The radial family is the one from Chapter 5.2. Conversion preserves each angular mode. The Laplacian becomes banded in the radial index within each mode. A boundary-vanishing basis turns Dirichlet problems into symmetric tridiagonal systems.

We first construct the radial basis and sparse operators, then the finite Galerkin systems and their energy spaces. We prove convergence as both angular and radial resolution increase, and identify the completed space with physical functions and Cartesian gradient classes on the annulus.

5.4.1 Geometry, measure and bases

Reference details: Nondegenerate annular parameter and related results
Definition 5.4.1 Nondegenerate annular parameter
✓ 🤖
#

For \(q\in \mathbb R\setminus \{ 1\} \), define \(t(q)=(1-q)^{-1}\).

Lean Formalisation
def Polynomial.annulusParameter (q : { q // q ≠ 1 }) : ℝ
Lean definition
/-- The external semiclassical singularity determined by the squared inner radius. -/
noncomputable def annulusParameter (q : {q : ℝ // q ≠ 1}) : ℝ := (1-(q : ℝ))⁻¹
source
Theorem 5.4.2 Annular parameter identities
✓ 🤖

For \(q\ne 1\), \(t(q)\ne 0\) and \(t(q)(1-q)=1\). If \(0{\lt}q{\lt}1\), then \(t(q){\gt}1\).

Lean Formalisation
theorem Polynomial.annulusParameter_ne_zero (q : { q // q ≠ 1 }) : Polynomial.annulusParameter q ≠ 0
Lean proof
/-- The nondegenerate radial parameter is nonzero. -/
theorem annulusParameter_ne_zero (q : {q : ℝ // q ≠ 1}) :
    annulusParameter q ≠ 0 := inv_ne_zero (sub_ne_zero.mpr (Ne.symm q.property))
source
Definition 5.4.3 Classical annular coordinate map
✓ 🤖

For \(q\ne 1\), define \(\Psi _q(x,\theta )=\Phi (1-x/t(q),\theta )\) on the domain \(1-x/t(q)\ge 0\).

Lean Formalisation
def MvPolynomial.zernikeAnnulusCoordinates (q : { q // q ≠ 1 }) (v : { v // 0 ≤ 1 - v.1 / Polynomial.annulusParameter q }) :
  Fin 2 → ℝ
Lean definition
/-- Annular coordinates on their full classical affine-radius domain. -/
noncomputable def zernikeAnnulusCoordinates (q : {q : ℝ // q ≠ 1})
    (v : {v : ℝ × ℝ // 0 ≤ 1-v.1/annulusParameter q}) : Fin 2 → ℝ :=
  zernikeCoordinates (NNReal.mk (1-v.val.1/annulusParameter q) v.property,v.val.2)
source
Theorem 5.4.4 Annular chart continuity and admissible parameters
✓ 🤖

The map \(\Psi _q\) is continuous on its domain. If \(q\ge 0\), \(q\ne 1\), and \(0\le x\le 1\), then \(1-x/t(q)\ge 0\).

Lean Formalisation
theorem MvPolynomial.continuous_zernikeAnnulusCoordinates (q : { q // q ≠ 1 }) :
  Continuous (MvPolynomial.zernikeAnnulusCoordinates q)
Lean proof
/-- The annular chart is continuous on its classical domain. -/
theorem continuous_zernikeAnnulusCoordinates (q : {q : ℝ // q ≠ 1}) :
    Continuous (zernikeAnnulusCoordinates q) := by
  unfold zernikeAnnulusCoordinates
  exact continuous_zernikeCoordinates.comp (by unfold NNReal.mk; fun_prop)
source
Definition 5.4.5 Auxiliary annular product measure
✓ 🤖

For \(q\ge 0\), \(q\ne 1\), and real \(a,b\), define \(\omega ^{\rm aux}_{q,a,b}\) as the pushforward by \(\Psi _q\) of the semiclassical measure with parameters \((2,a,b,0)\), regarded as a measure on \([0,1]\), times angular Lebesgue measure on \((-\pi ,\pi )\).

Lean Formalisation
def MvPolynomial.zernikeAnnulusProductMeasure (q : { q // 0 ≤ q ∧ q ≠ 1 }) (a b : ℝ) : MeasureTheory.Measure (Fin 2 → ℝ)
Lean definition
/-- The auxiliary product pushforward, including all nonnegative nondegenerate radii. -/
noncomputable def zernikeAnnulusProductMeasure
    (q : {q : ℝ // 0 ≤ q ∧ q ≠ 1}) (a b : ℝ) : Measure (Fin 2 → ℝ) :=
  let μ := Measure.comap (Subtype.val : Icc (0 : ℝ) 1 → ℝ)
    (semiclassicalJacobiMeasure ⟨2,by norm_num⟩ a b 0)
  let ν := ProductMeasureInput.ofSFinite μ (volume.restrict (Ioo (-Real.pi) Real.pi))
  Measure.map (fun v : Icc (0 : ℝ) 1 × ℝ =>
    zernikeAnnulusCoordinates ⟨q,q.property.2⟩
      ⟨((v.1 : ℝ),v.2),zernikeAnnulusCoordinates_radical_nonneg q v.1⟩) (μ.prod ν.inner)
source

For \(0{\lt}q{\lt}1\) and \(a,b{\gt}-1\), every continuous real-valued function on \(\mathbb R^2\) is integrable for \(\omega ^{\rm aux}_{q,a,b}\), and all polynomial moments are finite.

Lean Formalisation
theorem MvPolynomial.integrable_zernikeAnnulusProductMeasure {q a b : ℝ} (hq : q ∈ Set.Ioo 0 1) (ha : -1 < a) (hb : -1 < b)
  {f : (Fin 2 → ℝ) → ℝ} (hf : Continuous f) :
  MeasureTheory.Integrable f (MvPolynomial.zernikeAnnulusProductMeasure ⟨q, ⋯⟩ a b)
Lean proof
/-- Continuous functions are integrable on the compact annular parameter support. -/
theorem integrable_zernikeAnnulusProductMeasure {q a b : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (ha : -1<a) (hb : -1<b) {f : (Fin 2 → ℝ) → ℝ} (hf : Continuous f) :
    Integrable f (zernikeAnnulusProductMeasure ⟨q,hq.1.le,ne_of_lt hq.2⟩ a b) := by
  let := isFiniteMeasure_semiclassicalJacobiMeasure (t := 2) (γ := 0) (by norm_num) ha hb
  let C : Icc (0 : ℝ) 1 × ℝ → Fin 2 → ℝ := fun v ↦
    zernikeAnnulusCoordinates ⟨q,ne_of_lt hq.2⟩
      ⟨((v.1 : ℝ),v.2),zernikeAnnulusCoordinates_radical_nonneg
        ⟨q,hq.1.le,ne_of_lt hq.2⟩ v.1⟩
  have hC : Continuous C := continuous_zernikeAnnulusCoordinates _ |>.comp (by fun_prop)
  change Integrable f (Measure.map C ((Measure.comap
    (Subtype.val : Icc (0 : ℝ) 1 → ℝ)
    (semiclassicalJacobiMeasure ⟨2,by norm_num⟩ a b 0)).prod
      (volume.restrict (Ioo (-Real.pi) Real.pi))))
  rw [integrable_map_measure hf.aestronglyMeasurable hC.measurable.aemeasurable]
  have hi := (hf.comp hC).continuousOn.integrableOn_compact
    (μ := (Measure.comap (Subtype.val : Icc (0 : ℝ) 1 → ℝ)
      (semiclassicalJacobiMeasure ⟨2,by norm_num⟩ a b 0)).prod
        (volume.restrict (Ioo (-Real.pi) Real.pi)))
    (isCompact_univ.prod isCompact_Icc :
      IsCompact (univ ×ˢ Icc (-Real.pi) Real.pi : Set (Icc (0 : ℝ) 1 × ℝ)))
  have hs : ∀ᵐ v ∂(Measure.comap (Subtype.val : Icc (0 : ℝ) 1 → ℝ)
      (semiclassicalJacobiMeasure ⟨2,by norm_num⟩ a b 0)).prod
        (volume.restrict (Ioo (-Real.pi) Real.pi)),
      v ∈ (univ ×ˢ Icc (-Real.pi) Real.pi : Set (Icc (0 : ℝ) 1 × ℝ)) := by
    filter_upwards [Measure.quasiMeasurePreserving_snd.ae
      (ae_restrict_mem measurableSet_Ioo)] with v hθ
    exact ⟨mem_univ _,hθ.1.le,hθ.2.le⟩
  rwa [IntegrableOn, Measure.restrict_eq_self_of_ae_mem hs] at hi
source
Definition 5.4.7 Standard weighted annular measure
✓ 🤖
#

For \(0\le q{\lt}1\) and real \(a,b\), define \(\omega _{q,a,b}=\frac12t(q)^{-(a+b+1)}\omega ^{\rm aux}_{q,a,b}\). The value \(q=0\) includes the disk endpoint.

Lean Formalisation
def MvPolynomial.zernikeAnnulusMeasure (q : ↑(Set.Ico 0 1)) (a b : ℝ) : MeasureTheory.Measure (Fin 2 → ℝ)
Lean definition
/-- The standard interior annular measure, including the disk endpoint q=0. -/
noncomputable def zernikeAnnulusMeasure (q : Ico (0 : ℝ) 1) (a b : ℝ) : Measure (Fin 2 → ℝ) :=
  ENNReal.ofReal ((1/2 : ℝ)*((annulusParameter ⟨q,ne_of_lt q.property.2⟩)^(a+b+1))⁻¹) •
    zernikeAnnulusProductMeasure ⟨q, q.property.1, ne_of_lt q.property.2⟩ a b
source
Formal details: Finite annular polynomial moments
Theorem 5.4.8 Finite annular polynomial moments
✓ 🤖

For \(0{\lt}q{\lt}1\) and \(a,b{\gt}-1\), all polynomial moments of \(\omega _{q,a,b}\) are finite.

Lean Formalisation
theorem MvPolynomial.hasFiniteMoments_zernikeAnnulusMeasure {q a b : ℝ} (hq : q ∈ Set.Ioo 0 1) (ha : -1 < a) (hb : -1 < b) :
  MvPolynomial.HasFiniteMoments (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ a b)
Lean proof
/-- All polynomial moments exist for the standard annular measure. -/
@[aesop (rule_sets := [PolynomialIntegrability]) unsafe 80% apply]
theorem hasFiniteMoments_zernikeAnnulusMeasure {q a b : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (ha : -1<a) (hb : -1<b) : HasFiniteMoments (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ a b) :=
  fun p ↦ (hasFiniteMoments_zernikeAnnulusProductMeasure hq ha hb p).smul_measure
    ENNReal.ofReal_ne_top
source

Let \(q=\rho ^2\in (0,1)\), \(t=(1-q)^{-1}\), \(a,b{\gt}-1\), and let \(Q_k\) denote the positive orthonormal semiclassical family with parameters \((t,a,b,m)\). The radial annular polynomials \(A_{k,m}(s)=Q_k(t(1-s))\) satisfy

\[ \int _q^1(1-s)^a(s-q)^b s^m A_{k,m}(s)A_{\ell ,m}(s)\, ds = t^{-(a+b+m+1)}\delta _{k\ell }. \]

Thus the angular frequency is the third semiclassical parameter. Here \(s=r^2\); the full planar pairing additionally has the area factor \(1/2\) and the angular pairing. The exact change-of-variables theorem also applies to every integrable real input for the semiclassical measure. The transported weighted integrand is integrable on \((q,1)\), and its integral is multiplied by \(t^{a+b+m+1}\). This includes integrable endpoint singularities, separately from the polynomial orthogonality specialization.

Reference: [PGSO24, Section 4].

Lean Formalisation
theorem Polynomial.semiclassicalJacobiWeight_annulus (q : ↑(Set.Ioo 0 1)) (a b : ℝ) (m : ℕ) (s : ↑(Set.Ioo (↑q) 1)) :
  ↑((Polynomial.semiclassicalJacobiWeight ⟨Polynomial.annulusParameter ⟨↑q, ⋯⟩, ⋯⟩ a b ↑m)
        ⟨Polynomial.annulusParameter ⟨↑q, ⋯⟩ * (1 - ↑s), ⋯⟩) =
    Polynomial.annulusParameter ⟨↑q, ⋯⟩ ^ (a + b + ↑m) * ((1 - ↑s) ^ a * (↑s - ↑q) ^ b * ↑s ^ m)
Lean proof
/-- The annular weight identity evaluated at a typed interior squared radius. -/
theorem semiclassicalJacobiWeight_annulus (q : Ioo (0 : ℝ) 1) (a b : ℝ) (m : ℕ)
    (s : Ioo (q : ℝ) 1) :
    (semiclassicalJacobiWeight ⟨annulusParameter ⟨q, ne_of_lt q.property.2⟩, one_lt_annulusParameter q.property⟩ a b m
      ⟨annulusParameter ⟨q, ne_of_lt q.property.2⟩ * (1 - (s : ℝ)), by
        have ht : 0 < annulusParameter ⟨q, ne_of_lt q.property.2⟩ := lt_trans zero_lt_one (one_lt_annulusParameter q.property)
        have he := annulusParameter_mul q (ne_of_lt q.property.2)
        constructor
        · exact mul_pos ht (sub_pos.mpr s.property.2)
        · nlinarith [mul_pos ht (sub_pos.mpr s.property.1)]⟩ : ℝ) =
      (annulusParameter ⟨q, ne_of_lt q.property.2⟩) ^ (a + b + (m : ℝ)) *
        ((1 - (s : ℝ)) ^ a * ((s : ℝ) - q) ^ b * (s : ℝ) ^ m) := by
  exact semiclassicalJacobiWeight_annulus_rpow q.property a b m s.property
source
Formal details: Annular squared-radius integrand and related results
Definition 5.4.10 Annular squared-radius integrand
✓ 🤖

For \(0{\lt}q{\lt}1\), \(a,b{\gt}-1\) and a Cartesian polynomial \(p\), define the function \(B_{q,a,b,p}(s)=(1-s)^a(s-q)^bJ_p(s)\) on \(s\in (q,1)\).

Lean Formalisation
def MvPolynomial.zernikeAnnulusSquaredRadiusInput (q : ↑(Set.Ioo 0 1)) (a b : ↑(Set.Ioi (-1)))
  (p : MvPolynomial (Fin 2) ℝ) : MeasureTheory.IntegrableInput MeasureTheory.volume
Lean definition
/-- The annular squared-radius density, with integrability and strictly positive weight bases. -/
noncomputable def zernikeAnnulusSquaredRadiusInput (q : Ioo (0 : ℝ) 1)
    (a b : Ioi (-1 : ℝ)) (p : MvPolynomial (Fin 2) ℝ) :
    IntegrableInput (volume : Measure (Ioo (q : ℝ) 1)) :=
  ⟨fun s : Ioo (q : ℝ) 1 => (1-(s : ℝ))^(a : ℝ)*((s : ℝ)-q)^(b : ℝ) *
      ∫ θ, (zernikeAngularInput p
        (NNReal.mk s (le_trans q.property.1.le s.property.1.le))).val θ
        ∂volume.restrict (Ioo (-Real.pi) Real.pi), integrable_zernikeAnnulusSquaredRadius_formula q a b p⟩
source
Theorem 5.4.11 Annular radial integrability
✓ 🤖

The function \(B_{q,a,b,p}\) is integrable on \((q,1)\), including admissible singularities at either boundary.

Lean Formalisation
theorem MvPolynomial.zernikeAnnulusSquaredRadiusInput_integrable (q : ↑(Set.Ioo 0 1)) (a b : ↑(Set.Ioi (-1)))
  (p : MvPolynomial (Fin 2) ℝ) :
  MeasureTheory.Integrable (↑(MvPolynomial.zernikeAnnulusSquaredRadiusInput q a b p)) MeasureTheory.volume
Lean proof
/-- Admissible annular radial inputs have a classical integral. -/
theorem zernikeAnnulusSquaredRadiusInput_integrable (q : Ioo (0 : ℝ) 1)
    (a b : Ioi (-1 : ℝ)) (p : MvPolynomial (Fin 2) ℝ) :
    Integrable (zernikeAnnulusSquaredRadiusInput q a b p).val volume :=
  (zernikeAnnulusSquaredRadiusInput q a b p).integrable
source

For \(q\in (0,1)\) and \(a,b{\gt}-1\), the standard annular measure satisfies, for every Cartesian polynomial \(p\),

\[ \int p\, d\mu =\frac12\int _q^1(1-s)^a(s-q)^b \int _{-\pi }^{\pi }p(\sqrt{s}\cos \theta ,\sqrt{s}\sin \theta )\, d\theta \, ds. \]

The real modes \(Q_k^{(t,a,b,m)}(t(1-r^2))H_m\), with \(t=(1-q)^{-1}\) and \(H_m=r^m\cos (m\theta )\) or \(r^m\sin (m\theta )\), are mutually orthogonal. Exclude the zero sine mode. Their squared norms are \(\frac12t^{-(a+b+m+1)}c_m\), with \(c_0=2\pi \) and \(c_m=\pi \) for \(m{\gt}0\). In the established disk ordering, modes of total degree at most \(N\) form a complete basis of that polynomial space. Positive normalization gives identity Gram matrices.

Reference: [PGSO24, Definition 4.1 and Proposition 4.2].

Lean Formalisation
theorem MvPolynomial.integral_zernikeAnnulusMeasure_squaredRadius {q a b : ℝ} (hq : q ∈ Set.Ioo 0 1) (ha : -1 < a) (hb : -1 < b)
  (p : MvPolynomial (Fin 2) ℝ) :
  ∫ (v : Fin 2 → ℝ), (MvPolynomial.eval v) p ∂MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ a b =
    1 / 2 * ∫ (s : ↑(Set.Ioo q 1)), ↑(MvPolynomial.zernikeAnnulusSquaredRadiusInput ⟨q, hq⟩ ⟨a, ha⟩ ⟨b, hb⟩ p) s
Lean proof
/-- The classical annular density formula, including admissible endpoint singularities. -/
theorem integral_zernikeAnnulusMeasure_squaredRadius {q a b : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (ha : -1 < a) (hb : -1 < b) (p : MvPolynomial (Fin 2) ℝ) :
    ∫ v, eval v p ∂zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ a b =
      (1/2 : ℝ)*∫ s : Ioo q 1,
        (zernikeAnnulusSquaredRadiusInput ⟨q,hq⟩ ⟨a,ha⟩ ⟨b,hb⟩ p).val s := by
  obtain ⟨f,hf,hM⟩ := annulusProduct_classical_input ⟨q,hq⟩ ⟨a,ha⟩ ⟨b,hb⟩ p
  have ht : 0 < annulusParameter ⟨q,ne_of_lt hq.2⟩ :=
    lt_trans zero_lt_one (one_lt_annulusParameter hq)
  have he := annulusParameter_mul q (ne_of_lt hq.2)
  have hi := integral_semiclassicalJacobiMeasure_annulus ⟨q,hq⟩ a b 0
    ⟨f.val,by simpa only [Nat.cast_zero] using f.property⟩
  simp only [Nat.cast_zero, add_zero, pow_zero, mul_one] at hi
  rw [zernikeAnnulusMeasure, integral_smul_measure,
    ENNReal.toReal_ofReal (by positivity), smul_eq_mul, hM, hi,
    ← mul_assoc, mul_assoc (1/2 : ℝ), inv_mul_cancel₀ (by positivity), mul_one]
  congr 1
  apply integral_congr_ae
  filter_upwards [] with s
  have hx : annulusParameter ⟨q,ne_of_lt hq.2⟩*(1-(s : ℝ)) ∈ Ioo (0 : ℝ) 1 := by
    constructor
    · exact mul_pos ht (sub_pos.mpr s.property.2)
    · nlinarith [mul_pos ht (sub_pos.mpr s.property.1)]
  have hv := hf ⟨_,hx⟩
  simp only [mul_div_cancel_left₀ _ ht.ne', sub_sub_cancel] at hv
  rw [hv]
  rfl
source
Theorem 5.4.13 Annular area measure
✓ 🤖

For \(0{\lt}q{\lt}1\), let \(\Omega _q=\{ (x,y):q{\lt}x^2+y^2{\lt}1\} \). The unweighted annular measure is exactly planar Lebesgue measure restricted to \(\Omega _q\):

\[ \mu _{q,0,0}=\left.\mathrm{vol}_2\right|_{\Omega _q}. \]

This is equality of measures, hence applies to arbitrary measurable functions and their \(L^2\) classes, not only to polynomial integrands.

Lean Formalisation
theorem MvPolynomial.zernikeAnnulusMeasure_zero_zero_eq_volume {q : ℝ} (hq : q ∈ Set.Ioo 0 1) :
  MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0 =
    MeasureTheory.volume.restrict {v | q < v 0 ^ 2 + v 1 ^ 2 ∧ v 0 ^ 2 + v 1 ^ 2 < 1}
Lean proof
/-- The unweighted annular polar measure equals planar Lebesgue measure on the open annulus
(Papadopoulos–Gutleb–Slevinsky–Olver, Section 4). -/
theorem zernikeAnnulusMeasure_zero_zero_eq_volume {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1) :
    zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0 =
      volume.restrict {v : Fin 2 → ℝ | q < v 0^2+v 1^2 ∧ v 0^2+v 1^2 < 1} := by
  let e : (ℝ × ℝ) ≃ᵐ (Fin 2 → ℝ) := MeasurableEquiv.finTwoArrow.symm
  let t : Ioi (1 : ℝ) := ⟨Polynomial.annulusParameter ⟨q,ne_of_lt hq.2⟩,
    Polynomial.one_lt_annulusParameter hq⟩
  have he := (volume_preserving_finTwoArrow ℝ).symm
  have hset : MeasurableSet {v : Fin 2 → ℝ | q < v 0^2+v 1^2 ∧ v 0^2+v 1^2 < 1} := by
    have hc : Continuous (fun v : Fin 2 → ℝ ↦ v 0^2+v 1^2) := by fun_prop
    exact (isOpen_lt continuous_const hc).measurableSet.inter
      (isOpen_lt hc continuous_const).measurableSet
  have hm := (he.restrict_preimage hset).map_eq
  have h := congrArg (Measure.map e)
    (safeArea_map_measure t)
  rw [Measure.map_smul _ e.measurable.aemeasurable,
    Measure.map_map e.measurable (measurable_safeAreaChart t)] at h
  have hs : Polynomial.semiclassicalJacobiMeasure ⟨2, by norm_num⟩ 0 0 0 =
      volume.restrict (Ioo (0 : ℝ) 1) := by
    have hw : Polynomial.semiclassicalJacobiWeight ⟨2,by norm_num⟩ 0 0 0 = 1 := by
      ext x
      simp [Polynomial.semiclassicalJacobiWeight_apply]
    change openIntervalWeightMeasure 0 1 _ = _
    rw [hw]
    simp only [openIntervalWeightMeasure, ContinuousMap.one_apply, ENNReal.coe_one]
    change Measure.map Subtype.val (volume.withDensity 1) = _
    rw [withDensity_one]
    exact map_comap_subtype_coe measurableSet_Ioo volume
  rw [zernikeAnnulusMeasure, safeArea_product_measure ⟨q,hq⟩, hs, Measure.prod_restrict]
  simp only [zero_add, add_zero, Real.rpow_one]
  rw [mul_comm (1/2 : ℝ), one_div, ← div_eq_mul_inv]
  rw [← Measure.volume_eq_prod, h]
  convert hm using 1
  simp [e, t, Polynomial.annulusParameter]
source
Reference details: Annular polynomial lift and related results
Definition 5.4.14 Annular polynomial lift
✓ 🤖

For \(q\ne 1\) and a real angular harmonic \(H_m\), the linear lift sends \(p\) to \(L_mp=p(t(q)(1-x^2-y^2))H_m(x,y)\).

Lean Formalisation
def MvPolynomial.annulusLift (q : { q // q ≠ 1 }) (u : Bool) (m : ℕ) : Polynomial ℝ →ₗ[ℝ] MvPolynomial (Fin 2) ℝ
Lean definition
/-- Lift a semiclassical polynomial through the annular affine coordinate and angular harmonic. -/
noncomputable def annulusLift (q : {q : ℝ // q ≠ 1}) (u : Bool) (m : ℕ) :
    Polynomial ℝ →ₗ[ℝ] MvPolynomial (Fin 2) ℝ where
  toFun p := diskRadialLift u (p.comp (Polynomial.C (annulusParameter q)*(1-Polynomial.X))) m
  map_add' p z := by
    cases u <;> simp [diskRadialLift, Polynomial.add_comp, Polynomial.eval₂_add, add_mul]
  map_smul' c p := by
    cases u <;> simp [diskRadialLift, Polynomial.smul_eq_C_mul, Polynomial.mul_comp,
      Polynomial.eval₂_mul, MvPolynomial.smul_eq_C_mul, mul_assoc]
source
Theorem 5.4.15 Lift of the semiclassical basis
✓ 🤖

Let \(0{\lt}q{\lt}1\), \(a,b{\gt}-1\), and let \(p_n\) be the semiclassical basis polynomial with parameters \((t(q),a,b,m)\). For either the cosine or sine angular harmonic \(H_m\), its lift is

\[ L_mp_n(x,y)=p_n\bigl(t(q)(1-x^2-y^2)\bigr)H_m(x,y), \]

which is the annular mode with radial index \(n\) and angular harmonic \(H_m\).

Lean Formalisation
theorem MvPolynomial.annulusLift_basis {q a b : ℝ} (hq : q ∈ Set.Ioo 0 1) (ha : -1 < a) (hb : -1 < b) (u : Bool) (k m : ℕ) :
  (MvPolynomial.annulusLift ⟨q, ⋯⟩ u m) ((Polynomial.semiclassicalJacobiBasis ⋯ ha hb ↑m) k) =
    MvPolynomial.zernikeAnnulusMode hq ha hb u k m
Lean proof
/-- The established annular modes are the images of the semiclassical basis. -/
theorem annulusLift_basis {q a b : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (ha : -1<a) (hb : -1<b) (u : Bool) (k m : ℕ) :
    annulusLift ⟨q,ne_of_lt hq.2⟩ u m (semiclassicalJacobiBasis (one_lt_annulusParameter hq) ha hb m k) =
      zernikeAnnulusMode hq ha hb u k m := by
  simp [annulusLift, semiclassicalJacobiBasis_apply, zernikeAnnulusMode, zernikeAnnulusRadial]
source

5.4.2 Sparse operators and boundary conditions

Within any fixed real angular sector, the semiclassical connection from \((a,b,m)\) to \((a',b',m)\) reconstructs exactly the same Cartesian annular polynomial from finite radial coefficients. Thus conversion preserves angular phase and frequency. For nonnegative integer endpoint shifts \((r,s)\), its entry in radial row \(\ell \) and column \(k\) vanishes unless \(\ell \le k\le \ell +r+s\). The modes use the raw annular normalization with orthonormal semiclassical radial factors.

Reference: [PGSO24, Section 4.1].

Lean Formalisation
theorem MvPolynomial.annulus_conversion_coefficientMap_exact {q a b a' b' : ℝ} (hq : q ∈ Set.Ioo 0 1) (ha : -1 < a)
  (hb : -1 < b) (ha' : -1 < a') (hb' : -1 < b') (u : Bool) (m : ℕ) (v : ℕ →₀ ℝ) :
  (MvPolynomial.annulusLift ⟨q, ⋯⟩ u m)
      ((Polynomial.semiclassicalJacobiBasis ⋯ ha' hb' ↑m).repr.symm
        (((Polynomial.semiclassicalJacobiBasis ⋯ ha hb ↑m).coefficientMap
            (Polynomial.semiclassicalJacobiBasis ⋯ ha' hb' ↑m) LinearMap.id)
          v)) =
    (MvPolynomial.annulusLift ⟨q, ⋯⟩ u m) ((Polynomial.semiclassicalJacobiBasis ⋯ ha hb ↑m).repr.symm v)
Lean proof
/-- Changing radial parameters reconstructs the very same Cartesian polynomial. -/
theorem annulus_conversion_coefficientMap_exact {q a b a' b' : ℝ}
    (hq : q ∈ Ioo (0 : ℝ) 1) (ha : -1<a) (hb : -1<b)
    (ha' : -1<a') (hb' : -1<b') (u : Bool) (m : ℕ) (v : ℕ →₀ ℝ) :
    annulusLift ⟨q,ne_of_lt hq.2⟩ u m ((semiclassicalJacobiBasis (one_lt_annulusParameter hq) ha' hb' m).repr.symm
      ((semiclassicalJacobiBasis (one_lt_annulusParameter hq) ha hb m).coefficientMap
        (semiclassicalJacobiBasis (one_lt_annulusParameter hq) ha' hb' m) LinearMap.id v)) =
      annulusLift ⟨q,ne_of_lt hq.2⟩ u m ((semiclassicalJacobiBasis (one_lt_annulusParameter hq) ha hb m).repr.symm v) := by
  rw [Basis.repr_symm_coefficientMap, LinearMap.id_apply]
source

The convention here uses the raw annular modes with orthonormal semiclassical radial factors; their planar norms are given above.

For each angular frequency \(m\), the Cartesian annular Laplacian is represented by

\[ L_{t,m}p=4t\bigl((t-x)p''-(m+1)p'\bigr)=4tD_cDp, \]

from radial parameters \((a,b,m)\) to \((a+2,b+2,m)\). It preserves angular phase and frequency. Column \(k\) has support only in radial rows \(k-1,k-2,k-3\); negative rows are absent. Acting on finite coefficients and then reconstructing the Cartesian polynomial agrees exactly with applying the Cartesian Laplacian.

Reference: [PGSO24, Proposition 4.5, equation (4.13)].

Lean Formalisation
theorem Polynomial.semiclassicalJacobiAnnularLaplacian_eq_zero {t α β : ℝ} (ht : 1 < t) (hα : -1 < α) (hβ : -1 < β) (γ : ℝ)
  (hα2 : -1 < α + 1 + 1) (hβ2 : -1 < β + 1 + 1) (n j : ℕ) (hgap : n ≤ j ∨ j + 3 < n) :
  Polynomial.semiclassicalJacobiAnnularLaplacian ht hα hβ γ hα2 hβ2 j n = 0
Lean proof
/-- Only the three upper diagonals n-1, n-2, n-3 can be nonzero. -/
theorem semiclassicalJacobiAnnularLaplacian_eq_zero {t α β : ℝ} (ht : 1<t)
    (hα : -1<α) (hβ : -1<β) (γ : ℝ)
    (hα2 : -1<(α+1)+1) (hβ2 : -1<(β+1)+1) (n j : ℕ)
    (hgap : n≤j ∨ j+3<n) :
    semiclassicalJacobiAnnularLaplacian ht hα hβ γ hα2 hβ2 j n = 0 := by
  have hα1 : -1<α+1 := by linarith
  have hβ1 : -1<β+1 := by linarith
  let b := semiclassicalJacobiBasis ht hα hβ γ
  let c := semiclassicalJacobiBasis ht hα1 hβ1 (γ+1)
  let d := semiclassicalJacobiBasis ht hα2 hβ2 γ
  let v := c.repr (b n).derivative
  have hz : (c.coefficientMap d (semiclassicalJacobiCWeightedDerivativeMap t γ) v) j = 0 := by
    rw [Basis.coefficientMap_apply]
    change ∑ k ∈ v.support, _ = 0
    apply Finset.sum_eq_zero
    intro k hk
    dsimp only
    by_cases h : n≤k ∨ k+2<n
    · have hv : v k=0 := by
        simpa only [v, b, c, semiclassicalJacobiBasis_apply, semiclassicalJacobiDerivative,
          Basis.toMatrix_apply] using
          semiclassicalJacobiDerivative_eq_zero ht hα hβ γ hα1 hβ1 n k h
      rw [hv, mul_zero]
    · have hm : d.toMatrix (fun k ↦ semiclassicalJacobiCWeightedDerivativeMap t γ (c k)) j k=0 := by
        simpa only [c, d, semiclassicalJacobiBasis_apply, semiclassicalJacobiCWeightedDerivative,
          Basis.toMatrix_apply] using
          semiclassicalJacobiCWeightedDerivative_eq_zero ht hα1 hβ1 γ hα2 hβ2 k j (by omega)
      rw [hm, zero_mul]
  rw [semiclassicalJacobiAnnularLaplacian, Basis.toMatrix_apply]
  simp only [semiclassicalJacobiAnnularLaplacianMap, LinearMap.smul_apply, LinearMap.comp_apply]
  rw [← semiclassicalJacobiBasis_apply ht hα hβ γ n]
  change d.repr ((4*t) • semiclassicalJacobiCWeightedDerivativeMap t γ (b n).derivative) j=0
  simp only [map_smul, Finsupp.coe_smul, Pi.smul_apply, smul_eq_mul]
  have he : c.coefficientMap d (semiclassicalJacobiCWeightedDerivativeMap t γ) v =
      d.repr (semiclassicalJacobiCWeightedDerivativeMap t γ (b n).derivative) := by
    simp [Basis.coefficientMap, v]
  rw [← he, hz, mul_zero]
source

This is an algebraic operator identity; no boundary-value well-posedness or solver convergence is asserted here.

For the Dirichlet problem, the finite systems are Galerkin systems for an energy inner product. They are definite, hence uniquely solvable at every size, and they give the best approximation in energy. Completing the polynomials in that energy turns this into convergence of the actual coefficient solves, within each angular sector.

Reference details: Nondegenerate annular Dirichlet weight and related results
Definition 5.4.18 Nondegenerate annular Dirichlet weight
✓ 🤖
#

For \(t\in \mathbb R\setminus \{ 0\} \), define the polynomial \(W_t(X)=t^{-2}X(1-X)\).

Lean Formalisation
def Polynomial.annularDirichletWeight (t : { t // t ≠ 0 }) : Polynomial ℝ
Lean definition
/-- The physical boundary factor in semiclassical coordinates. -/
noncomputable def annularDirichletWeight (t : {t : ℝ // t ≠ 0}) : ℝ[X] := C ((t : ℝ)⁻¹^2)*(X*(1-X))
source
Theorem 5.4.19 Evaluation of the annular Dirichlet weight
✓ 🤖

For \(t\ne 0\) and every real \(x\), \(W_t(x)=t^{-2}x(1-x)\).

Lean Formalisation
theorem Polynomial.eval_annularDirichletWeight (t : { t // t ≠ 0 }) (x : ℝ) :
  Polynomial.eval x (Polynomial.annularDirichletWeight t) = (↑t)⁻¹ ^ 2 * (x * (1 - x))
Lean proof
/-- Classical evaluation of the nondegenerate boundary factor. -/
theorem eval_annularDirichletWeight (t : {t : ℝ // t ≠ 0}) (x : ℝ) :
    (annularDirichletWeight t).eval x = (t : ℝ)⁻¹^2 * (x*(1-x)) := by
  simp only [annularDirichletWeight, eval_mul, eval_C, eval_sub, eval_one, eval_X]
source
Definition 5.4.20 Nondegenerate radial Dirichlet operator
✓ 🤖

For \(t\in \mathbb R\setminus \{ 0\} \) and \(\gamma \in \mathbb R\), set \(Ep=(X(1-X)p)'\) and \(A_{t,\gamma }p=(4/t)((t-X)(Ep)'-(\gamma +1)Ep)\). These are linear maps on real polynomials.

Lean Formalisation
def Polynomial.semiclassicalJacobiABWeightedDerivativeMap : Polynomial ℝ →ₗ[ℝ] Polynomial ℝ
Lean definition
/-- Differentiate after inserting both endpoint zeros. -/
noncomputable def semiclassicalJacobiABWeightedDerivativeMap : ℝ[X] →ₗ[ℝ] ℝ[X] :=
  derivative.comp (LinearMap.mulLeft ℝ (X*(1-X)))
source
Theorem 5.4.21 Radial Dirichlet operator characterization
✓ 🤖

For \(t\ne 0\), \(Ep=X(1-X)p'+(1-2X)p\), and \(A_{t,\gamma }p=L_{t,\gamma }(W_tp)\), where \(L_{t,\gamma }\) is the radial Laplacian.

Lean Formalisation
theorem Polynomial.semiclassicalJacobiABWeightedDerivativeMap_apply (p : Polynomial ℝ) :
  Polynomial.semiclassicalJacobiABWeightedDerivativeMap p =
    Polynomial.X * (1 - Polynomial.X) * Polynomial.derivative p + (1 - 2 * Polynomial.X) * p
Lean proof
/-- Explicit action of endpoint-weighted differentiation. -/
theorem semiclassicalJacobiABWeightedDerivativeMap_apply (p : ℝ[X]) :
    semiclassicalJacobiABWeightedDerivativeMap p = X*(1-X)*p.derivative+(1-2*X)*p := by
  simp [semiclassicalJacobiABWeightedDerivativeMap, derivative_mul]
  ring
source

Let \(t{\gt}1\) and \(\gamma \in \mathbb R\). Set \(S(x)=x(1-x)\), \(Ep=(Sp)'\), and

\[ A p=\frac4t\bigl((t-x)(Ep)'-(\gamma +1)Ep\bigr). \]

Then \(A p=L_{t,\gamma }(t^{-2}Sp)\), with the radial Laplacian expression above. In the semiclassical pairings,

\[ \langle Ap,z\rangle _{1,1,\gamma } =-\frac4t\langle Ep,Ez\rangle _{0,0,\gamma +1}. \]

Thus this form is symmetric, and \(\langle Ap,p\rangle _{1,1,\gamma }{\lt}0\) for \(p\ne 0\). In particular, \(A\) is injective on polynomials.

Lean Formalisation
theorem Polynomial.integralInner_semiclassicalJacobi_dirichlet {t : ℝ} (ht : 1 < t) (γ : ℝ) (p q : Polynomial ℝ) :
  Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ 1 1 γ)
      (Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ 1 1 γ)
        ((Polynomial.semiclassicalJacobiDirichletMap ⟨t, ⋯⟩ γ) p) q ⋯) =
    -(4 / t) *
      Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ 0 0 (γ + 1))
        (Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ 0 0 (γ + 1))
          (Polynomial.semiclassicalJacobiABWeightedDerivativeMap p)
          (Polynomial.semiclassicalJacobiABWeightedDerivativeMap q) ⋯)
Lean proof
/-- Integration by parts expresses the weighted Laplacian as a negative derivative Gram form. -/
theorem integralInner_semiclassicalJacobi_dirichlet {t : ℝ} (ht : 1<t)
    (γ : ℝ) (p q : ℝ[X]) :
    integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 1 1 γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 1 1 γ) (semiclassicalJacobiDirichletMap ⟨t,ne_of_gt (lt_trans zero_lt_one ht)⟩ γ p) q) =
      -(4/t)*integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 0 0 (γ+1)) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 0 0 (γ+1)) (semiclassicalJacobiABWeightedDerivativeMap p) (semiclassicalJacobiABWeightedDerivativeMap q)) := by
  have he := integralInner_semiclassicalJacobi_cWeightedDerivative
    (α := 0) (β := 0) (γ := γ) ht (by norm_num) (by norm_num)
    (semiclassicalJacobiABWeightedDerivativeMap p) q
  simp only [integralInner, zero_add, C_1, one_mul] at he
  have hq : X*(1-X)*q.derivative+((1-X)-X)*q =
      semiclassicalJacobiABWeightedDerivativeMap q := by
    rw [semiclassicalJacobiABWeightedDerivativeMap_apply]
    ring
  rw [hq] at he
  change integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 1 1 γ)
    ((hasFiniteMoments_semiclassicalJacobiMeasure_one_one ht).pair
      ((4/t) • semiclassicalJacobiCWeightedDerivativeMap t γ (semiclassicalJacobiABWeightedDerivativeMap p)) q) = _
  rw [integralInner_smul_left (h := (hasFiniteMoments_semiclassicalJacobiMeasure_one_one ht).integrable_mul _ _)]
  simp only [integralInner]
  rw [he]
  ring
source

In the positive orthonormal semiclassical basis with parameters \((t,1,1,\gamma )\), the actual coefficient matrix of \(A\) is symmetric and tridiagonal: entry \((i,j)\) vanishes if \(j+1{\lt}i\) or \(i+1{\lt}j\). Its coefficient action is exact on finite expansions. Multiplication by the physical boundary factor \(t^{-2}x(1-x)\) has a symmetric pentadiagonal coefficient matrix: entry \((i,j)\) vanishes if \(j+2{\lt}i\) or \(i+2{\lt}j\). The mass pairing is strictly positive on nonzero polynomials.

Lean Formalisation
theorem Polynomial.semiclassicalJacobiDirichletMatrix_symm {t : ℝ} (ht : 1 < t) (γ : ℝ) (i j : ℕ) :
  Polynomial.semiclassicalJacobiDirichletMatrix ht γ i j = Polynomial.semiclassicalJacobiDirichletMatrix ht γ j i
Lean proof
/-- The actual coefficient entries are symmetric. -/
theorem semiclassicalJacobiDirichletMatrix_symm {t : ℝ} (ht : 1<t) (γ : ℝ) (i j : ℕ) :
    semiclassicalJacobiDirichletMatrix ht γ i j =
      semiclassicalJacobiDirichletMatrix ht γ j i := by
  simp only [semiclassicalJacobiDirichletMatrix, Basis.toMatrix_apply,
    semiclassicalJacobiBasis_repr]
  exact integralInner_semiclassicalJacobi_dirichlet_symm ht γ _ _
source

These support bounds do not assert that every permitted entry is nonzero.

Reference details: Boundary-vanishing annular lift and related results
Definition 5.4.24 Boundary-vanishing annular lift
✓ 🤖

For \(q\ne 1\), write \(B_q=(1-x^2-y^2)(x^2+y^2-q)\). Define the boundary-weighted lift by \(p\mapsto B_qL_mp\).

Lean Formalisation
def MvPolynomial.annulusBoundaryWeight (q : ℝ) : MvPolynomial (Fin 2) ℝ
Lean definition
/-- The polynomial vanishing on both boundary circles of the annulus. -/
noncomputable def annulusBoundaryWeight (q : ℝ) : MvPolynomial (Fin 2) ℝ :=
  (1-(X 0^2+X 1^2))*((X 0^2+X 1^2)-C q)
source
Theorem 5.4.25 Boundary values of the weighted lift
✓ 🤖

Every lifted polynomial \(B_qL_mp\) vanishes at each real point satisfying \(x^2+y^2=q\) or \(x^2+y^2=1\).

Lean Formalisation
theorem MvPolynomial.eval_annulusDirichletLift_eq_zero (q : { q // q ≠ 1 }) (u : Bool) (m : ℕ) (p : Polynomial ℝ)
  (v : Fin 2 → ℝ) (hv : v 0 ^ 2 + v 1 ^ 2 = ↑q ∨ v 0 ^ 2 + v 1 ^ 2 = 1) :
  (MvPolynomial.eval v) ((MvPolynomial.annulusDirichletLift ⟨↑q, ⋯⟩ u m) p) = 0
Lean proof
/-- Every polynomial synthesized with the boundary factor satisfies both Dirichlet conditions. -/
theorem eval_annulusDirichletLift_eq_zero (q : {q : ℝ // q ≠ 1}) (u : Bool) (m : ℕ) (p : Polynomial ℝ)
    (v : Fin 2 → ℝ) (hv : v 0^2+v 1^2=q ∨ v 0^2+v 1^2=1) :
    eval v (annulusDirichletLift ⟨q,q.property⟩ u m p)=0 := by
  change eval v (annulusBoundaryWeight q * annulusLift ⟨q,q.property⟩ u m p)=0
  rw [map_mul, eval_annulusBoundaryWeight_eq_zero q v hv, zero_mul]
source

Let \(q\in (0,1)\) and \(t=(1-q)^{-1}\). For every radial polynomial \(p\) and either real solid harmonic \(H_m\), define

\[ W_p=(1-r^2)(r^2-q)\, p(t(1-r^2))H_m. \]

This polynomial vanishes on both circles \(r^2=q\) and \(r^2=1\), and

\[ \Delta W_p=(Ap)(t(1-r^2))H_m,\qquad \gamma =m. \]

Hence each angular sector has the symmetric tridiagonal Dirichlet block and pentadiagonal mass block above. The corresponding finite-coefficient operations reconstruct these Cartesian polynomial identities exactly, with no coupling of angular frequency or phase.

Reference: [PGSO24, Proposition 4.6, equation (4.15)].

Lean Formalisation
theorem Polynomial.annularDirichletWeight_comp {q : ℝ} (hq : q ∈ Set.Ioo 0 1) :
  (Polynomial.annularDirichletWeight ⟨Polynomial.annulusParameter ⟨q, ⋯⟩, ⋯⟩).comp
      (Polynomial.C (Polynomial.annulusParameter ⟨q, ⋯⟩) * (1 - Polynomial.X)) =
    (1 - Polynomial.X) * (Polynomial.X - Polynomial.C q)
Lean proof
/-- The semiclassical boundary factor is exactly the physical annular boundary factor. -/
theorem annularDirichletWeight_comp {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1) :
    (annularDirichletWeight ⟨annulusParameter ⟨q,ne_of_lt hq.2⟩,annulusParameter_ne_zero _⟩).comp (C (annulusParameter ⟨q,ne_of_lt hq.2⟩)*(1-X)) =
      (1-X)*(X-C q) := by
  apply Polynomial.funext
  intro s
  have hq1 : 1-q≠0 := by linarith [hq.2]
  simp [annularDirichletWeight, annulusParameter]
  field_simp
  ring
source

Finite-section solvability and energy convergence are given in Theorems 5.4.27 and 5.4.32.

5.4.3 Finite systems and Galerkin approximation

For \(t{\gt}1\), real \(\gamma \), and every \(N\ge 0\), the leading \(N\times N\) Dirichlet section \(A_N\) is negative definite, meaning \(-A_N\) is positive definite. The corresponding mass section is positive definite. Both are invertible; in particular, \(A_Nv=g\) has exactly one solution for every finite right-hand side.

Lean Formalisation
theorem Polynomial.neg_semiclassicalJacobiDirichletSection_posDef {t : ℝ} (ht : 1 < t) (γ : ℝ) (N : ℕ) :
  (-Polynomial.semiclassicalJacobiDirichletSection ht γ N).PosDef
Lean proof
/-- Every negative Dirichlet section is positive definite. -/
theorem neg_semiclassicalJacobiDirichletSection_posDef {t : ℝ} (ht : 1<t) (γ : ℝ) (N : ℕ) :
    (-semiclassicalJacobiDirichletSection ht γ N).PosDef := by
  have hM := hasFiniteMoments_semiclassicalJacobiMeasure_one_one (γ := γ) ht
  have hsmul (p q : ℝ[X]) (a : ℝ) := integralInner_smul_left _ p q a
    (h := hM.integrable_mul _ _)
  let b := semiclassicalJacobiBasis ht (by norm_num : (-1 : ℝ)<1)
    (by norm_num : (-1 : ℝ)<1) γ
  have hf := b.linearIndependent.comp (fun i : Fin N ↦ (i : ℕ)) Fin.val_injective
  have h := posDef_integralInner_operator
    (hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ) ht
      (by norm_num : (-1 : ℝ)<1) (by norm_num : (-1 : ℝ)<1))
    ((-1 : ℝ) • semiclassicalJacobiDirichletMap ⟨t,ne_of_gt (lt_trans zero_lt_one ht)⟩ γ) (fun i : Fin N ↦ b i) hf
    (by
      intro p q
      simp only [LinearMap.smul_apply, hsmul]
      rw [integralInner_semiclassicalJacobi_dirichlet_symm ht])
    (by
      intro p hp
      simpa only [LinearMap.smul_apply, hsmul, neg_one_mul] using
        neg_pos.mpr (integralInner_semiclassicalJacobi_dirichlet_neg ht γ hp))
  convert h using 1
  ext i j
  simp only [semiclassicalJacobiDirichletSection, Matrix.submatrix_apply,
    semiclassicalJacobiDirichletMatrix, Basis.toMatrix_apply, semiclassicalJacobiBasis_repr,
    b, semiclassicalJacobiBasis_apply, LinearMap.smul_apply, hsmul,
    neg_one_mul, Matrix.neg_apply, Matrix.of_apply]
source

Example (Julia).

For \(t=2\), that is \(q=1/2\), and angular mode \(\gamma =3\), generate the orthonormal family for \(x(1-x)(t-x)^3\) on \((0,1)\) by the Stieltjes procedure on Gauss–Legendre nodes, together with its first two derivatives. The \(10\times 10\) matrix of \(A\) is symmetric and tridiagonal up to rounding, and negative definite, as Theorems 5.4.23 and 5.4.27 state.

using LinearAlgebra
t, g, N = 2.0, 3.0, 10              # annulus q = 1/2, angular mode 3
n = 120                             # Gauss-Legendre nodes on (0,1)
E = eigen(SymTridiagonal(zeros(n), [k/sqrt(4k^2 - 1) for k in 1:n-1]))
x = (E.values .+ 1) ./ 2
w = E.vectors[1, :].^2 .* x .* (1 .- x) .* (t .- x).^g
# Stieltjes: orthonormal Q_k for x(1-x)(t-x)^g dx, with Q_k', Q_k''
Q, D1, D2, beta = [ones(n) / sqrt(sum(w))], [zeros(n)], [zeros(n)], [0.0]
for k in 0:N
    a = dot(w, x .* Q[end].^2)
    r  = (x .- a) .* Q[end]
    r1 = Q[end] .+ (x .- a) .* D1[end]
    r2 = 2 .* D1[end] .+ (x .- a) .* D2[end]
    if k > 0
        r -= beta[end] .* Q[end-1]
        r1 -= beta[end] .* D1[end-1]
        r2 -= beta[end] .* D2[end-1]
    end
    push!(beta, sqrt(dot(w, r.^2)))
    push!(Q, r / beta[end])
    push!(D1, r1 / beta[end])
    push!(D2, r2 / beta[end])
end
S, S1 = x .* (1 .- x), 1 .- 2x      # S = x(1-x), S'' = -2
E1(j) = S1 .* Q[j] .+ S .* D1[j]    # Ep = (Sp)'
E2(j) = -2 .* Q[j] .+ 2 .* S1 .* D1[j] .+ S .* D2[j]   # (Ep)'
Ap(j) = (4/t) .* ((t .- x) .* E2(j) .- (g + 1) .* E1(j))
A = [dot(w, Ap(j) .* Q[i]) for i in 1:N, j in 1:N]
off = maximum(abs(A[i, j]) for i in 1:N, j in 1:N if abs(i - j) > 1)
(norm(A - A') / norm(A), off / norm(A), maximum(eigvals(Symmetric(A))))
                                    # (~1e-14, ~1e-15, negative)

Let \(V_N\) be the span of the first \(N\) semiclassical polynomials with parameters \((t,1,1,\gamma )\). For polynomial forcing \(f\), the square-section system is exactly

\[ \langle Ap_N-f,z\rangle _{1,1,\gamma }=0\qquad (z\in V_N). \]

There is exactly one coefficient vector solving these equations. If the exact radial solution already belongs to \(V_N\), the finite system recovers its coefficients. This is residual orthogonality, not an assertion that the full polynomial residual vanishes for arbitrary forcing.

Lean Formalisation
theorem Polynomial.semiclassicalJacobiDirichletSection_eq_iff_galerkin {t : ℝ} (ht : 1 < t) (γ : ℝ) (N : ℕ) (f : Polynomial ℝ)
  (v : Fin N → ℝ) :
  (Polynomial.semiclassicalJacobiDirichletSection ht γ N).mulVec v =
      Polynomial.semiclassicalJacobiDirichletLoad ht γ N f ↔
    ∀ (w : Fin N → ℝ),
      Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ 1 1 γ)
          (Polynomial.IntegrablePair.of (Polynomial.semiclassicalJacobiMeasure ⟨t, ht⟩ 1 1 γ)
            ((Polynomial.semiclassicalJacobiDirichletMap ⟨t, ⋯⟩ γ)
                (Polynomial.semiclassicalJacobiDirichletTrial ht γ N v) -
              f)
            (Polynomial.semiclassicalJacobiDirichletTrial ht γ N w) ⋯) =
        0
Lean proof
/-- Solving the coefficient system is equivalent to orthogonality of the residual
against every polynomial in the finite trial space. -/
theorem semiclassicalJacobiDirichletSection_eq_iff_galerkin {t : ℝ} (ht : 1<t)
    (γ : ℝ) (N : ℕ) (f : ℝ[X]) (v : Fin N → ℝ) :
    semiclassicalJacobiDirichletSection ht γ N *ᵥ v =
        semiclassicalJacobiDirichletLoad ht γ N f ↔
      ∀ w : Fin N → ℝ, integralInner (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 1 1 γ) (IntegrablePair.of (semiclassicalJacobiMeasure ⟨t, by assumption⟩ 1 1 γ) (semiclassicalJacobiDirichletMap ⟨t,ne_of_gt (lt_trans zero_lt_one ht)⟩ γ (semiclassicalJacobiDirichletTrial ht γ N v)-f) (semiclassicalJacobiDirichletTrial ht γ N w)) = 0 := by
  have hμ := hasFiniteMoments_semiclassicalJacobiMeasure (γ := γ) ht
    (by norm_num : (-1 : ℝ)<1) (by norm_num : (-1 : ℝ)<1)
  have hsmul (p q : ℝ[X]) (a : ℝ) := integralInner_smul_left _ p q a
    (h := hμ.integrable_mul _ _)
  constructor
  · intro h w
    rw [integralInner_comm]
    dsimp only [semiclassicalJacobiDirichletTrial]
    rw [integralInner_sum_left hμ]
    apply Finset.sum_eq_zero
    intro i hi
    have hrow := semiclassicalJacobiDirichletSection_mulVec ht γ N v i
    dsimp only [semiclassicalJacobiDirichletTrial] at hrow
    rw [hsmul, integralInner_comm, integralInner_sub_left hμ,
      ← hrow, congrFun h i]
    simp [semiclassicalJacobiDirichletLoad]
  · intro h
    funext i
    have hi := h (Pi.single i 1)
    simp only [semiclassicalJacobiDirichletTrial_single] at hi
    rw [integralInner_sub_left hμ, ← semiclassicalJacobiDirichletSection_mulVec] at hi
    exact sub_eq_zero.mp hi
source
Reference details: Polynomial energy best approximation

For \(t{\gt}1\) and real \(\gamma \), write \(E(p)=-\langle Ap,p\rangle _{1,1,\gamma }\); finite moments ensure this pairing exists. If \(u\) is a polynomial and \(u_N\in V_N\) solves the Galerkin system with forcing \(Au\), then

\[ E(u-u_N)\le E(u-z)\qquad (z\in V_N). \]

Energy-orthogonal polynomial vectors satisfy the exact Pythagorean identity.

Lean Formalisation
theorem Polynomial.semiclassicalJacobiDirichletEnergy_nonneg {t : ℝ} (ht : 1 < t) (γ : ℝ) (p : Polynomial ℝ) :
  0 ≤ Polynomial.semiclassicalJacobiDirichletEnergy ⟨t, ht⟩ γ p
Lean proof
/-- Dirichlet energy is nonnegative. -/
theorem semiclassicalJacobiDirichletEnergy_nonneg {t : ℝ} (ht : 1<t) (γ : ℝ) (p : ℝ[X]) :
    0 ≤ semiclassicalJacobiDirichletEnergy ⟨t, ht⟩ γ p := by
  by_cases hp : p=0
  · simp [hp, semiclassicalJacobiDirichletEnergy]
  · exact (neg_pos.mpr (integralInner_semiclassicalJacobi_dirichlet_neg ht γ hp)).le
source

5.4.4 Energy convergence and physical realization

Reference details: Annular radial energy completion and related results

For fixed \(t{\gt}1\) and real \(\gamma \), equip radial polynomials with the inner product \((p,z)_E=-\langle Ap,z\rangle _{1,1,\gamma }\) of Theorem 5.4.22, and let \(H_{t,\gamma }\) be its Hilbert completion, with the canonical isometric polynomial embedding \(\iota \). For an annular angular sector, set \(\gamma =m\).

Lean Formalisation
def Polynomial.SemiclassicalJacobiEnergy.PolynomialSpace (_t : ↑(Set.Ioi 1)) (_γ : ℝ) : Type
Lean definition
/-- Radial polynomials with the parameter-dependent Dirichlet energy norm. -/
def PolynomialSpace (_t : Set.Ioi (1 : ℝ)) (_γ : ℝ) := Polynomial ℝ
source

The energy norm satisfies \(\| p\| _E^2=E(p)\). The embedding satisfies \((\iota p,\iota z)=-\langle Ap,z\rangle _{1,1,\gamma }\), and its range is dense in \(H_{t,\gamma }\).

Lean Formalisation
theorem Polynomial.SemiclassicalJacobiEnergy.norm_sq_eq_energy (t : ↑(Set.Ioi 1)) (γ : ℝ)
  (p : Polynomial.SemiclassicalJacobiEnergy.PolynomialSpace t γ) :
  ‖p‖ ^ 2 =
    Polynomial.semiclassicalJacobiDirichletEnergy t γ ((Polynomial.SemiclassicalJacobiEnergy.polynomialEquiv t γ) p)
Lean proof
/-- The norm squared is the proved polynomial Dirichlet energy. -/
theorem norm_sq_eq_energy (t : Set.Ioi (1 : ℝ)) (γ : ℝ) (p : PolynomialSpace t γ) :
    ‖p‖^2 = semiclassicalJacobiDirichletEnergy t γ (polynomialEquiv t γ p) := by
  rw [← real_inner_self_eq_norm_sq]
  rfl
source

The planar Sobolev identification follows after assembling the angular sectors; see Theorem 5.4.57.

Let \(\ell \) be any continuous linear functional on \(H_{t,\gamma }\), and let \(u\) be the unique energy solution \((u,z)_E=\ell (z)\) for every \(z\in H_{t,\gamma }\). Let \(Q_j\) denote the embedded \((t,1,1,\gamma )\) semiclassical trial polynomials. Solve the actual finite Dirichlet system

\[ A_Nv^{(N)}=\bigl(-\ell (Q_i)\bigr)_{i{\lt}N},\qquad u_N=\sum _{j{\lt}N}v_j^{(N)}Q_j. \]

Then \(u_N\) is exactly the energy orthogonal projection of \(u\) onto \(V_N\). Consequently

\[ \| u-u_N\| _E\le \| u-z\| _E\quad (z\in V_N),\qquad \| u_N\| _E\le \| \ell \| ,\qquad u_N\longrightarrow u\text{ in }H_{t,\gamma }. \]

This is radial convergence in a fixed angular sector when \(\gamma =m\).

Lean Formalisation
theorem Polynomial.SemiclassicalJacobiEnergy.trialSpace_eq_span (t : ↑(Set.Ioi 1)) (γ : ℝ) (N : ℕ) :
  Polynomial.SemiclassicalJacobiEnergy.trialSpace t γ N =
    Submodule.span ℝ (Set.range fun i => Polynomial.SemiclassicalJacobiEnergy.basisVector t γ ↑i)
Lean proof
/-- The first N coefficient vectors span exactly the degree-cutoff trial space. -/
theorem trialSpace_eq_span (t : Set.Ioi (1 : ℝ)) (γ : ℝ) (N : ℕ) :
    trialSpace t γ N = Submodule.span ℝ (Set.range (fun i : Fin N ↦ basisVector t γ i)) := by
  let Q := semiclassicalJacobiSequence (gt_one t) (by norm_num : (-1 : ℝ)<1)
    (by norm_num : (-1 : ℝ)<1) γ
  have hs := Q.span_degreeLT (m := N) (fun i hi ↦ isUnit_iff_ne_zero.mpr
    ((semiclassicalJacobiSequence_spec (gt_one t) (by norm_num : (-1 : ℝ)<1)
      (by norm_num : (-1 : ℝ)<1) γ).2.1 i).ne')
  rw [trialSpace, ← hs, Submodule.map_span]
  congr 1
  ext x
  constructor
  · rintro ⟨p, ⟨i, hi, rfl⟩, rfl⟩
    exact ⟨⟨i,hi⟩, by simp only [basisVector, semiclassicalJacobiBasis_apply, Q]⟩
  · rintro ⟨i, rfl⟩
    exact ⟨Q i, ⟨i,i.isLt,rfl⟩, by simp only [basisVector, semiclassicalJacobiBasis_apply, Q]⟩
source

No regularity-dependent convergence rate is asserted here.

Distinct angular sectors are orthogonal in the physical energy, so the sector problems combine. Summing the sector energy spaces gives a completed planar energy space. In it, solving the tridiagonal radial system of Theorem 5.4.23 in each retained sector yields the orthogonal projection onto the joint trial space, and these solves converge as the retained sectors and radial degrees grow together.

Reference details: Annular sector energy scale and related results
Definition 5.4.33 Annular sector energy scale
✓ 🤖
#

For \(q\ne 1\) and an angular mode, set \(\kappa _m=c_m/(2t(q)^{m+3})\), using the natural-number power. Here \(c_m\) is the squared angular norm, with \(c_m=0\) for the zero sine mode.

Lean Formalisation
def MvPolynomial.annulusEnergyScale (q : { q // q ≠ 1 }) (u : Bool) (m : ℕ) : ℝ
Lean definition
/-- The physical scale multiplying the radial energy form in one real angular sector. -/
def annulusEnergyScale (q : {q : ℝ // q ≠ 1}) (u : Bool) (m : ℕ) : ℝ :=
  (1 / 2 : ℝ) * ((annulusParameter ⟨q,q.property⟩) ^ (m + 3))⁻¹ *
    zernikeAngularNormSq u m
source
Theorem 5.4.34 Positivity of the sector energy scale
✓ 🤖

For \(0{\lt}q{\lt}1\), the scale \(\kappa _m\) is positive for every nonzero angular mode.

Lean Formalisation
theorem MvPolynomial.annulusEnergyScale_pos {q : ℝ} (hq : q ∈ Set.Ioo 0 1) (u : Bool) (m : ℕ) (hm : u = true → m ≠ 0) :
  0 < MvPolynomial.annulusEnergyScale ⟨q, ⋯⟩ u m
Lean proof
/-- Every valid real angular sector has strictly positive physical energy scale. -/
theorem annulusEnergyScale_pos {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (u : Bool) (m : ℕ) (hm : u = true → m ≠ 0) : 0 < annulusEnergyScale ⟨q,ne_of_lt hq.2⟩ u m := by
  have ht : 0 < annulusParameter ⟨q,ne_of_lt hq.2⟩ := lt_trans zero_lt_one (one_lt_annulusParameter hq)
  have hang : 0 < zernikeAngularNormSq u m := by
    cases u <;> simp only [zernikeAngularNormSq, Bool.false_eq_true, ↓reduceIte] at *
    · split_ifs <;> positivity
    · simp [hm, Real.pi_pos]
  unfold annulusEnergyScale
  positivity
source

Let \(0{\lt}q{\lt}1\), \(t=(1-q)^{-1}\), and \(B=(1-r^2)(r^2-q)\). For a valid real angular harmonic \(H_m\) (excluding the zero sine mode), set \(L_m p=p(t(1-r^2))H_m\) and

\[ \kappa _m=\frac{c_m}{2t^{m+3}}{\gt}0, \qquad c_0=2\pi \text{ for the constant cosine mode},\quad c_m=\pi \text{ otherwise}. \]

With the unweighted annular measure \(\mu _{q,0,0}\),

\[ -\int \Delta (BL_m p)\, BL_m z\, d\mu _{q,0,0} =\kappa _m(p,z)_{H_{t,m}}. \]

Pairings between distinct real angular sectors vanish.

Lean Formalisation
theorem MvPolynomial.integralInner_annulusLift_dirichletLift {q : ℝ} (hq : q ∈ Set.Ioo 0 1) (u : Bool) (m : ℕ)
  (p z : Polynomial ℝ) :
  MvPolynomial.integralInner (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0)
      (MvPolynomial.IntegrablePair.of (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0)
        ((MvPolynomial.annulusLift ⟨q, ⋯⟩ u m) p) ((MvPolynomial.annulusDirichletLift ⟨q, ⋯⟩ u m) z) ⋯) =
    MvPolynomial.annulusEnergyScale ⟨q, ⋯⟩ u m *
      Polynomial.integralInner (Polynomial.semiclassicalJacobiMeasure ⟨Polynomial.annulusParameter ⟨q, ⋯⟩, ⋯⟩ 1 1 ↑m)
        (Polynomial.IntegrablePair.of
          (Polynomial.semiclassicalJacobiMeasure ⟨Polynomial.annulusParameter ⟨q, ⋯⟩, ⋯⟩ 1 1 ↑m) p z ⋯)
Lean proof
/-- Pairing an unweighted mode with a boundary-weighted mode produces the (1,1,m) measure. -/
theorem integralInner_annulusLift_dirichletLift {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (u : Bool) (m : ℕ) (p z : Polynomial ℝ) :
    integralInner (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (annulusLift ⟨q,ne_of_lt hq.2⟩ u m p) (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m z) (h := (hasFiniteMoments_zernikeAnnulusMeasure hq (by norm_num) (by norm_num)).integrable_mul _ _)) =
      annulusEnergyScale ⟨q,ne_of_lt hq.2⟩ u m *
        Polynomial.integralInner (semiclassicalJacobiMeasure ⟨annulusParameter ⟨q,ne_of_lt hq.2⟩, one_lt_annulusParameter hq⟩ 1 1 m) (Polynomial.IntegrablePair.of (semiclassicalJacobiMeasure ⟨annulusParameter ⟨q,ne_of_lt hq.2⟩, one_lt_annulusParameter hq⟩ 1 1 m) p z (h := (hasFiniteMoments_semiclassicalJacobiMeasure_one_one (γ := (m : ℝ)) (one_lt_annulusParameter hq)).integrable_mul _ _)) := by
  simp only [← annulusLift_dirichletWeight hq]
  change integralInner _ (IntegrablePair.of _ (diskRadialLift u _ m) (diskRadialLift u _ m) (h := (hasFiniteMoments_zernikeAnnulusMeasure hq (by norm_num) (by norm_num)).integrable_mul _ _)) = _
  rw [integralInner_annulusRadialLift_same_angular hq (by norm_num) (by norm_num)]
  have hi := integral_semiclassicalJacobiMeasure_annulus ⟨q,hq⟩ 1 1 m
    ⟨(fun x ↦ p.eval x * z.eval x),
      (hasFiniteMoments_semiclassicalJacobiMeasure_one_one
        (γ := (m : ℝ)) (one_lt_annulusParameter hq)).integrable_mul p z⟩
  have he : (∫ s : Ioo q 1, (1-(s : ℝ))^(0 : ℝ)*((s : ℝ)-q)^(0 : ℝ)*(s : ℝ)^m*
      ((p.comp (Polynomial.C (annulusParameter ⟨q,ne_of_lt hq.2⟩)*(1-Polynomial.X))).eval (s : ℝ) *
        ((annularDirichletWeight ⟨annulusParameter ⟨q,ne_of_lt hq.2⟩,annulusParameter_ne_zero _⟩*z).comp
          (Polynomial.C (annulusParameter ⟨q,ne_of_lt hq.2⟩)*(1-Polynomial.X))).eval (s : ℝ))) =
      ∫ s : Ioo q 1, (1-(s : ℝ))^(1 : ℝ)*((s : ℝ)-q)^(1 : ℝ)*(s : ℝ)^m*
        (p.eval (annulusParameter ⟨q,ne_of_lt hq.2⟩*(1-(s : ℝ)))*z.eval (annulusParameter ⟨q,ne_of_lt hq.2⟩*(1-(s : ℝ)))) := by
    apply integral_congr_ae
    filter_upwards [] with s
    simp only [Polynomial.mul_comp, annularDirichletWeight_comp hq,
      Polynomial.eval_mul, Polynomial.eval_sub, Polynomial.eval_one, Polynomial.eval_X,
      Polynomial.eval_C, Polynomial.eval_comp, Real.rpow_zero, Real.rpow_one]
    ring
  rw [he]
  unfold annulusEnergyScale Polynomial.integralInner
  have hexp : (1 + 1 + (m : ℝ) + 1) = ((m + 3 : ℕ) : ℝ) := by push_cast; ring
  rw [hi, hexp, Real.rpow_natCast]
  have ht : 0 < annulusParameter ⟨q,ne_of_lt hq.2⟩ := lt_trans zero_lt_one (one_lt_annulusParameter hq)
  have hn : (annulusParameter ⟨q,ne_of_lt hq.2⟩) ^ (1 + 1 + (m : ℝ) + 1) ≠ 0 := by positivity
  field_simp
  simp only [mul_comm (annulusParameter ⟨q,ne_of_lt hq.2⟩)]
  ring
source
Definition 5.4.36 Completed angular annular energy space
✓ 🤖

Let \(\mathcal H_q=\bigoplus _{s}^{\ell ^2}H_{t,m(s)}\), indexed by all real cosine and nonzero sine sectors \(s\). A physical polynomial \(BL_{m(s)}p\) embeds into sector \(s\) as \(\sqrt{\kappa _{m(s)}}\, p\).

Lean Formalisation
def MvPolynomial.AnnularEnergy.Sector : Type
Lean definition
/-- Valid real harmonics: all cosine modes and the nonzero sine modes. -/
abbrev Sector := {s : Bool × ℕ // s.1 = true → s.2 ≠ 0}
source

Write \(U_p=BL_{m(s)}p\). The embedding of sector \(s\) preserves the planar negative-Laplacian pairing, \((\iota _sp,\iota _sz)=-\int \Delta U_p\, U_z\, d\mu \), where \(\mu \) is the annular measure with \(a=b=0\). Embeddings of distinct sectors are orthogonal. The finite angular and radial trial spaces have dense union in \(\mathcal H_q\).

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.inner_polynomialEmbed (q : ↑(Set.Ioo 0 1)) (s : MvPolynomial.AnnularEnergy.Sector)
  (p z : Polynomial ℝ) :
  inner ℝ ((MvPolynomial.AnnularEnergy.polynomialEmbed q s) p) ((MvPolynomial.AnnularEnergy.polynomialEmbed q s) z) =
    -MvPolynomial.integralInner (MvPolynomial.zernikeAnnulusMeasure ⟨↑q, ⋯⟩ 0 0)
        (MvPolynomial.IntegrablePair.of (MvPolynomial.zernikeAnnulusMeasure ⟨↑q, ⋯⟩ 0 0)
          ((MvPolynomial.annulusDirichletLift ⟨↑q, ⋯⟩ (↑s).1 (↑s).2) p).diskLaplacian
          ((MvPolynomial.annulusDirichletLift ⟨↑q, ⋯⟩ (↑s).1 (↑s).2) z) ⋯)
Lean proof
/-- In each sector the Hilbert-sum inner product is the exact planar polynomial pairing. -/
theorem inner_polynomialEmbed (q : Set.Ioo (0 : ℝ) 1) (s : Sector) (p z : Polynomial ℝ) :
    inner ℝ (polynomialEmbed q s p) (polynomialEmbed q s z) =
      -integralInner (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (diskLaplacian (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p)) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 z) (h := (hasFiniteMoments_zernikeAnnulusMeasure q.property (by norm_num) (by norm_num)).integrable_mul _ _)) := by
  rw [neg_integralInner_annulusDirichletLaplacian q.property]
  simp only [polynomialEmbed, LinearMap.smul_apply, LinearMap.comp_apply,
    ContinuousLinearMap.coe_coe, sectorEmbed, lp.singleContinuousLinearMap_apply,
    real_inner_smul_left, inner_smul_right, lp.inner_single_left, lp.single_apply,
    Pi.single_eq_same]
  rw [← mul_assoc, ← pow_two, Real.sq_sqrt
    (annulusEnergyScale_pos q.property s.val.1 s.val.2 s.property).le]
  rfl
source

The following theorem gives convergence of the assembled radial solves as both angular and radial resolution increase.

For any continuous real linear load \(\ell \) on \(\mathcal H_q\), there is a unique \(u\) satisfying \((u,z)=\ell (z)\) for all \(z\in \mathcal H_q\). Restrict the load to each normalized sector and solve its existing tridiagonal radial Dirichlet system. The sum \(u_{S,N}\) of the retained sector reconstructions is exactly the orthogonal projection of \(u\) onto \(V_{S,N}\). Hence

\[ \| u-u_{S,N}\| \le \| u-z\| \quad (z\in V_{S,N}),\qquad \| u_{S,N}\| \le \| \ell \| ,\qquad u_{S,N}\longrightarrow u. \]

In particular, taking every valid angular frequency \(m{\lt}N\) and radial degree below \(N\) gives convergence as \(N\to \infty \). The coordinates use the normalization in Definition 5.4.36.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.existsUnique_solution (q : ↑(Set.Ioo 0 1))
  (ℓ : ↥(MvPolynomial.AnnularEnergy.Space q) →L[ℝ] ℝ) :
  ∃! x, ∀ (z : ↥(MvPolynomial.AnnularEnergy.Space q)), inner ℝ x z = ℓ z
Lean proof
/-- There is exactly one completed energy solution for every continuous load. -/
theorem existsUnique_solution (q : Set.Ioo (0 : ℝ) 1) (ℓ : Space q →L[ℝ] ℝ) :
    ∃! x : Space q, ∀ z : Space q, inner ℝ x z = ℓ z := by
  refine ⟨solution q ℓ, solution_weak q ℓ, ?_⟩
  intro y hy
  apply ext_inner_right ℝ
  intro z
  rw [hy, solution_weak]
source

No regularity rate or boundedness of arbitrary physical forcing as an energy load is asserted.

Green’s identity identifies the energy with the Cartesian Dirichlet integral \(\int \nabla U\cdot \nabla V\, dA\) of boundary-weighted lifts, sector by sector. A weighted derivative embeds the completed radial energy isometrically into an \(L^2\) space, where the derivatives of the computed solutions converge. Theorem 5.4.57 below identifies the completed planar space with physical \(H^1_0\) functions.

Reference details: Polynomial boundary flux and Green identity on an annulus and related results

Let \(0{\lt}q{\lt}1\), let \(dA\) be the unweighted annular measure, and put \(B_q=(1-x^2-y^2)(x^2+y^2-q)\). For arbitrary Cartesian polynomials \(p,z\),

\[ \int \Delta (B_q^2p)\, dA=0,\qquad \int \nabla (B_qp)\cdot \nabla (B_qz)\, dA =-\int \Delta (B_qp)\, B_qz\, dA. \]

The Laplacian pairing on this boundary-weighted polynomial space is symmetric. More explicitly, the integrated Laplacian of a radial lift with radial polynomial \(F(s)\) is zero in every nonconstant angular sector, and is \(4\pi (F'(1)-qF'(q))\) in the constant sector.

Lean Formalisation
theorem MvPolynomial.eq_top_of_annulusLift_mem {q : ℝ} (hq : q ∈ Set.Ioo 0 1) (K : Submodule ℝ (MvPolynomial (Fin 2) ℝ))
  (hK : ∀ (u : Bool) (m : ℕ) (p : Polynomial ℝ), (MvPolynomial.annulusLift ⟨q, ⋯⟩ u m) p ∈ K) : K = ⊤
Lean proof
/-- A submodule containing every annular radial lift contains every Cartesian polynomial. -/
theorem eq_top_of_annulusLift_mem {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (K : Submodule ℝ (MvPolynomial (Fin 2) ℝ))
    (hK : ∀ u m p, annulusLift ⟨q,ne_of_lt hq.2⟩ u m p ∈ K) : K = ⊤ := by
  classical
  apply top_unique
  intro p hp
  let v : restrictTotalDegree (Fin 2) ℝ p.totalDegree :=
    ⟨p, (mem_restrictTotalDegree (Fin 2) _ _).mpr le_rfl⟩
  let b := zernikeAnnulusDegreeBasis hq (by norm_num : (-1 : ℝ) < 0)
    (by norm_num : (-1 : ℝ) < 0) p.totalDegree
  have he := congrArg (fun w : restrictTotalDegree (Fin 2) ℝ p.totalDegree ↦
    (w : MvPolynomial (Fin 2) ℝ)) (b.linearCombination_repr v)
  change ((∑ i ∈ (b.repr v).support, (b.repr v) i • b i :
    restrictTotalDegree (Fin 2) ℝ p.totalDegree) : MvPolynomial (Fin 2) ℝ) = p at he
  simp only [Submodule.coe_sum, Submodule.coe_smul] at he
  rw [← he]
  apply K.sum_mem
  intro i hi
  apply K.smul_mem
  simp only [b, zernikeAnnulusDegreeBasis_apply, zernikeAnnulus]
  rw [← annulusLift_basis]
  exact hK _ _ _
source
Theorem 5.4.40 Cartesian gradient interpretation of annular sector energy
✓ 🤖

For boundary-weighted lifts \(U_p,U_z\) in a real angular sector \((u,m)\),

\[ \int \nabla U_p\cdot \nabla U_z\, dA =\kappa _{q,u,m}\langle \iota p,\iota z\rangle _{H_{t,m}}, \qquad t=(1-q)^{-1}. \]

Distinct angular sectors are orthogonal for this Cartesian gradient pairing.

Lean Formalisation
theorem MvPolynomial.integralInner_annulusDirichlet_gradient {q : ℝ} (hq : q ∈ Set.Ioo 0 1) (u : Bool) (m : ℕ)
  (p z : Polynomial ℝ) :
  MvPolynomial.integralInner (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0)
        (MvPolynomial.IntegrablePair.of (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0)
          ((MvPolynomial.pderiv 0) ((MvPolynomial.annulusDirichletLift ⟨q, ⋯⟩ u m) p))
          ((MvPolynomial.pderiv 0) ((MvPolynomial.annulusDirichletLift ⟨q, ⋯⟩ u m) z)) ⋯) +
      MvPolynomial.integralInner (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0)
        (MvPolynomial.IntegrablePair.of (MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ 0 0)
          ((MvPolynomial.pderiv 1) ((MvPolynomial.annulusDirichletLift ⟨q, ⋯⟩ u m) p))
          ((MvPolynomial.pderiv 1) ((MvPolynomial.annulusDirichletLift ⟨q, ⋯⟩ u m) z)) ⋯) =
    MvPolynomial.annulusEnergyScale ⟨q, ⋯⟩ u m *
      inner ℝ ((Polynomial.SemiclassicalJacobiEnergy.polynomialEmbed ⟨Polynomial.annulusParameter ⟨q, ⋯⟩, ⋯⟩ ↑m) p)
        ((Polynomial.SemiclassicalJacobiEnergy.polynomialEmbed ⟨Polynomial.annulusParameter ⟨q, ⋯⟩, ⋯⟩ ↑m) z)
Lean proof
/-- The Cartesian gradient energy of a sector agrees with the completed radial energy. -/
theorem integralInner_annulusDirichlet_gradient {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (u : Bool) (m : ℕ) (p z : Polynomial ℝ) :
    integralInner (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (pderiv 0 (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m p)) (pderiv 0 (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m z)) (h := (hasFiniteMoments_zernikeAnnulusMeasure hq (by norm_num) (by norm_num)).integrable_mul _ _)) +
    integralInner (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (pderiv 1 (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m p)) (pderiv 1 (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m z)) (h := (hasFiniteMoments_zernikeAnnulusMeasure hq (by norm_num) (by norm_num)).integrable_mul _ _)) =
    annulusEnergyScale ⟨q,ne_of_lt hq.2⟩ u m * inner ℝ
      (SemiclassicalJacobiEnergy.polynomialEmbed ⟨annulusParameter ⟨q,ne_of_lt hq.2⟩, one_lt_annulusParameter hq⟩ m p)
      (SemiclassicalJacobiEnergy.polynomialEmbed ⟨annulusParameter ⟨q,ne_of_lt hq.2⟩, one_lt_annulusParameter hq⟩ m z) := by
  calc
    _ = -integralInner (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ 0 0) (diskLaplacian (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m p)) (annulusDirichletLift ⟨q,ne_of_lt hq.2⟩ u m z) (h := (hasFiniteMoments_zernikeAnnulusMeasure hq (by norm_num) (by norm_num)).integrable_mul _ _)) :=
      integralInner_annulus_gradient_eq_neg_laplacian hq _ _
    _ = _ := neg_integralInner_annulusDirichletLaplacian hq u m p z
source

The identification of completed energy vectors with Sobolev functions and their weak gradients is Theorem 5.4.57.

For \(t{\gt}1\) and real \(\gamma \), the map

\[ Dp=\sqrt{4/t}\, \bigl(x(1-x)p\bigr)' \]

from radial energy polynomials to \(L^2(\mu _{t,0,0,\gamma +1})\) extends to a linear isometry \(D:H_{t,\gamma }\to L^2(\mu _{t,0,0,\gamma +1})\). Its range is exactly the closed \(L^2\) closure of these polynomial derivative classes; no surjectivity onto all of \(L^2\) is claimed. For every \(g\) in this \(L^2\) space, \(\ell _g(u)=\langle g,Du\rangle \) is a continuous energy load of norm at most \(\| g\| _{L^2}\), and its finite coefficient reconstructions are uniformly bounded by this norm. The existing energy convergence also gives strong \(L^2\) convergence of the realized derivatives.

Lean Formalisation
theorem Polynomial.SemiclassicalJacobiEnergy.inner_polynomialDerivative (t : ↑(Set.Ioi 1)) (γ : ℝ)
  (p z : Polynomial.SemiclassicalJacobiEnergy.PolynomialSpace t γ) :
  inner ℝ ((Polynomial.SemiclassicalJacobiEnergy.polynomialDerivative t γ) p)
      ((Polynomial.SemiclassicalJacobiEnergy.polynomialDerivative t γ) z) =
    inner ℝ p z
Lean proof
/-- The concrete derivative pairing equals the polynomial energy pairing. -/
theorem inner_polynomialDerivative (t : Set.Ioi (1 : ℝ)) (γ : ℝ)
    (p z : PolynomialSpace t γ) :
    inner ℝ (polynomialDerivative t γ p) (polynomialDerivative t γ z) = inner ℝ p z := by
  simp only [polynomialDerivative, LinearMap.smul_apply, LinearMap.comp_apply,
    LinearEquiv.coe_coe, real_inner_smul_left, inner_smul_right, inner_polynomialToL2]
  rw [← mul_assoc, ← pow_two, Real.sq_sqrt (by have := gt_one t; positivity)]
  change (4 / (t : ℝ)) * integralInner _ (IntegrablePair.of _ _ _) =
    -integralInner _ (IntegrablePair.of _ (semiclassicalJacobiDirichletMap ⟨t,ne_of_gt (lt_trans zero_lt_one t.property)⟩ γ (polynomialEquiv t γ p)) (polynomialEquiv t γ z))
  rw [integralInner_semiclassicalJacobi_dirichlet (gt_one t)]
  ring
source

Applying \(D\) in each normalized real angular sector embeds \(\mathcal H_q\) isometrically into the Hilbert sum of the sector derivative \(L^2\) spaces, with closed range. The error of an actual finite annular solve in this concrete space equals its energy error. Thus the frequency/radial-degree truncations converge strongly as radial derivative classes as well.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.derivativeRealization_apply (q : ↑(Set.Ioo 0 1)) (x : ↥(MvPolynomial.AnnularEnergy.Space q))
  (s : MvPolynomial.AnnularEnergy.Sector) :
  ↑((MvPolynomial.AnnularEnergy.derivativeRealization q) x) s =
    (Polynomial.SemiclassicalJacobiEnergy.derivativeRealization (MvPolynomial.AnnularEnergy.parameter q) ↑(↑s).2) (↑x s)
Lean proof
/-- The realization acts sector by sector with the existing physical coordinate normalization. -/
theorem derivativeRealization_apply (q : Set.Ioo (0 : ℝ) 1) (x : Space q) (s : Sector) :
    derivativeRealization q x s =
      SemiclassicalJacobiEnergy.derivativeRealization (parameter q) s.val.2 (x s) := rfl
source

To apply a forcing function \(g\in L^2(dA)\), we reconstruct a function class on the annulus from each abstract energy vector. The following maps give this reconstruction and the load functional. Injectivity ensures that distinct energy vectors represent distinct function classes.

Fix a valid real angular sector \(s=(u,m)\) and let \(\kappa _s\) be its physical energy scale. Polynomial lifting extends to a continuous linear map \(T_s:H_{t,m}\to L^2(dA)\) with

\[ \| T_s v\| _{L^2}\leq \sqrt{\kappa _s}\| v\| _{H_{t,m}}. \]

Every \(g\in L^2(dA)\) defines a body load \(b_g(v)=\langle g,T_sv\rangle _{L^2}\), of norm at most \(\sqrt{\kappa _s}\| g\| _{L^2}\). On polynomial trials this is the physical integral \(\int gU_p\, dA\). Feeding the unscaled radial solver the load \(\kappa _s^{-1}b_g\) gives a solution satisfying

\[ \kappa _s\langle v,z\rangle _{H_{t,m}}=\langle g,T_sz\rangle _{L^2} \quad \text{for all }z\in H_{t,m}. \]

The existing radial coefficient reconstructions converge after applying \(T_s\), for any continuous radial load.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.norm_radialPolynomialL2_le (q : ↑(Set.Ioo 0 1)) (s : MvPolynomial.AnnularEnergy.Sector)
  (p : Polynomial ℝ) :
  ‖(MvPolynomial.AnnularEnergy.radialPolynomialL2 q s) p‖ ≤
    √(MvPolynomial.annulusEnergyScale ⟨↑q, ⋯⟩ (↑s).1 (↑s).2) *
      ‖(Polynomial.SemiclassicalJacobiEnergy.polynomialEmbed (MvPolynomial.AnnularEnergy.parameter q) ↑(↑s).2) p‖
Lean proof
/-- Poincaré bounds the physical L² norm by the correctly scaled radial energy norm. -/
theorem norm_radialPolynomialL2_le (q : Set.Ioo (0 : ℝ) 1) (s : Sector) (p : Polynomial ℝ) :
    ‖radialPolynomialL2 q s p‖ ≤ Real.sqrt (annulusEnergyScale ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2) *
      ‖SemiclassicalJacobiEnergy.polynomialEmbed (parameter q) s.val.2 p‖ := by
  have h := integralInner_annulus_boundary_le_neg_laplacian q.property
    (annulusLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p)
  change integralInner _ (IntegrablePair.of _ (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p) (h := (hasFiniteMoments_zernikeAnnulusMeasure q.property (by norm_num) (by norm_num)).integrable_mul _ _)) ≤
    -integralInner _ (IntegrablePair.of _ (diskLaplacian (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p)) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p) (h := (hasFiniteMoments_zernikeAnnulusMeasure q.property (by norm_num) (by norm_num)).integrable_mul _ _)) at h
  rw [neg_integralInner_annulusDirichletLaplacian q.property] at h
  have he : ‖radialPolynomialL2 q s p‖^2 =
      integralInner (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p) (h := (hasFiniteMoments_zernikeAnnulusMeasure q.property (by norm_num) (by norm_num)).integrable_mul _ _)) := by
    rw [← real_inner_self_eq_norm_sq]
    exact MvPolynomial.inner_polynomialToL2 (physicalMeasure_moments q) _ _
  have hs := Real.sq_sqrt (annulusEnergyScale_pos q.property s.val.1 s.val.2 s.property).le
  rw [real_inner_self_eq_norm_sq] at h
  change _ ≤ annulusEnergyScale ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 *
    ‖SemiclassicalJacobiEnergy.polynomialEmbed (parameter q) s.val.2 p‖^2 at h
  have hn : 0 ≤ Real.sqrt (annulusEnergyScale ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2) *
      ‖SemiclassicalJacobiEnergy.polynomialEmbed (parameter q) s.val.2 p‖ := by positivity
  nlinarith [norm_nonneg (radialPolynomialL2 q s p)]
source
Theorem 5.4.44 Faithfulness of the radial physical realization
✓ 🤖

For a valid sector \(s=(u,m)\), the completed map \(T_s:H_{t,m}\to L^2(dA)\) is injective. More precisely, for every completed energy vector \(x\) and radial polynomial \(p\),

\[ \kappa _s\langle x,\iota p\rangle _{H_{t,m}} =-\langle T_sx,\Delta U_p\rangle _{L^2(dA)}. \]
Lean Formalisation
theorem MvPolynomial.AnnularEnergy.inner_radialL2_polynomialLaplacian (q : ↑(Set.Ioo 0 1))
  (s : MvPolynomial.AnnularEnergy.Sector) (x : MvPolynomial.AnnularEnergy.RadialSpace q s) (p : Polynomial ℝ) :
  MvPolynomial.annulusEnergyScale ⟨↑q, ⋯⟩ (↑s).1 (↑s).2 *
      inner ℝ x
        ((Polynomial.SemiclassicalJacobiEnergy.polynomialEmbed (MvPolynomial.AnnularEnergy.parameter q) ↑(↑s).2) p) =
    -inner ℝ ((MvPolynomial.AnnularEnergy.radialL2 q s) x)
        ((MvPolynomial.polynomialToL2 ⋯) ((MvPolynomial.annulusDirichletLift ⟨↑q, ⋯⟩ (↑s).1 (↑s).2) p).diskLaplacian)
Lean proof
/-- Completed sector energy can be tested against physical polynomial Laplacians. -/
theorem inner_radialL2_polynomialLaplacian (q : Set.Ioo (0 : ℝ) 1) (s : Sector)
    (x : RadialSpace q s) (p : Polynomial ℝ) :
    annulusEnergyScale ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 * inner ℝ x
      (SemiclassicalJacobiEnergy.polynomialEmbed (parameter q) s.val.2 p) =
    -inner ℝ (radialL2 q s x)
      (MvPolynomial.polynomialToL2 (physicalMeasure_moments q)
        (diskLaplacian (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p))) := by
  refine (SemiclassicalJacobiEnergy.denseRange_polynomialEmbed (parameter q) s.val.2).induction
    ?_ (isClosed_eq (by fun_prop) (by fun_prop)) x
  rintro _ ⟨z, rfl⟩
  rw [radialL2_polynomialEmbed, real_inner_comm]
  change annulusEnergyScale ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 * inner ℝ
    (SemiclassicalJacobiEnergy.polynomialEmbed (parameter q) s.val.2 p)
    (SemiclassicalJacobiEnergy.polynomialEmbed (parameter q) s.val.2 z) =
      -inner ℝ (MvPolynomial.polynomialToL2 (physicalMeasure_moments q) _)
        (MvPolynomial.polynomialToL2 (physicalMeasure_moments q) _)
  rw [MvPolynomial.inner_polynomialToL2]
  change _ = -integralInner (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 z) (diskLaplacian (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p)) (h := (hasFiniteMoments_zernikeAnnulusMeasure q.property (by norm_num) (by norm_num)).integrable_mul _ _))
  rw [integralInner_comm]
  exact (neg_integralInner_annulusDirichletLaplacian q.property s.val.1 s.val.2 p z).symm
source

The full annular energy Hilbert sum \(\mathcal H_q\) has an injective continuous linear realization \(T:\mathcal H_q\to L^2(dA)\) given by

\[ Tx=\sum _s\kappa _s^{-1/2}T_sx_s,\qquad \| Tx\| _{L^2}\leq \| x\| _{\mathcal H_q}. \]

The series converges unconditionally in physical \(L^2\). Each physically scaled polynomial energy vector realizes exactly its boundary-weighted polynomial \(U_p\).

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.inner_radialL2_eq_zero (q : ↑(Set.Ioo 0 1)) {s r : MvPolynomial.AnnularEnergy.Sector}
  (h : s ≠ r) (x : MvPolynomial.AnnularEnergy.RadialSpace q s) (y : MvPolynomial.AnnularEnergy.RadialSpace q r) :
  inner ℝ ((MvPolynomial.AnnularEnergy.radialL2 q s) x) ((MvPolynomial.AnnularEnergy.radialL2 q r) y) = 0
Lean proof
/-- Physical radial realizations of distinct completed angular sectors remain orthogonal. -/
theorem inner_radialL2_eq_zero (q : Set.Ioo (0 : ℝ) 1) {s r : Sector} (h : s ≠ r)
    (x : RadialSpace q s) (y : RadialSpace q r) :
    inner ℝ (radialL2 q s x) (radialL2 q r y) = 0 := by
  refine (SemiclassicalJacobiEnergy.denseRange_polynomialEmbed (parameter q) s.val.2).induction
    ?_ (isClosed_eq (by fun_prop) continuous_const) x
  rintro _ ⟨p, rfl⟩
  refine (SemiclassicalJacobiEnergy.denseRange_polynomialEmbed (parameter q) r.val.2).induction
    ?_ (isClosed_eq (by fun_prop) continuous_const) y
  rintro _ ⟨z, rfl⟩
  rw [radialL2_polynomialEmbed, radialL2_polynomialEmbed]
  change inner ℝ (MvPolynomial.polynomialToL2 (physicalMeasure_moments q) _)
    (MvPolynomial.polynomialToL2 (physicalMeasure_moments q) _) = 0
  rw [MvPolynomial.inner_polynomialToL2]
  change integralInner (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (IntegrablePair.of (zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ s.val.1 s.val.2 p) (annulusDirichletLift ⟨q,ne_of_lt q.property.2⟩ r.val.1 r.val.2 z) (h := (hasFiniteMoments_zernikeAnnulusMeasure q.property (by norm_num) (by norm_num)).integrable_mul _ _)) = 0
  rw [← annulusLift_dirichletWeight q.property, ← annulusLift_dirichletWeight q.property]
  apply integralInner_annulusRadialLift_eq_zero_of_angular q.property (by norm_num) (by norm_num)
  by_contra! he
  exact h (Subtype.ext (Prod.ext he.1 he.2))
source

A physical \(L^2\) body force determines a unique solution in the energy completion. The finite reconstructions converge to it in physical \(L^2\), as the following theorem shows.

Every physical datum \(g\in L^2(dA)\) gives a continuous energy load \(\ell _g(x)=\langle g,Tx\rangle _{L^2}\) with \(\| \ell _g\| \leq \| g\| _{L^2}\). Its value on a polynomial trial is \(\int gU_p\, dA\). There is a unique \(x\in \mathcal H_q\) satisfying

\[ \langle x,z\rangle _{\mathcal H_q}=\langle g,Tz\rangle _{L^2} \quad \text{for all }z\in \mathcal H_q. \]

The full solution and every assembled finite coefficient solve have energy norm at most \(\| g\| _{L^2}\); the finite physical realizations have the same bound. The physical reconstruction is precisely the finite sum of computed radial reconstructions with their inverse square-root sector scales. For any continuous energy load, these reconstructions converge to \(Tx\) in physical \(L^2\) as both cutoffs increase, also for the common frequency/radial-degree cutoff. Their physical error is bounded by the best energy approximation error in the finite trial space.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.norm_bodyLoad_le (q : ↑(Set.Ioo 0 1)) (g : ↥(MvPolynomial.AnnularEnergy.PhysicalL2 q)) :
  ‖MvPolynomial.AnnularEnergy.bodyLoad q g‖ ≤ ‖g‖
Lean proof
/-- Physical L² forcing is bounded in the dual energy norm with constant one. -/
theorem norm_bodyLoad_le (q : Set.Ioo (0 : ℝ) 1) (g : PhysicalL2 q) :
    ‖bodyLoad q g‖ ≤ ‖g‖ := by
  apply ContinuousLinearMap.opNorm_le_bound _ (norm_nonneg g)
  intro x
  exact (norm_inner_le_norm g _).trans
    (mul_le_mul_of_nonneg_left (norm_physicalL2_le q x) (norm_nonneg g))
source

Let \(\mathcal G_q=L^2(dA)\oplus ^{\ell ^2}L^2(dA)\) be the physical space of two Cartesian gradient components. Polynomial differentiation defines \(\nabla p=(\partial _xp,\partial _yp)\) in this space. For each valid angular sector \(s\), the map

\[ \iota p\longmapsto \kappa _s^{-1/2}\nabla U_p \]

extends to a linear isometry \(G_s:H_{t,m}\to \mathcal G_q\). Its two components on polynomial inputs are exactly the corresponding partial-derivative \(L^2\) classes, with this scale.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.polynomialGradient_apply (q : ↑(Set.Ioo 0 1)) (p : MvPolynomial (Fin 2) ℝ) (i : Fin 2) :
  ↑((MvPolynomial.AnnularEnergy.polynomialGradient q) p) i = (MvPolynomial.polynomialToL2 ⋯) ((MvPolynomial.pderiv i) p)
Lean proof
/-- Each coordinate is exactly its Cartesian partial derivative class. -/
theorem polynomialGradient_apply (q : Set.Ioo (0 : ℝ) 1) (p : MvPolynomial (Fin 2) ℝ)
    (i : Fin 2) : polynomialGradient q p i =
      MvPolynomial.polynomialToL2 (physicalMeasure_moments q) (pderiv i p) := by
  fin_cases i <;> simp [polynomialGradient, lp.single_apply]
source

The next result controls the function and both Cartesian gradient components simultaneously. Gradient error is exactly energy error. The following density results identify this closed image with the zero-boundary Sobolev graph.

The completed Cartesian gradient sectors are mutually orthogonal. Their synthesis gives a linear isometry \(G:\mathcal H_q\to \mathcal G_q\) with unconditionally convergent sector series and closed range. On physically scaled polynomial energy vectors it is exactly \(\nabla U_p\). The simultaneous map

\[ x\longmapsto (Tx,Gx)\in L^2(dA)\times \mathcal G_q \]

is an isometry for the product maximum norm and has closed range. In particular, the physical body-force solution satisfies

\[ \langle Gx,Gz\rangle _{\mathcal G_q}=\langle g,Tz\rangle _{L^2} \quad \text{for all }z\in \mathcal H_q. \]

The Cartesian-gradient error of every actual finite solve equals its energy error. The common angular/radial cutoff reconstructions converge simultaneously as physical functions and Cartesian gradient classes.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.orthogonalFamily_sectorGradient (q : ↑(Set.Ioo 0 1)) :
  OrthogonalFamily ℝ (MvPolynomial.AnnularEnergy.RadialSpace q) (MvPolynomial.AnnularEnergy.sectorGradient q)
Lean proof
/-- Completed Cartesian gradient sectors form an orthogonal family of isometries. -/
theorem orthogonalFamily_sectorGradient (q : Set.Ioo (0 : ℝ) 1) :
    OrthogonalFamily ℝ (RadialSpace q) (sectorGradient q) := by
  intro s r h x y
  refine (SemiclassicalJacobiEnergy.denseRange_polynomialEmbed (parameter q) s.val.2).induction
    ?_ (isClosed_eq (by fun_prop) continuous_const) x
  rintro _ ⟨p, rfl⟩
  refine (SemiclassicalJacobiEnergy.denseRange_polynomialEmbed (parameter q) r.val.2).induction
    ?_ (isClosed_eq (by fun_prop) continuous_const) y
  rintro _ ⟨z, rfl⟩
  have he : inner ℝ (radialPolynomialGradient q s p) (radialPolynomialGradient q r z) = 0 := by
    change inner ℝ (polynomialGradient q _) (polynomialGradient q _) = 0
    rw [inner_polynomialGradient]
    apply integralInner_annulusDirichlet_gradient_eq_zero q.property
    by_contra! hh
    exact h (Subtype.ext (Prod.ext hh.1 hh.2))
  rw [sectorGradient_polynomialEmbed, sectorGradient_polynomialEmbed]
  simp [normalizedPolynomialGradient, real_inner_smul_left, inner_smul_right, he]
source

5.4.5 Weak derivatives and the physical Dirichlet problem

Reference details: The open annular domain and smooth tests and related results
Definition 5.4.49 The open annular domain and smooth tests
✓ 🤖

For \(0{\lt}q{\lt}1\), the open annular domain is \(\Omega _q=\{ (x,y):q{\lt}x^2+y^2{\lt}1\} \). A test \(\phi \in C_c^\infty (\Omega _q)\) determines its almost-everywhere class in the physical \(L^2(dA_q)\) space.

Lean Formalisation
def MvPolynomial.AnnularEnergy.domain (q : ↑(Set.Ioo 0 1)) : TopologicalSpace.Opens (Fin 2 → ℝ)
Lean definition
/-- The open annulus with squared inner radius q and outer radius one. -/
def domain (q : Ioo (0 : ℝ) 1) : TopologicalSpace.Opens (Fin 2 → ℝ) where
  carrier := {x | (q : ℝ) < x 0^2+x 1^2 ∧ x 0^2+x 1^2 < 1}
  is_open' := by
    have h : Continuous (fun x : Fin 2 → ℝ ↦ x 0^2+x 1^2) := by fun_prop
    exact (isOpen_lt continuous_const h).inter (isOpen_lt h continuous_const)
source

For every completed annular energy vector \(x\in \mathcal H_q\), its physical function \(Tx\) and Cartesian gradient \(Gx\) satisfy

\[ \langle Tx,D_i\phi \rangle _{L^2(dA_q)} =-\langle (Gx)_i,\phi \rangle _{L^2(dA_q)} \quad (\phi \in C_c^\infty (\Omega _q),\ i=1,2). \]

The physical test class agrees almost everywhere with \(\phi \), and pairing it with a polynomial is the ordinary integral of their product.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.coe_physicalTestL2 (q : ↑(Set.Ioo 0 1))
  (φ : TestFunction (MvPolynomial.AnnularEnergy.domain q) ℝ ⊤) :
  ↑↑((MvPolynomial.AnnularEnergy.physicalTestL2 q) φ) =ᵐ[MvPolynomial.zernikeAnnulusMeasure ⟨↑q, ⋯⟩ 0 0] ⇑φ
Lean proof
/-- Physical test representatives agree almost everywhere with the smooth test. -/
theorem coe_physicalTestL2 (q : Ioo (0 : ℝ) 1) (φ : TestFunction (domain q) ℝ ⊤) :
    (physicalTestL2 q φ : (Fin 2 → ℝ) → ℝ) =ᵐ[zernikeAnnulusMeasure ⟨q,q.property.1.le,q.property.2⟩ 0 0] φ :=
  (test_memLp q φ).coeFn_toLp
source

Let \(0{\lt}q{\lt}1\), \(r^2=x^2+y^2\), and let \(p\) be a real Cartesian polynomial. With the smooth boundary factor \(F_a\) of Theorem 5.4.62, set

\[ u_a(x,y)=F_a(r^2-q)F_a(1-r^2)p(x,y),\qquad \phi _n=u_{n+1}. \]
Lean Formalisation
def MvPolynomial.AnnularEnergy.cutoffTrial (q a : ℝ) (p : MvPolynomial (Fin 2) ℝ) (x : Fin 2 → ℝ) : ℝ
Lean definition
/-- Cut off both boundary factors of a Cartesian polynomial trial. -/
def cutoffTrial (q : ℝ) (a : ℝ) (p : MvPolynomial (Fin 2) ℝ) (x : E) : ℝ :=
  boundaryFactor a (x 0^2+x 1^2-q) *
    boundaryFactor a (1-(x 0^2+x 1^2)) * eval x p
source
Theorem 5.4.52 Smoothness and support of annular cutoff trials
✓ 🤖

For \(0{\lt}q{\lt}1\) and a real Cartesian polynomial \(p\), Every \(u_a\) is smooth; for \(a{\gt}0\) it has compact support contained in \(\Omega _q\). At each point of \(\Omega _q\), the functions \(\phi _n\) eventually agree on a neighbourhood with \(B_qp\), where \(B_q=(1-r^2)(r^2-q)\).

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.cutoffTrial_contDiff (q a : ℝ) (p : MvPolynomial (Fin 2) ℝ) :
  ContDiff ℝ (↑⊤) (MvPolynomial.AnnularEnergy.cutoffTrial q a p)
Lean proof
/-- The cutoff trial is smooth on the entire Cartesian plane. -/
theorem cutoffTrial_contDiff (q a : ℝ) (p : MvPolynomial (Fin 2) ℝ) :
    ContDiff ℝ ∞ (cutoffTrial q a p) := by
  unfold cutoffTrial
  exact (((boundaryFactor_contDiff a).comp (by fun_prop)).mul
    ((boundaryFactor_contDiff a).comp (by fun_prop))).mul (p.contDiff_eval.of_le (by simp))
source
Theorem 5.4.53 Smooth approximation of annular polynomial trials
✓ 🤖

For every real Cartesian polynomial \(p\), the compactly supported smooth cutoff trials satisfy

\[ \phi _n\longrightarrow B_qp,\qquad D_i\phi _n\longrightarrow \partial _i(B_qp) \quad \text{in }L^2(dA_q),\quad i=1,2. \]
Lean Formalisation
theorem MvPolynomial.AnnularEnergy.tendsto_cutoffTest_L2 (q : ↑(Set.Ioo 0 1)) (p : MvPolynomial (Fin 2) ℝ) :
  Filter.Tendsto (fun n => (MvPolynomial.AnnularEnergy.physicalTestL2 q) (MvPolynomial.AnnularEnergy.cutoffTest q p n))
    Filter.atTop (nhds ((MvPolynomial.polynomialToL2 ⋯) (MvPolynomial.annulusBoundaryWeight ↑q * p)))
Lean proof
/-- The cutoff approximants converge to the boundary-vanishing trial in L². -/
theorem tendsto_cutoffTest_L2 (q : Ioo (0 : ℝ) 1) (p : MvPolynomial (Fin 2) ℝ) :
    Tendsto (fun n ↦ physicalTestL2 q (cutoffTest q p n)) atTop
      (𝓝 (polynomialToL2 (physicalMeasure_moments q) (annulusBoundaryWeight q*p))) := by
  obtain ⟨C,_,hC⟩ := cutoffTrial_uniform_bound q p
  apply tendsto_testL2_of_bound q (cutoffTest q p) (annulusBoundaryWeight q*p)
    (fun n x hx ↦ (hC n x (radius_mem_box hx.2.le)).1)
  intro x hx
  exact (tendsto_congr' ((cutoffTest_eventuallyEq q p hx).mono
    (fun _ h ↦ h.eq_of_nhds))).mpr tendsto_const_nhds
source

The equality of polar and area measures induces an isometric identification \(A_q\) of their function/gradient product spaces. For a smooth test \(\phi \), its physical gradient has coordinates \([D_i\phi ]\), and \(A_q\) carries its physical function/gradient pair to its ordinary area-measure graph pair. The cutoff gradients converge in the finite Hilbert sum. Consequently,

\[ A_q([B_qp],[\nabla (B_qp)])\in \mathcal H_0^1(\Omega _q) \]

for every Cartesian polynomial \(p\), and every completed energy vector satisfies

\[ A_q(Tx,Gx)\in \mathcal H_0^1(\Omega _q)\qquad (x\in \mathcal H_q). \]
Lean Formalisation
theorem MvPolynomial.AnnularEnergy.areaGraphEquiv_testGraph (q : ↑(Set.Ioo 0 1))
  (φ : TestFunction (MvPolynomial.AnnularEnergy.domain q) ℝ ⊤) :
  (MvPolynomial.AnnularEnergy.areaGraphEquiv q)
      ((MvPolynomial.AnnularEnergy.physicalTestL2 q) φ, (MvPolynomial.AnnularEnergy.physicalTestGradient q) φ) =
    (MeasureTheory.DirichletSpace.testGraph (MvPolynomial.AnnularEnergy.domain q)) φ
Lean proof
/-- Measure transport preserves the graph of a smooth compactly supported test. -/
theorem areaGraphEquiv_testGraph (q : Ioo (0 : ℝ) 1)
    (φ : TestFunction (domain q) ℝ ⊤) :
    areaGraphEquiv q (physicalTestL2 q φ, physicalTestGradient q φ) =
      DirichletSpace.testGraph (domain q) φ := by
  simp only [physicalTestGradient, DirichletSpace.testGraph, DirichletSpace.testGradient,
    LinearMap.prod_apply, LinearMap.sum_apply, LinearMap.comp_apply,
    ContinuousLinearMap.coe_coe, lp.singleContinuousLinearMap_apply]
  exact L2.graphMeasureCongr_toLp 2 _ φ
    (fun i ↦ DirichletSpace.testDerivative (domain q) i φ)
    (test_memLp q φ) (φ.continuous.memLp_of_hasCompactSupport φ.hasCompactSupport)
    (fun i ↦ test_memLp q _)
    (fun i ↦ (DirichletSpace.testDerivative (domain q) i φ).continuous.memLp_of_hasCompactSupport
      (DirichletSpace.testDerivative (domain q) i φ).hasCompactSupport)
source
Theorem 5.4.55 Cartesian polynomial trials in the completed energy graph
✓ 🤖

For every real Cartesian polynomial \(p\), there exists \(x\in \mathcal H_q\) with

\[ (Tx,Gx)=([B_qp],[\nabla (B_qp)]). \]

Thus the completed energy image contains all boundary-weighted Cartesian polynomial graph pairs.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.exists_functionGradient_polynomial (q : ↑(Set.Ioo 0 1)) (p : MvPolynomial (Fin 2) ℝ) :
  ∃ x,
    (MvPolynomial.AnnularEnergy.functionGradient q) x =
      ((MvPolynomial.polynomialToL2 ⋯) (MvPolynomial.annulusBoundaryWeight ↑q * p),
        (MvPolynomial.AnnularEnergy.polynomialGradient q) (MvPolynomial.annulusBoundaryWeight ↑q * p))
Lean proof
/-- Every boundary-weighted Cartesian polynomial has an exact energy-space realization. -/
theorem exists_functionGradient_polynomial (q : Ioo (0 : ℝ) 1)
    (p : MvPolynomial (Fin 2) ℝ) :
    ∃ x : Space q, functionGradient q x =
      (polynomialToL2 (physicalMeasure_moments q) (annulusBoundaryWeight q*p),
       polynomialGradient q (annulusBoundaryWeight q*p)) := by
  let F := (polynomialToL2 (physicalMeasure_moments q)).prod (polynomialGradient q)
  let B := LinearMap.mulLeft ℝ (annulusBoundaryWeight q)
  let K := (functionGradient q).toLinearMap.range.comap (F.comp B)
  have hK : K = ⊤ := eq_top_of_annulusLift_mem q.property K (by
    intro u m z
    by_cases h : u = true → m ≠ 0
    · let s : Sector := ⟨(u,m),h⟩
      refine ⟨polynomialEmbed q s z, ?_⟩
      change (physicalL2 q (polynomialEmbed q s z),gradientL2 q (polynomialEmbed q s z)) = _
      rw [physicalL2_polynomialEmbed, gradientL2_polynomialEmbed]
      rfl
    · push Not at h
      obtain ⟨rfl,rfl⟩ := h
      have hz : annulusLift ⟨q,ne_of_lt q.property.2⟩ true 0 z = 0 := by
        simp [annulusLift,diskRadialLift,diskHarmonics]
      rw [hz]
      exact K.zero_mem)
  have hp : p ∈ K := by rw [hK]; trivial
  exact hp
source

Every \(\phi \in C_c^\infty (\Omega _q)\), viewed globally, has a smooth factorisation \(\phi =B_qg\) with \(g\in C^\infty (\mathbb R^2)\). There is a sequence of real Cartesian polynomials \(p_n\) such that

\[ ([B_qp_n],[\nabla (B_qp_n)])\longrightarrow ([\phi ],[\nabla \phi ]) \quad \text{in }L^2(dA_q)\times \bigoplus _{i=1}^2{}^{\ell ^2}L^2(dA_q). \]

In particular, the physical function/gradient pair of every such test belongs to the image of \(x\mapsto (Tx,Gx)\) on \(\mathcal H_q\).

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.exists_smooth_boundary_quotient (q : ↑(Set.Ioo 0 1))
  (φ : TestFunction (MvPolynomial.AnnularEnergy.domain q) ℝ ⊤) :
  ∃ g, ContDiff ℝ (↑⊤) g ∧ ∀ (x : Fin 2 → ℝ), (MvPolynomial.eval x) (MvPolynomial.annulusBoundaryWeight ↑q) * g x = φ x
Lean proof
/-- A smooth compactly supported annular test has a globally smooth boundary quotient. -/
theorem exists_smooth_boundary_quotient (q : Ioo (0 : ℝ) 1)
    (φ : TestFunction (domain q) ℝ ⊤) :
    ∃ g : E → ℝ, ContDiff ℝ ∞ g ∧ ∀ x, eval x (annulusBoundaryWeight q) * g x = φ x := by
  have hb : ∀ x ∈ tsupport φ, eval x (annulusBoundaryWeight q) ≠ 0 := by
    intro x hx
    have hx' := φ.tsupport_subset hx
    have hp := mul_pos (sub_pos.mpr hx'.2) (sub_pos.mpr hx'.1)
    simpa only [annulusBoundaryWeight,eval_mul,eval_sub,map_one,eval_add,eval_pow,eval_X,eval_C]
      using hp.ne'
  refine ⟨fun x ↦ φ x / eval x (annulusBoundaryWeight q),
    smooth_supported_division φ.contDiff
      ((annulusBoundaryWeight (q : ℝ)).contDiff_eval.of_le (by simp)) hb, ?_⟩
  intro x
  by_cases hx : x ∈ tsupport φ
  · exact mul_div_cancel₀ _ (hb x hx)
  · simp [image_eq_zero_of_notMem_tsupport hx]
source

For \(0{\lt}q{\lt}1\), the map

\[ E_q:\mathcal H_q\longrightarrow \mathcal H_0^1(\Omega _q),\qquad E_qx=A_q(Tx,Gx), \]

is a surjective linear isometry, where the Sobolev graph carries the function/ gradient product maximum norm. Subscripts \(f\) and \(\nabla \) denote the function and gradient components. Moreover,

\[ \langle (E_qx)_\nabla ,(E_qy)_\nabla \rangle _{L^2(\Omega _q)} =\langle x,y\rangle _{\mathcal H_q}. \]

Thus the completed polynomial energy is exactly the zero-boundary Sobolev space, with its actual function and Cartesian gradient components.

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.dirichletEmbedding_surjective (q : ↑(Set.Ioo 0 1)) :
  Function.Surjective ⇑(MvPolynomial.AnnularEnergy.dirichletEmbedding q)
Lean proof
/-- Polynomial and smooth-test density make the energy embedding onto the Sobolev graph. -/
theorem dirichletEmbedding_surjective (q : Ioo (0 : ℝ) 1) :
    Function.Surjective (dirichletEmbedding q) := by
  let F := (areaGraphEquiv q).toLinearIsometry.comp (functionGradient q)
  have hc : IsClosed (Set.range F) := F.isometry.isClosedEmbedding.isClosed_range
  have hs : (DirichletSpace.graph (domain q) : Set _) ⊆ Set.range F := by
    apply closure_minimal _ hc
    rintro _ ⟨φ,rfl⟩
    obtain ⟨x,hx⟩ := physicalTestGraph_mem_range q φ
    refine ⟨x, ?_⟩
    change areaGraphEquiv q (functionGradient q x) = DirichletSpace.testGraph (domain q) φ
    rw [hx,areaGraphEquiv_testGraph]
  intro y
  obtain ⟨x,hx⟩ := hs y.property
  exact ⟨x,Subtype.ext hx⟩
source

Let \(L\) be a continuous real linear functional on \(\mathcal H_0^1(\Omega _q)\), and put \(\ell =L\circ E_q\). There is exactly one \(u_L\in \mathcal H_0^1(\Omega _q)\) such that

\[ \langle (u_L)_\nabla ,v_\nabla \rangle _{L^2(\Omega _q)}=L(v) \qquad (v\in \mathcal H_0^1(\Omega _q)). \]

It is the image under \(E_q\) of the energy Riesz solution for \(\ell \). The finite annular solves with all valid angular frequencies \(m{\lt}N\) and radial degree below \(N\), transported by \(E_q\), converge to \(u_L\) in the Sobolev graph norm as \(N\to \infty \).

Lean Formalisation
theorem MvPolynomial.AnnularEnergy.dirichletSolution_weak (q : ↑(Set.Ioo 0 1))
  (L : ↥(MeasureTheory.DirichletSpace.Space (MvPolynomial.AnnularEnergy.domain q)) →L[ℝ] ℝ)
  (v : ↥(MeasureTheory.DirichletSpace.Space (MvPolynomial.AnnularEnergy.domain q))) :
  inner ℝ (↑(MvPolynomial.AnnularEnergy.dirichletSolution q L)).2 (↑v).2 = L v
Lean proof
/-- The transported solution satisfies the weak Dirichlet equation against every Sobolev test. -/
theorem dirichletSolution_weak (q : Ioo (0 : ℝ) 1)
    (L : DirichletSpace.Space (domain q) →L[ℝ] ℝ) (v : DirichletSpace.Space (domain q)) :
    inner ℝ (dirichletSolution q L).val.2 v.val.2 = L v := by
  obtain ⟨z,rfl⟩ := (dirichletEquiv q).surjective v
  let ℓ := L.comp (dirichletEquiv q).toLinearIsometry.toContinuousLinearMap
  have h := (inner_dirichletEquiv_gradient q (solution q ℓ) z).trans (solution_weak q ℓ z)
  simpa only [dirichletSolution, ℓ, ContinuousLinearMap.comp_apply,
    LinearIsometry.coe_toContinuousLinearMap, LinearIsometryEquiv.coe_toLinearIsometry] using h
source

For \(g\in L^2(\Omega _q)\), define the continuous load \(L_g(v)=\langle g,v_f\rangle _{L^2(\Omega _q)}\). Its weak solution satisfies

\[ \langle (u_{L_g})_\nabla ,v_\nabla \rangle _{L^2(\Omega _q)} =\langle g,v_f\rangle _{L^2(\Omega _q)} \qquad (v\in \mathcal H_0^1(\Omega _q)). \]

For a physical force \(g_p\in L^2(dA_q)\), put \(g=(A_q(g_p,0))_f\). Then the pulled-back load is precisely

\[ (L_g\circ E_q)(x)=\langle g_p,Tx\rangle _{L^2(dA_q)}. \]
Lean Formalisation
theorem MvPolynomial.AnnularEnergy.dirichletBodyLoad_apply (q : ↑(Set.Ioo 0 1))
  (g : ↥(MeasureTheory.DirichletSpace.FunctionL2 (MvPolynomial.AnnularEnergy.domain q)))
  (v : ↥(MeasureTheory.DirichletSpace.Space (MvPolynomial.AnnularEnergy.domain q))) :
  (MvPolynomial.AnnularEnergy.dirichletBodyLoad q g) v = inner ℝ g (↑v).1
Lean proof
/-- The body load is precisely its area-L² pairing with the function component. -/
theorem dirichletBodyLoad_apply (q : Ioo (0 : ℝ) 1)
    (g : DirichletSpace.FunctionL2 (domain q)) (v : DirichletSpace.Space (domain q)) :
    dirichletBodyLoad q g v = inner ℝ g v.val.1 := rfl
source
Supporting results: the zero-boundary Sobolev graph
Theorem 5.4.60 Uniform polynomial approximation on compact planar sets
✓ 🤖

For every compact \(K\subseteq \mathbb R^2\), every continuous real function \(f\) on \(K\), and every \(\varepsilon {\gt}0\), there is a real bivariate polynomial \(p\) such that \(|p(x)-f(x)|{\lt}\varepsilon \) for every \(x\in K\).

Lean Formalisation
theorem MvPolynomial.exists_polynomial_near_on_compact {S : Set (Fin 2 → ℝ)} (hS : IsCompact S) {f : (Fin 2 → ℝ) → ℝ}
  (hf : ContinuousOn f S) {ε : ℝ} (hε : 0 < ε) : ∃ p, ∀ z ∈ S, |(MvPolynomial.eval z) p - f z| < ε
Lean proof
/-- Polynomial functions uniformly approximate a continuous function on a compact set. -/
theorem exists_polynomial_near_on_compact {S : Set (Fin 2 → ℝ)} (hS : IsCompact S)
    {f : (Fin 2 → ℝ) → ℝ} (hf : ContinuousOn f S) {ε : ℝ} (hε : 0 < ε) :
    ∃ p : MvPolynomial (Fin 2) ℝ, ∀ z ∈ S, |eval z p-f z| < ε := by
  let : CompactSpace S := isCompact_iff_compactSpace.mp hS
  let A : MvPolynomial (Fin 2) ℝ →ₐ[ℝ] C(S, ℝ) :=
    { toFun := fun p ↦ ⟨fun z ↦ eval z.1 p, p.continuous_eval.comp continuous_subtype_val⟩
      map_one' := by ext; simp
      map_mul' := by intros; ext; simp
      map_zero' := by ext; simp
      map_add' := by intros; ext; simp
      commutes' := by intro r; ext; simp }
  have hs : A.range.SeparatesPoints := by
    intro x y hxy
    have hne : x.1 ≠ y.1 := fun h ↦ hxy (Subtype.ext h)
    obtain ⟨i, hi⟩ := Function.ne_iff.mp hne
    refine ⟨A (X i), ⟨A (X i), ⟨X i, rfl⟩, rfl⟩, ?_⟩
    simpa [A] using hi
  obtain ⟨g, hg⟩ := ContinuousMap.exists_mem_subalgebra_near_continuous_of_separatesPoints
    A.range hs (fun z : S ↦ f z.1) (continuousOn_iff_continuous_domRestrict.mp hf) ε hε
  obtain ⟨p, hp⟩ := g.property
  refine ⟨p, fun z hz ↦ ?_⟩
  have h := hg ⟨z,hz⟩
  rw [← hp] at h
  simpa [A, Real.norm_eq_abs] using h
source
Theorem 5.4.61 Simultaneous polynomial approximation of values and first derivatives
✓ 🤖

Let \(f:\mathbb R^2\to \mathbb R\) be smooth. For every \(\varepsilon {\gt}0\) there is a real bivariate polynomial \(p\) such that, for all \(x\in [-1,1]^2\),

\[ |p(x)-f(x)|{\lt}\varepsilon ,\qquad |\partial _i p(x)-D_i f(x)|{\lt}\varepsilon \quad (i=1,2). \]
Lean Formalisation
theorem MvPolynomial.exists_polynomial_C1_near_on_square {f : (Fin 2 → ℝ) → ℝ} (hf : ContDiff ℝ (↑⊤) f) {ε : ℝ} (hε : 0 < ε) :
  ∃ p,
    ∀ x ∈ Set.Icc (fun x => -1) fun x => 1,
      |(MvPolynomial.eval x) p - f x| < ε ∧
        ∀ (i : Fin 2), |(MvPolynomial.eval x) ((MvPolynomial.pderiv i) p) - (fderiv ℝ f x) (Pi.single i 1)| < ε
Lean proof
/-- Smooth functions admit polynomial approximation of values and Cartesian first
 derivatives on the square, as used in the standard Sobolev density argument. -/
theorem exists_polynomial_C1_near_on_square {f : (Fin 2 → ℝ) → ℝ}
    (hf : ContDiff ℝ ∞ f) {ε : ℝ} (hε : 0 < ε) :
    ∃ p : MvPolynomial (Fin 2) ℝ,
      ∀ x ∈ Set.Icc (fun _ : Fin 2 ↦ (-1 : ℝ)) (fun _ ↦ 1),
        |eval x p-f x| < ε ∧ ∀ i : Fin 2,
          |eval x (pderiv i p)-fderiv ℝ f x (Pi.single i 1)| < ε :=
  CartesianApproximation.exists_polynomial_C1_near hf hε
source

Let \(\eta \) be the smooth transition from \(0\) to \(1\), with \(0\leq \eta \leq 1\), \(\eta (t)=0\) for \(t\leq 0\), and \(\eta (t)=1\) for \(t\geq 1\). There is \(M\geq 0\) such that \(|\eta '(t)|\leq M\) and \(|t\eta '(t-1)|\leq 2M\) for all real \(t\). Define

\[ F_a(r)=r\eta (ar-1). \]

For every real \(a\), this function is smooth and

\[ F_a'(r)=\eta (ar-1)+ar\eta '(ar-1),\quad |F_a(r)|\leq |r|,\quad |F_a'(r)|\leq 1+2M. \]

It vanishes when \(ar\leq 1\), equals \(r\) when \(ar\geq 2\), and has derivative \(1\) when \(ar{\gt}2\).

Lean Formalisation
theorem Real.exists_transition_deriv_bound :
  ∃ M,
    0 ≤ M ∧
      (∀ (x : ℝ), |deriv Real.smoothTransition x| ≤ M) ∧ ∀ (x : ℝ), |x * deriv Real.smoothTransition (x - 1)| ≤ 2 * M
Lean proof
/-- The smooth transition has bounded derivative and a bounded scaled transition derivative. -/
theorem exists_transition_deriv_bound : ∃ M : ℝ, 0 ≤ M ∧
    (∀ x, |deriv smoothTransition x| ≤ M) ∧
    (∀ x, |x * deriv smoothTransition (x-1)| ≤ 2*M) := by
  have hc : Continuous (deriv smoothTransition) :=
    (smoothTransition.contDiff (n := 2)).continuous_deriv (by norm_num)
  obtain ⟨C,hC⟩ := isCompact_Icc.exists_bound_of_continuousOn hc.continuousOn
  let M := max C 0
  have hm : 0 ≤ M := le_max_right _ _
  have hd (x : ℝ) : |deriv smoothTransition x| ≤ M := by
    by_cases hx : x ∈ Icc (0 : ℝ) 1
    · exact (hC x hx).trans (le_max_left _ _)
    · rw [transition_deriv_zero (by simpa only [mem_Icc, not_and_or, not_le] using hx), abs_zero]
      exact hm
  refine ⟨M,hm,hd,fun x ↦ ?_⟩
  by_cases hx : x ∈ Icc (1 : ℝ) 2
  · rw [abs_mul]
    have hx0 : 0 ≤ x := le_trans zero_le_one hx.1
    have hxabs : |x| ≤ 2 := by simpa only [abs_of_nonneg hx0] using hx.2
    exact mul_le_mul hxabs (hd (x-1)) (abs_nonneg _) (by norm_num)
  · rw [transition_deriv_zero (by
      rcases lt_or_gt_of_ne (show x ≠ 1 by intro h; subst x; simp at hx) with h | h
      · exact Or.inl (by linarith)
      · exact Or.inr (by simp only [mem_Icc, not_and_or, not_le] at hx; rcases hx with hx | hx <;> linarith)),
      mul_zero, abs_zero]
    positivity
source
Theorem 5.4.63 Transport of function/gradient pairs across equal measures
✓ 🤖

If \(\mu =\nu \) are measures on the same measurable space, then

\[ L^2(\mu )\times \bigoplus _{i=1}^{n}{}^{\ell ^2}L^2(\mu ) \simeq L^2(\nu )\times \bigoplus _{i=1}^{n}{}^{\ell ^2}L^2(\nu ) \]

isometrically and linearly. This identification preserves the classes of a function and of any finite list of square-integrable component functions. Scalar and gradient inner products are preserved separately.

Lean Formalisation
theorem MeasureTheory.L2.graphMeasureCongr_toLp.{u_1} {X : Type u_1} [MeasurableSpace X] {μ ν : MeasureTheory.Measure X} (n : ℕ)
  (h : μ = ν) (f : X → ℝ) (g : Fin n → X → ℝ) (hfμ : MeasureTheory.MemLp f 2 μ) (hfν : MeasureTheory.MemLp f 2 ν)
  (hgμ : ∀ (i : Fin n), MeasureTheory.MemLp (g i) 2 μ) (hgν : ∀ (i : Fin n), MeasureTheory.MemLp (g i) 2 ν) :
  (MeasureTheory.L2.graphMeasureCongr n h)
      (MeasureTheory.MemLp.toLp f hfμ, ∑ i, lp.single 2 i (MeasureTheory.MemLp.toLp (g i) ⋯)) =
    (MeasureTheory.MemLp.toLp f hfν, ∑ i, lp.single 2 i (MeasureTheory.MemLp.toLp (g i) ⋯))
Lean proof
/-- Transport preserves the classes of a function and its gradient components. -/
theorem graphMeasureCongr_toLp (n : ℕ) (h : μ = ν) (f : X → ℝ) (g : Fin n → X → ℝ)
    (hfμ : MemLp f 2 μ) (hfν : MemLp f 2 ν)
    (hgμ : ∀ i, MemLp (g i) 2 μ) (hgν : ∀ i, MemLp (g i) 2 ν) :
    graphMeasureCongr n h (hfμ.toLp f, ∑ i, lp.single 2 i ((hgμ i).toLp (g i))) =
      (hfν.toLp f, ∑ i, lp.single 2 i ((hgν i).toLp (g i))) := by
  subst ν
  rfl
source

For an open set \(\Omega \subseteq \mathbb R^n\), let \(L=L^2(\Omega )\) and \(\mathcal G=\bigoplus _{i=1}^n{}^{\ell ^2}L\). Write \(D_i\phi \) for the Cartesian derivative of \(\phi \in C_c^\infty (\Omega )\), viewed globally with support compactly contained in \(\Omega \). The zero-boundary Sobolev graph is

\[ \mathcal H_0^1(\Omega )= \overline{\{ (\phi ,(D_i\phi )_i):\phi \in C_c^\infty (\Omega )\} } \subseteq L\times \mathcal G. \]

The closure uses the product maximum norm. Elements are represented by function/gradient pairs.

Lean Formalisation
def MeasureTheory.DirichletSpace.FunctionL2 {n : ℕ} (Ω : TopologicalSpace.Opens (Fin n → ℝ)) :
  AddSubgroup ((Fin n → ℝ) →ₘ[MeasureTheory.volume.restrict ↑Ω] ℝ)
Lean definition
/-- Scalar square-integrable functions on the open domain. -/
abbrev FunctionL2 := Lp ℝ 2 (volume.restrict (Ω : Set (Fin n → ℝ)))
source
Theorem 5.4.65 Cartesian polynomial calculus against smooth tests
✓ 🤖

Real multivariate polynomial evaluation is smooth. Its Fréchet derivative in coordinate direction \(e_i\) is the evaluation of its algebraic partial derivative \(\partial _i p\). For every \(\phi \in C_c^\infty (\Omega )\),

\[ \int _{\mathbb R^n} p\, D_i\phi =-\int _{\mathbb R^n}(\partial _i p)\, \phi . \]
Lean Formalisation
theorem MvPolynomial.contDiff_eval {n : ℕ} (p : MvPolynomial (Fin n) ℝ) : ContDiff ℝ ⊤ fun x => (MvPolynomial.eval x) p
Lean proof
/-- Real multivariate polynomial evaluation is smooth. -/
theorem contDiff_eval (p : MvPolynomial (Fin n) ℝ) :
    ContDiff ℝ ⊤ (fun x : Fin n → ℝ ↦ eval x p) := by
  induction p using MvPolynomial.induction_on with
  | C c => simpa using (contDiff_const : ContDiff ℝ ⊤ (fun _ : Fin n → ℝ ↦ c))
  | add p q hp hq => simpa only [eval_add] using hp.add hq
  | mul_X p j hp =>
    simpa only [eval_mul, eval_X] using
      hp.mul (by fun_prop : ContDiff ℝ ⊤ (fun x : Fin n → ℝ ↦ x j))
source

The graph is closed and contains every smooth compactly supported function/gradient pair. Every \((u,g)\in \mathcal H_0^1(\Omega )\) satisfies

\[ \langle u,D_i\phi \rangle _{L^2(\Omega )} =-\langle g_i,\phi \rangle _{L^2(\Omega )} \quad (\phi \in C_c^\infty (\Omega ),\ 1\le i\le n). \]

Thus its gradient coordinates are weak derivatives. On smooth test functions, the coordinates agree almost everywhere with their classical derivatives, and their \(L^2\) pairings are the ordinary integrals of products.

Lean Formalisation
theorem MeasureTheory.DirichletSpace.testGradient_apply {n : ℕ} (Ω : TopologicalSpace.Opens (Fin n → ℝ))
  (f : TestFunction Ω ℝ ⊤) (i : Fin n) :
  ↑((MeasureTheory.DirichletSpace.testGradient Ω) f) i =
    (MeasureTheory.DirichletSpace.testL2 Ω) ((MeasureTheory.DirichletSpace.testDerivative Ω i) f)
Lean proof
/-- Each gradient coordinate is the corresponding derivative class. -/
@[simp] theorem testGradient_apply (f : TestFunction Ω ℝ ⊤) (i : Fin n) :
    testGradient Ω f i = testL2 Ω (testDerivative Ω i f) := by
  simp only [testGradient, LinearMap.sum_apply, LinearMap.comp_apply,
    ContinuousLinearMap.coe_coe, lp.singleContinuousLinearMap_apply, lp.coeFn_sum]
  simp only [lp.coeFn_single]
  rw [Finset.sum_apply]
  simp [Pi.single_apply]
source
Supporting results: Hilbert-space tools and physical evaluation

For \(0{\lt}q{\lt}1\) and every Cartesian polynomial \(p\), put \(u=B_qp\), where \(B_q=(1-x^2-y^2)(x^2+y^2-q)\). Then

\[ \int u^2\, dA\leq \int |\nabla u|^2\, dA =-\int u\Delta u\, dA. \]

The constant is independent of degree, angular frequency, and \(q\). Writing \(Eu=x\partial _xu+y\partial _yu\), the auxiliary identity is \(\int uEu\, dA=-\int u^2\, dA\).

Lean Formalisation
theorem MvPolynomial.ae_sq_radius_le_one_zernikeAnnulusMeasure {q : ℝ} (hq : q ∈ Set.Ioo 0 1) (a b : ℝ) :
  ∀ᵐ (v : Fin 2 → ℝ) ∂MvPolynomial.zernikeAnnulusMeasure ⟨q, ⋯⟩ a b, v 0 ^ 2 + v 1 ^ 2 ≤ 1
Lean proof
/-- Annular measures are supported in the closed unit disk. -/
theorem ae_sq_radius_le_one_zernikeAnnulusMeasure {q : ℝ} (hq : q ∈ Ioo (0 : ℝ) 1)
    (a b : ℝ) : ∀ᵐ v ∂zernikeAnnulusMeasure ⟨q,hq.1.le,hq.2⟩ a b, v 0^2+v 1^2 ≤ 1 := by
  apply Measure.ae_smul_measure (μ := zernikeAnnulusProductMeasure ⟨q,hq.1.le,ne_of_lt hq.2⟩ a b)
  let C : Icc (0 : ℝ) 1 × ℝ → Fin 2 → ℝ := fun v ↦
    zernikeAnnulusCoordinates ⟨q,ne_of_lt hq.2⟩
      ⟨((v.1 : ℝ),v.2),zernikeAnnulusCoordinates_radical_nonneg
        ⟨q,hq.1.le,ne_of_lt hq.2⟩ v.1⟩
  have hC : Continuous C := continuous_zernikeAnnulusCoordinates _ |>.comp (by fun_prop)
  change ∀ᵐ v ∂Measure.map C _, v 0^2+v 1^2 ≤ 1
  rw [ae_map_iff hC.measurable.aemeasurable
    ((isClosed_le (by fun_prop : Continuous (fun v : Fin 2 → ℝ ↦ v 0^2+v 1^2))
      continuous_const).measurableSet)]
  filter_upwards [] with v
  have hr := zernikeAnnulusCoordinates_radical_nonneg ⟨q,hq.1.le,ne_of_lt hq.2⟩ v.1
  change (Real.sqrt (1-(v.1 : ℝ)/annulusParameter ⟨q,ne_of_lt hq.2⟩)*Real.cos v.2)^2 +
    (Real.sqrt (1-(v.1 : ℝ)/annulusParameter ⟨q,ne_of_lt hq.2⟩)*Real.sin v.2)^2 ≤ 1
  simp only [mul_pow]
  rw [← mul_add, Real.cos_sq_add_sin_sq, mul_one, Real.sq_sqrt hr]
  have ht : 0 < annulusParameter ⟨q,ne_of_lt hq.2⟩ :=
    lt_trans zero_lt_one (one_lt_annulusParameter hq)
  have := div_nonneg v.1.property.1 ht.le
  linarith
source

The constant is independent of degree, angular frequency, and \(q\); sharpness is not asserted.

Theorem 5.4.68 Multivariate polynomial evaluation in \(L^2\)
✓ 🤖

For finitely many variables and a measure with finite polynomial moments, polynomial evaluation defines a linear map to \(L^2\). Its representatives agree almost everywhere with evaluation, and its inner product equals the polynomial integral pairing.

Lean Formalisation
theorem MvPolynomial.memLp_eval_of_hasFiniteMoments.{u_1} {σ : Type u_1} [Fintype σ] {μ : MeasureTheory.Measure (σ → ℝ)}
  (hμ : MvPolynomial.HasFiniteMoments μ) (p : MvPolynomial σ ℝ) :
  MeasureTheory.MemLp (fun x => (MvPolynomial.eval x) p) 2 μ
Lean proof
/-- Finite polynomial moments put every polynomial in L² (Dunkl–Xu, Chapter 3). -/
theorem memLp_eval_of_hasFiniteMoments (p : MvPolynomial σ ℝ) : MemLp (fun x ↦ eval x p) 2 μ := by
  exact (memLp_two_iff_integrable_sq (p.continuous_eval.aestronglyMeasurable)).mpr (hμ p)
source

A family of linear isometries into a complete inner-product space, with mutually orthogonal images, induces a linear isometry from the corresponding Hilbert sum. Its value is the unconditionally convergent sum of the coordinate images.

Lean Formalisation
theorem OrthogonalFamily.hasSum_linearIsometry.{u_1, u_2, u_3, u_4} {ι : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] {E : Type u_3}
  [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] {G : ι → Type u_4} [(i : ι) → NormedAddCommGroup (G i)]
  [(i : ι) → InnerProductSpace 𝕜 (G i)] [CompleteSpace E] {V : (i : ι) → G i →ₗᵢ[𝕜] E} (hV : OrthogonalFamily 𝕜 G V)
  (f : ↥(lp G 2)) : HasSum (fun i => (V i) (↑f i)) (hV.linearIsometry f)
Mathlib source

Let \(T_s:E_s\to H\) be contractions from real inner-product spaces to a real Hilbert space, with mutually orthogonal images. Then

\[ T:\bigoplus _s^{\ell ^2} E_s\longrightarrow H,\qquad Tx=\sum _s T_sx_s \]

is a continuous linear contraction, and this series converges unconditionally. It agrees with \(T_s\) on each single-coordinate input. If each \(T_s\) is injective, then \(T\) is injective. Closedness of the individual ranges is not required.

Lean Formalisation
theorem lp.orthogonalFamily_range.{u_1, u_2, u_3} {ι : Type u_1} {G : ι → Type u_2} {E : Type u_3}
  [(i : ι) → NormedAddCommGroup (G i)] [(i : ι) → InnerProductSpace ℝ (G i)] [NormedAddCommGroup E]
  [InnerProductSpace ℝ E] (T : (i : ι) → G i →L[ℝ] E)
  (horth : ∀ (i j : ι), i ≠ j → ∀ (x : G i) (y : G j), inner ℝ ((T i) x) ((T j) y) = 0) :
  OrthogonalFamily ℝ (fun i => ↥(↑(T i)).range) fun i => (↑(T i)).range.subtypeₗᵢ
Lean proof
/-- The images of mutually orthogonal operators form an orthogonal family of subspaces. -/
theorem orthogonalFamily_range :
    OrthogonalFamily ℝ (fun i ↦ LinearMap.range (T i).toLinearMap)
      (fun i ↦ (LinearMap.range (T i).toLinearMap).subtypeₗᵢ) := by
  intro i j hij x y
  obtain ⟨a, ha⟩ := x.property
  obtain ⟨b, hb⟩ := y.property
  change inner ℝ (x : E) (y : E) = 0
  rw [← ha, ← hb]
  exact horth i j hij a b
source
Theorem 5.4.71 Extending isometries to completions Mathlib
✓

A linear isometry into a complete normed space extends to the completion of its domain. An isometry from a complete metric space has closed range.

Lean Formalisation
theorem LinearIsometry.fromCompletion_apply_coe.{u_3, u_5, u_7, u_8} {E : Type u_3} {F : Type u_5} {R : Type u_7}
  {R₂ : Type u_8} [Semiring R] [Semiring R₂] [SeminormedAddCommGroup E] [Module R E] [IsUniformAddGroup E]
  [UniformContinuousConstSMul R E] [NormedAddCommGroup F] [Module R₂ F] {σ₁₂ : R →+* R₂} (f : E →ₛₗᵢ[σ₁₂] F)
  [PseudoMetricSpace R₂] [CompleteSpace F] [IsBoundedSMul R₂ F] (x : E) : f.fromCompletion ↑x = f x
Mathlib source
Theorem 5.4.72 Hilbert sums Mathlib
✓

The \(\ell ^2\) sum of real Hilbert spaces has the sum inner product. Single-sector injections preserve their inner products, and the finite sums of the coordinates of any vector converge in the Hilbert-sum norm to that vector.

Lean Formalisation
theorem lp.inner_eq_tsum.{u_1, u_2, u_4} {ι : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] {G : ι → Type u_4}
  [(i : ι) → NormedAddCommGroup (G i)] [(i : ι) → InnerProductSpace 𝕜 (G i)] (f g : ↥(lp G 2)) :
  inner 𝕜 f g = ∑' (i : ι), inner 𝕜 (↑f i) (↑g i)
Mathlib source

In each real Hilbert sector \(E_s\), let \(W_{s,N}\) be increasing finite-dimensional subspaces with dense union. For a finite sector set \(S\) define \(V_{S,N}=\bigoplus _{s\in S}W_{s,N}\) inside \(\bigoplus _s^{\ell ^2}E_s\). Its orthogonal projection is the sum of the retained sector projections. As \((S,N)\) grows in the product order (set inclusion and integer order), these projections converge strongly to the identity.

Lean Formalisation
theorem lp.HilbertSumGalerkin.trialSpace_mono.{u_1, u_2} {ι : Type u_1} [DecidableEq ι] {E : ι → Type u_2}
  [(i : ι) → NormedAddCommGroup (E i)] [(i : ι) → InnerProductSpace ℝ (E i)] (W : (i : ι) → ℕ → Submodule ℝ (E i))
  (hW : ∀ (i : ι), Monotone (W i)) : Monotone (lp.HilbertSumGalerkin.trialSpace W)
Lean proof
/-- Enlarging both cutoffs enlarges the trial space. -/
theorem trialSpace_mono (hW : ∀ i, Monotone (W i)) : Monotone (trialSpace W) := by
  intro c d h
  apply iSup_le
  intro i
  rintro x ⟨y, hy, rfl⟩
  exact single_mem_trialSpace W d (h.1 i.property) (hW i h.2 hy)
source
Supporting results: Galerkin matrices, positive definiteness, Hilbert projections
Theorem 5.4.74 Positive finite polynomial Galerkin matrices
✓ 🤖

Let \(\mu \) have finite polynomial moments, let \(L\) be a real linear polynomial operator symmetric in the integral pairing, and suppose \(\langle Lp,p\rangle _\mu {\gt}0\) for every nonzero polynomial \(p\). For any finite linearly independent trial family \(f_i\), the matrix \(M_{ij}=\langle Lf_j,f_i\rangle _\mu \) is positive definite. Its quadratic form is exactly the energy of \(\sum _i v_i f_i\), and its rows are the corresponding tested operator values.

Lean Formalisation
theorem Polynomial.integralInner_operator_sum.{u_1} {ι : Type u_1} [Fintype ι] {μ : MeasureTheory.Measure ℝ}
  (hμ : Polynomial.HasFiniteMoments μ) (L : Polynomial ℝ →ₗ[ℝ] Polynomial ℝ) (f : ι → Polynomial ℝ) (v : ι → ℝ) :
  Polynomial.integralInner μ (Polynomial.IntegrablePair.of μ (L (∑ i, v i • f i)) (∑ i, v i • f i) ⋯) =
    v ⬝ᵥ (Matrix.of fun i j => Polynomial.integralInner μ (Polynomial.IntegrablePair.of μ (L (f j)) (f i) ⋯)).mulVec v
Lean proof
/-- The finite coefficient quadratic form is exactly the polynomial energy. -/
theorem integralInner_operator_sum (hμ : HasFiniteMoments μ)
    (L : ℝ[X] →ₗ[ℝ] ℝ[X]) (f : ι → ℝ[X]) (v : ι → ℝ) :
    integralInner μ (IntegrablePair.of μ (L (∑ i, v i • f i)) (∑ i, v i • f i)) =
      v ⬝ᵥ ((Matrix.of (fun i j ↦ integralInner μ (IntegrablePair.of μ (L (f j)) (f i)))) *ᵥ v) := by
  have hsmul (p q : ℝ[X]) (a : ℝ) :=
    integralInner_smul_left μ p q a (h := hμ.integrable_mul p q)
  have hr (p : ℝ[X]) : integralInner μ (IntegrablePair.of μ p (∑ i, v i • f i)) =
      ∑ i, v i*integralInner μ (IntegrablePair.of μ p (f i)) := by
    rw [integralInner_comm, integralInner_sum_left hμ]
    simp only [hsmul]
    congr 1
    funext i
    rw [integralInner_comm]
  rw [hr]
  simp only [map_sum, map_smul, integralInner_sum_left hμ, hsmul,
    dotProduct, mulVec, Matrix.of_apply]
  apply Finset.sum_congr rfl
  intro i hi
  congr 1
  apply Finset.sum_congr rfl
  intro j hj
  ring
source
Theorem 5.4.75 Invertibility of finite positive definite matrices Mathlib
✓

A finite real positive definite matrix is invertible. Multiplication by an invertible square matrix is bijective on coefficient vectors.

Lean Formalisation
theorem Matrix.PosDef.isUnit.{u_2, u_5} {n : Type u_2} [Fintype n] {K : Type u_5} [Field K] [PartialOrder K] [StarRing K]
  [DecidableEq n] {M : Matrix n n K} (hM : M.PosDef) : IsUnit M
Mathlib source
Theorem 5.4.76 Hilbert representation and increasing projections Mathlib
✓

Every continuous real linear functional on a real Hilbert space has a unique inner-product representative. Orthogonal projections onto increasing closed subspaces with dense union converge strongly to the identity and are norm non-increasing.

Lean Formalisation
theorem InnerProductSpace.toDual_symm_apply.{u_1, u_2} {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E]
  [InnerProductSpace 𝕜 E] [CompleteSpace E] {x : E} {y : StrongDual 𝕜 E} :
  inner 𝕜 ((InnerProductSpace.toDual 𝕜 E).symm y) x = y x
Mathlib source

Zernike families on annuli: see Theorems 5.4.12, 5.4.16 and 5.4.17.