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

Commit d011bf2

Browse files
committed
chore(measure_theory/function/uniform_integrable): replace by a type verifying enough assumptions (#12242)
This PR does not generalize the results of the `uniform_integrable` file much, but using a generic type instead of `ℕ` makes clear where we need assumptions like `encodable`.
1 parent 34cfcd0 commit d011bf2

File tree

1 file changed

+46
-38
lines changed

1 file changed

+46
-38
lines changed

src/measure_theory/function/uniform_integrable.lean

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -35,88 +35,95 @@ section
3535

3636
namespace egorov
3737

38-
/-- Given a sequence of functions `f` and a function `g`, `not_convergent_seq f g i j` is the
39-
set of elements such that `f k x` and `g x` are separated by at least `1 / (i + 1)` for some
38+
/-- Given a sequence of functions `f` and a function `g`, `not_convergent_seq f g n j` is the
39+
set of elements such that `f k x` and `g x` are separated by at least `1 / (n + 1)` for some
4040
`k ≥ j`.
4141
4242
This definition is useful for Egorov's theorem. -/
43-
def not_convergent_seq (f : → α → β) (g : α → β) (i j : ) : set α :=
44-
⋃ k (hk : j ≤ k), {x | (1 / (i + 1 : ℝ)) < dist (f k x) (g x)}
43+
def not_convergent_seq [preorder ι] (f : ι → α → β) (g : α → β) (n : ℕ) (j : ι) : set α :=
44+
⋃ k (hk : j ≤ k), {x | (1 / (n + 1 : ℝ)) < dist (f k x) (g x)}
4545

46-
variables {i j : } {s : set α} {ε : ℝ} {f : → α → β} {g : α → β}
46+
variables {n : ℕ} {i j : ι} {s : set α} {ε : ℝ} {f : ι → α → β} {g : α → β}
4747

48-
lemma mem_not_convergent_seq_iff {x : α} : x ∈ not_convergent_seq f g i j ↔
49-
∃ k (hk : j ≤ k), (1 / (i + 1 : ℝ)) < dist (f k x) (g x) :=
48+
lemma mem_not_convergent_seq_iff [preorder ι] {x : α} : x ∈ not_convergent_seq f g n j ↔
49+
∃ k (hk : j ≤ k), (1 / (n + 1 : ℝ)) < dist (f k x) (g x) :=
5050
by { simp_rw [not_convergent_seq, mem_Union], refl }
5151

52-
lemma not_convergent_seq_antitone :
53-
antitone (not_convergent_seq f g i) :=
52+
lemma not_convergent_seq_antitone [preorder ι] :
53+
antitone (not_convergent_seq f g n) :=
5454
λ j k hjk, Union₂_mono' $ λ l hl, ⟨l, le_trans hjk hl, subset.rfl⟩
5555

56-
lemma measure_inter_not_convergent_seq_eq_zero
57-
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (i : ℕ) :
58-
μ (s ∩ ⋂ j, not_convergent_seq f g i j) = 0 :=
56+
lemma measure_inter_not_convergent_seq_eq_zero [semilattice_sup ι] [nonempty ι]
57+
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (n : ℕ) :
58+
μ (s ∩ ⋂ j, not_convergent_seq f g n j) = 0 :=
5959
begin
6060
simp_rw [metric.tendsto_at_top, ae_iff] at hfg,
6161
rw [← nonpos_iff_eq_zero, ← hfg],
6262
refine measure_mono (λ x, _),
6363
simp only [mem_inter_eq, mem_Inter, ge_iff_le, mem_not_convergent_seq_iff],
6464
push_neg,
6565
rintro ⟨hmem, hx⟩,
66-
refine ⟨hmem, 1 / (i + 1 : ℝ), nat.one_div_pos_of_nat, λ N, _⟩,
66+
refine ⟨hmem, 1 / (n + 1 : ℝ), nat.one_div_pos_of_nat, λ N, _⟩,
6767
obtain ⟨n, hn₁, hn₂⟩ := hx N,
6868
exact ⟨n, hn₁, hn₂.le⟩
6969
end
7070

7171
variables [second_countable_topology β] [measurable_space β] [borel_space β]
7272

73-
lemma not_convergent_seq_measurable_set
73+
lemma not_convergent_seq_measurable_set [preorder ι] [encodable ι]
7474
(hf : ∀ n, measurable[m] (f n)) (hg : measurable g) :
75-
measurable_set (not_convergent_seq f g i j) :=
75+
measurable_set (not_convergent_seq f g n j) :=
7676
measurable_set.Union (λ k, measurable_set.Union_Prop $ λ hk,
7777
measurable_set_lt measurable_const $ (hf k).dist hg)
7878

79-
lemma measure_not_convergent_seq_tendsto_zero
79+
lemma measure_not_convergent_seq_tendsto_zero [semilattice_sup ι] [encodable ι]
8080
(hf : ∀ n, measurable (f n)) (hg : measurable g) (hsm : measurable_set s) (hs : μ s ≠ ∞)
81-
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (i : ℕ) :
82-
tendsto (λ j, μ (s ∩ not_convergent_seq f g i j)) at_top (𝓝 0) :=
81+
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (n : ℕ) :
82+
tendsto (λ j, μ (s ∩ not_convergent_seq f g n j)) at_top (𝓝 0) :=
8383
begin
84-
rw [← measure_inter_not_convergent_seq_eq_zero hfg, inter_Inter],
85-
exact tendsto_measure_Inter (λ n, hsm.inter $ not_convergent_seq_measurable_set hf hg)
84+
casesI is_empty_or_nonempty ι,
85+
{ have : (λ j, μ (s ∩ not_convergent_seq f g n j)) = λ j, 0,
86+
by simp only [eq_iff_true_of_subsingleton],
87+
rw this,
88+
exact tendsto_const_nhds, },
89+
rw [← measure_inter_not_convergent_seq_eq_zero hfg n, inter_Inter],
90+
refine tendsto_measure_Inter (λ n, hsm.inter $ not_convergent_seq_measurable_set hf hg)
8691
(λ k l hkl, inter_subset_inter_right _ $ not_convergent_seq_antitone hkl)
87-
0, (lt_of_le_of_lt (measure_mono $ inter_subset_left _ _) (lt_top_iff_ne_top.2 hs)).ne⟩
92+
h.some, (lt_of_le_of_lt (measure_mono $ inter_subset_left _ _) (lt_top_iff_ne_top.2 hs)).ne⟩,
8893
end
8994

95+
variables [semilattice_sup ι] [nonempty ι] [encodable ι]
96+
9097
lemma exists_not_convergent_seq_lt (hε : 0 < ε)
9198
(hf : ∀ n, measurable (f n)) (hg : measurable g) (hsm : measurable_set s) (hs : μ s ≠ ∞)
92-
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (i : ℕ) :
93-
∃ j : , μ (s ∩ not_convergent_seq f g i j) ≤ ennreal.of_real (ε * 2⁻¹ ^ i) :=
99+
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (n : ℕ) :
100+
∃ j : ι, μ (s ∩ not_convergent_seq f g n j) ≤ ennreal.of_real (ε * 2⁻¹ ^ n) :=
94101
begin
95102
obtain ⟨N, hN⟩ := (ennreal.tendsto_at_top ennreal.zero_ne_top).1
96-
(measure_not_convergent_seq_tendsto_zero hf hg hsm hs hfg i)
97-
(ennreal.of_real (ε * 2⁻¹ ^ i)) _,
103+
(measure_not_convergent_seq_tendsto_zero hf hg hsm hs hfg n)
104+
(ennreal.of_real (ε * 2⁻¹ ^ n)) _,
98105
{ rw zero_add at hN,
99106
exact ⟨N, (hN N le_rfl).2⟩ },
100107
{ rw [gt_iff_lt, ennreal.of_real_pos],
101-
exact mul_pos hε (pow_pos (by norm_num) _) }
108+
exact mul_pos hε (pow_pos (by norm_num) n), }
102109
end
103110

104111
/-- Given some `ε > 0`, `not_convergent_seq_lt_index` provides the index such that
105112
`not_convergent_seq` (intersected with a set of finite measure) has measure less than
106-
`ε * 2⁻¹ ^ i`.
113+
`ε * 2⁻¹ ^ n`.
107114
108115
This definition is useful for Egorov's theorem. -/
109116
def not_convergent_seq_lt_index (hε : 0 < ε)
110117
(hf : ∀ n, measurable (f n)) (hg : measurable g) (hsm : measurable_set s) (hs : μ s ≠ ∞)
111-
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (i : ℕ) : :=
112-
classical.some $ exists_not_convergent_seq_lt hε hf hg hsm hs hfg i
118+
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (n : ℕ) : ι :=
119+
classical.some $ exists_not_convergent_seq_lt hε hf hg hsm hs hfg n
113120

114121
lemma not_convergent_seq_lt_index_spec (hε : 0 < ε)
115122
(hf : ∀ n, measurable (f n)) (hg : measurable g) (hsm : measurable_set s) (hs : μ s ≠ ∞)
116-
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (i : ℕ) :
117-
μ (s ∩ not_convergent_seq f g i (not_convergent_seq_lt_index hε hf hg hsm hs hfg i)) ≤
118-
ennreal.of_real (ε * 2⁻¹ ^ i) :=
119-
classical.some_spec $ exists_not_convergent_seq_lt hε hf hg hsm hs hfg i
123+
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) (n : ℕ) :
124+
μ (s ∩ not_convergent_seq f g n (not_convergent_seq_lt_index hε hf hg hsm hs hfg n)) ≤
125+
ennreal.of_real (ε * 2⁻¹ ^ n) :=
126+
classical.some_spec $ exists_not_convergent_seq_lt hε hf hg hsm hs hfg n
120127

121128
/-- Given some `ε > 0`, `Union_not_convergent_seq` is the union of `not_convergent_seq` with
122129
specific indicies such that `Union_not_convergent_seq` has measure less equal than `ε`.
@@ -125,7 +132,7 @@ This definition is useful for Egorov's theorem. -/
125132
def Union_not_convergent_seq (hε : 0 < ε)
126133
(hf : ∀ n, measurable (f n)) (hg : measurable g) (hsm : measurable_set s) (hs : μ s ≠ ∞)
127134
(hfg : ∀ᵐ x ∂μ, x ∈ s → tendsto (λ n, f n x) at_top (𝓝 (g x))) : set α :=
128-
i, s ∩ not_convergent_seq f g i (not_convergent_seq_lt_index (half_pos hε) hf hg hsm hs hfg i)
135+
n, s ∩ not_convergent_seq f g n (not_convergent_seq_lt_index (half_pos hε) hf hg hsm hs hfg n)
129136

130137
lemma Union_not_convergent_seq_measurable_set (hε : 0 < ε)
131138
(hf : ∀ n, measurable (f n)) (hg : measurable g) (hsm : measurable_set s) (hs : μ s ≠ ∞)
@@ -181,13 +188,14 @@ end
181188

182189
end egorov
183190

184-
variables [second_countable_topology β] [measurable_space β] [borel_space β]
185-
{f : ℕ → α → β} {g : α → β} {s : set α}
186-
191+
variables [semilattice_sup ι] [nonempty ι] [encodable ι]
192+
[second_countable_topology β] [measurable_space β] [borel_space β]
193+
{f : ι → α → β} {g : α → β} {s : set α}
187194

188-
/-- **Egorov's theorem**: If `f : → α → β` is a sequence of measurable functions that converges
195+
/-- **Egorov's theorem**: If `f : ι → α → β` is a sequence of measurable functions that converges
189196
to `g : α → β` almost everywhere on a measurable set `s` of finite measure, then for all `ε > 0`,
190197
there exists a subset `t ⊆ s` such that `μ t ≤ ε` and `f` converges to `g` uniformly on `s \ t`.
198+
We require the index type `ι` to be encodable, and usually `ι = ℕ`.
191199
192200
In other words, a sequence of almost everywhere convergent functions converges uniformly except on
193201
an arbitrarily small set. -/

0 commit comments

Comments
 (0)