3.2 Jacobi polynomials
Jacobi polynomials organize the classical families on \([-1,1]\). Algebraic formulas allow arbitrary parameters; orthogonality and weighted expansions use \(\alpha ,\beta {\gt}-1\).
3.2.1 Definition and normalization
The finite-sum definition is polynomial in the parameters and works over any commutative \(\mathbb {Q}\)-algebra, including \(\mathbb {Q}\), \(\mathbb {R}\) and \(\mathbb {C}\). Some parameter choices lower the degree; the leading-coefficient theorem states exactly when this happens.
For a commutative \(\mathbb {Q}\)-algebra \(R\), \(\alpha ,\beta \in R\), and \(n\in \mathbb {N}\), define
Reference: [DLMF, 18.5.7].
Lean Formalisation
def Polynomial.jacobi.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) : Polynomial R
Lean definition
/-- Jacobi polynomials in DLMF normalisation (DLMF 18.5.7). -/
noncomputable def jacobi (α β : R) (n : ℕ) : R[X] :=
∑ l ∈ Finset.range (n + 1),
C (algebraMap ℚ R (((l.factorial : ℚ) * (n - l).factorial * 2 ^ l)⁻¹) *
(ascPochhammer R l).eval ((n : R) + α + β + 1) *
(ascPochhammer R (n - l)).eval (α + l + 1)) * (X - 1) ^ l
source Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). The Jacobi polynomial \(P_n^{(\alpha ,\beta )}(X)\) has degree at most \(n\), and its coefficient of \(X^n\) is
It has degree exactly \(n\) if and only if \(c_n\ne 0\). In that case, its leading coefficient is \(c_n\).
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.natDegree_jacobi_le.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
(Polynomial.jacobi α β n).natDegree ≤ n
Lean proof
/-- The natural degree never exceeds the index (DLMF Table 18.3.1). -/
theorem natDegree_jacobi_le (α β : R) (n : ℕ) : (jacobi α β n).natDegree ≤ n := by
nontriviality R
unfold jacobi
apply natDegree_sum_le_of_forall_le
intro l hl
apply (natDegree_C_mul_le _ _).trans
have hpow : ((X - 1 : R[X]) ^ l).natDegree = l := by
rw [← C_1, (monic_X_sub_C (1 : R)).natDegree_pow, natDegree_X_sub_C, mul_one]
rw [hpow]
exact Nat.le_of_lt_succ (Finset.mem_range.mp hl)
source Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). Then \(P_n^{(\alpha ,\beta )}(1)=(\alpha +1)_n/n!\). In particular, \((n+1)P_{n+1}^{(\alpha ,\beta )}(1)=(n+\alpha +1)P_n^{(\alpha ,\beta )}(1)\).
Reference: [DLMF, Table 18.6.1].
Lean Formalisation
theorem Polynomial.eval_jacobi_one.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
Polynomial.eval 1 (Polynomial.jacobi α β n) =
(algebraMap ℚ R) (↑n.factorial)⁻¹ * Polynomial.eval (α + 1) (ascPochhammer R n)
Lean proof
/-- The endpoint normalisation (DLMF Table 18.6.1). -/
@[simp] theorem eval_jacobi_one (α β : R) (n : ℕ) :
(jacobi α β n).eval 1 = algebraMap ℚ R ((n.factorial : ℚ)⁻¹) *
(ascPochhammer R n).eval (α + 1) := by
unfold jacobi
rw [eval_finsetSum, Finset.sum_eq_single 0]
· simp
· intro l hl hl0
simp [hl0]
· simp
source Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). The Jacobi polynomials satisfy
Reference: [DLMF, Table 18.6.1].
Lean Formalisation
theorem Polynomial.jacobi_comp_neg_X.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
(Polynomial.jacobi α β n).comp (-Polynomial.X) = Polynomial.C ((-1) ^ n) * Polynomial.jacobi β α n
Lean proof
/-- Reflection swaps the Jacobi parameters, including degenerate specialisations
(DLMF Table 18.6.1). -/
theorem jacobi_comp_neg_X {R : Type*} [CommRing R] [Algebra ℚ R]
(α β : R) (n : ℕ) :
(jacobi α β n).comp (-X) = C ((-1 : R) ^ n) * jacobi β α n := by
have h := jacobi_comp_neg_X_of_nonzero (X : ℚ[X][X]) (C X) n (fun k hk ↦ by
have hc := congrArg (fun p : ℚ[X][X] ↦ p.coeff 1) hk
have hk : (k : ℚ[X][X]) = C (k : ℚ[X]) := by simp
rw [hk] at hc
norm_num [coeff_add, coeff_one] at hc)
let f : ℚ[X][X] →ₐ[ℚ] R := eval₂AlgHom (aeval β) α (fun _ ↦ Commute.all _ _)
have hm := congrArg (Polynomial.map f.toRingHom) h
simp only [map_comp, Polynomial.map_neg, map_X, Polynomial.map_mul,
Polynomial.map_C, map_jacobi] at hm
simpa [f, eval₂_pow, eval₂_neg, eval₂_one] using hm
source Parameter substitution and low degrees
For a commutative \(\mathbb {Q}\)-algebra \(R\) and \(\alpha ,\beta \in R\),
For every \(\mathbb {Q}\)-algebra homomorphism \(f:R\to S\) and \(n\in \mathbb {N}\), applying \(f\) to the coefficients of \(P_n^{(\alpha ,\beta )}\) gives \(P_n^{(f(\alpha ),f(\beta ))}\).
Reference: [DLMF, 18.5.7].
Lean Formalisation
theorem Polynomial.jacobi_zero.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) : Polynomial.jacobi α β 0 = 1
Lean proof
/-- The constant member is one (DLMF 18.5.7). -/
@[simp] theorem jacobi_zero (α β : R) : jacobi α β 0 = 1 := by
simp [jacobi]
source 3.2.2 Polynomial and weighted identities
The derivative shifts both parameters. The recurrence, differential equation, Rodrigues formula and terminating Gauss series give complementary descriptions of the same polynomials.
Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). Then
Reference: [DLMF, 18.9.15].
Lean Formalisation
theorem Polynomial.derivative_jacobi_succ.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
Polynomial.derivative (Polynomial.jacobi α β (n + 1)) =
Polynomial.C ((algebraMap ℚ R) (1 / 2) * (↑n + α + β + 2)) * Polynomial.jacobi (α + 1) (β + 1) n
Lean proof
/-- Differentiation raises both Jacobi parameters by one (DLMF 18.9.15). -/
theorem derivative_jacobi_succ (α β : R) (n : ℕ) :
derivative (jacobi α β (n + 1)) =
C (algebraMap ℚ R (1 / 2) * ((n : R) + α + β + 2)) *
jacobi (α + 1) (β + 1) n := by
let c (α β : R) (n l : ℕ) : R :=
algebraMap ℚ R (((l.factorial : ℚ) * (n - l).factorial * 2 ^ l)⁻¹) *
(ascPochhammer R l).eval ((n : R) + α + β + 1) *
(ascPochhammer R (n - l)).eval (α + l + 1)
have hrat (l : ℕ) :
(l + 1 : ℚ) * (((l + 1).factorial : ℚ) * (n - l).factorial * 2 ^ (l + 1))⁻¹ =
(1 / 2 : ℚ) * (((l.factorial : ℚ) * (n - l).factorial * 2 ^ l)⁻¹) := by
rw [Nat.factorial_succ, Nat.cast_mul, Nat.cast_add, Nat.cast_one, pow_succ]
field_simp
have hc (l : ℕ) : c α β (n + 1) (l + 1) * (l + 1 : R) =
(algebraMap ℚ R (1 / 2) * ((n : R) + α + β + 2)) *
c (α + 1) (β + 1) n l := by
have hm := congrArg (algebraMap ℚ R) (hrat l)
simp only [map_mul, map_add, map_natCast, map_one] at hm
dsimp only [c]
rw [Nat.add_sub_add_right, ascPochhammer_succ_left, eval_mul, eval_X,
eval_comp, eval_add, eval_X, eval_one]
simp only [Nat.cast_add, Nat.cast_one]
have h1 : (n : R) + 1 + α + β + 1 = n + α + β + 2 := by ring
have h2 : (n : R) + α + β + 2 + 1 = n + (α + 1) + (β + 1) + 1 := by ring
have h3 : α + ((l : R) + 1) + 1 = (α + 1) + l + 1 := by ring
rw [h1, h2, h3]
calc
_ = ((l + 1 : R) * algebraMap ℚ R
((( (l + 1).factorial : ℚ) * (n - l).factorial * 2 ^ (l + 1))⁻¹)) *
((n : R) + α + β + 2) *
(ascPochhammer R l).eval ((n : R) + (α + 1) + (β + 1) + 1) *
(ascPochhammer R (n - l)).eval ((α + 1) + l + 1) := by ring
_ = _ := by rw [hm]; ring
change derivative (∑ l ∈ Finset.range (n + 1 + 1), C (c α β (n + 1) l) *
(X - 1) ^ l) = C _ * ∑ l ∈ Finset.range (n + 1),
C (c (α + 1) (β + 1) n l) * (X - 1) ^ l
rw [derivative_sum, Finset.sum_range_succ']
simp only [pow_zero, mul_one, derivative_C, add_zero, Finset.mul_sum]
apply Finset.sum_congr rfl
intro l _
rw [derivative_C_mul, derivative_pow_succ, derivative_sub, derivative_X,
derivative_one, sub_zero, mul_one, ← mul_assoc, ← C_mul, hc, C_mul, mul_assoc]
source Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). Put \(s=\alpha +\beta \). Then
No factor depending on parameters is inverted, including at degenerate specialisations.
Reference: [DLMF, 18.9.1–18.9.2].
Lean Formalisation
theorem Polynomial.jacobi_recurrence.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
Polynomial.C (2 * (↑n + 2) * (↑n + α + β + 2) * (2 * ↑n + α + β + 2)) * Polynomial.jacobi α β (n + 2) =
Polynomial.C (2 * ↑n + α + β + 3) *
(Polynomial.C ((2 * ↑n + α + β + 2) * (2 * ↑n + α + β + 4)) * Polynomial.X + Polynomial.C (α ^ 2 - β ^ 2)) *
Polynomial.jacobi α β (n + 1) -
Polynomial.C (2 * (↑n + α + 1) * (↑n + β + 1) * (2 * ↑n + α + β + 4)) * Polynomial.jacobi α β n
Lean proof
/-- The three-term Jacobi recurrence with all parameter denominators cleared,
valid over every commutative rational algebra (DLMF 18.9.1--2, index shifted by one). -/
theorem jacobi_recurrence {R : Type*} [CommRing R] [Algebra ℚ R]
(α β : R) (n : ℕ) :
C (2 * (n + 2) * (n + α + β + 2) * (2 * n + α + β + 2)) * jacobi α β (n + 2) =
C (2 * n + α + β + 3) *
(C ((2 * n + α + β + 2) * (2 * n + α + β + 4)) * X + C (α ^ 2 - β ^ 2)) *
jacobi α β (n + 1) -
C (2 * (n + α + 1) * (n + β + 1) * (2 * n + α + β + 4)) * jacobi α β n := by
have h := jacobi_recurrence_of_nonzero (X : ℚ[X][X]) (C X) n (fun k hk ↦ by
have hc := congrArg (fun p : ℚ[X][X] ↦ p.coeff 1) hk
norm_num [coeff_add, coeff_natCast_ite, coeff_one] at hc)
let f : ℚ[X][X] →ₐ[ℚ] R := eval₂AlgHom (aeval β) α (fun _ ↦ Commute.all _ _)
have hm := congrArg (Polynomial.map f.toRingHom) h
simp only [Polynomial.map_mul, Polynomial.map_sub, Polynomial.map_add,
Polynomial.map_C, map_X, map_jacobi] at hm
simpa [f, eval₂_add, eval₂_sub, eval₂_mul, eval₂_pow, eval₂_natCast, eval₂_ofNat] using hm
source Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). The Jacobi polynomial \(y=P_n^{(\alpha ,\beta )}(X)\) satisfies
Reference: [DLMF, Table 18.8.1].
Lean Formalisation
theorem Polynomial.jacobi_differentialEquation.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
(1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.derivative (Polynomial.jacobi α β n)) +
(Polynomial.C (β - α) - Polynomial.C (α + β + 2) * Polynomial.X) *
Polynomial.derivative (Polynomial.jacobi α β n) +
Polynomial.C (↑n * (↑n + α + β + 1)) * Polynomial.jacobi α β n =
0
Lean proof
/-- The Jacobi differential equation, without parameter restrictions
(DLMF Table 18.8.1). -/
theorem jacobi_differentialEquation (α β : R) (n : ℕ) :
(1 - X ^ 2) * derivative (derivative (jacobi α β n)) +
(C (β - α) - C (α + β + 2) * X) * derivative (jacobi α β n) +
C ((n : R) * ((n : R) + α + β + 1)) * jacobi α β n = 0 := by
let : HasUniqueDiv R := HasUniqueDiv.of_module_rat R
induction n generalizing α β with
| zero => simp
| succ n ih =>
let p := jacobi α β (n + 1)
let q := jacobi (α + 1) (β + 1) n
let d := algebraMap ℚ R (1 / 2) * ((n : R) + α + β + 2)
let r := (1 - X ^ 2) * derivative (derivative p) +
(C (β - α) - C (α + β + 2) * X) * derivative p +
C (((n + 1 : ℕ) : R) * (((n + 1 : ℕ) : R) + α + β + 1)) * p
have hp : derivative p = C d * q := derivative_jacobi_succ α β n
have hr : derivative r = 0 := by
dsimp only [r]
simp only [derivative_add, derivative_mul, derivative_sub, derivative_one,
derivative_X_pow, derivative_X, derivative_C, zero_mul, zero_sub,
zero_add, mul_one]
rw [hp, derivative_C_mul, derivative_C_mul]
have hi := ih (α + 1) (β + 1)
change (1 - X ^ 2) * derivative (derivative q) +
(C ((β + 1) - (α + 1)) - C ((α + 1) + (β + 1) + 2) * X) * derivative q +
C ((n : R) * ((n : R) + (α + 1) + (β + 1) + 1)) * q = 0 at hi
simp only [Nat.cast_add, Nat.cast_one, map_add, map_sub, map_mul,
map_natCast, map_ofNat, map_one] at hi ⊢
linear_combination C d * hi
have hhalf : (2 : R) * algebraMap ℚ R (1 / 2) = 1 := by
have h := congrArg (algebraMap ℚ R) (show (2 : ℚ) * (1 / 2) = 1 by norm_num)
simpa only [map_mul, map_ofNat, map_one] using h
have hfact : (n + 1 : R) * algebraMap ℚ R (((n + 1).factorial : ℚ)⁻¹) =
algebraMap ℚ R ((n.factorial : ℚ)⁻¹) :=
Nat.cast_succ_mul_algebraMap_inv_factorial R n
have heval : r.eval 1 = 0 := by
dsimp only [r]
simp only [eval_add, eval_mul, eval_sub, eval_one, eval_pow, eval_X,
one_pow, sub_self, zero_mul, zero_add, eval_C, mul_one]
rw [hp, eval_mul, eval_C]
dsimp only [p, q, d]
rw [eval_jacobi_one, eval_jacobi_one, ascPochhammer_succ_left,
eval_mul, eval_X, eval_comp, eval_add, eval_X, eval_one]
simp only [Nat.cast_add, Nat.cast_one]
have harg : (n : R) + 1 + α + β + 1 = n + α + β + 2 := by ring
rw [harg]
calc
_ = (-(2 * algebraMap ℚ R (1 / 2)) * algebraMap ℚ R ((n.factorial : ℚ)⁻¹) +
(n + 1 : R) * algebraMap ℚ R (((n + 1).factorial : ℚ)⁻¹)) *
((n : R) + α + β + 2) * (α + 1) *
(ascPochhammer R n).eval (α + 1 + 1) := by ring
_ = 0 := by rw [hhalf, hfact]; ring
have hconst := eq_C_of_derivative_eq_zero hr
have hc := congrArg (fun p : R[X] => p.eval 1) hconst
simp only [eval_C] at hc
have hcoeff : r.coeff 0 = 0 := hc.symm.trans heval
change r = 0
rw [hconst, hcoeff, C_0]
source For real \(\alpha ,\beta \), define the continuous map \(w_{\alpha ,\beta }:(-1,1)\to \mathbb {R}_{\ge 0}\) by \(w_{\alpha ,\beta }(x)=(1-x)^\alpha (1+x)^\beta \). Let \(\mu _{\alpha ,\beta }=\mu _{w_{\alpha ,\beta }}\) be the measure of Definition 1.1.2 for this weight on \((-1,1)\).
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
def Polynomial.jacobiWeight (α β : ℝ) : C(↑(Set.Ioo (-1) 1), NNReal)
Lean definition
/-- The Jacobi weight on its open interval, with nonnegative values. -/
noncomputable def jacobiWeight (α β : ℝ) : C(Ioo (-1 : ℝ) 1, ℝ≥0) where
toFun x := ⟨(1 - (x : ℝ)) ^ α * (1 + (x : ℝ)) ^ β,
mul_nonneg (Real.rpow_nonneg (by linarith [x.property.2]) _)
(Real.rpow_nonneg (by linarith [x.property.1]) _)⟩
continuous_toFun := by
apply Continuous.subtype_mk
apply Continuous.mul
· exact (continuous_const.sub continuous_subtype_val).rpow_const
(fun x ↦ Or.inl (by change 1 - (x : ℝ) ≠ 0; linarith [x.property.2]))
· exact (continuous_const.add continuous_subtype_val).rpow_const
(fun x ↦ Or.inl (by change 1 + (x : ℝ) ≠ 0; linarith [x.property.1]))
source A real function \(f\) is \(\mu _{\alpha ,\beta }\)-integrable if and only if \(x\mapsto w_{\alpha ,\beta }(x)f(x)\) is Lebesgue-integrable on \((-1,1)\). When these equivalent integrability conditions hold,
Lean Formalisation
theorem Polynomial.integrable_jacobiMeasure_iff (α β : ℝ) (f : ℝ → ℝ) :
MeasureTheory.Integrable f (Polynomial.jacobiMeasure α β) ↔
MeasureTheory.Integrable (fun x => ↑((Polynomial.jacobiWeight α β) x) * f ↑x) MeasureTheory.volume
Lean proof
/-- Characterization of integrability against the classical Jacobi measure. -/
theorem integrable_jacobiMeasure_iff (α β : ℝ) (f : ℝ → ℝ) :
Integrable f (jacobiMeasure α β) ↔
Integrable (fun x : Ioo (-1 : ℝ) 1 ↦ (jacobiWeight α β x : ℝ) * f x) volume :=
integrable_openIntervalWeightMeasure_iff _ _ _ _
source For all real \(\alpha ,\beta \), \(n\ge 0\), and \(-1{\lt}x{\lt}1\), write \(w_{\alpha ,\beta }(x)=(1-x)^\alpha (1+x)^\beta \). Then
The weight is strictly positive in the open interval, so division gives the usual Rodrigues representation. No integrability or endpoint regularity hypothesis is imposed.
Reference: [DLMF, 18.9.16, 18.5.5 and Table 18.5.1].
Lean Formalisation
theorem Polynomial.hasDerivAt_jacobiWeight_mul_jacobi (α β : ℝ) (n : ℕ) (x : ↑(Set.Ioo (-1) 1)) :
HasDerivAtOnOpen { carrier := Set.Ioo (-1) 1, is_open' := ⋯ }
(fun y =>
↑((Polynomial.jacobiWeight (α + 1) (β + 1)) y) * Polynomial.eval (↑y) (Polynomial.jacobi (α + 1) (β + 1) n))
(-2 * (↑n + 1) * ↑((Polynomial.jacobiWeight α β) x) * Polynomial.eval (↑x) (Polynomial.jacobi α β (n + 1))) x
Lean proof
/-- The weighted lowering identity is a genuine derivative on the open domain
(DLMF 18.9.16). -/
theorem hasDerivAt_jacobiWeight_mul_jacobi (α β : ℝ) (n : ℕ)
(x : Ioo (-1 : ℝ) 1) :
HasDerivAtOnOpen ⟨Ioo (-1 : ℝ) 1, isOpen_Ioo⟩
(fun y ↦ (jacobiWeight (α + 1) (β + 1) y : ℝ) *
(jacobi (α + 1) (β + 1) n).eval (y : ℝ))
(-2 * (n + 1 : ℝ) * (jacobiWeight α β x : ℝ) *
(jacobi α β (n + 1)).eval (x : ℝ)) x := by
have hP : HasDerivAtOnOpen ⟨Ioo (-1 : ℝ) 1, isOpen_Ioo⟩
(fun y ↦ (jacobi (α + 1) (β + 1) n).eval (y : ℝ))
((jacobi (α + 1) (β + 1) n).derivative.eval (x : ℝ)) x :=
⟨fun t ↦ (jacobi (α + 1) (β + 1) n).eval t, fun _ ↦ rfl,
(jacobi (α + 1) (β + 1) n).hasDerivAt x⟩
have hd := (hasDerivAt_jacobiWeight_add_one α β x).mul hP
have he := congrArg (fun p : ℝ[X] ↦ p.eval (x : ℝ)) (jacobi_rodrigues_step α β n)
simp only [eval_add, eval_sub, eval_mul, eval_pow, eval_one, eval_X, eval_C, eval_neg] at he
convert hd using 1
rw [jacobiWeight_add_one α β x]
linear_combination -(jacobiWeight α β x : ℝ) * he
source Let \(R\) be a characteristic-zero field with a rational algebra structure, let \(\alpha ,\beta ,x\in R\), and let \(n\in \mathbb {N}\). Assume \((\alpha +1)_n\ne 0\). Then
For real or complex scalars this equals
where \({}_2F_1\) is the Gauss series of Definition 1.2.6. The finite nonvanishing condition excludes zeros among exactly the denominator factors needed through degree \(n\); \(x\) is unrestricted.
Reference: [DLMF, 18.5.7].
Lean Formalisation
theorem Polynomial.eval_jacobi_eq_hypergeometric_sum.{u_1} {R : Type u_1} [Field R] [CharZero R] [Algebra ℚ R] (α β x : R)
(n : ℕ) (hc : Polynomial.eval (α + 1) (ascPochhammer R n) ≠ 0) :
Polynomial.eval x (Polynomial.jacobi α β n) =
Polynomial.eval (α + 1) (ascPochhammer R n) / ↑n.factorial *
∑ k ∈ Finset.range (n + 1),
ordinaryHypergeometricCoefficientOn (GaussParameters.ofTerminating (-↑n) (↑n + α + β + 1) (α + 1) n ⋯ hc) k *
((1 - x) / 2) ^ k
Lean proof
/-- The finite Jacobi representation with only certified classical coefficients. -/
theorem eval_jacobi_eq_hypergeometric_sum {R : Type*} [Field R] [CharZero R]
[Algebra ℚ R] (α β x : R) (n : ℕ)
(hc : (ascPochhammer R n).eval (α + 1) ≠ 0) :
(jacobi α β n).eval x = (ascPochhammer R n).eval (α + 1) / n.factorial *
∑ k ∈ Finset.range (n + 1),
ordinaryHypergeometricCoefficientOn
(GaussParameters.ofTerminating (-(n : R)) (n + α + β + 1) (α + 1) n (Or.inl rfl) hc) k *
((1 - x) / 2) ^ k := by
rw [jacobi, eval_finsetSum, Finset.mul_sum]
apply Finset.sum_congr rfl
intro k hk
have hkn : k ≤ n := Nat.le_of_lt_succ (Finset.mem_range.mp hk)
have hck := GaussParameters.pochhammer_ne_zero_of_le (α + 1) hc hkn
rw [ordinaryHypergeometricCoefficientOn_eq_div _ k hck]
simp only [eval_mul, eval_C, eval_pow, eval_sub, eval_X, eval_one,
GaussParameters.ofTerminating]
simpa only [ordinaryHypergeometricCoefficient, div_eq_mul_inv, mul_inv_rev,
mul_assoc, mul_left_comm, mul_comm] using
jacobi_hypergeometric_term α β x n k hkn hc
source Rodrigues proofs, Beta and Euler integrals
For every \(x\in (-1,1)\), \(w_{\alpha ,\beta }(x)=(1-x)^\alpha (1+x)^\beta \).
Lean Formalisation
theorem Polynomial.jacobiWeight_apply (α β : ℝ) (x : ↑(Set.Ioo (-1) 1)) :
↑((Polynomial.jacobiWeight α β) x) = (1 - ↑x) ^ α * (1 + ↑x) ^ β
Lean proof
/-- The defining weight formula only has strictly positive power bases. -/
theorem jacobiWeight_apply (α β : ℝ) (x : Ioo (-1 : ℝ) 1) :
(jacobiWeight α β x : ℝ) = (1 - (x : ℝ)) ^ α * (1 + (x : ℝ)) ^ β := rfl
source Let \(R\) be a commutative \(\mathbb {Q}\)-algebra, let \(\alpha ,\beta \in R\), and let \(n\in \mathbb {N}\). Put \(Q=P_n^{(\alpha +1,\beta +1)}\). Then
No parameter factor is cancelled in the final identity.
Reference: [DLMF, 18.5.5 and 18.9.16].
Lean Formalisation
theorem Polynomial.jacobi_rodrigues_step.{u_1} {R : Type u_1} [CommRing R] [Algebra ℚ R] (α β : R) (n : ℕ) :
(1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.jacobi (α + 1) (β + 1) n) +
(Polynomial.C (β - α) - Polynomial.C (α + β + 2) * Polynomial.X) * Polynomial.jacobi (α + 1) (β + 1) n =
-Polynomial.C (2 * (↑n + 1)) * Polynomial.jacobi α β (n + 1)
Lean proof
/-- The polynomial first-order identity underlying Jacobi Rodrigues' formula,
with no parameter restrictions (DLMF 18.5.5 and 18.9.16). -/
theorem jacobi_rodrigues_step {R : Type*} [CommRing R] [Algebra ℚ R]
(α β : R) (n : ℕ) :
(1 - X ^ 2) * derivative (jacobi (α + 1) (β + 1) n) +
(C (β - α) - C (α + β + 2) * X) * jacobi (α + 1) (β + 1) n =
-C (2 * (n + 1 : R)) * jacobi α β (n + 1) := by
have h := jacobi_rodrigues_step_of_ne_zero (X : ℚ[X][X]) (C X) n (by
intro hz
have hc := congrArg (fun p : ℚ[X][X] ↦ p.coeff 1) hz
norm_num [coeff_add, coeff_natCast_ite] at hc)
let f : ℚ[X][X] →ₐ[ℚ] R := eval₂AlgHom (aeval β) α (fun _ ↦ Commute.all _ _)
have hm := congrArg (Polynomial.map f.toRingHom) h
simp only [Polynomial.map_add, Polynomial.map_sub, Polynomial.map_mul,
Polynomial.map_neg, Polynomial.map_pow, Polynomial.map_one, Polynomial.map_C,
map_X, ← derivative_map, map_jacobi] at hm
simpa [f, eval₂_add, eval₂_sub, eval₂_mul, eval₂_natCast, eval₂_ofNat] using hm
source Let \(R\) be a characteristic-zero commutative domain and a \(\mathbb {Q}\)-algebra. Suppose \(\alpha +k+1\ne 0\) for every \(k\in \mathbb {N}\). For any \(\beta ,\gamma \in R\), a polynomial \(p\) satisfying
is zero.
Reference: [DLMF, Table 18.8.1].
Lean Formalisation
theorem Polynomial.eq_zero_of_jacobi_ode.{u_1} {R : Type u_1} [CommRing R] [IsDomain R] [CharZero R] [Algebra ℚ R] (α β γ : R)
(p : Polynomial R) (hα : ∀ (k : ℕ), α + ↑k + 1 ≠ 0)
(he :
(1 - Polynomial.X ^ 2) * Polynomial.derivative (Polynomial.derivative p) +
(Polynomial.C (β - α) - Polynomial.C (α + β + 2) * Polynomial.X) * Polynomial.derivative p +
Polynomial.C γ * p =
0)
(hv : Polynomial.eval 1 p = 0) : p = 0
Lean proof
/-- A polynomial solution vanishing at one is zero when the endpoint coefficients
are nonzero (DLMF Table 18.8.1). -/
theorem eq_zero_of_jacobi_ode {R : Type*} [CommRing R] [IsDomain R] [CharZero R] [Algebra ℚ R]
(α β γ : R) (p : R[X])
(hα : ∀ k : ℕ, α + k + 1 ≠ 0)
(he : (1 - X ^ 2) * derivative (derivative p) +
(C (β - α) - C (α + β + 2) * X) * derivative p + C γ * p = 0)
(hv : p.eval 1 = 0) : p = 0 := by
let : HasUniqueDiv R := HasUniqueDiv.of_module_rat R
induction hn : p.natDegree using Nat.strong_induction_on generalizing α β γ p with
| h n ih =>
have hdv : (derivative p).eval 1 = 0 := by
have h := congrArg (fun q : R[X] ↦ q.eval 1) he
simp only [eval_add, eval_mul, eval_sub, eval_one, eval_pow, eval_X,
one_pow, sub_self, zero_mul, zero_add, eval_C, eval_zero, mul_one, hv, mul_zero, add_zero] at h
have hz : (-2 * (α + 1)) * (derivative p).eval 1 = 0 := by
linear_combination h
exact (mul_eq_zero.mp hz).resolve_left (mul_ne_zero (by norm_num) (by simpa using hα 0))
have hd : derivative p = 0 := by
by_cases hp : p.natDegree = 0
· exact derivative_of_natDegree_zero hp
have he' := congrArg derivative he
simp only [derivative_add, derivative_mul, derivative_sub, derivative_one,
derivative_X_pow, Nat.cast_ofNat, Nat.reduceSub, pow_one, derivative_X, derivative_C, zero_mul, zero_sub,
zero_add, mul_one, derivative_zero] at he'
apply ih (derivative p).natDegree (by rw [← hn]; exact natDegree_derivative_lt hp)
(α + 1) (β + 1) (γ - (α + β + 2)) (derivative p)
· intro k
convert hα (k + 1) using 1
push_cast
ring
· simp only [map_add, map_sub, map_ofNat, map_one]
simp only [map_add, map_sub, map_ofNat] at he'
linear_combination he'
· exact hdv
· rfl
have hc := eq_C_of_derivative_eq_zero hd
have heval := congrArg (fun q : R[X] ↦ q.eval 1) hc
simp only [eval_C, hv] at heval
rw [hc, ← heval, C_0]
source For \(a,z\in \mathbb {C}\) with \(|z|{\lt}1\),
with absolute convergence and the principal complex power. Reference: the binomial expansion used in [DLMF, 15.6.1].
Lean Formalisation
theorem Complex.choose_add_nat_sub_one_eq (a : ℂ) (n : ℕ) :
Ring.choose (a + ↑n - 1) n = (↑n.factorial)⁻¹ * Polynomial.eval a (ascPochhammer ℂ n)
Lean proof
/-- Pochhammer normalization of the generalized binomial coefficient. -/
theorem choose_add_nat_sub_one_eq (a : ℂ) (n : ℕ) :
Ring.choose (a+n-1) n = (n.factorial : ℂ)⁻¹ * (ascPochhammer ℂ n).eval a := by
rw [← Ring.multichoose_eq]
have h := Ring.factorial_nsmul_multichoose_eq_ascPochhammer a n
simp only [nsmul_eq_mul] at h
have hn : (n.factorial : ℂ) ≠ 0 := Nat.cast_ne_zero.mpr (Nat.factorial_ne_zero n)
apply (mul_left_cancel₀ hn)
rw [h, ← mul_assoc, mul_inv_cancel₀ hn, one_mul]
exact Polynomial.ascPochhammer_smeval_eq_eval a n
source For \(a,b\in \mathbb {C}\) with \(\Re a,\Re b{\gt}0\), define
The powers are principal complex powers of positive real bases; the integration variable belongs to the open interval. Reference: [DLMF, 5.12.1].
Lean Formalisation
def Complex.BetaParameter : Type
Lean definition
/-- The Euler half-plane for a Beta parameter. -/
abbrev BetaParameter := {z : ℂ // 0 < z.re}
source For every pair in the preceding domain the integrand is integrable, and
All three Gamma arguments lie in the open right half-plane. Reference: [DLMF, 5.12.1].
Lean Formalisation
theorem Complex.integrable_betaIntegralOn (a b : Complex.BetaParameter) :
MeasureTheory.Integrable (fun t => ↑↑t ^ (↑a - 1) * (1 - ↑↑t) ^ (↑b - 1))
(MeasureTheory.Measure.comap Subtype.val MeasureTheory.volume)
Lean proof
/-- Every input in the typed domain gives an integrable Beta integrand. -/
theorem integrable_betaIntegralOn (a b : BetaParameter) :
Integrable (fun t : Ioo (0 : ℝ) 1 ↦ (t.val : ℂ) ^ (a.val - 1) *
(1 - (t.val : ℂ)) ^ (b.val - 1)) (Measure.comap Subtype.val volume) := by
obtain ⟨B,hB,hi⟩ := exists_beta_representative a b
have hI := (intervalIntegrable_iff_integrableOn_Ioo_of_le (f := B) (by norm_num : (0 : ℝ) ≤ 1)).mp hi
have h := (integrableOn_iff_comap_subtypeVal (f := B) (μ := volume) measurableSet_Ioo).mp hI
apply h.congr
filter_upwards [] with t
exact hB t
source For \(\Re b{\gt}0\), \(\Re (c-b){\gt}0\), and \(n\in \mathbb {N}\),
Thus integration of \(t^n\) against \(t^{b-1}(1-t)^{c-b-1}\), followed by multiplication by \((a)_n/n!\), gives \(B(b,c-b)\) times the \(n\)th ordinary Gauss-series coefficient. These integrands are integrable on \((0,1)\). More generally, the shifted moment \(\int _{(0,1)}t^{u-n-1}(1-t)^{v-1}t^n\, dt=B(u,v)\) is integrable for \(\Re u,\Re v{\gt}0\), even when the unshifted exponent would not be integrable. The Euler parameters \((a,b,b+d)\) are admissible whenever \(\Re b,\Re d{\gt}0\). Reference: [DLMF, 5.12.1, 15.6.1].
Lean Formalisation
theorem Complex.betaIntegralOn_add_nat_left (a b : Complex.BetaParameter) (n : ℕ) :
Complex.betaIntegralOn ⟨↑a + ↑n, ⋯⟩ b =
Complex.betaIntegralOn a b * Polynomial.eval (↑a) (ascPochhammer ℂ n) /
Polynomial.eval (↑a + ↑b) (ascPochhammer ℂ n)
Lean proof
/-- The classical Beta shift formula on its full Euler domain. -/
theorem betaIntegralOn_add_nat_left (a b : BetaParameter) (n : ℕ) :
betaIntegralOn ⟨a.val + n, by simp only [add_re, natCast_re]; exact add_pos_of_pos_of_nonneg a.property (Nat.cast_nonneg _)⟩ b =
betaIntegralOn a b * (ascPochhammer ℂ n).eval a.val /
(ascPochhammer ℂ n).eval (a.val + b.val) := by
have hc : 0 < (a.val+b.val).re := by simpa only [add_re] using add_pos a.property b.property
have hga := GammaOn_ne_zero (GammaPoint.ofRePos a.val a.property)
have hgc := GammaOn_ne_zero (GammaPoint.ofRePos (a.val+b.val) hc)
have hgcn := GammaOn_ne_zero ((GammaPoint.ofRePos (a.val+b.val) hc).addNat n)
have hra := GammaOn_add_nat_div (GammaPoint.ofRePos a.val a.property) n
have hrc := GammaOn_add_nat_div (GammaPoint.ofRePos (a.val+b.val) hc) n
rw [betaIntegralOn_eq_Gamma,betaIntegralOn_eq_Gamma]
simp only [GammaOn,GammaPoint.ofRePos,GammaPoint.addNat_val] at hga hgc hgcn hra hrc ⊢
rw [← hra,← hrc,show a.val+n+b.val = a.val+b.val+n by ring]
field_simp
source Let \(a,b,c,z\in \mathbb {C}\), \(\Re b{\gt}0\), \(\Re (c-b){\gt}0\), and \(|z|{\lt}1\). Then
All integrals here are over \((0,1)\) and their integrability is asserted. The real and complex definitions agree on real parameters and arguments, and the same integral formula holds over the reals. The dominated-convergence lemma takes any complex \(L^1(0,1)\) weight and asserts integrability of each term and of the summed integrand, together with the sum identity. Reference: [DLMF, 15.6.1], which prints the regularized normalization.
Lean Formalisation
theorem Complex.hasSum_integral_binomialOn (a : ℂ) (z : ↑(Metric.ball 0 1))
(w : ↥(MeasureTheory.Lp ℂ 1 (MeasureTheory.volume.restrict (Set.Ioo 0 1)))) :
(∀ (n : ℕ),
MeasureTheory.Integrable
(fun t => ↑↑w ↑t * ((↑n.factorial)⁻¹ * Polynomial.eval a (ascPochhammer ℂ n) * (↑z * ↑↑t) ^ n))
(MeasureTheory.Measure.comap Subtype.val MeasureTheory.volume)) ∧
MeasureTheory.Integrable (fun t => ↑↑w ↑t / (1 - ↑z * ↑↑t) ^ a)
(MeasureTheory.Measure.comap Subtype.val MeasureTheory.volume) ∧
HasSum
(fun n =>
∫ (t : ↑(Set.Ioo 0 1)),
↑↑w ↑t *
((↑n.factorial)⁻¹ * Polynomial.eval a (ascPochhammer ℂ n) *
(↑z * ↑↑t) ^ n) ∂MeasureTheory.Measure.comap Subtype.val MeasureTheory.volume)
(∫ (t : ↑(Set.Ioo 0 1)),
↑↑w ↑t / (1 - ↑z * ↑↑t) ^ a ∂MeasureTheory.Measure.comap Subtype.val MeasureTheory.volume)
Lean proof
/-- The weighted binomial integral asserts integrability together with its sum. -/
theorem hasSum_integral_binomialOn (a : ℂ) (z : Metric.ball (0 : ℂ) 1)
(w : Lp ℂ 1 (volume.restrict (Ioo (0 : ℝ) 1))) :
(∀ n : ℕ, Integrable (fun t : Ioo (0 : ℝ) 1 ↦
w t.val * (((n.factorial : ℂ)⁻¹ * (ascPochhammer ℂ n).eval a) *
(z.val * (t.val : ℂ)) ^ n)) (Measure.comap Subtype.val volume)) ∧
Integrable (fun t : Ioo (0 : ℝ) 1 ↦ w t.val / (1 - z.val * (t.val : ℂ)) ^ a)
(Measure.comap Subtype.val volume) ∧
HasSum (fun n : ℕ ↦ ∫ t : Ioo (0 : ℝ) 1,
w t.val * (((n.factorial : ℂ)⁻¹ * (ascPochhammer ℂ n).eval a) *
(z.val * (t.val : ℂ)) ^ n) ∂Measure.comap Subtype.val volume)
(∫ t : Ioo (0 : ℝ) 1, w t.val / (1 - z.val * (t.val : ℂ)) ^ a
∂Measure.comap Subtype.val volume) := by
have hz : ‖z.val‖ < 1 := by simpa only [Metric.mem_ball, dist_zero_right] using z.property
have hw : IntervalIntegrable (fun t ↦ w t) volume 0 1 :=
(intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (0 : ℝ) ≤ 1)).mpr
(memLp_one_iff_integrable.mp (Lp.memLp w))
have hi (n : ℕ) : IntervalIntegrable (fun t : ℝ ↦
w t * (((n.factorial : ℂ)⁻¹ * (ascPochhammer ℂ n).eval a) *
(z.val * (t : ℂ)) ^ n)) volume 0 1 := hw.mul_continuousOn (by fun_prop)
have hj := intervalIntegrable_div_eulerFactor a hz hw
refine ⟨fun n ↦ ?_, ?_, ?_⟩
· have h := (intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (0 : ℝ) ≤ 1)).mp (hi n)
exact (integrableOn_iff_comap_subtypeVal measurableSet_Ioo).mp h
· have h := (intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (0 : ℝ) ≤ 1)).mp hj
exact (integrableOn_iff_comap_subtypeVal measurableSet_Ioo).mp h
· convert hasSum_integral_binomial a hz hw using 1
· funext n
exact integral_open_unit_eq_interval _ (hi n)
· exact integral_open_unit_eq_interval _ hj
source The coefficient of \(x^j\) in \(P_n^{(\beta ,\beta )}\) vanishes if \(j\) and \(n\) have different parity, for every real \(\beta \), including degenerate parameters.
Reference: [DLMF, Table 18.6.1].
Lean Formalisation
theorem Polynomial.coeff_comp_neg_X.{u_1} {R : Type u_1} [CommRing R] (p : Polynomial R) (j : ℕ) :
(p.comp (-Polynomial.X)).coeff j = (-1) ^ j * p.coeff j
Lean proof
/-- Reflection multiplies each coefficient by the parity of its index. -/
theorem coeff_comp_neg_X {R : Type*} [CommRing R] (p : R[X]) (j : ℕ) :
(p.comp (-X)).coeff j = (-1 : R) ^ j * p.coeff j := by
induction p using Polynomial.induction_on' with
| add p q hp hq => simp [hp, hq, mul_add]
| monomial k a =>
have hpow : (-X : R[X]) ^ k = C ((-1 : R) ^ k) * X ^ k := by
rw [show (-X : R[X]) = C (-1 : R) * X by simp, mul_pow, ← map_pow]
rw [monomial_comp, hpow]
simp only [coeff_C_mul, coeff_X_pow, coeff_monomial]
by_cases h : j = k
· subst j
simp [mul_comm]
· simp [h, Ne.symm h]
source 3.2.3 Orthogonality and zeros
For \(\alpha ,\beta {\gt}-1\), the Jacobi weight is integrable and the polynomials are orthogonal. The degree-zero norm has a separate formula, valid also when \(\alpha +\beta +1=0\).
For \(\alpha ,\beta {\gt}-1\), the weight is integrable on \((-1,1)\) and every real-valued function continuous on \([-1,1]\) is \(\mu _{\alpha ,\beta }\)-integrable.
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.integrable_jacobiWeight {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
MeasureTheory.Integrable (fun x => ↑((Polynomial.jacobiWeight α β) x)) MeasureTheory.volume
Lean proof
/-- All classically integrable endpoint singularities are included (DLMF 18.3.1). -/
theorem integrable_jacobiWeight {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
Integrable (fun x : Ioo (-1 : ℝ) 1 ↦ (jacobiWeight α β x : ℝ)) volume := by
let P : ℝ → ℝ → ℝ := fun a t ↦ if 0 < t then t ^ a else 0
have hp (a : ℝ) (ha : -1 < a) : IntervalIntegrable (P a) volume 0 1 := by
rw [intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (0 : ℝ) ≤ 1)]
have hraw : IntegrableOn (fun x : ℝ ↦ x ^ a) (Ioo (0 : ℝ) 1) := by
have h := (integrableOn_iff_comap_subtypeVal (f := fun x : ℝ ↦ x ^ a)
measurableSet_Ioo).mpr (Real.integrable_rpow_openInterval ⟨a, ha⟩ 0 1)
simpa using h
apply hraw.congr_fun
· intro x hx
simp [P, hx.1]
· exact measurableSet_Ioo
have hl : IntervalIntegrable (fun x : ℝ ↦ P β (1 + x)) volume (-1) 0 := by
simpa using (hp β hβ).comp_add_left 1
have hr : IntervalIntegrable (fun x : ℝ ↦ P α (1 - x)) volume 0 1 := by
simpa using ((hp α hα).comp_sub_left 1).symm
have hi : IntervalIntegrable (fun x : ℝ ↦ P α (1 - x) * P β (1 + x)) volume (-1) 1 := by
apply IntervalIntegrable.trans (b := 0)
· have hreg : ContinuousOn (fun x : ℝ ↦ (1 - x) ^ α) (uIcc (-1) 0) := by
apply continuousOn_of_forall_continuousAt
intro x hx
rw [uIcc_of_le (by norm_num : (-1 : ℝ) ≤ 0)] at hx
exact (continuousAt_const.sub continuousAt_id).rpow_const
(Or.inl (by change 1 - x ≠ 0; linarith [hx.2]))
apply (hl.continuousOn_mul hreg).congr
intro x hx
rw [uIoc_of_le (by norm_num : (-1 : ℝ) ≤ 0)] at hx
simp [P, show 0 < 1 - x by linarith [hx.2]]
· have hreg : ContinuousOn (fun x : ℝ ↦ (1 + x) ^ β) (uIcc 0 1) := by
apply continuousOn_of_forall_continuousAt
intro x hx
rw [uIcc_of_le (by norm_num : (0 : ℝ) ≤ 1)] at hx
exact (continuousAt_const.add continuousAt_id).rpow_const
(Or.inl (by change 1 + x ≠ 0; linarith [hx.1]))
apply (hr.mul_continuousOn hreg).congr
intro x hx
rw [uIoc_of_le (by norm_num : (0 : ℝ) ≤ 1)] at hx
simp [P, show 0 < 1 + x by linarith [hx.1]]
rw [intervalIntegrable_iff_integrableOn_Ioo_of_le (by norm_num : (-1 : ℝ) ≤ 1),
integrableOn_iff_comap_subtypeVal measurableSet_Ioo] at hi
apply hi.congr
filter_upwards [] with x
dsimp [Function.comp_def, P]
rw [ite_eq_left (show 0 < 1 - (x : ℝ) by linarith [x.property.2]),
ite_eq_left (show 0 < 1 + (x : ℝ) by linarith [x.property.1])]
rfl
source For \(\alpha ,\beta {\gt}-1\) and distinct \(m,n\), \(\int P_m^{(\alpha ,\beta )}P_n^{(\alpha ,\beta )}\, d\mu _{\alpha ,\beta }=0\). The sequence satisfies the general orthogonality predicate.
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.integral_mul_jacobi_eq_zero {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) {m n : ℕ} (hmn : m ≠ n) :
∫ (x : ℝ),
Polynomial.eval x (Polynomial.jacobi α β m) *
Polynomial.eval x (Polynomial.jacobi α β n) ∂Polynomial.jacobiMeasure α β =
0
Lean proof
/-- Distinct Jacobi polynomials are orthogonal (DLMF Table 18.3.1). -/
theorem integral_mul_jacobi_eq_zero {α β : ℝ} (hα : -1 < α) (hβ : -1 < β)
{m n : ℕ} (hmn : m ≠ n) :
∫ x, (jacobi α β m).eval x * (jacobi α β n).eval x ∂jacobiMeasure α β = 0 := by
let c : ℝ := (n : ℝ) * (n + α + β + 1) - (m : ℝ) * (m + α + β + 1)
have hint := integrable_jacobiMeasure hα hβ
((jacobi α β m).continuous.mul (jacobi α β n).continuous).continuousOn
have hw := (integrable_jacobiMeasure_iff _ _ _).mp hint
have hi := integral_eq_zero_of_hasDerivAt_jacobiWeight_mul hα hβ
(((jacobi α β m).derivative.continuous.mul (jacobi α β n).continuous).sub
((jacobi α β m).continuous.mul (jacobi α β n).derivative.continuous)).continuousOn
(jacobi_wronskian_hasDerivAt α β m n)
(by convert hw.const_mul c using 1; ext x; dsimp [c]; ring)
have hc : c ≠ 0 := by
have hnm : (n : ℝ) ≠ m := by exact_mod_cast hmn.symm
have hs : 1 ≤ n + m := by omega
have hs' : (1 : ℝ) ≤ (n : ℝ) + m := by exact_mod_cast hs
have hf : c = ((n : ℝ) - m) * ((n : ℝ) + m + α + β + 1) := by dsimp [c]; ring
rw [hf]
exact mul_ne_zero (sub_ne_zero.mpr hnm) (ne_of_gt (by linarith))
rw [integral_jacobiMeasure α β
⟨fun x ↦ (jacobi α β m).eval (x : ℝ) * (jacobi α β n).eval (x : ℝ), hint⟩]
apply (mul_eq_zero.mp (show c * (∫ x : Ioo (-1 : ℝ) 1,
(jacobiWeight α β x : ℝ) * ((jacobi α β m).eval (x : ℝ) * (jacobi α β n).eval (x : ℝ))) = 0 from ?_)).resolve_left hc
rw [← integral_const_mul]
convert hi using 1
congr 1
funext x
dsimp [c]
ring
source Write \(h_n=\int (P_n^{(\alpha ,\beta )})^2\, d\mu _{\alpha ,\beta }\) for the squared norm.
For \(\alpha ,\beta {\gt}-1\),
and for \(n\ge 1\),
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.integral_sq_jacobi_zero {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
∫ (x : ℝ), Polynomial.eval x (Polynomial.jacobi α β 0) ^ 2 ∂Polynomial.jacobiMeasure α β =
2 ^ (α + β + 1) * Real.GammaOn (Real.GammaPoint.ofPos (α + 1) ⋯) * Real.GammaOn (Real.GammaPoint.ofPos (β + 1) ⋯) /
Real.GammaOn (Real.GammaPoint.ofPos (α + β + 2) ⋯)
Lean proof
/-- The classical Gamma formula; every displayed Gamma value excludes its poles. -/
theorem integral_sq_jacobi_zero {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
∫ x, (jacobi α β 0).eval x ^ 2 ∂jacobiMeasure α β =
(2 : ℝ) ^ (α + β + 1) * GammaOn (GammaPoint.ofPos (α + 1) (by linarith)) * GammaOn (GammaPoint.ofPos (β + 1) (by linarith)) / GammaOn (GammaPoint.ofPos (α + β + 2) (by linarith)) :=
integral_sq_jacobi_zero_gamma_formula hα hβ
source For \(\alpha ,\beta {\gt}-1\), \(P_n^{(\alpha ,\beta )}\) splits over \(\mathbb {R}\), is separable, and has \(n\) roots counted with multiplicity, hence \(n\) distinct real zeros.
Reference: [DLMF, 18.2(vi)].
Lean Formalisation
theorem Polynomial.splits_jacobi {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) : (Polynomial.jacobi α β n).Splits
Lean proof
/-- Jacobi polynomials split over the reals (DLMF 18.2(vi)). -/
theorem splits_jacobi (n : ℕ) : (jacobi α β n).Splits :=
(isOrthogonal_jacobiSequence hα hβ).splits (hasFiniteMoments_jacobiMeasure hα hβ)
(hasPositiveDefiniteIntegral_jacobiMeasure hα hβ) n
source For \(\alpha ,\beta {\gt}-1\), \(P_n\) is orthogonal to every polynomial of degree below \(n\), and every real root of \(P_n\) lies in \((-1,1)\).
Reference: [DLMF, 18.2(i), (vi)].
Lean Formalisation
theorem Polynomial.integral_mul_jacobi_eq_zero_of_degree_lt {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) {p : Polynomial ℝ} {n : ℕ}
(hp : p.degree < ↑n) :
∫ (x : ℝ), Polynomial.eval x p * Polynomial.eval x (Polynomial.jacobi α β n) ∂Polynomial.jacobiMeasure α β = 0
Lean proof
/-- Orthogonality to every lower-degree polynomial (DLMF 18.2(i)). -/
theorem integral_mul_jacobi_eq_zero_of_degree_lt {p : ℝ[X]} {n : ℕ} (hp : p.degree < n) :
∫ x, p.eval x * (jacobi α β n).eval x ∂jacobiMeasure α β = 0 :=
(isOrthogonal_jacobiSequence hα hβ).integralInner_eq_zero_of_degree_lt
(hasFiniteMoments_jacobiMeasure hα hβ) hp
source For \(\alpha ,\beta {\gt}-1\), consecutive members have no common zero and mutually separate each other’s real zeros. For \(n\ge 1\), \(P_{n+1}\) has zeros \(a{\lt}b\) with every zero of \(P_n\) strictly between them.
Reference: [DLMF, 18.2(vi)].
Lean Formalisation
theorem Polynomial.not_eval_jacobi_eq_zero_and_succ {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) (x : ℝ) :
¬(Polynomial.eval x (Polynomial.jacobi α β n) = 0 ∧ Polynomial.eval x (Polynomial.jacobi α β (n + 1)) = 0)
Lean proof
/-- Consecutive members have no common root (DLMF 18.2(vi)). -/
theorem not_eval_jacobi_eq_zero_and_succ (n : ℕ) (x : ℝ) :
¬ ((jacobi α β n).eval x = 0 ∧ (jacobi α β (n + 1)).eval x = 0) :=
(isOrthogonal_jacobiSequence hα hβ).not_eval_eq_zero_and_succ (hasFiniteMoments_jacobiMeasure hα hβ)
(hasPositiveDefiniteIntegral_jacobiMeasure hα hβ) n x
source Weight properties and finite moments
For all real \(\alpha ,\beta \), the weight \(w_{\alpha ,\beta }\) is measurable and strictly positive on its domain \((-1,1)\), and \(\mu _{\alpha ,\beta }\)-almost every point lies in \((-1,1)\).
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.measurable_jacobiWeight (α β : ℝ) : Measurable ⇑(Polynomial.jacobiWeight α β)
Lean proof
/-- The domain-typed Jacobi weight is measurable (DLMF Table 18.3.1). -/
theorem measurable_jacobiWeight (α β : ℝ) : Measurable (jacobiWeight α β) :=
(jacobiWeight α β).continuous.measurable
source For \(\alpha ,\beta {\gt}-1\),
This is nonsingular also when \(\alpha +\beta +1=0\).
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.integral_jacobiWeight {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
∫ (x : ↑(Set.Ioo (-1) 1)), ↑((Polynomial.jacobiWeight α β) x) =
2 ^ (α + β + 1) * Real.GammaOn (Real.GammaPoint.ofPos (α + 1) ⋯) * Real.GammaOn (Real.GammaPoint.ofPos (β + 1) ⋯) /
Real.GammaOn (Real.GammaPoint.ofPos (α + β + 2) ⋯)
Lean proof
/-- The classical Gamma formula; every displayed Gamma value excludes its poles. -/
theorem integral_jacobiWeight {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
∫ x : Ioo (-1 : ℝ) 1, (jacobiWeight α β x : ℝ) =
(2 : ℝ) ^ (α + β + 1) * GammaOn (GammaPoint.ofPos (α + 1) (by linarith)) * GammaOn (GammaPoint.ofPos (β + 1) (by linarith)) / GammaOn (GammaPoint.ofPos (α + β + 2) (by linarith)) := by
have h := integral_jacobiMeasure α β
⟨fun _ ↦ 1, integrable_jacobiMeasure hα hβ continuousOn_const⟩
simp only [mul_one] at h
exact h.symm.trans (integral_one_jacobiMeasure hα hβ)
source 3.2.4 Jacobi expansions
The integral coefficients retain the polynomial normalization used above. Every function in the weighted \(L^2\) space admits the resulting norm-convergent expansion.
For \(f\in \mathcal A_{\mu _{\alpha ,\beta },P_n^{(\alpha ,\beta )}}^{\mathbb {R}}\), define \(a_n(f)=h_n^{-1}\int fP_n\, d\mu _{\alpha ,\beta }\), where \(h_n=\int P_n^2\, d\mu _{\alpha ,\beta }\).
Reference: [DLMF, 18.2(viii)].
Lean Formalisation
def Polynomial.jacobiCoefficient (α β : ℝ) {n : ℕ}
(f : Polynomial.IntegralCoefficientInput ℝ (Polynomial.jacobiMeasure α β) (Polynomial.jacobi α β n)) : ℝ
Lean definition
/-- Jacobi integral coefficients on their full classical domain (DLMF 18.2(viii)). -/
@[expose] noncomputable def jacobiCoefficient (α β : ℝ) {n : ℕ}
(f : IntegralCoefficientInput ℝ (jacobiMeasure α β) (jacobi α β n)) : ℝ :=
(∫ x, (jacobi α β n).eval x ^ 2 ∂jacobiMeasure α β)⁻¹ *
∫ x, f.val x * (jacobi α β n).eval x ∂jacobiMeasure α β
source For \(f\in \mathcal A_{\mu _{\alpha ,\beta },P_n^{(\alpha ,\beta )}}^{\mathbb {R}}\), \(a_n(f)=h_n^{-1}\int fP_n\, d\mu _{\alpha ,\beta }\), with an integrable numerator and finite positive \(h_n\). Under \(\alpha ,\beta {\gt}-1\), every \(L^2(\mu _{\alpha ,\beta })\) function belongs to this coefficient domain at every index, in the original polynomial normalization.
Lean Formalisation
theorem Polynomial.jacobiCoefficient_apply (α β : ℝ) {n : ℕ}
(f : Polynomial.IntegralCoefficientInput ℝ (Polynomial.jacobiMeasure α β) (Polynomial.jacobi α β n)) :
Polynomial.jacobiCoefficient α β f =
(∫ (x : ℝ), Polynomial.eval x (Polynomial.jacobi α β n) ^ 2 ∂Polynomial.jacobiMeasure α β)⁻¹ *
∫ (x : ℝ), f.val x * Polynomial.eval x (Polynomial.jacobi α β n) ∂Polynomial.jacobiMeasure α β
Lean proof
/-- The classical weighted formula includes its integrability and positive normalization. -/
theorem jacobiCoefficient_apply (α β : ℝ) {n : ℕ}
(f : IntegralCoefficientInput ℝ (jacobiMeasure α β) (jacobi α β n)) :
jacobiCoefficient α β f =
(∫ x, (jacobi α β n).eval x ^ 2 ∂jacobiMeasure α β)⁻¹ *
∫ x, f.val x * (jacobi α β n).eval x ∂jacobiMeasure α β := rfl
source The normalized polynomials are \(P_n^{(\alpha ,\beta )}/\sqrt{h_n}\), viewed as weighted \(L^2\) classes. The map \(J_\mu \) denotes polynomial evaluation followed by passage to this class (Definition 3.1.35).
For \(\alpha ,\beta {\gt}-1\), the normalised Jacobi polynomials form a Hilbert basis of real \(L^2(\mu _{\alpha ,\beta })\).
Reference: [DLMF, 18.2(viii)].
Lean Formalisation
theorem Polynomial.polynomialToL2_jacobi_denseRange {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
DenseRange ⇑(Polynomial.polynomialToL2 ⋯)
Lean proof
/-- Jacobi polynomial classes are dense in weighted L² (DLMF 18.2(viii)). -/
theorem polynomialToL2_jacobi_denseRange :
DenseRange (polynomialToL2 (hasFiniteMoments_jacobiMeasure hα hβ)) :=
polynomialToL2_denseRange (hasFiniteMoments_jacobiMeasure hα hβ) (-1) 1
((ae_mem_Ioo_jacobiMeasure α β).mono (fun _ hx ↦ Set.Ioo_subset_Icc_self hx))
source For \(\alpha ,\beta {\gt}-1\) and every \(f\in L^2(\mu _{\alpha ,\beta })\), the series \(\sum _{n\ge 0}a_n(f)J_\mu P_n\) sums to \(f\). Its natural-order partial sums converge in \(L^2\).
Reference: [DLMF, 18.2(viii)].
Lean Formalisation
theorem Polynomial.hasSum_jacobiCoefficient_polynomialToL2 {α β : ℝ} (hα : -1 < α) (hβ : -1 < β)
(f : ↥(MeasureTheory.Lp ℝ 2 (Polynomial.jacobiMeasure α β))) :
HasSum
(fun n =>
Polynomial.jacobiCoefficient α β (Polynomial.IntegralCoefficientInput.ofJacobiL2 hα hβ f n) •
(Polynomial.polynomialToL2 ⋯) (Polynomial.jacobi α β n))
f
Lean proof
/-- Every weighted L² function is the sum of its Jacobi series in L² (DLMF 18.2(viii)). -/
theorem hasSum_jacobiCoefficient_polynomialToL2 (f : Lp ℝ 2 (jacobiMeasure α β)) :
HasSum (fun n ↦ (jacobiCoefficient α β (IntegralCoefficientInput.ofJacobiL2 hα hβ f n)) •
polynomialToL2 (hasFiniteMoments_jacobiMeasure hα hβ) (jacobi α β n)) f := by
simpa only [Sequence.integralCoefficient, squaredNorm_jacobiSequence, jacobiSequence_apply,
jacobiCoefficient, IntegralCoefficientInput.ofJacobiL2, IntegralCoefficientInput.ofL2] using
(isOrthogonal_jacobiSequence hα hβ).hasSum_integralCoefficient
(hasFiniteMoments_jacobiMeasure hα hβ) (hasPositiveDefiniteIntegral_jacobiMeasure hα hβ)
(polynomialToL2_jacobi_denseRange hα hβ) f
source Coefficient identification and weight calculus
For \(\alpha ,\beta {\gt}-1\), the integral coefficients of the Jacobi sequence for \(\mu _{\alpha ,\beta }\) (Definition 3.1.38) are the Jacobi coefficients \(a_n(f)\), for \(f\in \mathcal A_{\mu _{\alpha ,\beta },P_n^{(\alpha ,\beta )}}^{\mathbb {R}}\).
Reference: [DLMF, 18.2(viii)].
Lean Formalisation
theorem Polynomial.integralCoefficient_jacobiSequence {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) {n : ℕ}
(f : Polynomial.IntegralCoefficientInput ℝ (Polynomial.jacobiMeasure α β) (Polynomial.jacobi α β n)) :
(Polynomial.jacobiSequence hα hβ).integralCoefficient (Polynomial.jacobiMeasure α β) f =
Polynomial.jacobiCoefficient α β f
Lean proof
/-- The generic integral coefficients are the Jacobi coefficients on the
classical input domain (DLMF 18.2(viii)). -/
theorem integralCoefficient_jacobiSequence {n : ℕ}
(f : IntegralCoefficientInput ℝ (jacobiMeasure α β) (jacobi α β n)) :
(jacobiSequence hα hβ).integralCoefficient (jacobiMeasure α β) f =
jacobiCoefficient α β f := by
simp only [Sequence.integralCoefficient, squaredNorm_jacobiSequence,
jacobiSequence_apply, jacobiCoefficient]
source For \(\alpha ,\beta {\gt}-1\), \(\mu _{\alpha ,\beta }\) has finite polynomial moments and finite total mass.
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.hasFiniteMoments_jacobiMeasure {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
Polynomial.HasFiniteMoments (Polynomial.jacobiMeasure α β)
Lean proof
/-- Every polynomial square is integrable (DLMF Table 18.3.1). -/
@[aesop (rule_sets := [PolynomialIntegrability]) unsafe 80% apply]
theorem hasFiniteMoments_jacobiMeasure {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
HasFiniteMoments (jacobiMeasure α β) := by
intro p
exact integrable_jacobiMeasure hα hβ (p.continuous.pow 2).continuousOn
source For \(\alpha ,\beta {\gt}-1\) and \(p\ne 0\), \(\int p^2\, d\mu _{\alpha ,\beta }{\gt}0\).
Reference: [DLMF, 18.2(i)].
Lean Formalisation
theorem Polynomial.hasPositiveDefiniteIntegral_jacobiMeasure {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
Polynomial.HasPositiveDefiniteIntegral (Polynomial.jacobiMeasure α β)
Lean proof
/-- Strict positivity of the polynomial pairing (DLMF 18.2(i), Table 18.3.1). -/
@[aesop (rule_sets := [PolynomialIntegrability]) unsafe 80% apply]
theorem hasPositiveDefiniteIntegral_jacobiMeasure {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) :
HasPositiveDefiniteIntegral (jacobiMeasure α β) := by
apply HasPositiveDefiniteIntegral.of_positive
intro p hp
have hex : ∃ x ∈ Ioo (-1 : ℝ) 1, p.eval x ≠ 0 := by
by_contra h
push Not at h
exact hp (p.eq_zero_of_infinite_isRoot
((Ioo_infinite (show (-1 : ℝ) < 1 by norm_num)).mono h))
have hi := integrable_jacobiMeasure hα hβ (p.continuous.pow 2).continuousOn
rw [integral_jacobiMeasure α β ⟨fun x ↦ p.eval x ^ 2, hi⟩]
have hi' := (integrable_jacobiMeasure_iff _ _ _).mp hi
apply (integral_pos_iff_support_of_nonneg (fun x ↦
mul_nonneg (jacobiWeight α β x).property (sq_nonneg _)) hi').2
let : (volume : Measure (Ioo (-1 : ℝ) 1)).IsOpenPosMeasure :=
Measure.IsOpenPosMeasure.comap volume isOpen_Ioo.isOpenEmbedding_subtypeVal
have ho : IsOpen {x : Ioo (-1 : ℝ) 1 | p.eval (x : ℝ) ≠ 0} :=
isOpen_ne.preimage (p.continuous.comp continuous_subtype_val)
have hn : ({x : Ioo (-1 : ℝ) 1 | p.eval (x : ℝ) ≠ 0} : Set _).Nonempty := by
obtain ⟨x, hx, hp⟩ := hex
exact ⟨⟨x, hx⟩, hp⟩
apply (ho.measure_pos volume hn).trans_le
apply measure_mono
intro x hx
exact mul_ne_zero (jacobiWeight_pos α β x).ne' (pow_ne_zero _ hx)
source For \(\alpha ,\beta {\gt}-1\), \(P_n^{(\alpha ,\beta )}\) has positive top coefficient and exact degree \(n\). These polynomials define a degree-indexed sequence.
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
theorem Polynomial.coeff_jacobi_self_pos {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) : 0 < (Polynomial.jacobi α β n).coeff n
Lean proof
/-- The top coefficient is positive in the orthogonality range (DLMF Table 18.3.1). -/
theorem coeff_jacobi_self_pos {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) :
0 < (jacobi α β n).coeff n := by
rcases n with _ | n
· simp
rw [coeff_jacobi_self]
apply mul_pos
· positivity
· apply ascPochhammer_pos
push_cast
linarith [Nat.cast_nonneg (α := ℝ) n]
source For \(\alpha ,\beta \ge 0\), define the continuous map \(\overline w_{\alpha ,\beta }:[-1,1]\to \mathbb {R}_{\ge 0}\) by \(\overline w_{\alpha ,\beta }(x)=(1-x)^\alpha (1+x)^\beta \), where \(0^0=1\).
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
def Polynomial.jacobiWeightClosed (α β : NNReal) : C(↑(Set.Icc (-1) 1), NNReal)
Lean definition
/-- The classical continuous extension for nonnegative exponents (DLMF 18.3.1). -/
@[expose] noncomputable def jacobiWeightClosed (α β : ℝ≥0) : C(Icc (-1 : ℝ) 1, ℝ≥0) where
toFun x := ⟨(1 - (x : ℝ)) ^ (α : ℝ) * (1 + (x : ℝ)) ^ (β : ℝ),
mul_nonneg (Real.rpow_nonneg (by linarith [x.property.2]) _)
(Real.rpow_nonneg (by linarith [x.property.1]) _)⟩
continuous_toFun := by
apply Continuous.subtype_mk
exact ((continuous_const.sub continuous_subtype_val).rpow_const (fun _ ↦ Or.inr α.property)).mul
((continuous_const.add continuous_subtype_val).rpow_const (fun _ ↦ Or.inr β.property))
source For \(\alpha ,\beta \ge 0\), the weight \(\overline w_{\alpha ,\beta }\) agrees with \(w_{\alpha ,\beta }\) on \((-1,1)\), and
Lean Formalisation
theorem Polynomial.jacobiWeightClosed_restrict (α β : NNReal) (x : ↑(Set.Ioo (-1) 1)) :
↑((Polynomial.jacobiWeightClosed α β) ⟨↑x, ⋯⟩) = ↑((Polynomial.jacobiWeight ↑α ↑β) x)
Lean proof
/-- The closed extension agrees with the original weight on its open domain. -/
theorem jacobiWeightClosed_restrict (α β : ℝ≥0) (x : Ioo (-1 : ℝ) 1) :
(jacobiWeightClosed α β ⟨x, Ioo_subset_Icc_self x.property⟩ : ℝ) =
(jacobiWeight α β x : ℝ) := rfl
source On \((-1,1)\), for arbitrary real \(\alpha ,\beta \),
If \(\alpha {\gt}-1\), the right endpoint limit of the shifted weight is zero, with no restriction on \(\beta \). If \(\beta {\gt}-1\), its left endpoint limit is zero, with no restriction on \(\alpha \).
Reference: [DLMF, Tables 18.3.1 and 18.8.1].
Lean Formalisation
theorem Polynomial.jacobiWeight_add_one (α β : ℝ) (x : ↑(Set.Ioo (-1) 1)) :
↑((Polynomial.jacobiWeight (α + 1) (β + 1)) x) = (1 - ↑x ^ 2) * ↑((Polynomial.jacobiWeight α β) x)
Lean proof
/-- Multiplying by `1-x²` shifts both parameters on the classical domain. -/
theorem jacobiWeight_add_one (α β : ℝ) (x : Ioo (-1 : ℝ) 1) :
(jacobiWeight (α + 1) (β + 1) x : ℝ) =
(1 - (x : ℝ) ^ 2) * (jacobiWeight α β x : ℝ) :=
jacobiWeight_add_one_rpow α β x.property
source For \(\alpha ,\beta {\gt}-1\), set \(h_n^{(\alpha ,\beta )}=\int (P_n^{(\alpha ,\beta )})^2\, d\mu _{\alpha ,\beta }\). Then
Reference: [DLMF, 18.9.15, Tables 18.3.1 and 18.8.1].
Lean Formalisation
theorem Polynomial.integral_sq_derivative_jacobi {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) :
∫ (x : ℝ),
Polynomial.eval x (Polynomial.derivative (Polynomial.jacobi α β n)) ^
2 ∂Polynomial.jacobiMeasure (α + 1) (β + 1) =
↑n * (↑n + α + β + 1) * ∫ (x : ℝ), Polynomial.eval x (Polynomial.jacobi α β n) ^ 2 ∂Polynomial.jacobiMeasure α β
Lean proof
/-- The Jacobi energy identity (DLMF Tables 18.3.1 and 18.8.1). -/
theorem integral_sq_derivative_jacobi {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) :
∫ x, (jacobi α β n).derivative.eval x ^ 2 ∂jacobiMeasure (α + 1) (β + 1) =
((n : ℝ) * (n + α + β + 1)) *
∫ x, (jacobi α β n).eval x ^ 2 ∂jacobiMeasure α β := by
have hi0 := integrable_jacobiMeasure hα hβ
((jacobi α β n).continuous.pow 2).continuousOn
have hi1 := integrable_jacobiMeasure (by linarith : -1 < α + 1)
(by linarith : -1 < β + 1) ((jacobi α β n).derivative.continuous.pow 2).continuousOn
have hw0 := (integrable_jacobiMeasure_iff _ _ _).mp hi0
have hw1 := (integrable_jacobiMeasure_iff _ _ _).mp hi1
simp only [Pi.pow_apply] at hw0 hw1
have hi := integral_eq_zero_of_hasDerivAt_jacobiWeight_mul hα hβ
((jacobi α β n).derivative.continuous.mul (jacobi α β n).continuous).continuousOn
(jacobi_energy_hasDerivAt α β n)
(hw1.sub (hw0.const_mul ((n : ℝ) * (n + α + β + 1))))
rw [integral_sub hw1 (hw0.const_mul _), integral_const_mul] at hi
rw [integral_jacobiMeasure (α + 1) (β + 1)
⟨fun x ↦ (jacobi α β n).derivative.eval (x : ℝ) ^ 2, hi1⟩,
integral_jacobiMeasure α β ⟨fun x ↦ (jacobi α β n).eval (x : ℝ) ^ 2, hi0⟩]
exact sub_eq_zero.mp hi
source For \(\alpha ,\beta {\gt}-1\), set \(e_n=h_n^{-1/2}J_{\mu _{\alpha ,\beta }}P_n^{(\alpha ,\beta )}\), where \(h_n\) is the squared integral norm.
Reference: [DLMF, Table 18.3.1].
Lean Formalisation
def Polynomial.normalizedJacobi {α β : ℝ} (hα : -1 < α) (hβ : -1 < β) (n : ℕ) :
↥(MeasureTheory.Lp ℝ 2 (Polynomial.jacobiMeasure α β))
Lean definition
/-- Normalised Jacobi classes (DLMF Table 18.3.1). -/
noncomputable def normalizedJacobi (n : ℕ) : Lp ℝ 2 (jacobiMeasure α β) :=
(jacobiSequence hα hβ).normalizedToL2 (hasFiniteMoments_jacobiMeasure hα hβ) ⟨n, Sequence.squaredNorm_pos (hasPositiveDefiniteIntegral_jacobiMeasure hα hβ) (jacobiSequence hα hβ) n⟩
source