@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Johannes Hölzl, Mario Carneiro
5
5
-/
6
- import measure_theory.measure.measure_space_def
6
+ import measure_theory.measure.null_measurable
7
7
import measure_theory.measurable_space
8
8
9
9
/-!
@@ -103,23 +103,9 @@ instance ae_is_measurably_generated : is_measurably_generated μ.ae :=
103
103
⟨λ s hs, let ⟨t, hst, htm, htμ⟩ := exists_measurable_superset_of_null hs in
104
104
⟨tᶜ, compl_mem_ae_iff.2 htμ, htm.compl, compl_subset_comm.1 hst⟩⟩
105
105
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
-
117
106
lemma measure_union (hd : disjoint s₁ s₂) (h₁ : measurable_set s₁) (h₂ : measurable_set s₂) :
118
107
μ (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
123
109
124
110
lemma measure_add_measure_compl (h : measurable_set s) :
125
111
μ s + μ sᶜ = μ univ :=
@@ -435,6 +421,16 @@ lemma le_to_measure_apply (m : outer_measure α) (h : ms ≤ m.caratheodory) (s
435
421
m s ≤ m.to_measure h s :=
436
422
m.le_trim s
437
423
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
+
438
434
@[simp] lemma to_outer_measure_to_measure {μ : measure α} :
439
435
μ.to_outer_measure.to_measure (le_to_outer_measure_caratheodory _) = μ :=
440
436
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
815
811
by simp_rw [restrict, restrictₗ, lift_linear, linear_map.coe_mk, to_measure_to_outer_measure,
816
812
outer_measure.restrict_trim h, μ.trimmed]
817
813
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
+
818
818
/-- If `t` is a measurable set, then the measure of `t` with respect to the restriction of
819
819
the measure to `s` equals the outer measure of `t ∩ s`. An alternate version requiring that `s`
820
820
be measurable instead of `t` exists as `measure.restrict_apply'`. -/
821
821
@[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
823
823
824
824
/-- If `s` is a measurable set, then the outer measure of `t` with respect to the restriction of
825
825
the measure to `s` equals the outer measure of `t ∩ s`. This is an alternate version of
@@ -1512,6 +1512,14 @@ end measure
1512
1512
open measure
1513
1513
open_locale measure_theory
1514
1514
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
+
1515
1523
@[simp] lemma ae_eq_bot : μ.ae = ⊥ ↔ μ = 0 :=
1516
1524
by rw [← empty_mem_iff_bot, mem_ae_iff, compl_empty, measure_univ_eq_zero]
1517
1525
@@ -2606,240 +2614,6 @@ e.measurable_embedding.restrict_map _ _
2606
2614
2607
2615
end measurable_equiv
2608
2616
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
2843
2617
2844
2618
namespace measure_theory
2845
2619
@@ -2934,15 +2708,6 @@ begin
2934
2708
exact ⟨λ x, f (default α), measurable_const, rfl⟩
2935
2709
end
2936
2710
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
-
2946
2711
namespace ae_measurable
2947
2712
2948
2713
lemma mono_measure (h : ae_measurable f μ) (h' : ν ≤ μ) : ae_measurable f ν :=
@@ -3021,19 +2786,15 @@ begin
3021
2786
rw [comp_apply, ← hx, ← coe_cod_restrict_apply f s hfs, hπ]
3022
2787
end
3023
2788
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
3034
2791
3035
2792
end ae_measurable
3036
2793
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
+
3037
2798
lemma measurable_embedding.ae_measurable_map_iff [measurable_space γ] {f : α → β}
3038
2799
(hf : measurable_embedding f) {μ : measure α} {g : β → γ} :
3039
2800
ae_measurable g (map f μ) ↔ ae_measurable (g ∘ f) μ :=
0 commit comments