@@ -4,10 +4,6 @@ import Mathlib.Tactic
44# Introduction to Measure Theory, Chapter 0: Notation
55
66A companion to Chapter 0 of the book "An introduction to Measure Theory".
7-
8- We use existing Mathlib constructions, such as `Set.indicator`, `EuclideanSpace`, `ENNReal`,
9- and `tsum` to describe the concepts defined in Chapter 0.
10-
117-/
128
139/-- A version of `Set.indicator` suitable for this text. -/
@@ -40,15 +36,13 @@ theorem EuclideanSpace'.dot_apply {n:ℕ} (x y: EuclideanSpace' n) : x ⬝ y =
4036#check ENNReal.mul_top
4137#check lt_top_iff_ne_top
4238
43- open Filter
44-
39+ open Filter in
4540theorem ENNReal.upward_continuous {x y:ℕ → ENNReal} (hx: Monotone x) (hy: Monotone y)
4641 {x₀ y₀ : ENNReal} (hx_lim: atTop.Tendsto x (nhds x₀))
4742 (hy_lim: atTop.Tendsto y (nhds y₀)) :
4843 atTop.Tendsto (fun n ↦ x n * y n) (nhds (x₀ * y₀)) := by
49- -- This proof is written to follow the structure of the original text.
50- have hx_lt (n:ℕ): x n ≤ x₀ := hx.ge_of_tendsto hx_lim n
51- have hy_lt (n:ℕ): y n ≤ y₀ := hy.ge_of_tendsto hy_lim n
44+ have hx_lt (n:ℕ): x n ≤ x₀ := Monotone.ge_of_tendsto hx hx_lim n
45+ have hy_lt (n:ℕ): y n ≤ y₀ := Monotone.ge_of_tendsto hy hy_lim n
5246 have zero_conv : atTop.Tendsto (fun n:ℕ ↦ (0 :ENNReal)) (nhds 0 ) := tendsto_const_nhds
5347 have top_conv : atTop.Tendsto (fun n:ℕ ↦ (⊤:ENNReal)) (nhds ⊤) := tendsto_const_nhds
5448 obtain rfl | hx₀ := eq_zero_or_pos x₀
@@ -85,7 +79,7 @@ theorem ENNReal.upward_continuous {x y:ℕ → ENNReal} (hx: Monotone x) (hy: Mo
8579 have : atTop.Tendsto (fun n ↦ x n * y ny) (nhds ⊤) := by
8680 convert Tendsto.comp (g := fun z ↦ z * y ny) _ hx_lim
8781 convert (ENNReal.continuous_mul_const hyn').tendsto ⊤
88- rw [top_mul (by order)]
82+ rw [ENNReal. top_mul (by order)]
8983 apply tendsto_nhds_top_mono this
9084 simp [EventuallyLE, eventually_atTop]
9185 use ny; intro n hn
@@ -106,82 +100,11 @@ theorem ENNReal.upward_continuous {x y:ℕ → ENNReal} (hx: Monotone x) (hy: Mo
106100 set y' : ℕ → NNReal := fun n ↦ (y n).toNNReal
107101 set x₀' : NNReal := x₀.toNNReal
108102 set y₀' : NNReal := y₀.toNNReal
109- have hxx₀' : x₀ = x₀' := by rw [coe_toNNReal]; order
110- have hyy₀' : y₀ = y₀' := by rw [coe_toNNReal]; order
111- have hxx' (n:ℕ) : x n = x' n := by rw [coe_toNNReal]; specialize hx_lt n; order
112- have hyy' (n:ℕ) : y n = y' n := by rw [coe_toNNReal]; specialize hy_lt n; order
103+ have hxx₀' : x₀ = x₀' := by rw [ENNReal. coe_toNNReal]; order
104+ have hyy₀' : y₀ = y₀' := by rw [ENNReal. coe_toNNReal]; order
105+ have hxx' (n:ℕ) : x n = x' n := by rw [ENNReal. coe_toNNReal]; specialize hx_lt n; order
106+ have hyy' (n:ℕ) : y n = y' n := by rw [ENNReal. coe_toNNReal]; specialize hy_lt n; order
113107 change atTop.Tendsto (fun n ↦ x n) (nhds x₀) at hx_lim
114108 change atTop.Tendsto (fun n ↦ y n) (nhds y₀) at hy_lim
115- simp [hxx', hyy', hxx₀', hyy₀',←coe_mul] at *
116- solve_by_elim [Filter.Tendsto.mul]
117-
118- example : ∃ (x y:ℕ → ENNReal) (hx: Antitone x) (hy: Antitone y)
119- (x₀ y₀:ENNReal) (hx_lim: atTop.Tendsto x (nhds x₀))
120- (hy_lim: atTop.Tendsto y (nhds y₀)), ¬ atTop.Tendsto (fun n ↦ x n * y n) (nhds (x₀ * y₀)) := by
121- sorry
122-
123- #check ENNReal.tendsto_nat_tsum
124-
125- #check ENNReal.tsum_eq_iSup_sum
126-
127- #check Equiv.tsum_eq
128-
129- /-- Exercise 0.0.1 -/
130- example {A:Type } {x : A → ENNReal} (hx: ∑' α, x α < ⊤) :
131- ∃ E: Set A, Countable E ∧ ∀ α ∉ E, x α = 0 := by
132- sorry
133-
134- /-- Theorem 0.0.2 (Tonelli's theorem for series) -/
135- theorem ENNReal.tsum_of_tsum (x: ℕ → ℕ → ENNReal) : ∑' p:ℕ × ℕ, x p.1 p.2 = ∑' n, ∑' m, x n m := by
136- -- This proof is written to largely follow the structure of the original text.
137- refine' le_antisymm _ _
138- . rw [ENNReal.tsum_eq_iSup_sum]; apply iSup_le; intro F
139- have : ∃ N, F ⊆ .range N ×ˢ .range N := by
140- have _ : IsOrderBornology ℕ := {
141- isBounded_iff_bddBelow_bddAbove s := by
142- constructor
143- . intro h; simp
144- rw [Metric.isBounded_iff_subset_closedBall 0 ] at h
145- choose N hN using h
146- rw [bddAbove_def]; use ⌊ N ⌋₊
147- intro n hn; specialize hN hn; simp [dist] at hN; exact Nat.le_floor hN
148- intro ⟨ h1, h2 ⟩; exact Metric.isBounded_of_bddAbove_of_bddBelow h2 h1
149- }
150- choose N₁ hN₁ using bddAbove_def.mp F.finite_toSet.isBounded.image_fst.bddAbove
151- choose N₂ hN₂ using bddAbove_def.mp F.finite_toSet.isBounded.image_snd.bddAbove
152- use N₁ ⊔ N₂ + 1 ; intro ⟨ n, m ⟩ hnm; simp_all
153- specialize hN₁ _ _ hnm; specialize hN₂ _ _ hnm; omega
154- choose N hN using this
155- calc
156- _ ≤ ∑ p ∈ .range N ×ˢ .range N, x p.1 p.2 := Finset.sum_le_sum_of_subset hN
157- _ = ∑ n ∈ .range N, ∑ m ∈ .range N, x n m := Finset.sum_product' _ _ _
158- _ ≤ ∑' n, ∑ m ∈ .range N, x n m := ENNReal.sum_le_tsum _
159- _ ≤ _ := by apply ENNReal.tsum_le_tsum; intro n; apply ENNReal.sum_le_tsum
160- apply le_of_tendsto' (tendsto_nat_tsum _); intro N
161- apply le_of_tendsto' (f := fun M ↦ ∑ n ∈ .range N, ∑ m ∈ .range M, x n m) (x := atTop)
162- . apply tendsto_finset_sum; intro n _; apply tendsto_nat_tsum
163- intro M
164- calc
165- _ = ∑ p ∈ .range N ×ˢ .range M, x p.1 p.2 := by symm; apply Finset.sum_product
166- _ ≤ _ := ENNReal.sum_le_tsum _
167-
168- /-- Theorem 0.0.2 -/
169- theorem ENNReal.tsum_of_tsum' (x: ℕ → ℕ → ENNReal) : ∑' p:ℕ × ℕ, x p.1 p.2 = ∑' m, ∑' n, x n m := by
170- sorry
171-
172- #check ENNReal.tsum_comm
173-
174- /-- Exercise 0.0.2 (Tonelli's theorem for series over arbitrary sets)-/
175- example {A B:Type *} (x: A → B → ENNReal) : ∑' p:A × B, x p.1 p.2 = ∑' a, ∑' b, x a b := by
176- sorry
177-
178- example {A B:Type *} (x: A → B → ENNReal) : ∑' p:A × B, x p.1 p.2 = ∑' b, ∑' a, x a b := by
179- sorry
180-
181- /-- Axiom 0.0.4 (Axiom of choice)-/
182- noncomputable def Set.choose {A: Type *} {E: A → Type *} (hE: ∀ n, Nonempty (E n)) :
183- ∀ n, E n := fun n ↦ (hE n).some
184-
185- /-- Corollary 0.0.5 (Axiom of countable choice) -/
186- noncomputable def Countable.choose {E: ℕ → Type *} (hE: ∀ n, Nonempty (E n)) :
187- ∀ n, E n := Set.choose hE
109+ simp [hxx', hyy', hxx₀', hyy₀',←ENNReal.coe_mul] at hx_lim hy_lim ⊢
110+ exact Filter.Tendsto.mul hx_lim hy_lim
0 commit comments