Skip to content

Commit fc733ac

Browse files
committed
feat: characteristic function on product space (leanprover-community#26264)
The characteristic function of a measure is a product of characteristic functions if and only if the measure is a product measure. We prove this for Hilbert spaces and Banach spaces equipped with any Lp norm. Co-authored-by: Etienne Marion <baguettes_casino0c@icloud.com>
1 parent f48b2e9 commit fc733ac

5 files changed

Lines changed: 192 additions & 7 deletions

File tree

Mathlib/Analysis/Normed/Lp/ProdLp.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,7 @@ variable [Module 𝕜 α] [Module 𝕜 β]
514514

515515
/-- `WithLp.equiv` as a continuous linear equivalence. -/
516516
-- This is not specific to products and should be generalised!
517+
@[simps!]
517518
def prodContinuousLinearEquiv : WithLp p (α × β) ≃L[𝕜] α × β where
518519
toLinearEquiv := WithLp.linearEquiv _ _ _
519520
continuous_toFun := continuous_id

Mathlib/LinearAlgebra/Pi.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ lemma single_apply [DecidableEq ι] {i : ι} (v : φ i) :
146146
single R φ i v = Pi.single i v :=
147147
rfl
148148

149+
lemma sum_single_apply [Fintype ι] [DecidableEq ι] (v : Π i, φ i) :
150+
∑ i, Pi.single i (v i) = v := by ext; simp
151+
149152
@[simp]
150153
theorem coe_single [DecidableEq ι] (i : ι) :
151154
⇑(single R φ i : φ i →ₗ[R] (i : ι) → φ i) = Pi.single i :=

Mathlib/MeasureTheory/Measure/CharacteristicFunction.lean

Lines changed: 182 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ Authors: Jakob Stiefel, Rémy Degenne, Thomas Zhu
66
import Mathlib.Analysis.Fourier.BoundedContinuousFunctionChar
77
import Mathlib.Analysis.Fourier.FourierTransform
88
import Mathlib.Analysis.InnerProductSpace.Dual
9+
import Mathlib.Analysis.InnerProductSpace.ProdL2
10+
import Mathlib.Analysis.Normed.Lp.MeasurableSpace
911
import Mathlib.MeasureTheory.Group.IntegralConvolution
12+
import Mathlib.MeasureTheory.Integral.Pi
1013
import Mathlib.MeasureTheory.Measure.FiniteMeasureExt
1114

1215
/-!
@@ -47,6 +50,9 @@ and `L`.
4750
-/
4851

4952
open BoundedContinuousFunction RealInnerProductSpace Real Complex ComplexConjugate NormedSpace
53+
WithLp
54+
55+
open scoped ENNReal
5056

5157
namespace BoundedContinuousFunction
5258

@@ -242,6 +248,65 @@ lemma charFun_conv [IsFiniteMeasure μ] [IsFiniteMeasure ν] (t : E) :
242248
· simp [inner_add_left, add_mul, Complex.exp_add, integral_const_mul, integral_mul_const]
243249
· exact (integrable_const (1 : ℝ)).mono (by fun_prop) (by simp)
244250

251+
variable {E F : Type*} [NormedAddCommGroup E] [NormedAddCommGroup F]
252+
[InnerProductSpace ℝ E] [InnerProductSpace ℝ F] {mE : MeasurableSpace E}
253+
{mF : MeasurableSpace F}
254+
255+
/-- The characteristic function of a product of measures is a product of
256+
characteristic functions. This is the version for Hilbert spaces, see `charFunDual_prod`
257+
for the Banach space version. -/
258+
lemma charFun_prod {μ : Measure E} {ν : Measure F} [SFinite μ] [SFinite ν]
259+
(t : WithLp 2 (E × F)) :
260+
charFun ((μ.prod ν).map (toLp 2)) t =
261+
charFun μ (ofLp t).1 * charFun ν (ofLp t).2 := by
262+
simp_rw [charFun, prod_inner_apply, ← MeasurableEquiv.coe_toLp, ← integral_prod_mul,
263+
integral_map_equiv]
264+
simp [ofReal_add, add_mul, Complex.exp_add]
265+
266+
variable [CompleteSpace E] [CompleteSpace F] [SecondCountableTopology E] [SecondCountableTopology F]
267+
[BorelSpace E] [BorelSpace F]
268+
269+
/-- The characteristic function of a measure is a product of
270+
characteristic functions if and only if it is a product measure.
271+
This is the version for Hilbert spaces, see `charFunDual_eq_prod_iff`
272+
for the Banach space version. -/
273+
lemma charFun_eq_prod_iff {μ : Measure E} {ν : Measure F} {ξ : Measure (E × F)}
274+
[IsFiniteMeasure μ] [IsFiniteMeasure ν] [IsFiniteMeasure ξ] :
275+
(∀ t, charFun (ξ.map (toLp 2)) t = charFun μ (ofLp t).1 * charFun ν (ofLp t).2) ↔
276+
ξ = μ.prod ν where
277+
mp h := by
278+
refine (MeasurableEquiv.toLp 2 (E × F)).map_measurableEquiv_injective
279+
<| Measure.ext_of_charFun <| funext fun t ↦ ?_
280+
rw [MeasurableEquiv.coe_toLp, h, charFun_prod]
281+
mpr h := by rw [h]; exact charFun_prod
282+
283+
variable {ι : Type*} [Fintype ι] {E : ι → Type*} [∀ i, NormedAddCommGroup (E i)]
284+
[∀ i, InnerProductSpace ℝ (E i)] {mE : ∀ i, MeasurableSpace (E i)}
285+
286+
/-- The characteristic function of a product of measures is a product of
287+
characteristic functions. This is the version for Hilbert spaces, see `charFunDual_pi`
288+
for the Banach space version. -/
289+
lemma charFun_pi {μ : (i : ι) → Measure (E i)} [∀ i, SigmaFinite (μ i)] (t : PiLp 2 E) :
290+
charFun ((Measure.pi μ).map (toLp 2)) t = ∏ i, charFun (μ i) (t i) := by
291+
simp_rw [charFun, PiLp.inner_apply, ← MeasurableEquiv.coe_toLp, ← integral_fintype_prod_eq_prod,
292+
integral_map_equiv]
293+
simp [ofReal_sum, Finset.sum_mul, Complex.exp_sum]
294+
295+
variable [∀ i, CompleteSpace (E i)] [∀ i, SecondCountableTopology (E i)] [∀ i, BorelSpace (E i)]
296+
297+
/-- The characteristic function of a measure is a product of
298+
characteristic functions if and only if it is a product measure.
299+
This is the version for Hilbert spaces, see `charFunDual_eq_pi_iff`
300+
for the Banach space version. -/
301+
lemma charFun_eq_pi_iff {μ : (i : ι) → Measure (E i)} {ν : Measure (Π i, E i)}
302+
[∀ i, IsFiniteMeasure (μ i)] [IsFiniteMeasure ν] :
303+
(∀ t, charFun (ν.map (toLp 2)) t = ∏ i, charFun (μ i) (t i)) ↔ ν = Measure.pi μ where
304+
mp h := by
305+
refine (MeasurableEquiv.toLp 2 (Π i, E i)).map_measurableEquiv_injective
306+
<| Measure.ext_of_charFun <| funext fun t ↦ ?_
307+
rw [MeasurableEquiv.coe_toLp, h, charFun_pi]
308+
mpr h := by rw [h]; exact charFun_pi
309+
245310
end InnerProductSpace
246311

247312
section NormedSpace
@@ -310,15 +375,56 @@ lemma charFunDual_map_const_add [BorelSpace E] (r : E) (L : StrongDual ℝ E) :
310375
exact charFunDual_map_add_const _ _
311376

312377
/-- The characteristic function of a product of measures is a product of
313-
characteristic functions. -/
378+
characteristic functions. This is the version for Banach spaces, see `charFun_prod`
379+
for the Hilbert space version. -/
314380
lemma charFunDual_prod [SFinite μ] [SFinite ν] (L : StrongDual ℝ (E × F)) :
315381
charFunDual (μ.prod ν) L
316382
= charFunDual μ (L.comp (.inl ℝ E F)) * charFunDual ν (L.comp (.inr ℝ E F)) := by
317-
let L₁ : StrongDual ℝ E := L.comp (.inl ℝ E F)
318-
let L₂ : StrongDual ℝ F := L.comp (.inr ℝ E F)
319383
simp_rw [charFunDual_apply, ← L.comp_inl_add_comp_inr, ofReal_add, add_mul,
320-
Complex.exp_add]
321-
rw [integral_prod_mul (f := fun x ↦ cexp ((L₁ x * I))) (g := fun x ↦ cexp ((L₂ x * I)))]
384+
Complex.exp_add, ← integral_prod_mul]
385+
386+
/-- The characteristic function of a product of measures is a product of
387+
characteristic functions. This is `charFunDual_prod` for `WithLp`.
388+
See `charFun_prod` for the Hilbert space version. -/
389+
lemma charFunDual_prod' (p : ℝ≥0∞) [Fact (1 ≤ p)] [SFinite μ] [SFinite ν]
390+
(L : StrongDual ℝ (WithLp p (E × F))) :
391+
charFunDual ((μ.prod ν).map (toLp p)) L =
392+
charFunDual μ (L.comp
393+
((prodContinuousLinearEquiv p ℝ E F).symm.toContinuousLinearMap.comp
394+
(.inl ℝ E F))) *
395+
charFunDual ν (L.comp
396+
((prodContinuousLinearEquiv p ℝ E F).symm.toContinuousLinearMap.comp
397+
(.inr ℝ E F))) := by
398+
simp_rw [charFunDual_apply, ← integral_prod_mul, ← Complex.exp_add, ← add_mul, ← ofReal_add,
399+
L.comp_apply, ← map_add, ContinuousLinearMap.comp_inl_add_comp_inr]
400+
rw [← MeasurableEquiv.coe_toLp, integral_map_equiv]
401+
simp
402+
403+
/-- The characteristic function of a product of measures is a product of
404+
characteristic functions. This is the version for Banach spaces, see `charFunDual_pi`
405+
for the Hilbert space version. -/
406+
lemma charFunDual_pi {ι : Type*} [Fintype ι] [DecidableEq ι] {E : ι → Type*}
407+
[∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace ℝ (E i)] {mE : ∀ i, MeasurableSpace (E i)}
408+
{μ : (i : ι) → Measure (E i)} [∀ i, SigmaFinite (μ i)] (L : StrongDual ℝ (Π i, E i)) :
409+
charFunDual (Measure.pi μ) L =
410+
∏ i, charFunDual (μ i) (L.comp (.single ℝ E i)) := by
411+
simp_rw [charFunDual_apply, ← L.sum_comp_single, ofReal_sum, Finset.sum_mul, Complex.exp_sum,
412+
← integral_fintype_prod_eq_prod]
413+
414+
/-- The characteristic function of a product of measures is a product of
415+
characteristic functions. This is `charFunDual_pi` for `PiLp`.
416+
See `charFunDual_pi` for the Banach space version. -/
417+
lemma charFunDual_pi' (p : ℝ≥0∞) [Fact (1 ≤ p)] {ι : Type*} [Fintype ι] [DecidableEq ι]
418+
{E : ι → Type*} [∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace ℝ (E i)]
419+
{mE : ∀ i, MeasurableSpace (E i)} {μ : (i : ι) → Measure (E i)} [∀ i, SigmaFinite (μ i)]
420+
(L : StrongDual ℝ (PiLp p E)) :
421+
charFunDual ((Measure.pi μ).map (toLp p)) L =
422+
∏ i, charFunDual (μ i) (L.comp
423+
((PiLp.continuousLinearEquiv p ℝ E).symm.toContinuousLinearMap.comp (.single ℝ E i))) := by
424+
simp_rw [charFunDual_apply, ← integral_fintype_prod_eq_prod, ← Complex.exp_sum, ← Finset.sum_mul,
425+
← ofReal_sum, L.comp_apply, ← map_sum, ContinuousLinearMap.sum_comp_single]
426+
rw [← MeasurableEquiv.coe_toLp, integral_map_equiv]
427+
simp
322428

323429
variable [BorelSpace E] [SecondCountableTopology E]
324430

@@ -337,6 +443,77 @@ theorem Measure.ext_of_charFunDual [CompleteSpace E]
337443
exact hv (NormedSpace.eq_zero_of_forall_dual_eq_zero _ h)
338444
· exact isBoundedBilinearMap_apply.symm.continuous
339445

446+
/-- The characteristic function of a measure is a product of
447+
characteristic functions if and only if it is a product measure.
448+
This is the version for Banach spaces, see `charFun_eq_prod_iff`
449+
for the Hilbert space version. -/
450+
lemma charFunDual_eq_prod_iff [BorelSpace F] [SecondCountableTopology F] [CompleteSpace E]
451+
[CompleteSpace F] {ξ : Measure (E × F)} [IsFiniteMeasure μ] [IsFiniteMeasure ν]
452+
[IsFiniteMeasure ξ] :
453+
(∀ L, charFunDual ξ L =
454+
charFunDual μ (L.comp (.inl ℝ E F)) * charFunDual ν (L.comp (.inr ℝ E F))) ↔
455+
ξ = μ.prod ν where
456+
mp h := by
457+
refine Measure.ext_of_charFunDual <| funext fun t ↦ ?_
458+
rw [h, charFunDual_prod]
459+
mpr h := by rw [h]; exact charFunDual_prod
460+
461+
/-- The characteristic function of a measure is a product of
462+
characteristic functions if and only if it is a product measure.
463+
This is `charFunDual_eq_prod_iff` for `WithLp`.
464+
See `charFun_eq_prod_iff` for the Hilbert space version. -/
465+
lemma charFunDual_eq_prod_iff' (p : ℝ≥0∞) [Fact (1 ≤ p)] [BorelSpace F]
466+
[SecondCountableTopology F] [CompleteSpace E] [CompleteSpace F] {ξ : Measure (E × F)}
467+
[IsFiniteMeasure μ] [IsFiniteMeasure ν] [IsFiniteMeasure ξ] :
468+
(∀ L, charFunDual (ξ.map (toLp p)) L =
469+
charFunDual μ (L.comp
470+
((WithLp.prodContinuousLinearEquiv p ℝ E F).symm.toContinuousLinearMap.comp
471+
(.inl ℝ E F))) *
472+
charFunDual ν (L.comp
473+
((WithLp.prodContinuousLinearEquiv p ℝ E F).symm.toContinuousLinearMap.comp
474+
(.inr ℝ E F)))) ↔
475+
ξ = μ.prod ν where
476+
mp h := by
477+
refine (MeasurableEquiv.toLp p (E × F)).map_measurableEquiv_injective
478+
<| Measure.ext_of_charFunDual <| funext fun L ↦ ?_
479+
rw [MeasurableEquiv.coe_toLp, h, charFunDual_prod']
480+
mpr h := by rw [h]; exact charFunDual_prod' p
481+
482+
/-- The characteristic function of a measure is a product of
483+
characteristic functions if and only if it is a product measure.
484+
This is the version for Banach spaces, see `charFun_eq_pi_iff`
485+
for the Hilbert space version. -/
486+
lemma charFunDual_eq_pi_iff {ι : Type*} [Fintype ι] [DecidableEq ι] {E : ι → Type*}
487+
[∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace ℝ (E i)] {mE : ∀ i, MeasurableSpace (E i)}
488+
[∀ i, BorelSpace (E i)] [∀ i, SecondCountableTopology (E i)] [∀ i, CompleteSpace (E i)]
489+
{μ : (i : ι) → Measure (E i)} {ν : Measure (Π i, E i)} [∀ i, IsFiniteMeasure (μ i)]
490+
[IsFiniteMeasure ν] :
491+
(∀ L, charFunDual ν L = ∏ i, charFunDual (μ i) (L.comp (.single ℝ E i))) ↔
492+
ν = Measure.pi μ where
493+
mp h := by
494+
refine Measure.ext_of_charFunDual <| funext fun t ↦ ?_
495+
rw [h, charFunDual_pi]
496+
mpr h := by rw [h]; exact charFunDual_pi
497+
498+
/-- The characteristic function of a measure is a product of
499+
characteristic functions if and only if it is a product measure.
500+
This is `charFunDual_eq_pi_iff` for `PiLp`.
501+
See `charFun_eq_pi_iff` for the Hilbert space version. -/
502+
lemma charFunDual_eq_pi_iff' (p : ℝ≥0∞) [Fact (1 ≤ p)] {ι : Type*} [Fintype ι] [DecidableEq ι]
503+
{E : ι → Type*} [∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace ℝ (E i)]
504+
{mE : ∀ i, MeasurableSpace (E i)} [∀ i, BorelSpace (E i)] [∀ i, SecondCountableTopology (E i)]
505+
[∀ i, CompleteSpace (E i)] {μ : (i : ι) → Measure (E i)} {ν : Measure (Π i, E i)}
506+
[∀ i, IsFiniteMeasure (μ i)] [IsFiniteMeasure ν] :
507+
(∀ L, charFunDual (ν.map (toLp p)) L =
508+
∏ i, charFunDual (μ i) (L.comp
509+
((PiLp.continuousLinearEquiv p ℝ E).symm.toContinuousLinearMap.comp (.single ℝ E i)))) ↔
510+
ν = Measure.pi μ where
511+
mp h := by
512+
refine (MeasurableEquiv.toLp p (Π i, E i)).map_measurableEquiv_injective
513+
<| Measure.ext_of_charFunDual <| funext fun L ↦ ?_
514+
rw [MeasurableEquiv.coe_toLp, h, charFunDual_pi']
515+
mpr h := by rw [h]; exact charFunDual_pi' p
516+
340517
/-- The characteristic function of a convolution of measures
341518
is the product of the respective characteristic functions. -/
342519
lemma charFunDual_conv {μ ν : Measure E} [IsFiniteMeasure μ] [IsFiniteMeasure ν]

Mathlib/MeasureTheory/SpecificCodomains/WithLp.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,15 @@ theorem fst_integral_withLp [CompleteSpace F] (hf : Integrable f μ) :
8585
conv => enter [1, 1]; change WithLp.prodContinuousLinearEquiv q ℝ E F _
8686
rw [← ContinuousLinearEquiv.integral_comp_comm, fst_integral]
8787
· rfl
88-
· simpa
88+
· exact (ContinuousLinearEquiv.integrable_comp_iff _).2 hf
8989

9090
theorem snd_integral_withLp [CompleteSpace E] (hf : Integrable f μ) :
9191
(∫ x, f x ∂μ).snd = ∫ x, (f x).snd ∂μ := by
9292
rw [← WithLp.ofLp_snd]
9393
conv => enter [1, 1]; change WithLp.prodContinuousLinearEquiv q ℝ E F _
9494
rw [← ContinuousLinearEquiv.integral_comp_comm, snd_integral]
9595
· rfl
96-
· simpa
96+
· exact (ContinuousLinearEquiv.integrable_comp_iff _).2 hf
9797

9898
end Prod
9999

Mathlib/Topology/Algebra/Module/LinearMapPiProd.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@ def single [DecidableEq ι] (i : ι) : φ i →L[R] (∀ i, φ i) where
222222
toLinearMap := .single R φ i
223223
cont := continuous_single _
224224

225+
lemma sum_comp_single [Fintype ι] [DecidableEq ι] (L : (Π i, φ i) →L[R] M) (v : Π i, φ i) :
226+
∑ i, L.comp (.single R φ i) (v i) = L v := by
227+
simp [← map_sum, LinearMap.sum_single_apply]
228+
225229
end Pi
226230

227231
section Ring

0 commit comments

Comments
 (0)