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

Commit e4a882d

Browse files
committed
feat(measure_theory): a file about null measurable sets/functions (#10231)
* Move definitions and lemmas about `null_measurable` to a new file. * Redefine, rename, review API.
1 parent d5964a9 commit e4a882d

File tree

6 files changed

+454
-291
lines changed

6 files changed

+454
-291
lines changed

docs/overview.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ Topology:
211211
Cauchy filter: 'cauchy'
212212
Cauchy sequence: 'cauchy_seq'
213213
completeness: 'complete_space'
214-
completion: 'completion'
214+
completion: 'uniform_space.completion'
215215
Heine-Cantor theorem: 'compact_space.uniform_continuous_of_continuous'
216216
Topological algebra:
217217
order topology: 'order_topology'

src/algebra/support.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ def support [has_zero A] (f : α → A) : set α := {x | f x ≠ 0}
3232
/-- `mul_support` of a function is the set of points `x` such that `f x ≠ 1`. -/
3333
@[to_additive] def mul_support (f : α → M) : set α := {x | f x ≠ 1}
3434

35+
@[to_additive] lemma mul_support_eq_preimage (f : α → M) : mul_support f = f ⁻¹' {1}ᶜ := rfl
36+
3537
@[to_additive] lemma nmem_mul_support {f : α → M} {x : α} :
3638
x ∉ mul_support f ↔ f x = 1 :=
3739
not_not

src/measure_theory/integral/set_integral.lean

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,9 @@ lemma set_integral_pos_iff_support_of_nonneg_ae {f : α → ℝ} (hf : 0 ≤ᵐ[
370370
(hfi : integrable_on f s μ) :
371371
0 < ∫ x in s, f x ∂μ ↔ 0 < μ (support f ∩ s) :=
372372
begin
373-
rw [integral_pos_iff_support_of_nonneg_ae hf hfi, restrict_apply_of_null_measurable_set],
374-
exact hfi.ae_measurable.null_measurable_set (measurable_set_singleton 0).compl
373+
rw [integral_pos_iff_support_of_nonneg_ae hf hfi, measure.restrict_apply₀],
374+
rw support_eq_preimage,
375+
exact hfi.ae_measurable.null_measurable (measurable_set_singleton 0).compl
375376
end
376377

377378
lemma set_integral_trim {α} {m m0 : measurable_space α} {μ : measure α} (hm : m ≤ m0) {f : α → E}

src/measure_theory/measure/measure_space.lean

Lines changed: 31 additions & 270 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Johannes Hölzl, Mario Carneiro
55
-/
6-
import measure_theory.measure.measure_space_def
6+
import measure_theory.measure.null_measurable
77
import measure_theory.measurable_space
88

99
/-!
@@ -103,23 +103,9 @@ instance ae_is_measurably_generated : is_measurably_generated μ.ae :=
103103
⟨λ s hs, let ⟨t, hst, htm, htμ⟩ := exists_measurable_superset_of_null hs in
104104
⟨tᶜ, compl_mem_ae_iff.2 htμ, htm.compl, compl_subset_comm.1 hst⟩⟩
105105

106-
lemma measure_Union [encodable β] {f : β → set α}
107-
(hn : pairwise (disjoint on f)) (h : ∀ i, measurable_set (f i)) :
108-
μ (⋃ i, f i) = ∑' i, μ (f i) :=
109-
begin
110-
rw [measure_eq_extend (measurable_set.Union h),
111-
extend_Union measurable_set.empty _ measurable_set.Union _ hn h],
112-
{ simp [measure_eq_extend, h] },
113-
{ exact μ.empty },
114-
{ exact μ.m_Union }
115-
end
116-
117106
lemma measure_union (hd : disjoint s₁ s₂) (h₁ : measurable_set s₁) (h₂ : measurable_set s₂) :
118107
μ (s₁ ∪ s₂) = μ s₁ + μ s₂ :=
119-
begin
120-
rw [union_eq_Union, measure_Union, tsum_fintype, fintype.sum_bool, cond, cond],
121-
exacts [pairwise_disjoint_on_bool.2 hd, λ b, bool.cases_on b h₂ h₁]
122-
end
108+
measure_union₀ h₁.null_measurable_set h₂.null_measurable_set hd
123109

124110
lemma measure_add_measure_compl (h : measurable_set s) :
125111
μ s + μ sᶜ = μ univ :=
@@ -435,6 +421,16 @@ lemma le_to_measure_apply (m : outer_measure α) (h : ms ≤ m.caratheodory) (s
435421
m s ≤ m.to_measure h s :=
436422
m.le_trim s
437423

424+
lemma to_measure_apply₀ (m : outer_measure α) (h : ms ≤ m.caratheodory)
425+
{s : set α} (hs : null_measurable_set s (m.to_measure h)) : m.to_measure h s = m s :=
426+
begin
427+
refine le_antisymm _ (le_to_measure_apply _ _ _),
428+
rcases hs.exists_measurable_subset_ae_eq with ⟨t, hts, htm, heq⟩,
429+
calc m.to_measure h s = m.to_measure h t : measure_congr heq.symm
430+
... = m t : to_measure_apply m h htm
431+
... ≤ m s : m.mono hts
432+
end
433+
438434
@[simp] lemma to_outer_measure_to_measure {μ : measure α} :
439435
μ.to_outer_measure.to_measure (le_to_outer_measure_caratheodory _) = μ :=
440436
measure.ext $ λ s, μ.to_outer_measure.trim_eq
@@ -815,11 +811,15 @@ lemma restrict_to_outer_measure_eq_to_outer_measure_restrict (h : measurable_set
815811
by simp_rw [restrict, restrictₗ, lift_linear, linear_map.coe_mk, to_measure_to_outer_measure,
816812
outer_measure.restrict_trim h, μ.trimmed]
817813

814+
lemma restrict_apply₀ (ht : null_measurable_set t (μ.restrict s)) :
815+
μ.restrict s t = μ (t ∩ s) :=
816+
(to_measure_apply₀ _ _ ht).trans $ by simp only [coe_to_outer_measure, outer_measure.restrict_apply]
817+
818818
/-- If `t` is a measurable set, then the measure of `t` with respect to the restriction of
819819
the measure to `s` equals the outer measure of `t ∩ s`. An alternate version requiring that `s`
820820
be measurable instead of `t` exists as `measure.restrict_apply'`. -/
821821
@[simp] lemma restrict_apply (ht : measurable_set t) : μ.restrict s t = μ (t ∩ s) :=
822-
by simp [← restrictₗ_apply, restrictₗ, ht]
822+
restrict_apply₀ ht.null_measurable_set
823823

824824
/-- If `s` is a measurable set, then the outer measure of `t` with respect to the restriction of
825825
the measure to `s` equals the outer measure of `t ∩ s`. This is an alternate version of
@@ -1512,6 +1512,14 @@ end measure
15121512
open measure
15131513
open_locale measure_theory
15141514

1515+
lemma null_measurable_set.mono_ac (h : null_measurable_set s μ) (hle : ν ≪ μ) :
1516+
null_measurable_set s ν :=
1517+
⟨to_measurable μ s, measurable_set_to_measurable _ _, hle.ae_eq h.to_measurable_ae_eq.symm⟩
1518+
1519+
lemma null_measurable_set.mono (h : null_measurable_set s μ) (hle : ν ≤ μ) :
1520+
null_measurable_set s ν :=
1521+
h.mono_ac hle.absolutely_continuous
1522+
15151523
@[simp] lemma ae_eq_bot : μ.ae = ⊥ ↔ μ = 0 :=
15161524
by rw [← empty_mem_iff_bot, mem_ae_iff, compl_empty, measure_univ_eq_zero]
15171525

@@ -2606,240 +2614,6 @@ e.measurable_embedding.restrict_map _ _
26062614

26072615
end measurable_equiv
26082616

2609-
section is_complete
2610-
2611-
/-- A measure is complete if every null set is also measurable.
2612-
A null set is a subset of a measurable set with measure `0`.
2613-
Since every measure is defined as a special case of an outer measure, we can more simply state
2614-
that a set `s` is null if `μ s = 0`. -/
2615-
class measure_theory.measure.is_complete {_ : measurable_space α} (μ : measure α) : Prop :=
2616-
(out' : ∀ s, μ s = 0 → measurable_set s)
2617-
2618-
theorem measure_theory.measure.is_complete_iff {_ : measurable_space α} {μ : measure α} :
2619-
μ.is_complete ↔ ∀ s, μ s = 0 → measurable_set s := ⟨λ h, h.1, λ h, ⟨h⟩⟩
2620-
theorem measure_theory.measure.is_complete.out {_ : measurable_space α} {μ : measure α}
2621-
(h : μ.is_complete) : ∀ s, μ s = 0 → measurable_set s := h.1
2622-
2623-
variables [measurable_space α] {μ : measure α} {s t z : set α}
2624-
2625-
/-- A set is null measurable if it is the union of a null set and a measurable set. -/
2626-
def null_measurable_set (μ : measure α) (s : set α) : Prop :=
2627-
∃ t z, s = t ∪ z ∧ measurable_set t ∧ μ z = 0
2628-
2629-
theorem null_measurable_set_iff : null_measurable_set μ s ↔
2630-
∃ t, t ⊆ s ∧ measurable_set t ∧ μ (s \ t) = 0 :=
2631-
begin
2632-
split,
2633-
{ rintro ⟨t, z, rfl, ht, hz⟩,
2634-
refine ⟨t, set.subset_union_left _ _, ht, measure_mono_null _ hz⟩,
2635-
simp [union_diff_left, diff_subset] },
2636-
{ rintro ⟨t, st, ht, hz⟩,
2637-
exact ⟨t, _, (union_diff_cancel st).symm, ht, hz⟩ }
2638-
end
2639-
2640-
theorem null_measurable_set_measure_eq (st : t ⊆ s) (hz : μ (s \ t) = 0) : μ s = μ t :=
2641-
begin
2642-
refine le_antisymm _ (measure_mono st),
2643-
have := measure_union_le t (s \ t),
2644-
rw [union_diff_cancel st, hz] at this, simpa
2645-
end
2646-
2647-
theorem measurable_set.null_measurable_set (μ : measure α) (hs : measurable_set s) :
2648-
null_measurable_set μ s :=
2649-
⟨s, ∅, by simp, hs, μ.empty⟩
2650-
2651-
theorem null_measurable_set_of_complete (μ : measure α) [c : μ.is_complete] :
2652-
null_measurable_set μ s ↔ measurable_set s :=
2653-
by rintro ⟨t, z, rfl, ht, hz⟩; exact
2654-
measurable_set.union ht (c.out _ hz),
2655-
λ h, h.null_measurable_set _⟩
2656-
2657-
theorem null_measurable_set.union_null (hs : null_measurable_set μ s) (hz : μ z = 0) :
2658-
null_measurable_set μ (s ∪ z) :=
2659-
begin
2660-
rcases hs with ⟨t, z', rfl, ht, hz'⟩,
2661-
exact ⟨t, z' ∪ z, set.union_assoc _ _ _, ht, nonpos_iff_eq_zero.1
2662-
(le_trans (measure_union_le _ _) $ by simp [hz, hz'])⟩
2663-
end
2664-
2665-
theorem null_null_measurable_set (hz : μ z = 0) : null_measurable_set μ z :=
2666-
by simpa using (measurable_set.empty.null_measurable_set _).union_null hz
2667-
2668-
theorem null_measurable_set.Union_nat {s : ℕ → set α} (hs : ∀ i, null_measurable_set μ (s i)) :
2669-
null_measurable_set μ (Union s) :=
2670-
begin
2671-
choose t ht using assume i, null_measurable_set_iff.1 (hs i),
2672-
simp [forall_and_distrib] at ht,
2673-
rcases ht with ⟨st, ht, hz⟩,
2674-
refine null_measurable_set_iff.2
2675-
⟨Union t, Union_subset_Union st, measurable_set.Union ht,
2676-
measure_mono_null _ (measure_Union_null hz)⟩,
2677-
rw [diff_subset_iff, ← Union_union_distrib],
2678-
exact Union_subset_Union (λ i, by rw ← diff_subset_iff)
2679-
end
2680-
2681-
theorem measurable_set.diff_null (hs : measurable_set s) (hz : μ z = 0) :
2682-
null_measurable_set μ (s \ z) :=
2683-
begin
2684-
rw measure_eq_infi at hz,
2685-
choose f hf using show ∀ q : {q : ℚ // q > 0}, ∃ t : set α,
2686-
z ⊆ t ∧ measurable_set t ∧ μ t < (real.to_nnreal q.1 : ℝ≥0∞),
2687-
{ rintro ⟨ε, ε0⟩,
2688-
have : 0 < (real.to_nnreal ε : ℝ≥0∞), { simpa using ε0 },
2689-
rw ← hz at this, simpa [infi_lt_iff] },
2690-
refine null_measurable_set_iff.2 ⟨s \ Inter f,
2691-
diff_subset_diff_right (subset_Inter (λ i, (hf i).1)),
2692-
hs.diff (measurable_set.Inter (λ i, (hf i).2.1)),
2693-
measure_mono_null _ (nonpos_iff_eq_zero.1 $ le_of_not_lt $ λ h, _)⟩,
2694-
{ exact Inter f },
2695-
{ rw [diff_subset_iff, diff_union_self],
2696-
exact subset.trans (diff_subset _ _) (subset_union_left _ _) },
2697-
rcases ennreal.lt_iff_exists_rat_btwn.1 h with ⟨ε, ε0', ε0, h⟩,
2698-
simp at ε0,
2699-
apply not_le_of_lt (lt_trans (hf ⟨ε, ε0⟩).2.2 h),
2700-
exact measure_mono (Inter_subset _ _)
2701-
end
2702-
2703-
theorem null_measurable_set.diff_null (hs : null_measurable_set μ s) (hz : μ z = 0) :
2704-
null_measurable_set μ (s \ z) :=
2705-
begin
2706-
rcases hs with ⟨t, z', rfl, ht, hz'⟩,
2707-
rw [set.union_diff_distrib],
2708-
exact (ht.diff_null hz).union_null (measure_mono_null (diff_subset _ _) hz')
2709-
end
2710-
2711-
theorem null_measurable_set.compl (hs : null_measurable_set μ s) : null_measurable_set μ sᶜ :=
2712-
begin
2713-
rcases hs with ⟨t, z, rfl, ht, hz⟩,
2714-
rw compl_union,
2715-
exact ht.compl.diff_null hz
2716-
end
2717-
2718-
theorem null_measurable_set_iff_ae {s : set α} :
2719-
null_measurable_set μ s ↔ ∃ t, measurable_set t ∧ s =ᵐ[μ] t :=
2720-
begin
2721-
simp only [ae_eq_set],
2722-
split,
2723-
{ assume h,
2724-
rcases null_measurable_set_iff.1 h with ⟨t, ts, tmeas, ht⟩,
2725-
refine ⟨t, tmeas, ht, _⟩,
2726-
rw [diff_eq_empty.2 ts, measure_empty] },
2727-
{ rintros ⟨t, tmeas, h₁, h₂⟩,
2728-
have : null_measurable_set μ (t ∪ (s \ t)) :=
2729-
null_measurable_set.union_null (tmeas.null_measurable_set _) h₁,
2730-
have A : null_measurable_set μ ((t ∪ (s \ t)) \ (t \ s)) :=
2731-
null_measurable_set.diff_null this h₂,
2732-
have : (t ∪ (s \ t)) \ (t \ s) = s,
2733-
{ apply subset.antisymm,
2734-
{ assume x hx,
2735-
simp only [mem_union_eq, not_and, mem_diff, not_not_mem] at hx,
2736-
cases hx.1, { exact hx.2 h }, { exact h.1 } },
2737-
{ assume x hx,
2738-
simp [hx, classical.em (x ∈ t)] } },
2739-
rwa this at A }
2740-
end
2741-
2742-
theorem null_measurable_set_iff_sandwich {s : set α} :
2743-
null_measurable_set μ s ↔
2744-
∃ (t u : set α), measurable_set t ∧ measurable_set u ∧ t ⊆ s ∧ s ⊆ u ∧ μ (u \ t) = 0 :=
2745-
begin
2746-
split,
2747-
{ assume h,
2748-
rcases null_measurable_set_iff.1 h with ⟨t, ts, tmeas, ht⟩,
2749-
rcases null_measurable_set_iff.1 h.compl with ⟨u', u's, u'meas, hu'⟩,
2750-
have A : s ⊆ u'ᶜ := subset_compl_comm.mp u's,
2751-
refine ⟨t, u'ᶜ, tmeas, u'meas.compl, ts, A, _⟩,
2752-
have : sᶜ \ u' = u'ᶜ \ s, by simp [compl_eq_univ_diff, diff_diff, union_comm],
2753-
rw this at hu',
2754-
apply le_antisymm _ bot_le,
2755-
calc μ (u'ᶜ \ t) ≤ μ ((u'ᶜ \ s) ∪ (s \ t)) :
2756-
begin
2757-
apply measure_mono,
2758-
assume x hx,
2759-
simp at hx,
2760-
simp [hx, or_comm, classical.em],
2761-
end
2762-
... ≤ μ (u'ᶜ \ s) + μ (s \ t) : measure_union_le _ _
2763-
... = 0 : by rw [ht, hu', zero_add] },
2764-
{ rintros ⟨t, u, tmeas, umeas, ts, su, hμ⟩,
2765-
refine null_measurable_set_iff.2 ⟨t, ts, tmeas, _⟩,
2766-
apply le_antisymm _ bot_le,
2767-
calc μ (s \ t) ≤ μ (u \ t) : measure_mono (diff_subset_diff_left su)
2768-
... = 0 : hμ }
2769-
end
2770-
2771-
lemma restrict_apply_of_null_measurable_set {s t : set α}
2772-
(ht : null_measurable_set (μ.restrict s) t) : μ.restrict s t = μ (t ∩ s) :=
2773-
begin
2774-
rcases null_measurable_set_iff_sandwich.1 ht with ⟨u, v, umeas, vmeas, ut, tv, huv⟩,
2775-
apply le_antisymm _ (le_restrict_apply _ _),
2776-
calc μ.restrict s t ≤ μ.restrict s v : measure_mono tv
2777-
... = μ (v ∩ s) : restrict_apply vmeas
2778-
... ≤ μ ((u ∩ s) ∪ ((v \ u) ∩ s)) : measure_mono $
2779-
by { assume x hx, simp at hx, simp [hx, classical.em] }
2780-
... ≤ μ (u ∩ s) + μ ((v \ u) ∩ s) : measure_union_le _ _
2781-
... = μ (u ∩ s) + μ.restrict s (v \ u) : by rw measure.restrict_apply (vmeas.diff umeas)
2782-
... = μ (u ∩ s) : by rw [huv, add_zero]
2783-
... ≤ μ (t ∩ s) : measure_mono $ inter_subset_inter_left s ut
2784-
end
2785-
2786-
/-- The measurable space of all null measurable sets. -/
2787-
def null_measurable (μ : measure α) : measurable_space α :=
2788-
{ measurable_set' := null_measurable_set μ,
2789-
measurable_set_empty := measurable_set.empty.null_measurable_set _,
2790-
measurable_set_compl := λ s hs, hs.compl,
2791-
measurable_set_Union := λ f, null_measurable_set.Union_nat }
2792-
2793-
/-- Given a measure we can complete it to a (complete) measure on all null measurable sets. -/
2794-
def completion (μ : measure α) : @measure_theory.measure α (null_measurable μ) :=
2795-
{ to_outer_measure := μ.to_outer_measure,
2796-
m_Union := λ s hs hd, show μ (Union s) = ∑' i, μ (s i), begin
2797-
choose t ht using assume i, null_measurable_set_iff.1 (hs i),
2798-
simp [forall_and_distrib] at ht, rcases ht with ⟨st, ht, hz⟩,
2799-
rw null_measurable_set_measure_eq (Union_subset_Union st),
2800-
{ rw measure_Union _ ht,
2801-
{ congr, funext i,
2802-
exact (null_measurable_set_measure_eq (st i) (hz i)).symm },
2803-
{ rintro i j ij x ⟨h₁, h₂⟩,
2804-
exact hd i j ij ⟨st i h₁, st j h₂⟩ } },
2805-
{ refine measure_mono_null _ (measure_Union_null hz),
2806-
rw [diff_subset_iff, ← Union_union_distrib],
2807-
exact Union_subset_Union (λ i, by rw ← diff_subset_iff) }
2808-
end,
2809-
trimmed := begin
2810-
letI := null_measurable μ,
2811-
refine le_antisymm (λ s, _) (outer_measure.le_trim _),
2812-
rw outer_measure.trim_eq_infi,
2813-
dsimp,
2814-
clear _inst,
2815-
resetI,
2816-
rw measure_eq_infi s,
2817-
exact infi_le_infi (λ t, infi_le_infi $ λ st,
2818-
infi_le_infi2 $ λ ht, ⟨ht.null_measurable_set _, le_refl _⟩)
2819-
end }
2820-
2821-
instance completion.is_complete (μ : measure α) : (completion μ).is_complete :=
2822-
⟨λ z hz, null_null_measurable_set hz⟩
2823-
2824-
lemma measurable.ae_eq {α β} [measurable_space α] [measurable_space β] {μ : measure α}
2825-
[hμ : μ.is_complete] {f g : α → β} (hf : measurable f) (hfg : f =ᵐ[μ] g) :
2826-
measurable g :=
2827-
begin
2828-
intros s hs,
2829-
let t := {x | f x = g x},
2830-
have ht_compl : μ tᶜ = 0, by rwa [filter.eventually_eq, ae_iff] at hfg,
2831-
rw (set.inter_union_compl (g ⁻¹' s) t).symm,
2832-
refine measurable_set.union _ _,
2833-
{ have h_g_to_f : (g ⁻¹' s) ∩ t = (f ⁻¹' s) ∩ t,
2834-
{ ext,
2835-
simp only [set.mem_inter_iff, set.mem_preimage, and.congr_left_iff, set.mem_set_of_eq],
2836-
exact λ hx, by rw hx, },
2837-
rw h_g_to_f,
2838-
exact measurable_set.inter (hf hs) (measurable_set.compl_iff.mp (hμ.out tᶜ ht_compl)), },
2839-
{ exact hμ.out (g ⁻¹' s ∩ tᶜ) (measure_mono_null (set.inter_subset_right _ _) ht_compl), },
2840-
end
2841-
2842-
end is_complete
28432617

28442618
namespace measure_theory
28452619

@@ -2934,15 +2708,6 @@ begin
29342708
exact ⟨λ x, f (default α), measurable_const, rfl⟩
29352709
end
29362710

2937-
lemma ae_measurable_iff_measurable [μ.is_complete] :
2938-
ae_measurable f μ ↔ measurable f :=
2939-
begin
2940-
split; intro h,
2941-
{ rcases h with ⟨g, hg_meas, hfg⟩,
2942-
exact hg_meas.ae_eq hfg.symm, },
2943-
{ exact h.ae_measurable, },
2944-
end
2945-
29462711
namespace ae_measurable
29472712

29482713
lemma mono_measure (h : ae_measurable f μ) (h' : ν ≤ μ) : ae_measurable f ν :=
@@ -3021,19 +2786,15 @@ begin
30212786
rw [comp_apply, ← hx, ← coe_cod_restrict_apply f s hfs, hπ]
30222787
end
30232788

3024-
protected lemma null_measurable_set (h : ae_measurable f μ) {s : set β} (hs : measurable_set s) :
3025-
null_measurable_set μ (f ⁻¹' s) :=
3026-
begin
3027-
apply null_measurable_set_iff_ae.2,
3028-
refine ⟨(h.mk f) ⁻¹' s, h.measurable_mk hs, _⟩,
3029-
filter_upwards [h.ae_eq_mk],
3030-
assume x hx,
3031-
change (f x ∈ s) = ((h.mk f) x ∈ s),
3032-
rwa hx
3033-
end
2789+
protected lemma null_measurable (h : ae_measurable f μ) : null_measurable f μ :=
2790+
let ⟨g, hgm, hg⟩ := h in hgm.null_measurable.congr hg.symm
30342791

30352792
end ae_measurable
30362793

2794+
lemma ae_measurable_iff_measurable [μ.is_complete] :
2795+
ae_measurable f μ ↔ measurable f :=
2796+
⟨λ h, h.null_measurable.measurable_of_complete, λ h, h.ae_measurable⟩
2797+
30372798
lemma measurable_embedding.ae_measurable_map_iff [measurable_space γ] {f : α → β}
30382799
(hf : measurable_embedding f) {μ : measure α} {g : β → γ} :
30392800
ae_measurable g (map f μ) ↔ ae_measurable (g ∘ f) μ :=

0 commit comments

Comments
 (0)