Skip to content

Commit

Permalink
feat(measure_theory/measure/measure_space): generalize measure.comap (#…
Browse files Browse the repository at this point in the history
…15343)

Generalize comap to functions verifying `injective f ∧ ∀ s, measurable_set s → null_measurable_set (f '' s) μ`.



Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>
  • Loading branch information
RemyDegenne and urkud committed Jul 15, 2022
1 parent 4f23c9b commit 72d7b4e
Showing 1 changed file with 42 additions and 6 deletions.
48 changes: 42 additions & 6 deletions src/measure_theory/measure/measure_space.lean
Expand Up @@ -1019,9 +1019,12 @@ lemma tendsto_ae_map {f : α → β} (hf : ae_measurable f μ) : tendsto f μ.ae

omit m0

/-- Pullback of a `measure`. If `f` sends each `measurable` set to a `measurable` set, then for each
measurable set `s` we have `comap f μ s = μ (f '' s)`. -/
def comap [measurable_space α] (f : α → β) : measure β →ₗ[ℝ≥0∞] measure α :=
/-- Pullback of a `measure` as a linear map. If `f` sends each measurable set to a measurable
set, then for each measurable set `s` we have `comapₗ f μ s = μ (f '' s)`.
If the linearity is not needed, please use `comap` instead, which works for a larger class of
functions. -/
def comapₗ [measurable_space α] (f : α → β) : measure β →ₗ[ℝ≥0∞] measure α :=
if hf : injective f ∧ ∀ s, measurable_set s → measurable_set (f '' s) then
lift_linear (outer_measure.comap f) $ λ μ s hs t,
begin
Expand All @@ -1032,14 +1035,47 @@ if hf : injective f ∧ ∀ s, measurable_set s → measurable_set (f '' s) then
end
else 0

lemma comap_apply {β} [measurable_space α] {mβ : measurable_space β} (f : α → β) (hfi : injective f)
lemma comapₗ_apply {β} [measurable_space α] {mβ : measurable_space β}
(f : α → β) (hfi : injective f)
(hf : ∀ s, measurable_set s → measurable_set (f '' s)) (μ : measure β) (hs : measurable_set s) :
comap f μ s = μ (f '' s) :=
comapₗ f μ s = μ (f '' s) :=
begin
rw [comap, dif_pos, lift_linear_apply _ hs, outer_measure.comap_apply, coe_to_outer_measure],
rw [comapₗ, dif_pos, lift_linear_apply _ hs, outer_measure.comap_apply, coe_to_outer_measure],
exact ⟨hfi, hf⟩
end

/-- Pullback of a `measure`. If `f` sends each measurable set to a null-measurable set,
then for each measurable set `s` we have `comap f μ s = μ (f '' s)`. -/
def comap [measurable_space α] (f : α → β) (μ : measure β) : measure α :=
if hf : injective f ∧ ∀ s, measurable_set s → null_measurable_set (f '' s) μ then
(outer_measure.comap f μ.to_outer_measure).to_measure $ λ s hs t,
begin
simp only [coe_to_outer_measure, outer_measure.comap_apply, ← image_inter hf.1,
image_diff hf.1],
exact (measure_inter_add_diff₀ _ (hf.2 s hs)).symm
end
else 0

lemma comap_apply₀ [measurable_space α] (f : α → β) (μ : measure β) (hfi : injective f)
(hf : ∀ s, measurable_set s → null_measurable_set (f '' s) μ)
(hs : null_measurable_set s (comap f μ)) :
comap f μ s = μ (f '' s) :=
begin
rw [comap, dif_pos (and.intro hfi hf)] at hs ⊢,
rw [to_measure_apply₀ _ _ hs, outer_measure.comap_apply, coe_to_outer_measure]
end

lemma comap_apply {β} [measurable_space α] {mβ : measurable_space β} (f : α → β) (hfi : injective f)
(hf : ∀ s, measurable_set s → measurable_set (f '' s)) (μ : measure β) (hs : measurable_set s) :
comap f μ s = μ (f '' s) :=
comap_apply₀ f μ hfi (λ s hs, (hf s hs).null_measurable_set) hs.null_measurable_set

lemma comapₗ_eq_comap {β} [measurable_space α] {mβ : measurable_space β} (f : α → β)
(hfi : injective f) (hf : ∀ s, measurable_set s → measurable_set (f '' s))
(μ : measure β) (hs : measurable_set s) :
comapₗ f μ s = comap f μ s :=
(comapₗ_apply f hfi hf μ hs).trans (comap_apply f hfi hf μ hs).symm

/-! ### Restricting a measure -/

/-- Restrict a measure `μ` to a set `s` as an `ℝ≥0∞`-linear map. -/
Expand Down

0 comments on commit 72d7b4e

Please sign in to comment.