Skip to content

Commit bf64be8

Browse files
committed
feat: covarianceBilin lemmas (#27192)
Co-authored-by: Etienne Marion @EtienneC30 From the Brownian motion project.
1 parent 717ccc6 commit bf64be8

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

Mathlib/Probability/Moments/CovarianceBilin.lean

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Authors: Rémy Degenne
55
-/
66
import Mathlib.Analysis.LocallyConvex.ContinuousOfBounded
77
import Mathlib.MeasureTheory.Constructions.BorelSpace.ContinuousLinearMap
8-
import Mathlib.Probability.Moments.Variance
8+
import Mathlib.Probability.Moments.Covariance
99

1010
/-!
1111
# Covariance in Banach spaces
@@ -179,6 +179,11 @@ lemma uncenteredCovarianceBilin_of_not_memLp (h : ¬ MemLp id 2 μ) (L₁ L₂ :
179179
uncenteredCovarianceBilin μ L₁ L₂ = 0 := by
180180
simp [uncenteredCovarianceBilin, Dual.toLp_of_not_memLp h]
181181

182+
lemma uncenteredCovarianceBilin_zero : uncenteredCovarianceBilin (0 : Measure E) = 0 := by
183+
ext
184+
have : Subsingleton (Lp ℝ 2 (0 : Measure E)) := ⟨fun x y ↦ Lp.ext_iff.2 rfl⟩
185+
simp [uncenteredCovarianceBilin, Subsingleton.eq_zero (Dual.toLp 0 2)]
186+
182187
lemma norm_uncenteredCovarianceBilin_le (L₁ L₂ : Dual ℝ E) :
183188
‖uncenteredCovarianceBilin μ L₁ L₂‖ ≤ ‖L₁‖ * ‖L₂‖ * ∫ x, ‖x‖ ^ 2 ∂μ := by
184189
by_cases h : MemLp id 2 μ
@@ -229,6 +234,18 @@ lemma covarianceBilin_of_not_memLp (h : ¬ MemLp id 2 μ) (L₁ L₂ : Dual ℝ
229234
rw [this]
230235
exact h_Lp.add (memLp_const _)
231236

237+
@[simp]
238+
lemma covarianceBilin_zero : covarianceBilin (0 : Measure E) = 0 := by
239+
rw [covarianceBilin, Measure.map_zero, uncenteredCovarianceBilin_zero]
240+
241+
lemma covarianceBilin_comm (L₁ L₂ : Dual ℝ E) :
242+
covarianceBilin μ L₁ L₂ = covarianceBilin μ L₂ L₁ := by
243+
by_cases h : MemLp id 2 μ
244+
· have h' : MemLp id 2 (Measure.map (fun x ↦ x - ∫ (x : E), x ∂μ) μ) :=
245+
(measurableEmbedding_subRight _).memLp_map_measure_iff.mpr <| h.sub (memLp_const _)
246+
simp_rw [covarianceBilin, uncenteredCovarianceBilin_apply h', mul_comm (L₁ _)]
247+
· simp [h]
248+
232249
variable [CompleteSpace E]
233250

234251
lemma covarianceBilin_apply (h : MemLp id 2 μ) (L₁ L₂ : Dual ℝ E) :
@@ -239,10 +256,22 @@ lemma covarianceBilin_apply (h : MemLp id 2 μ) (L₁ L₂ : Dual ℝ E) :
239256
simp [← hL]
240257
· exact (measurableEmbedding_subRight _).memLp_map_measure_iff.mpr <| h.sub (memLp_const _)
241258

242-
lemma covarianceBilin_same_eq_variance (h : MemLp id 2 μ) (L : Dual ℝ E) :
259+
lemma covarianceBilin_apply' (h : MemLp id 2 μ) (L₁ L₂ : Dual ℝ E) :
260+
covarianceBilin μ L₁ L₂ = ∫ x, L₁ (x - μ[id]) * L₂ (x - μ[id]) ∂μ := by
261+
rw [covarianceBilin_apply h]
262+
have hL (L : Dual ℝ E) : μ[L] = L (∫ x, x ∂μ) := L.integral_comp_comm (h.integrable (by simp))
263+
simp [← hL]
264+
265+
lemma covarianceBilin_eq_covariance (h : MemLp id 2 μ) (L₁ L₂ : Dual ℝ E) :
266+
covarianceBilin μ L₁ L₂ = cov[L₁, L₂; μ] := by
267+
rw [covarianceBilin_apply h, covariance]
268+
269+
lemma covarianceBilin_self_eq_variance (h : MemLp id 2 μ) (L : Dual ℝ E) :
243270
covarianceBilin μ L L = Var[L; μ] := by
244-
rw [covarianceBilin_apply h, variance_eq_integral (by fun_prop)]
245-
simp_rw [pow_two]
271+
rw [covarianceBilin_eq_covariance h, covariance_self (by fun_prop)]
272+
273+
@[deprecated (since := "2025-07-16")] alias covarianceBilin_same_eq_variance :=
274+
covarianceBilin_self_eq_variance
246275

247276
end Covariance
248277

0 commit comments

Comments
 (0)