|
| 1 | +/- |
| 2 | +Copyright (c) 2019 Johannes Hölzl. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Johannes Hölzl |
| 5 | +
|
| 6 | +Hahn decomposition theorem |
| 7 | +
|
| 8 | +TODO: |
| 9 | +* introduce finite measures (into nnreal) |
| 10 | +* show general for signed measures (into ℝ) |
| 11 | +-/ |
| 12 | +import measure_theory.measure_space |
| 13 | + |
| 14 | +local attribute [instance, priority 0] classical.prop_decidable |
| 15 | + |
| 16 | +namespace measure_theory |
| 17 | +open set lattice filter |
| 18 | + |
| 19 | +variables {α : Type*} [measurable_space α] {μ ν : measure α} |
| 20 | + |
| 21 | +lemma hahn_decomposition (hμ : μ univ < ⊤) (hν : ν univ < ⊤) : |
| 22 | + ∃s, is_measurable s ∧ |
| 23 | + (∀t, is_measurable t → t ⊆ s → ν t ≤ μ t) ∧ |
| 24 | + (∀t, is_measurable t → t ⊆ - s → μ t ≤ ν t) := |
| 25 | +begin |
| 26 | + let d : set α → ℝ := λs, ((μ s).to_nnreal : ℝ) - (ν s).to_nnreal, |
| 27 | + let c : set ℝ := d '' {s | is_measurable s }, |
| 28 | + let γ : ℝ := Sup c, |
| 29 | + |
| 30 | + have hμ : ∀s, μ s < ⊤ := assume s, lt_of_le_of_lt (measure_mono $ subset_univ _) hμ, |
| 31 | + have hν : ∀s, ν s < ⊤ := assume s, lt_of_le_of_lt (measure_mono $ subset_univ _) hν, |
| 32 | + have to_nnreal_μ : ∀s, ((μ s).to_nnreal : ennreal) = μ s := |
| 33 | + (assume s, ennreal.coe_to_nnreal $ ne_top_of_lt $ hμ _), |
| 34 | + have to_nnreal_ν : ∀s, ((ν s).to_nnreal : ennreal) = ν s := |
| 35 | + (assume s, ennreal.coe_to_nnreal $ ne_top_of_lt $ hν _), |
| 36 | + |
| 37 | + have d_empty : d ∅ = 0, { simp [d], rw [measure_empty, measure_empty], simp }, |
| 38 | + |
| 39 | + have d_split : ∀s t, is_measurable s → is_measurable t → |
| 40 | + d s = d (s \ t) + d (s ∩ t), |
| 41 | + { assume s t hs ht, |
| 42 | + simp only [d], |
| 43 | + rw [measure_eq_inter_diff hs ht, measure_eq_inter_diff hs ht, |
| 44 | + ennreal.to_nnreal_add (hμ _) (hμ _), ennreal.to_nnreal_add (hν _) (hν _), |
| 45 | + nnreal.coe_add, nnreal.coe_add], |
| 46 | + simp only [sub_eq_add_neg, neg_add], |
| 47 | + ac_refl }, |
| 48 | + |
| 49 | + have d_Union : ∀(s : ℕ → set α), (∀n, is_measurable (s n)) → monotone s → |
| 50 | + tendsto (λn, d (s n)) at_top (nhds (d (⋃n, s n))), |
| 51 | + { assume s hs hm, |
| 52 | + refine tendsto_sub _ _; |
| 53 | + refine (nnreal.tendsto_coe.2 $ |
| 54 | + (tendsto_measure_Union hs hm).comp $ ennreal.tendsto_to_nnreal $ @ne_top_of_lt _ _ _ ⊤ _), |
| 55 | + exact hμ _, |
| 56 | + exact hν _ }, |
| 57 | + |
| 58 | + have d_Inter : ∀(s : ℕ → set α), (∀n, is_measurable (s n)) → (∀n m, n ≤ m → s m ⊆ s n) → |
| 59 | + tendsto (λn, d (s n)) at_top (nhds (d (⋂n, s n))), |
| 60 | + { assume s hs hm, |
| 61 | + refine tendsto_sub _ _; |
| 62 | + refine (nnreal.tendsto_coe.2 $ |
| 63 | + (tendsto_measure_Inter hs hm _).comp $ ennreal.tendsto_to_nnreal $ @ne_top_of_lt _ _ _ ⊤ _), |
| 64 | + exact ⟨0, hμ _⟩, |
| 65 | + exact hμ _, |
| 66 | + exact ⟨0, hν _⟩, |
| 67 | + exact hν _ }, |
| 68 | + |
| 69 | + have bdd_c : bdd_above c, |
| 70 | + { use (μ univ).to_nnreal, |
| 71 | + rintros r ⟨s, hs, rfl⟩, |
| 72 | + refine le_trans (sub_le_self _ $ nnreal.coe_nonneg _) _, |
| 73 | + rw [← nnreal.coe_le, ← ennreal.coe_le_coe, to_nnreal_μ, to_nnreal_μ], |
| 74 | + exact measure_mono (subset_univ _) }, |
| 75 | + |
| 76 | + have c_nonempty : c ≠ ∅ := ne_empty_of_mem (mem_image_of_mem _ is_measurable.empty), |
| 77 | + |
| 78 | + have d_le_γ : ∀s, is_measurable s → d s ≤ γ := assume s hs, le_cSup bdd_c ⟨s, hs, rfl⟩, |
| 79 | + |
| 80 | + have : ∀n:ℕ, ∃s : set α, is_measurable s ∧ γ - (1/2)^n < d s, |
| 81 | + { assume n, |
| 82 | + have : γ - (1/2)^n < γ := sub_lt_self γ (pow_pos (half_pos zero_lt_one) n), |
| 83 | + rcases exists_lt_of_lt_cSup c_nonempty this with ⟨r, ⟨s, hs, rfl⟩, hlt⟩, |
| 84 | + exact ⟨s, hs, hlt⟩ }, |
| 85 | + rcases classical.axiom_of_choice this with ⟨e, he⟩, |
| 86 | + change ℕ → set α at e, |
| 87 | + have he₁ : ∀n, is_measurable (e n) := assume n, (he n).1, |
| 88 | + have he₂ : ∀n, γ - (1/2)^n < d (e n) := assume n, (he n).2, |
| 89 | + |
| 90 | + let f : ℕ → ℕ → set α := λn m, (finset.Ico n (m + 1)).inf e, |
| 91 | + |
| 92 | + have hf : ∀n m, is_measurable (f n m), |
| 93 | + { assume n m, |
| 94 | + simp only [f, finset.inf_eq_infi], |
| 95 | + exact is_measurable.bInter (countable_encodable _) (assume i _, he₁ _) }, |
| 96 | + |
| 97 | + have f_subset_f : ∀{a b c d}, a ≤ b → c ≤ d → f a d ⊆ f b c, |
| 98 | + { assume a b c d hab hcd, |
| 99 | + dsimp only [f], |
| 100 | + rw [finset.inf_eq_infi, finset.inf_eq_infi], |
| 101 | + refine bInter_subset_bInter_left _, |
| 102 | + simp, |
| 103 | + rintros j ⟨hbj, hjc⟩, |
| 104 | + exact ⟨le_trans hab hbj, lt_of_lt_of_le hjc $ add_le_add_right hcd 1⟩ }, |
| 105 | + |
| 106 | + have f_succ : ∀n m, n ≤ m → f n (m + 1) = f n m ∩ e (m + 1), |
| 107 | + { assume n m hnm, |
| 108 | + have : n ≤ m + 1 := le_of_lt (nat.succ_le_succ hnm), |
| 109 | + simp only [f], |
| 110 | + rw [finset.Ico.succ_top this, finset.inf_insert, set.inter_comm], |
| 111 | + refl }, |
| 112 | + |
| 113 | + have le_d_f : ∀n m, m ≤ n → γ - 2 * ((1 / 2) ^ m) + (1 / 2) ^ n ≤ d (f m n), |
| 114 | + { assume n m h, |
| 115 | + refine nat.le_induction _ _ n h, |
| 116 | + { have := he₂ m, |
| 117 | + simp only [f], |
| 118 | + rw [finset.Ico.succ_singleton, finset.inf_singleton], |
| 119 | + linarith }, |
| 120 | + { assume n (hmn : m ≤ n) ih, |
| 121 | + have : γ + (γ - 2 * (1 / 2)^m + (1 / 2) ^ (n + 1)) ≤ γ + d (f m (n + 1)), |
| 122 | + { calc γ + (γ - 2 * (1 / 2)^m + (1 / 2) ^ (n+1)) ≤ |
| 123 | + γ + (γ - 2 * (1 / 2)^m + ((1 / 2) ^ n - (1/2)^(n+1))) : |
| 124 | + begin |
| 125 | + refine add_le_add_left (add_le_add_left _ _) γ, |
| 126 | + simp only [pow_add, pow_one, le_sub_iff_add_le], |
| 127 | + linarith |
| 128 | + end |
| 129 | + ... = (γ - (1 / 2)^(n+1)) + (γ - 2 * (1 / 2)^m + (1 / 2)^n) : |
| 130 | + by simp only [sub_eq_add_neg]; ac_refl |
| 131 | + ... ≤ d (e (n + 1)) + d (f m n) : add_le_add (le_of_lt $ he₂ _) ih |
| 132 | + ... ≤ d (e (n + 1)) + d (f m n \ e (n + 1)) + d (f m (n + 1)) : |
| 133 | + by rw [f_succ _ _ hmn, d_split (f m n) (e (n + 1)) (hf _ _) (he₁ _), add_assoc] |
| 134 | + ... = d (e (n + 1) ∪ f m n) + d (f m (n + 1)) : |
| 135 | + begin |
| 136 | + rw [d_split (e (n + 1) ∪ f m n) (e (n + 1)), |
| 137 | + union_diff_left, union_inter_cancel_left], |
| 138 | + ac_refl, |
| 139 | + exact (he₁ _).union (hf _ _), |
| 140 | + exact (he₁ _) |
| 141 | + end |
| 142 | + ... ≤ γ + d (f m (n + 1)) : |
| 143 | + add_le_add_right (d_le_γ _ $ (he₁ _).union (hf _ _)) _ }, |
| 144 | + exact (add_le_add_iff_left γ).1 this } }, |
| 145 | + |
| 146 | + let s := ⋃ m, ⋂n, f m n, |
| 147 | + have γ_le_d_s : γ ≤ d s, |
| 148 | + { have hγ : tendsto (λm:ℕ, γ - 2 * (1/2)^m) at_top (nhds γ), |
| 149 | + { suffices : tendsto (λm:ℕ, γ - 2 * (1/2)^m) at_top (nhds (γ - 2 * 0)), { simpa }, |
| 150 | + exact (tendsto_sub tendsto_const_nhds $ tendsto_mul tendsto_const_nhds $ |
| 151 | + tendsto_pow_at_top_nhds_0_of_lt_1 |
| 152 | + (le_of_lt $ half_pos $ zero_lt_one) (half_lt_self zero_lt_one)) }, |
| 153 | + have hd : tendsto (λm, d (⋂n, f m n)) at_top (nhds (d (⋃ m, ⋂ n, f m n))), |
| 154 | + { refine d_Union _ _ _, |
| 155 | + { assume n, exact is_measurable.Inter (assume m, hf _ _) }, |
| 156 | + { exact assume n m hnm, subset_Inter |
| 157 | + (assume i, subset.trans (Inter_subset (f n) i) $ f_subset_f hnm $ le_refl _) } }, |
| 158 | + refine le_of_tendsto_of_tendsto (@at_top_ne_bot ℕ _ _) hγ hd (univ_mem_sets' $ assume m, _), |
| 159 | + change γ - 2 * (1 / 2) ^ m ≤ d (⋂ (n : ℕ), f m n), |
| 160 | + have : tendsto (λn, d (f m n)) at_top (nhds (d (⋂ n, f m n))), |
| 161 | + { refine d_Inter _ _ _, |
| 162 | + { assume n, exact hf _ _ }, |
| 163 | + { assume n m hnm, exact f_subset_f (le_refl _) hnm } }, |
| 164 | + refine ge_of_tendsto (@at_top_ne_bot ℕ _ _) this (mem_at_top_sets.2 ⟨m, assume n hmn, _⟩), |
| 165 | + change γ - 2 * (1 / 2) ^ m ≤ d (f m n), |
| 166 | + refine le_trans _ (le_d_f _ _ hmn), |
| 167 | + exact le_add_of_le_of_nonneg (le_refl _) (pow_nonneg (le_of_lt $ half_pos $ zero_lt_one) _) }, |
| 168 | + |
| 169 | + have hs : is_measurable s := |
| 170 | + is_measurable.Union (assume n, is_measurable.Inter (assume m, hf _ _)), |
| 171 | + refine ⟨s, hs, _, _⟩, |
| 172 | + { assume t ht hts, |
| 173 | + have : 0 ≤ d t := ((add_le_add_iff_left γ).1 $ |
| 174 | + calc γ + 0 ≤ d s : by rw [add_zero]; exact γ_le_d_s |
| 175 | + ... = d (s \ t) + d t : by rw [d_split _ _ hs ht, inter_eq_self_of_subset_right hts] |
| 176 | + ... ≤ γ + d t : add_le_add (d_le_γ _ (hs.diff ht)) (le_refl _)), |
| 177 | + rw [← to_nnreal_μ, ← to_nnreal_ν, ennreal.coe_le_coe, nnreal.coe_le], |
| 178 | + simpa only [d, le_sub_iff_add_le, zero_add] using this }, |
| 179 | + { assume t ht hts, |
| 180 | + have : d t ≤ 0, |
| 181 | + exact ((add_le_add_iff_left γ).1 $ |
| 182 | + calc γ + d t ≤ d s + d t : add_le_add γ_le_d_s (le_refl _) |
| 183 | + ... = d (s ∪ t) : |
| 184 | + begin |
| 185 | + rw [d_split _ _ (hs.union ht) ht, union_diff_right, union_inter_cancel_right, |
| 186 | + diff_eq_self.2], |
| 187 | + exact assume a ⟨hat, has⟩, hts hat has |
| 188 | + end |
| 189 | + ... ≤ γ + 0 : by rw [add_zero]; exact d_le_γ _ (hs.union ht)), |
| 190 | + rw [← to_nnreal_μ, ← to_nnreal_ν, ennreal.coe_le_coe, nnreal.coe_le], |
| 191 | + simpa only [d, sub_le_iff_le_add, zero_add] using this } |
| 192 | +end |
| 193 | + |
| 194 | +end measure_theory |
0 commit comments