# Uniform convergence #

A sequence of functions Fₙ (with values in a metric space) converges uniformly on a set s to a function f if, for all ε > 0, for all large enough n, one has for all y ∈ s the inequality dist (f y, Fₙ y) < ε. Under uniform convergence, many properties of the Fₙ pass to the limit, most notably continuity. We prove this in the file, defining the notion of uniform convergence in the more general setting of uniform spaces, and with respect to an arbitrary indexing set endowed with a filter (instead of just ℕ with atTop).

## Main results #

Let α be a topological space, β a uniform space, Fₙ and f be functions from α to β (where the index n belongs to an indexing type ι endowed with a filter p).

• TendstoUniformlyOn F f p s: the fact that Fₙ converges uniformly to f on s. This means that, for any entourage u of the diagonal, for large enough n (with respect to p), one has (f y, Fₙ y) ∈ u for all y ∈ s.
• TendstoUniformly F f p: same notion with s = univ.
• TendstoUniformlyOn.continuousOn: a uniform limit on a set of functions which are continuous on this set is itself continuous on this set.
• TendstoUniformly.continuous: a uniform limit of continuous functions is continuous.
• TendstoUniformlyOn.tendsto_comp: If Fₙ tends uniformly to f on a set s, and gₙ tends to x within s, then Fₙ gₙ tends to f x if f is continuous at x within s.
• TendstoUniformly.tendsto_comp: If Fₙ tends uniformly to f, and gₙ tends to x, then Fₙ gₙ tends to f x.

We also define notions where the convergence is locally uniform, called TendstoLocallyUniformlyOn F f p s and TendstoLocallyUniformly F f p. The previous theorems all have corresponding versions under locally uniform convergence.

Finally, we introduce the notion of a uniform Cauchy sequence, which is to uniform convergence what a Cauchy sequence is to the usual notion of convergence.

## Implementation notes #

We derive most of our initial results from an auxiliary definition TendstoUniformlyOnFilter. This definition in and of itself can sometimes be useful, e.g., when studying the local behavior of the Fₙ near a point, which would typically look like TendstoUniformlyOnFilter F f p (𝓝 x). Still, while this may be the "correct" definition (see tendstoUniformlyOn_iff_tendstoUniformlyOnFilter), it is somewhat unwieldy to work with in practice. Thus, we provide the more traditional definition in TendstoUniformlyOn.

Most results hold under weaker assumptions of locally uniform approximation. In a first section, we prove the results under these weaker assumptions. Then, we derive the results on uniform convergence from them.

## Tags #

Uniform limit, uniform convergence, tends uniformly to

### Different notions of uniform convergence #

We define uniform convergence and locally uniform convergence, on a set or in the whole space.

def TendstoUniformlyOnFilter {α : Type u} {β : Type v} {ι : Type x} [] (F : ιαβ) (f : αβ) (p : ) (p' : ) :

A sequence of functions Fₙ converges uniformly on a filter p' to a limiting function f with respect to the filter p if, for any entourage of the diagonal u, one has p ×ˢ p'-eventually (f x, Fₙ x) ∈ u.

Equations
• = u ∈ , ∀ᶠ (n : ι × α) in p ×ˢ p', (f n.2, F n.1 n.2) u
Instances For
theorem tendstoUniformlyOnFilter_iff_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } :
Filter.Tendsto (fun (q : ι × α) => (f q.2, F q.1 q.2)) (p ×ˢ p') ()

A sequence of functions Fₙ converges uniformly on a filter p' to a limiting function f w.r.t. filter p iff the function (n, x) ↦ (f x, Fₙ x) converges along p ×ˢ p' to the uniformity. In other words: one knows nothing about the behavior of x in this limit besides it being in p'.

def TendstoUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] (F : ιαβ) (f : αβ) (p : ) (s : Set α) :

A sequence of functions Fₙ converges uniformly on a set s to a limiting function f with respect to the filter p if, for any entourage of the diagonal u, one has p-eventually (f x, Fₙ x) ∈ u for all x ∈ s.

Equations
• = u ∈ , ∀ᶠ (n : ι) in p, xs, (f x, F n x) u
Instances For
theorem tendstoUniformlyOn_iff_tendstoUniformlyOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } :
theorem TendstoUniformlyOn.tendstoUniformlyOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } :

Alias of the forward direction of tendstoUniformlyOn_iff_tendstoUniformlyOnFilter.

theorem TendstoUniformlyOnFilter.tendstoUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } :

Alias of the reverse direction of tendstoUniformlyOn_iff_tendstoUniformlyOnFilter.

theorem tendstoUniformlyOn_iff_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {s : Set α} :
Filter.Tendsto (fun (q : ι × α) => (f q.2, F q.1 q.2)) () ()

A sequence of functions Fₙ converges uniformly on a set s to a limiting function f w.r.t. filter p iff the function (n, x) ↦ (f x, Fₙ x) converges along p ×ˢ 𝓟 s to the uniformity. In other words: one knows nothing about the behavior of x in this limit besides it being in s.

def TendstoUniformly {α : Type u} {β : Type v} {ι : Type x} [] (F : ιαβ) (f : αβ) (p : ) :

A sequence of functions Fₙ converges uniformly to a limiting function f with respect to a filter p if, for any entourage of the diagonal u, one has p-eventually (f x, Fₙ x) ∈ u for all x.

Equations
• = u ∈ , ∀ᶠ (n : ι) in p, ∀ (x : α), (f x, F n x) u
Instances For
theorem tendstoUniformlyOn_univ {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } :
TendstoUniformlyOn F f p Set.univ
theorem tendstoUniformly_iff_tendstoUniformlyOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } :
theorem TendstoUniformly.tendstoUniformlyOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } (h : ) :
theorem tendstoUniformlyOn_iff_tendstoUniformly_comp_coe {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } :
TendstoUniformly (fun (i : ι) (x : s) => F i x) (f Subtype.val) p
theorem tendstoUniformly_iff_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } :
Filter.Tendsto (fun (q : ι × α) => (f q.2, F q.1 q.2)) (p ×ˢ ) ()

A sequence of functions Fₙ converges uniformly to a limiting function f w.r.t. filter p iff the function (n, x) ↦ (f x, Fₙ x) converges along p ×ˢ ⊤ to the uniformity. In other words: one knows nothing about the behavior of x in this limit.

theorem TendstoUniformlyOnFilter.tendsto_at {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {x : α} {p : } {p' : } (h : ) (hx : p') :
Filter.Tendsto (fun (n : ι) => F n x) p (nhds (f x))

Uniform converence implies pointwise convergence.

theorem TendstoUniformlyOn.tendsto_at {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } (h : ) {x : α} (hx : x s) :
Filter.Tendsto (fun (n : ι) => F n x) p (nhds (f x))

Uniform converence implies pointwise convergence.

theorem TendstoUniformly.tendsto_at {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } (h : ) (x : α) :
Filter.Tendsto (fun (n : ι) => F n x) p (nhds (f x))

Uniform converence implies pointwise convergence.

theorem TendstoUniformlyOnFilter.mono_left {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } {p'' : } (h : ) (hp : p'' p) :
theorem TendstoUniformlyOnFilter.mono_right {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } {p'' : } (h : ) (hp : p'' p') :
theorem TendstoUniformlyOn.mono {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } {s' : Set α} (h : ) (h' : s' s) :
theorem TendstoUniformlyOnFilter.congr {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } {F' : ιαβ} (hf : ) (hff' : ∀ᶠ (n : ι × α) in p ×ˢ p', F n.1 n.2 = F' n.1 n.2) :
theorem TendstoUniformlyOn.congr {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } {F' : ιαβ} (hf : ) (hff' : ∀ᶠ (n : ι) in p, Set.EqOn (F n) (F' n) s) :
theorem TendstoUniformlyOn.congr_right {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } {g : αβ} (hf : ) (hfg : Set.EqOn f g s) :
theorem TendstoUniformly.tendstoUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } (h : ) :
theorem TendstoUniformlyOnFilter.comp {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } (h : ) (g : γα) :
TendstoUniformlyOnFilter (fun (n : ι) => F n g) (f g) p (Filter.comap g p')

Composing on the right by a function preserves uniform convergence on a filter

theorem TendstoUniformlyOn.comp {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } (h : ) (g : γα) :
TendstoUniformlyOn (fun (n : ι) => F n g) (f g) p (g ⁻¹' s)

Composing on the right by a function preserves uniform convergence on a set

theorem TendstoUniformly.comp {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } (h : ) (g : γα) :
TendstoUniformly (fun (n : ι) => F n g) (f g) p

Composing on the right by a function preserves uniform convergence

theorem UniformContinuous.comp_tendstoUniformlyOnFilter {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } [] {g : βγ} (hg : ) (h : ) :
TendstoUniformlyOnFilter (fun (i : ι) => g F i) (g f) p p'

Composing on the left by a uniformly continuous function preserves uniform convergence on a filter

theorem UniformContinuous.comp_tendstoUniformlyOn {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] {g : βγ} (hg : ) (h : ) :
TendstoUniformlyOn (fun (i : ι) => g F i) (g f) p s

Composing on the left by a uniformly continuous function preserves uniform convergence on a set

theorem UniformContinuous.comp_tendstoUniformly {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] {g : βγ} (hg : ) (h : ) :
TendstoUniformly (fun (i : ι) => g F i) (g f) p

Composing on the left by a uniformly continuous function preserves uniform convergence

theorem TendstoUniformlyOnFilter.prod_map {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } {ι' : Type u_1} {α' : Type u_2} {β' : Type u_3} [] {F' : ι'α'β'} {f' : α'β'} {q : Filter ι'} {q' : Filter α'} (h : ) (h' : TendstoUniformlyOnFilter F' f' q q') :
TendstoUniformlyOnFilter (fun (i : ι × ι') => Prod.map (F i.1) (F' i.2)) (Prod.map f f') (p ×ˢ q) (p' ×ˢ q')
theorem TendstoUniformlyOn.prod_map {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } {ι' : Type u_1} {α' : Type u_2} {β' : Type u_3} [] {F' : ι'α'β'} {f' : α'β'} {p' : Filter ι'} {s' : Set α'} (h : ) (h' : TendstoUniformlyOn F' f' p' s') :
TendstoUniformlyOn (fun (i : ι × ι') => Prod.map (F i.1) (F' i.2)) (Prod.map f f') (p ×ˢ p') (s ×ˢ s')
theorem TendstoUniformly.prod_map {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {ι' : Type u_1} {α' : Type u_2} {β' : Type u_3} [] {F' : ι'α'β'} {f' : α'β'} {p' : Filter ι'} (h : ) (h' : TendstoUniformly F' f' p') :
TendstoUniformly (fun (i : ι × ι') => Prod.map (F i.1) (F' i.2)) (Prod.map f f') (p ×ˢ p')
theorem TendstoUniformlyOnFilter.prod {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } {ι' : Type u_1} {β' : Type u_2} [] {F' : ι'αβ'} {f' : αβ'} {q : Filter ι'} (h : ) (h' : TendstoUniformlyOnFilter F' f' q p') :
TendstoUniformlyOnFilter (fun (i : ι × ι') (a : α) => (F i.1 a, F' i.2 a)) (fun (a : α) => (f a, f' a)) (p ×ˢ q) p'
theorem TendstoUniformlyOn.prod {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } {ι' : Type u_1} {β' : Type u_2} [] {F' : ι'αβ'} {f' : αβ'} {p' : Filter ι'} (h : ) (h' : TendstoUniformlyOn F' f' p' s) :
TendstoUniformlyOn (fun (i : ι × ι') (a : α) => (F i.1 a, F' i.2 a)) (fun (a : α) => (f a, f' a)) (p.prod p') s
theorem TendstoUniformly.prod {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {ι' : Type u_1} {β' : Type u_2} [] {F' : ι'αβ'} {f' : αβ'} {p' : Filter ι'} (h : ) (h' : TendstoUniformly F' f' p') :
TendstoUniformly (fun (i : ι × ι') (a : α) => (F i.1 a, F' i.2 a)) (fun (a : α) => (f a, f' a)) (p ×ˢ p')
theorem tendsto_prod_filter_iff {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {p : } {p' : } {c : β} :
Filter.Tendsto (F) (p ×ˢ p') (nhds c) TendstoUniformlyOnFilter F (fun (x : α) => c) p p'

Uniform convergence on a filter p' to a constant function is equivalent to convergence in p ×ˢ p'.

theorem tendsto_prod_principal_iff {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } {c : β} :
Filter.Tendsto (F) () (nhds c) TendstoUniformlyOn F (fun (x : α) => c) p s

Uniform convergence on a set s to a constant function is equivalent to convergence in p ×ˢ 𝓟 s.

theorem tendsto_prod_top_iff {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {p : } {c : β} :
Filter.Tendsto (F) (p ×ˢ ) (nhds c) TendstoUniformly F (fun (x : α) => c) p

Uniform convergence to a constant function is equivalent to convergence in p ×ˢ ⊤.

theorem tendstoUniformlyOn_empty {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } :

Uniform convergence on the empty set is vacuously true

theorem tendstoUniformlyOn_singleton_iff_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {x : α} {p : } :
TendstoUniformlyOn F f p {x} Filter.Tendsto (fun (n : ι) => F n x) p (nhds (f x))

Uniform convergence on a singleton is equivalent to regular convergence

theorem Filter.Tendsto.tendstoUniformlyOnFilter_const {α : Type u} {β : Type v} {ι : Type x} [] {p : } {g : ιβ} {b : β} (hg : Filter.Tendsto g p (nhds b)) (p' : ) :
TendstoUniformlyOnFilter (fun (n : ι) (x : α) => g n) (fun (x : α) => b) p p'

If a sequence g converges to some b, then the sequence of constant functions fun n ↦ fun a ↦ g n converges to the constant function fun a ↦ b on any set s

theorem Filter.Tendsto.tendstoUniformlyOn_const {α : Type u} {β : Type v} {ι : Type x} [] {p : } {g : ιβ} {b : β} (hg : Filter.Tendsto g p (nhds b)) (s : Set α) :
TendstoUniformlyOn (fun (n : ι) (x : α) => g n) (fun (x : α) => b) p s

If a sequence g converges to some b, then the sequence of constant functions fun n ↦ fun a ↦ g n converges to the constant function fun a ↦ b on any set s

theorem UniformContinuousOn.tendstoUniformlyOn {α : Type u} {β : Type v} {γ : Type w} [] [] [] {x : α} {U : Set α} {V : Set β} {F : αβγ} (hF : UniformContinuousOn (F) (U ×ˢ V)) (hU : x U) :
TendstoUniformlyOn F (F x) () V
theorem UniformContinuousOn.tendstoUniformly {α : Type u} {β : Type v} {γ : Type w} [] [] [] {x : α} {U : Set α} (hU : U nhds x) {F : αβγ} (hF : UniformContinuousOn (F) (U ×ˢ Set.univ)) :
theorem UniformContinuous₂.tendstoUniformly {α : Type u} {β : Type v} {γ : Type w} [] [] [] {f : αβγ} (h : ) {x : α} :
def UniformCauchySeqOnFilter {α : Type u} {β : Type v} {ι : Type x} [] (F : ιαβ) (p : ) (p' : ) :

A sequence is uniformly Cauchy if eventually all of its pairwise differences are uniformly bounded

Equations
• = u ∈ , ∀ᶠ (m : (ι × ι) × α) in (p ×ˢ p) ×ˢ p', (F m.1.1 m.2, F m.1.2 m.2) u
Instances For
def UniformCauchySeqOn {α : Type u} {β : Type v} {ι : Type x} [] (F : ιαβ) (p : ) (s : Set α) :

A sequence is uniformly Cauchy if eventually all of its pairwise differences are uniformly bounded

Equations
• = u ∈ , ∀ᶠ (m : ι × ι) in p ×ˢ p, xs, (F m.1 x, F m.2 x) u
Instances For
theorem uniformCauchySeqOn_iff_uniformCauchySeqOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } :
theorem UniformCauchySeqOn.uniformCauchySeqOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } (hF : ) :
theorem TendstoUniformlyOnFilter.uniformCauchySeqOnFilter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } (hF : ) :

A sequence that converges uniformly is also uniformly Cauchy

theorem TendstoUniformlyOn.uniformCauchySeqOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } (hF : ) :

A sequence that converges uniformly is also uniformly Cauchy

theorem UniformCauchySeqOnFilter.tendstoUniformlyOnFilter_of_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } {p' : } [p.NeBot] (hF : ) (hF' : ∀ᶠ (x : α) in p', Filter.Tendsto (fun (n : ι) => F n x) p (nhds (f x))) :

A uniformly Cauchy sequence converges uniformly to its limit

theorem UniformCauchySeqOn.tendstoUniformlyOn_of_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [p.NeBot] (hF : ) (hF' : xs, Filter.Tendsto (fun (n : ι) => F n x) p (nhds (f x))) :

A uniformly Cauchy sequence converges uniformly to its limit

theorem UniformCauchySeqOnFilter.mono_left {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {p : } {p' : } {p'' : } (hf : ) (hp : p'' p) :
theorem UniformCauchySeqOnFilter.mono_right {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {p : } {p' : } {p'' : } (hf : ) (hp : p'' p') :
theorem UniformCauchySeqOn.mono {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } {s' : Set α} (hf : ) (hss' : s' s) :
theorem UniformCauchySeqOnFilter.comp {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {p : } {p' : } {γ : Type u_1} (hf : ) (g : γα) :
UniformCauchySeqOnFilter (fun (n : ι) => F n g) p (Filter.comap g p')

Composing on the right by a function preserves uniform Cauchy sequences

theorem UniformCauchySeqOn.comp {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } {γ : Type u_1} (hf : ) (g : γα) :
UniformCauchySeqOn (fun (n : ι) => F n g) p (g ⁻¹' s)

Composing on the right by a function preserves uniform Cauchy sequences

theorem UniformContinuous.comp_uniformCauchySeqOn {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } [] {g : βγ} (hg : ) (hf : ) :
UniformCauchySeqOn (fun (n : ι) => g F n) p s

Composing on the left by a uniformly continuous function preserves uniform Cauchy sequences

theorem UniformCauchySeqOn.prod_map {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } {ι' : Type u_1} {α' : Type u_2} {β' : Type u_3} [] {F' : ι'α'β'} {p' : Filter ι'} {s' : Set α'} (h : ) (h' : UniformCauchySeqOn F' p' s') :
UniformCauchySeqOn (fun (i : ι × ι') => Prod.map (F i.1) (F' i.2)) (p ×ˢ p') (s ×ˢ s')
theorem UniformCauchySeqOn.prod {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } {ι' : Type u_1} {β' : Type u_2} [] {F' : ι'αβ'} {p' : Filter ι'} (h : ) (h' : UniformCauchySeqOn F' p' s) :
UniformCauchySeqOn (fun (i : ι × ι') (a : α) => (F i.1 a, F' i.2 a)) (p ×ˢ p') s
theorem UniformCauchySeqOn.prod' {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {p : } {β' : Type u_1} [] {F' : ιαβ'} (h : ) (h' : ) :
UniformCauchySeqOn (fun (i : ι) (a : α) => (F i a, F' i a)) p s
theorem UniformCauchySeqOn.cauchy_map {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {x : α} {p : } [hp : p.NeBot] (hf : ) (hx : x s) :
Cauchy (Filter.map (fun (i : ι) => F i x) p)

If a sequence of functions is uniformly Cauchy on a set, then the values at each point form a Cauchy sequence.

theorem UniformCauchySeqOn.cauchySeq {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {s : Set α} {x : α} [] [] (hf : UniformCauchySeqOn F Filter.atTop s) (hx : x s) :
CauchySeq fun (i : ι) => F i x

If a sequence of functions is uniformly Cauchy on a set, then the values at each point form a Cauchy sequence. See UniformCauchSeqOn.cauchy_map for the non-atTop case.

theorem tendstoUniformlyOn_of_seq_tendstoUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {l : } [l.IsCountablyGenerated] (h : ∀ (u : ι), Filter.Tendsto u Filter.atTop lTendstoUniformlyOn (fun (n : ) => F (u n)) f Filter.atTop s) :
theorem TendstoUniformlyOn.seq_tendstoUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {l : } (h : ) (u : ι) (hu : Filter.Tendsto u Filter.atTop l) :
TendstoUniformlyOn (fun (n : ) => F (u n)) f Filter.atTop s
theorem tendstoUniformlyOn_iff_seq_tendstoUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {l : } [l.IsCountablyGenerated] :
∀ (u : ι), Filter.Tendsto u Filter.atTop lTendstoUniformlyOn (fun (n : ) => F (u n)) f Filter.atTop s
theorem tendstoUniformly_iff_seq_tendstoUniformly {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {l : } [l.IsCountablyGenerated] :
∀ (u : ι), Filter.Tendsto u Filter.atTop lTendstoUniformly (fun (n : ) => F (u n)) f Filter.atTop
def TendstoLocallyUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] [] (F : ιαβ) (f : αβ) (p : ) (s : Set α) :

A sequence of functions Fₙ converges locally uniformly on a set s to a limiting function f with respect to a filter p if, for any entourage of the diagonal u, for any x ∈ s, one has p-eventually (f y, Fₙ y) ∈ u for all y in a neighborhood of x in s.

Equations
• = u ∈ , xs, t ∈ , ∀ᶠ (n : ι) in p, yt, (f y, F n y) u
Instances For
def TendstoLocallyUniformly {α : Type u} {β : Type v} {ι : Type x} [] [] (F : ιαβ) (f : αβ) (p : ) :

A sequence of functions Fₙ converges locally uniformly to a limiting function f with respect to a filter p if, for any entourage of the diagonal u, for any x, one has p-eventually (f y, Fₙ y) ∈ u for all y in a neighborhood of x.

Equations
• = u ∈ , ∀ (x : α), tnhds x, ∀ᶠ (n : ι) in p, yt, (f y, F n y) u
Instances For
theorem tendstoLocallyUniformlyOn_univ {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] :
theorem tendstoLocallyUniformlyOn_iff_forall_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] :
xs, Filter.Tendsto (fun (y : ι × α) => (f y.2, F y.1 y.2)) (p ×ˢ ) ()
theorem IsOpen.tendstoLocallyUniformlyOn_iff_forall_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (hs : ) :
xs, Filter.Tendsto (fun (y : ι × α) => (f y.2, F y.1 y.2)) (p ×ˢ nhds x) ()
theorem tendstoLocallyUniformly_iff_forall_tendsto {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] :
∀ (x : α), Filter.Tendsto (fun (y : ι × α) => (f y.2, F y.1 y.2)) (p ×ˢ nhds x) ()
theorem tendstoLocallyUniformlyOn_iff_tendstoLocallyUniformly_comp_coe {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] :
TendstoLocallyUniformly (fun (i : ι) (x : s) => F i x) (f Subtype.val) p
theorem TendstoUniformlyOn.tendstoLocallyUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (h : ) :
theorem TendstoUniformly.tendstoLocallyUniformly {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] (h : ) :
theorem TendstoLocallyUniformlyOn.mono {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {s' : Set α} {p : } [] (h : ) (h' : s' s) :
theorem tendstoLocallyUniformlyOn_iUnion {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] {ι' : Sort u_1} {S : ι'Set α} (hS : ∀ (i : ι'), IsOpen (S i)) (h : ∀ (i : ι'), TendstoLocallyUniformlyOn F f p (S i)) :
TendstoLocallyUniformlyOn F f p (⋃ (i : ι'), S i)
theorem tendstoLocallyUniformlyOn_biUnion {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] {s : Set γ} {S : γSet α} (hS : is, IsOpen (S i)) (h : is, TendstoLocallyUniformlyOn F f p (S i)) :
TendstoLocallyUniformlyOn F f p (is, S i)
theorem tendstoLocallyUniformlyOn_sUnion {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] (S : Set (Set α)) (hS : sS, ) (h : sS, ) :
theorem TendstoLocallyUniformlyOn.union {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] {s₁ : Set α} {s₂ : Set α} (hs₁ : IsOpen s₁) (hs₂ : IsOpen s₂) (h₁ : ) (h₂ : ) :
TendstoLocallyUniformlyOn F f p (s₁ s₂)
theorem TendstoLocallyUniformly.tendstoLocallyUniformlyOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (h : ) :
theorem tendstoLocallyUniformly_iff_tendstoUniformly_of_compactSpace {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] [] :

On a compact space, locally uniform convergence is just uniform convergence.

theorem tendstoLocallyUniformlyOn_iff_tendstoUniformlyOn_of_compact {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (hs : ) :

For a compact set s, locally uniform convergence on s is just uniform convergence on s.

theorem TendstoLocallyUniformlyOn.comp {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] [] {t : Set γ} (h : ) (g : γα) (hg : Set.MapsTo g t s) (cg : ) :
TendstoLocallyUniformlyOn (fun (n : ι) => F n g) (f g) p t
theorem TendstoLocallyUniformly.comp {α : Type u} {β : Type v} {γ : Type w} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] [] (h : ) (g : γα) (cg : ) :
TendstoLocallyUniformly (fun (n : ι) => F n g) (f g) p
theorem tendstoLocallyUniformlyOn_TFAE {α : Type u} {β : Type v} {ι : Type x} [] {s : Set α} [] (G : ιαβ) (g : αβ) (p : ) (hs : ) :
[, Ks, , xs, v, ].TFAE
theorem tendstoLocallyUniformlyOn_iff_forall_isCompact {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (hs : ) :
Ks,
theorem tendstoLocallyUniformly_iff_forall_isCompact {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] :
∀ (K : Set α),
theorem tendstoLocallyUniformlyOn_iff_filter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] :
xs, TendstoUniformlyOnFilter F f p ()
theorem tendstoLocallyUniformly_iff_filter {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] :
∀ (x : α), TendstoUniformlyOnFilter F f p (nhds x)
theorem TendstoLocallyUniformlyOn.tendsto_at {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (hf : ) {a : α} (ha : a s) :
Filter.Tendsto (fun (i : ι) => F i a) p (nhds (f a))
theorem TendstoLocallyUniformlyOn.unique {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] [p.NeBot] [] {g : αβ} (hf : ) (hg : ) :
Set.EqOn f g s
theorem TendstoLocallyUniformlyOn.congr {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] {G : ιαβ} (hf : ) (hg : ∀ (n : ι), Set.EqOn (F n) (G n) s) :
theorem TendstoLocallyUniformlyOn.congr_right {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] {g : αβ} (hf : ) (hg : Set.EqOn f g s) :

### Uniform approximation #

In this section, we give lemmas ensuring that a function is continuous if it can be approximated uniformly by continuous functions. We give various versions, within a set or the whole space, at a single point or at all points, with locally uniform approximation or uniform approximation. All the statements are derived from a statement about locally uniform approximation within a set at a point, called continuousWithinAt_of_locally_uniform_approx_of_continuousWithinAt.

theorem continuousWithinAt_of_locally_uniform_approx_of_continuousWithinAt {α : Type u} {β : Type v} [] {f : αβ} {s : Set α} {x : α} [] (hx : x s) (L : u, t, ∃ (F : αβ), yt, (f y, F y) u) :

A function which can be locally uniformly approximated by functions which are continuous within a set at a point is continuous within this set at this point.

theorem continuousAt_of_locally_uniform_approx_of_continuousAt {α : Type u} {β : Type v} [] {f : αβ} {x : α} [] (L : u, tnhds x, ∃ (F : αβ), yt, (f y, F y) u) :

A function which can be locally uniformly approximated by functions which are continuous at a point is continuous at this point.

theorem continuousOn_of_locally_uniform_approx_of_continuousWithinAt {α : Type u} {β : Type v} [] {f : αβ} {s : Set α} [] (L : xs, u, t, ∃ (F : αβ), yt, (f y, F y) u) :

A function which can be locally uniformly approximated by functions which are continuous on a set is continuous on this set.

theorem continuousOn_of_uniform_approx_of_continuousOn {α : Type u} {β : Type v} [] {f : αβ} {s : Set α} [] (L : u, ∃ (F : αβ), ys, (f y, F y) u) :

A function which can be uniformly approximated by functions which are continuous on a set is continuous on this set.

theorem continuous_of_locally_uniform_approx_of_continuousAt {α : Type u} {β : Type v} [] {f : αβ} [] (L : ∀ (x : α), u, tnhds x, ∃ (F : αβ), yt, (f y, F y) u) :

A function which can be locally uniformly approximated by continuous functions is continuous.

theorem continuous_of_uniform_approx_of_continuous {α : Type u} {β : Type v} [] {f : αβ} [] (L : u, ∃ (F : αβ), ∀ (y : α), (f y, F y) u) :

A function which can be uniformly approximated by continuous functions is continuous.

### Uniform limits #

From the previous statements on uniform approximation, we deduce continuity results for uniform limits.

theorem TendstoLocallyUniformlyOn.continuousOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (h : ) (hc : ∀ᶠ (n : ι) in p, ContinuousOn (F n) s) [p.NeBot] :

A locally uniform limit on a set of functions which are continuous on this set is itself continuous on this set.

theorem TendstoUniformlyOn.continuousOn {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {p : } [] (h : ) (hc : ∀ᶠ (n : ι) in p, ContinuousOn (F n) s) [p.NeBot] :

A uniform limit on a set of functions which are continuous on this set is itself continuous on this set.

theorem TendstoLocallyUniformly.continuous {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] (h : ) (hc : ∀ᶠ (n : ι) in p, Continuous (F n)) [p.NeBot] :

A locally uniform limit of continuous functions is continuous.

theorem TendstoUniformly.continuous {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {p : } [] (h : ) (hc : ∀ᶠ (n : ι) in p, Continuous (F n)) [p.NeBot] :

A uniform limit of continuous functions is continuous.

### Composing limits under uniform convergence #

In general, if Fₙ converges pointwise to a function f, and gₙ tends to x, it is not true that Fₙ gₙ tends to f x. It is true however if the convergence of Fₙ to f is uniform. In this paragraph, we prove variations around this statement.

theorem tendsto_comp_of_locally_uniform_limit_within {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {x : α} {p : } {g : ια} [] (h : ) (hg : Filter.Tendsto g p ()) (hunif : u, t, ∀ᶠ (n : ι) in p, yt, (f y, F n y) u) :
Filter.Tendsto (fun (n : ι) => F n (g n)) p (nhds (f x))

If Fₙ converges locally uniformly on a neighborhood of x within a set s to a function f which is continuous at x within s, and gₙ tends to x within s, then Fₙ (gₙ) tends to f x.

theorem tendsto_comp_of_locally_uniform_limit {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {x : α} {p : } {g : ια} [] (h : ) (hg : Filter.Tendsto g p (nhds x)) (hunif : u, tnhds x, ∀ᶠ (n : ι) in p, yt, (f y, F n y) u) :
Filter.Tendsto (fun (n : ι) => F n (g n)) p (nhds (f x))

If Fₙ converges locally uniformly on a neighborhood of x to a function f which is continuous at x, and gₙ tends to x, then Fₙ (gₙ) tends to f x.

theorem TendstoLocallyUniformlyOn.tendsto_comp {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {x : α} {p : } {g : ια} [] (h : ) (hf : ) (hx : x s) (hg : Filter.Tendsto g p ()) :
Filter.Tendsto (fun (n : ι) => F n (g n)) p (nhds (f x))

If Fₙ tends locally uniformly to f on a set s, and gₙ tends to x within s, then Fₙ gₙ tends to f x if f is continuous at x within s and x ∈ s.

theorem TendstoUniformlyOn.tendsto_comp {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {s : Set α} {x : α} {p : } {g : ια} [] (h : ) (hf : ) (hg : Filter.Tendsto g p ()) :
Filter.Tendsto (fun (n : ι) => F n (g n)) p (nhds (f x))

If Fₙ tends uniformly to f on a set s, and gₙ tends to x within s, then Fₙ gₙ tends to f x if f is continuous at x within s.

theorem TendstoLocallyUniformly.tendsto_comp {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {x : α} {p : } {g : ια} [] (h : ) (hf : ) (hg : Filter.Tendsto g p (nhds x)) :
Filter.Tendsto (fun (n : ι) => F n (g n)) p (nhds (f x))

If Fₙ tends locally uniformly to f, and gₙ tends to x, then Fₙ gₙ tends to f x.

theorem TendstoUniformly.tendsto_comp {α : Type u} {β : Type v} {ι : Type x} [] {F : ιαβ} {f : αβ} {x : α} {p : } {g : ια} [] (h : ) (hf : ) (hg : Filter.Tendsto g p (nhds x)) :
Filter.Tendsto (fun (n : ι) => F n (g n)) p (nhds (f x))

If Fₙ tends uniformly to f, and gₙ tends to x, then Fₙ gₙ tends to f x.