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

Commit 036fc99

Browse files
kex-yRemyDegenne
andcommitted
feat(topology/uniform_space/uniform_convergence): add tendsto_uniformly_iff_seq_tendsto_uniformly (#13128)
For countably generated filters, uniform convergence is equivalent to uniform convergence of sub-sequences. Co-authored-by: RemyDegenne <Remydegenne@gmail.com>
1 parent ab60244 commit 036fc99

3 files changed

Lines changed: 85 additions & 0 deletions

File tree

src/order/filter/at_top_bot.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1329,6 +1329,17 @@ begin
13291329
exact hx_tendsto hx_freq, },
13301330
end
13311331

1332+
lemma eventually_iff_seq_eventually {ι : Type*} {l : filter ι} {p : ι → Prop}
1333+
[hl : l.is_countably_generated] :
1334+
(∀ᶠ n in l, p n) ↔ ∀ (x : ℕ → ι), tendsto x at_top l → ∀ᶠ (n : ℕ) in at_top, p (x n) :=
1335+
begin
1336+
have : (∀ᶠ n in l, p n) ↔ ¬ ∃ᶠ n in l, ¬(p n),
1337+
{ rw not_frequently, simp_rw not_not, },
1338+
rw [this, frequently_iff_seq_frequently],
1339+
push_neg,
1340+
simp_rw [not_frequently, not_not],
1341+
end
1342+
13321343
lemma subseq_forall_of_frequently {ι : Type*} {x : ℕ → ι} {p : ι → Prop} {l : filter ι}
13331344
(h_tendsto : tendsto x at_top l) (h : ∃ᶠ n in at_top, p (x n)) :
13341345
∃ ns : ℕ → ℕ, tendsto (λ n, x (ns n)) at_top l ∧ ∀ n, p (x (ns n)) :=

src/order/filter/bases.lean

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,21 @@ begin
693693
exact ⟨⟨i, i⟩, ⟨hi, hi⟩, h⟩ },
694694
end
695695

696+
lemma has_antitone_basis.prod {f : filter α} {g : filter β}
697+
{s : ℕ → set α} {t : ℕ → set β} (hf : has_antitone_basis f s) (hg : has_antitone_basis g t) :
698+
has_antitone_basis (f ×ᶠ g) (λ n, s n ×ˢ t n) :=
699+
begin
700+
have h : has_basis (f ×ᶠ g) _ _ := has_basis.prod' hf.to_has_basis hg.to_has_basis _,
701+
swap,
702+
{ intros i j,
703+
simp only [true_and, forall_true_left],
704+
exact ⟨max i j, hf.antitone (le_max_left _ _), hg.antitone (le_max_right _ _)⟩, },
705+
refine ⟨h, λ n m hn_le_m, _⟩,
706+
intros x hx,
707+
rw mem_prod at hx ⊢,
708+
exact ⟨hf.antitone hn_le_m hx.1, hg.antitone hn_le_m hx.2⟩,
709+
end
710+
696711
end two_types
697712

698713
open equiv
@@ -888,4 +903,14 @@ by { rw ← principal_singleton, exact is_countably_generated_principal _, }
888903
@[instance] lemma is_countably_generated_top : is_countably_generated (⊤ : filter α) :=
889904
@principal_univ α ▸ is_countably_generated_principal _
890905

906+
instance is_countably_generated.prod {f : filter α} {g : filter β}
907+
[hf : f.is_countably_generated] [hg : g.is_countably_generated] :
908+
is_countably_generated (f ×ᶠ g) :=
909+
begin
910+
simp_rw is_countably_generated_iff_exists_antitone_basis at hf hg ⊢,
911+
rcases hf with ⟨s, hs⟩,
912+
rcases hg with ⟨t, ht⟩,
913+
refine ⟨_, hs.prod ht⟩,
914+
end
915+
891916
end filter

src/topology/uniform_space/uniform_convergence.lean

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,55 @@ lemma uniform_continuous₂.tendsto_uniformly [uniform_space α] [uniform_space
195195
uniform_continuous_on.tendsto_uniformly univ_mem $
196196
by rwa [univ_prod_univ, uniform_continuous_on_univ]
197197

198+
section seq_tendsto
199+
200+
lemma tendsto_uniformly_on_of_seq_tendsto_uniformly_on {l : filter ι} [l.is_countably_generated]
201+
(h : ∀ u : ℕ → ι, tendsto u at_top l → tendsto_uniformly_on (λ n, F (u n)) f at_top s) :
202+
tendsto_uniformly_on F f l s :=
203+
begin
204+
rw [tendsto_uniformly_on_iff_tendsto, tendsto_iff_seq_tendsto],
205+
intros u hu,
206+
rw tendsto_prod_iff' at hu,
207+
specialize h (λ n, (u n).fst) hu.1,
208+
rw tendsto_uniformly_on_iff_tendsto at h,
209+
have : ((λ (q : ι × α), (f q.snd, F q.fst q.snd)) ∘ u)
210+
= (λ (q : ℕ × α), (f q.snd, F ((λ (n : ℕ), (u n).fst) q.fst) q.snd)) ∘ (λ n, (n, (u n).snd)),
211+
{ ext1 n, simp, },
212+
rw this,
213+
refine tendsto.comp h _,
214+
rw tendsto_prod_iff',
215+
exact ⟨tendsto_id, hu.2⟩,
216+
end
217+
218+
lemma tendsto_uniformly_on.seq_tendsto_uniformly_on {l : filter ι}
219+
(h : tendsto_uniformly_on F f l s) (u : ℕ → ι) (hu : tendsto u at_top l) :
220+
tendsto_uniformly_on (λ n, F (u n)) f at_top s :=
221+
begin
222+
rw tendsto_uniformly_on_iff_tendsto at h ⊢,
223+
have : (λ (q : ℕ × α), (f q.snd, F (u q.fst) q.snd))
224+
= (λ (q : ι × α), (f q.snd, F q.fst q.snd)) ∘ (λ p : ℕ × α, (u p.fst, p.snd)),
225+
{ ext1 x, simp, },
226+
rw this,
227+
refine h.comp _,
228+
rw tendsto_prod_iff',
229+
exact ⟨hu.comp tendsto_fst, tendsto_snd⟩,
230+
end
231+
232+
lemma tendsto_uniformly_on_iff_seq_tendsto_uniformly_on {l : filter ι} [l.is_countably_generated] :
233+
tendsto_uniformly_on F f l s
234+
↔ ∀ u : ℕ → ι, tendsto u at_top l → tendsto_uniformly_on (λ n, F (u n)) f at_top s :=
235+
⟨tendsto_uniformly_on.seq_tendsto_uniformly_on, tendsto_uniformly_on_of_seq_tendsto_uniformly_on⟩
236+
237+
lemma tendsto_uniformly_iff_seq_tendsto_uniformly {l : filter ι} [l.is_countably_generated] :
238+
tendsto_uniformly F f l
239+
↔ ∀ u : ℕ → ι, tendsto u at_top l → tendsto_uniformly (λ n, F (u n)) f at_top :=
240+
begin
241+
simp_rw ← tendsto_uniformly_on_univ,
242+
exact tendsto_uniformly_on_iff_seq_tendsto_uniformly_on,
243+
end
244+
245+
end seq_tendsto
246+
198247
variable [topological_space α]
199248

200249
/-- A sequence of functions `Fₙ` converges locally uniformly on a set `s` to a limiting function

0 commit comments

Comments
 (0)