Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 0269a76

Browse files
committed
feat(integration): integral commutes with continuous linear maps (#4167)
from the sphere eversion project. Main result: ```lean continuous_linear_map.integral_apply_comm {α : Type*} [measurable_space α] {μ : measure α} {E : Type*} [normed_group E] [second_countable_topology E] [normed_space ℝ E] [complete_space E] [measurable_space E] [borel_space E] {F : Type*} [normed_group F] [second_countable_topology F] [normed_space ℝ F] [complete_space F] [measurable_space F] [borel_space F] {φ : α → E} (L : E →L[ℝ] F) (φ_meas : measurable φ) (φ_int : integrable φ μ) : ∫ a, L (φ a) ∂μ = L (∫ a, φ a ∂μ) ```
1 parent 4e3729b commit 0269a76

File tree

2 files changed

+142
-6
lines changed

2 files changed

+142
-6
lines changed

src/measure_theory/borel_space.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -737,21 +737,21 @@ hf.nnnorm.ennreal_coe
737737

738738
end normed_group
739739

740-
section normed_space
740+
namespace continuous_linear_map
741741

742742
variables [measurable_space α]
743743
variables {𝕜 : Type*} [normed_field 𝕜]
744744
variables {E : Type*} [normed_group E] [normed_space 𝕜 E] [measurable_space E] [borel_space E]
745745
variables {F : Type*} [normed_group F] [normed_space 𝕜 F] [measurable_space F] [borel_space F]
746746

747-
lemma continuous_linear_map.measurable (L : E →L[𝕜] F) : measurable L :=
747+
protected lemma measurable (L : E →L[𝕜] F) : measurable L :=
748748
L.continuous.measurable
749749

750-
lemma measurable.clm_apply {φ : α → E} (φ_meas : measurable φ)
751-
(L : E →L[𝕜] F) : measurable (λ (a : α), L (φ a)) :=
750+
lemma measurable_comp (L : E →L[𝕜] F) {φ : α → E} (φ_meas : measurable φ) :
751+
measurable (λ (a : α), L (φ a)) :=
752752
L.measurable.comp φ_meas
753753

754-
end normed_space
754+
end continuous_linear_map
755755

756756
namespace measure_theory
757757
namespace measure

src/measure_theory/set_integral.lean

Lines changed: 137 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ a simple function with a multiple of a characteristic function and that the inte
287287
of their images is a subset of `{0}`).
288288
-/
289289
@[elab_as_eliminator]
290-
lemma integrable.induction {P : (α → E) → Prop}
290+
lemma integrable.induction (P : (α → E) → Prop)
291291
(h_ind : ∀ (c : E) ⦃s⦄, is_measurable s → μ s < ⊤ → P (s.indicator (λ _, c)))
292292
(h_sum : ∀ ⦃f g : α → E⦄, set.univ ⊆ f ⁻¹' {0} ∪ g ⁻¹' {0} → measurable f → measurable g →
293293
integrable f μ → integrable g μ → P f → P g → P (f + g))
@@ -464,6 +464,142 @@ lemma continuous_at.integral_sub_linear_is_o_ae
464464
is_o (λ s, ∫ x in s, f x ∂μ - (μ s).to_real • f a) (λ s, (μ s).to_real) ((𝓝 a).lift' powerset) :=
465465
(ha.mono_left inf_le_left).integral_sub_linear_is_o_ae hfm (μ.finite_at_nhds a)
466466

467+
section
468+
/-! ### Continuous linear maps composed with integration
469+
470+
The goal of this section is to prove that integration commutes with continuous linear maps.
471+
The first step is to prove that, given a function `φ : α → E` which is measurable and integrable,
472+
and a continuous linear map `L : E →L[ℝ] F`, the function `λ a, L(φ a)` is also measurable
473+
and integrable. Note we cannot write this as `L ∘ φ` since the type of `L` is not an actual
474+
function type.
475+
476+
The next step is translate this to `l1`, replacing the function `φ` by a term with type
477+
`α →₁[μ] E` (an equivalence class of integrable functions).
478+
The corresponding "composition" is `L.comp_l1 φ : α →₁[μ] F`. This is then upgraded to
479+
a linear map `L.comp_l1ₗ : (α →₁[μ] E) →ₗ[ℝ] (α →₁[μ] F)` and a continuous linear map
480+
`L.comp_l1L : (α →₁[μ] E) →L[ℝ] (α →₁[μ] F)`.
481+
482+
Then we can prove the commutation result using continuity of all relevant operations
483+
and the result on simple functions.
484+
-/
485+
486+
variables {μ : measure α} [normed_group E] [normed_space ℝ E] [normed_group F] [normed_space ℝ F]
487+
488+
namespace continuous_linear_map
489+
490+
lemma integrable_comp {φ : α → E} (L : E →L[ℝ] F) (φ_int : integrable φ μ) :
491+
integrable (λ (a : α), L (φ a)) μ :=
492+
((integrable.norm φ_int).const_mul ∥L∥).mono' (eventually_of_forall $ λ a, L.le_op_norm (φ a))
493+
494+
variables [second_countable_topology E] [measurable_space E] [borel_space E]
495+
496+
lemma norm_comp_l1_apply_le (φ : α →₁[μ] E) (L : E →L[ℝ] F) : ∀ᵐ a ∂μ, ∥L (φ a)∥ ≤ ∥L∥*∥φ a∥ :=
497+
eventually_of_forall (λ a, L.le_op_norm (φ a))
498+
499+
section
500+
variables [measurable_space F] [borel_space F] [second_countable_topology F]
501+
502+
/-- Composing `φ : α →₁[μ] E` with `L : E →L[ℝ] F`. -/
503+
def comp_l1 (L : E →L[ℝ] F) (φ : α →₁[μ] E) : α →₁[μ] F :=
504+
l1.of_fun (λ a, L (φ a)) (L.measurable_comp φ.measurable) (L.integrable_comp φ.integrable)
505+
506+
lemma comp_l1_apply (L : E →L[ℝ] F) (φ : α →₁[μ] E) : ∀ᵐ a ∂μ, (L.comp_l1 φ) a = L (φ a) :=
507+
l1.to_fun_of_fun _ _ _
508+
509+
end
510+
511+
lemma integrable_comp_l1 (L : E →L[ℝ] F) (φ : α →₁[μ] E) : integrable (λ a, L (φ a)) μ :=
512+
L.integrable_comp φ.integrable
513+
514+
variables [measurable_space F]
515+
516+
lemma measurable_comp_l1 [borel_space F] (L : E →L[ℝ] F) (φ : α →₁[μ] E) :
517+
measurable (λ a, L (φ a)) := L.measurable.comp φ.measurable
518+
519+
variables [borel_space F] [second_countable_topology F]
520+
521+
lemma integral_comp_l1 [complete_space F] (L : E →L[ℝ] F) (φ : α →₁[μ] E) :
522+
∫ a, (L.comp_l1 φ) a ∂μ = ∫ a, L (φ a) ∂μ :=
523+
by simp [comp_l1]
524+
525+
/-- Composing `φ : α →₁[μ] E` with `L : E →L[ℝ] F`, seen as a `ℝ`-linear map on `α →₁[μ] E`. -/
526+
def comp_l1ₗ (L : E →L[ℝ] F) : (α →₁[μ] E) →ₗ[ℝ] (α →₁[μ] F) :=
527+
{ to_fun := λ φ, L.comp_l1 φ,
528+
map_add' := begin
529+
intros f g,
530+
dsimp [comp_l1],
531+
rw [← l1.of_fun_add, l1.of_fun_eq_of_fun],
532+
apply (l1.add_to_fun f g).mono,
533+
intros a ha,
534+
simp only [ha, pi.add_apply, L.map_add]
535+
end,
536+
map_smul' := begin
537+
intros c f,
538+
dsimp [comp_l1],
539+
rw [← l1.of_fun_smul, l1.of_fun_eq_of_fun],
540+
apply (l1.smul_to_fun c f).mono,
541+
intros a ha,
542+
simp only [ha, pi.smul_apply, continuous_linear_map.map_smul]
543+
end }
544+
545+
lemma norm_comp_l1_le (φ : α →₁[μ] E) (L : E →L[ℝ] F) : ∥L.comp_l1 φ∥ ≤ ∥L∥*∥φ∥ :=
546+
begin
547+
erw l1.norm_of_fun_eq_integral_norm,
548+
calc
549+
∫ a, ∥L (φ a)∥ ∂μ ≤ ∫ a, ∥L∥ *∥φ a∥ ∂μ : integral_mono (L.measurable.comp φ.measurable).norm
550+
(L.integrable_comp_l1 φ).norm (φ.measurable_norm.const_mul $ ∥L∥)
551+
(φ.integrable_norm.const_mul $ ∥L∥) (L.norm_comp_l1_apply_le φ)
552+
... = ∥L∥ * ∥φ∥ : by rw [integral_mul_left, φ.norm_eq_integral_norm]
553+
end
554+
555+
/-- Composing `φ : α →₁[μ] E` with `L : E →L[ℝ] F`, seen as a continuous `ℝ`-linear map on
556+
`α →₁[μ] E`. -/
557+
def comp_l1L (L : E →L[ℝ] F) : (α →₁[μ] E) →L[ℝ] (α →₁[μ] F) :=
558+
linear_map.mk_continuous L.comp_l1ₗ (∥L∥) (λ φ, L.norm_comp_l1_le φ)
559+
560+
lemma norm_compl1L_le (L : E →L[ℝ] F) : ∥(L.comp_l1L : (α →₁[μ] E) →L[ℝ] (α →₁[μ] F))∥ ≤ ∥L∥ :=
561+
op_norm_le_bound _ (norm_nonneg _) (λ φ, L.norm_comp_l1_le φ)
562+
563+
variables [complete_space F]
564+
565+
lemma continuous_integral_comp_l1 (L : E →L[ℝ] F) :
566+
continuous (λ (φ : α →₁[μ] E), ∫ (a : α), L (φ a) ∂μ) :=
567+
begin
568+
rw ← funext L.integral_comp_l1,
569+
exact continuous_integral.comp L.comp_l1L.continuous
570+
end
571+
572+
variables [complete_space E]
573+
574+
lemma integral_comp_comm (L : E →L[ℝ] F) {φ : α → E} (φ_meas : measurable φ)
575+
(φ_int : integrable φ μ) : ∫ a, L (φ a) ∂μ = L (∫ a, φ a ∂μ) :=
576+
begin
577+
apply integrable.induction (λ φ, ∫ a, L (φ a) ∂μ = L (∫ a, φ a ∂μ)),
578+
{ intros e s s_meas s_finite,
579+
rw [integral_indicator_const e s_meas, continuous_linear_map.map_smul,
580+
← integral_indicator_const (L e) s_meas],
581+
congr' 1 with a,
582+
rw set.indicator_comp_of_zero L.map_zero },
583+
{ intros f g H f_meas g_meas f_int g_int hf hg,
584+
simp [L.map_add, integral_add f_meas f_int g_meas g_int,
585+
integral_add (L.measurable_comp f_meas) (L.integrable_comp f_int)
586+
(L.measurable_comp g_meas) (L.integrable_comp g_int), hf, hg] },
587+
{ exact is_closed_eq L.continuous_integral_comp_l1 (L.continuous.comp continuous_integral) },
588+
{ intros f g hfg f_meas g_meas f_int hf,
589+
convert hf using 1 ; clear hf,
590+
{ exact integral_congr_ae (L.measurable.comp g_meas) (L.measurable.comp f_meas) (hfg.fun_comp L).symm },
591+
{ rw integral_congr_ae g_meas f_meas hfg.symm } },
592+
all_goals { assumption }
593+
end
594+
595+
lemma integral_comp_l1_comm (L : E →L[ℝ] F) (φ : α →₁[μ] E) :
596+
∫ a, L (φ a) ∂μ = L (∫ a, φ a ∂μ) :=
597+
L.integral_comp_comm φ.measurable φ.integrable
598+
599+
end continuous_linear_map
600+
601+
end
602+
467603
/-
468604
namespace integrable
469605

0 commit comments

Comments
 (0)