# mathlibdocumentation

topology.uniform_space.uniform_convergence

# 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 at_top).

## 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).

• tendsto_uniformly_on 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.
• tendsto_uniformly F f p: same notion with s = univ.
• tendsto_uniformly_on.continuous_on: a uniform limit on a set of functions which are continuous on this set is itself continuous on this set.
• tendsto_uniformly.continuous: a uniform limit of continuous functions is continuous.
• tendsto_uniformly_on.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.
• tendsto_uniformly.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 tendsto_locally_uniformly_on F f p s and tendsto_locally_uniformly F f p. The previous theorems all have corresponding versions under locally uniform convergence.

## Implementation notes #

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 tendsto_uniformly_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} (F : ι → α → β) (f : α → β) (p : filter ι) (s : set α) :
Prop

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
• p s = ∀ (u : set × β)), u 𝓤 β(∀ᶠ (n : ι) in p, ∀ (x : α), x s(f x, F n x) u)
theorem tendsto_uniformly_on_iff_tendsto {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} {s : set α} :
p s filter.tendsto (λ (q : ι × α), (f q.snd, F q.fst q.snd)) (p ×ᶠ 𝓟 s) (𝓤 β)

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 tendsto_uniformly {α : Type u_1} {β : Type u_2} {ι : Type u_4} (F : ι → α → β) (f : α → β) (p : filter ι) :
Prop

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
• p = ∀ (u : set × β)), u 𝓤 β(∀ᶠ (n : ι) in p, ∀ (x : α), (f x, F n x) u)
theorem tendsto_uniformly_iff_tendsto {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} :
p filter.tendsto (λ (q : ι × α), (f q.snd, F q.fst q.snd)) (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 tendsto_uniformly_on_univ {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} :
p
theorem tendsto_uniformly_on.mono {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} {s' : set α} (h : p s) (h' : s' s) :
p s'
@[protected]
theorem tendsto_uniformly.tendsto_uniformly_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} (h : p) :
p s
theorem tendsto_uniformly_on.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} (h : p s) (g : γ → α) :
tendsto_uniformly_on (λ (n : ι), F n g) (f g) p (g ⁻¹' s)

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

theorem tendsto_uniformly.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} (h : p) (g : γ → α) :
tendsto_uniformly (λ (n : ι), F n g) (f g) p

Composing on the right by a function preserves uniform convergence

theorem tendsto_prod_top_iff {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {p : filter ι} {c : β} :
(p ×ᶠ ) (𝓝 c) (λ (_x : α), c) p

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

theorem uniform_continuous_on.tendsto_uniformly {α : Type u_1} {β : Type u_2} {γ : Type u_3} {x : α} {U : set α} (hU : U 𝓝 x) {F : α → β → γ} (hF : (U.prod set.univ)) :
(F x) (𝓝 x)
theorem uniform_continuous₂.tendsto_uniformly {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β → γ} (h : uniform_continuous₂ f) {x : α} :
(f x) (𝓝 x)
def tendsto_locally_uniformly_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} (F : ι → α → β) (f : α → β) (p : filter ι) (s : set α) :
Prop

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 x, Fₙ x) ∈ u for all y in a neighborhood of x in s.

Equations
• s = ∀ (u : set × β)), u 𝓤 β∀ (x : α), x s(∃ (t : set α) (H : t 𝓝[s] x), ∀ᶠ (n : ι) in p, ∀ (y : α), y t(f y, F n y) u)
def tendsto_locally_uniformly {α : Type u_1} {β : Type u_2} {ι : Type u_4} (F : ι → α → β) (f : α → β) (p : filter ι) :
Prop

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 x, Fₙ x) ∈ u for all y in a neighborhood of x.

Equations
• = ∀ (u : set × β)), u 𝓤 β∀ (x : α), ∃ (t : set α) (H : t 𝓝 x), ∀ᶠ (n : ι) in p, ∀ (y : α), y t(f y, F n y) u
@[protected]
theorem tendsto_uniformly_on.tendsto_locally_uniformly_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} (h : p s) :
s
@[protected]
theorem tendsto_uniformly.tendsto_locally_uniformly {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} (h : p) :
theorem tendsto_locally_uniformly_on.mono {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s s' : set α} {p : filter ι} (h : s) (h' : s' s) :
s'
theorem tendsto_locally_uniformly_on_univ {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι}  :
@[protected]
theorem tendsto_locally_uniformly.tendsto_locally_uniformly_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} (h : p) :
s
theorem tendsto_locally_uniformly_on.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} {t : set γ} (h : s) (g : γ → α) (hg : t s) (cg : t) :
tendsto_locally_uniformly_on (λ (n : ι), F n g) (f g) p t
theorem tendsto_locally_uniformly.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} (h : p) (g : γ → α) (cg : continuous g) :
tendsto_locally_uniformly (λ (n : ι), F n g) (f g) p

### 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 continuous_within_at_of_locally_uniform_approx_of_continuous_within_at.

theorem continuous_within_at_of_locally_uniform_approx_of_continuous_within_at {α : Type u_1} {β : Type u_2} {f : α → β} {s : set α} {x : α} (hx : x s) (L : ∀ (u : set × β)), u 𝓤 β(∃ (t : set α) (H : t 𝓝[s] x) (F : α → β), x ∀ (y : α), y t(f y, F y) u)) :
x

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 continuous_at_of_locally_uniform_approx_of_continuous_at {α : Type u_1} {β : Type u_2} {f : α → β} {x : α} (L : ∀ (u : set × β)), u 𝓤 β(∃ (t : set α) (H : t 𝓝 x) (F : α → β), ∀ (y : α), y t(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 continuous_on_of_locally_uniform_approx_of_continuous_within_at {α : Type u_1} {β : Type u_2} {f : α → β} {s : set α} (L : ∀ (x : α), x s∀ (u : set × β)), u 𝓤 β(∃ (t : set α) (H : t 𝓝[s] x) (F : α → β), x ∀ (y : α), y t(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 continuous_on_of_uniform_approx_of_continuous_on {α : Type u_1} {β : Type u_2} {f : α → β} {s : set α} (L : ∀ (u : set × β)), u 𝓤 β(∃ (F : α → β), ∀ (y : α), y s(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_continuous_at {α : Type u_1} {β : Type u_2} {f : α → β} (L : ∀ (x : α) (u : set × β)), u 𝓤 β(∃ (t : set α) (H : t 𝓝 x) (F : α → β), ∀ (y : α), y t(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_1} {β : Type u_2} {f : α → β} (L : ∀ (u : set × β)), 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.

@[protected]
theorem tendsto_locally_uniformly_on.continuous_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} (h : s) (hc : ∀ᶠ (n : ι) in p, continuous_on (F n) s) [p.ne_bot] :

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

@[protected]
theorem tendsto_uniformly_on.continuous_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {p : filter ι} (h : p s) (hc : ∀ᶠ (n : ι) in p, continuous_on (F n) s) [p.ne_bot] :

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

@[protected]
theorem tendsto_locally_uniformly.continuous {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} (h : p) (hc : ∀ᶠ (n : ι) in p, continuous (F n)) [p.ne_bot] :

A locally uniform limit of continuous functions is continuous.

@[protected]
theorem tendsto_uniformly.continuous {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} (h : p) (hc : ∀ᶠ (n : ι) in p, continuous (F n)) [p.ne_bot] :

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_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {x : α} {p : filter ι} {g : ι → α} (h : x) (hg : (𝓝[s] x)) (hunif : ∀ (u : set × β)), u 𝓤 β(∃ (t : set α) (H : t 𝓝[s] x), ∀ᶠ (n : ι) in p, ∀ (y : α), y t(f y, F n y) u)) :
filter.tendsto (λ (n : ι), F n (g n)) p (𝓝 (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_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {x : α} {p : filter ι} {g : ι → α} (h : x) (hg : (𝓝 x)) (hunif : ∀ (u : set × β)), u 𝓤 β(∃ (t : set α) (H : t 𝓝 x), ∀ᶠ (n : ι) in p, ∀ (y : α), y t(f y, F n y) u)) :
filter.tendsto (λ (n : ι), F n (g n)) p (𝓝 (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 tendsto_locally_uniformly_on.tendsto_comp {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {x : α} {p : filter ι} {g : ι → α} (h : s) (hf : x) (hx : x s) (hg : (𝓝[s] x)) :
filter.tendsto (λ (n : ι), F n (g n)) p (𝓝 (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 tendsto_uniformly_on.tendsto_comp {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {s : set α} {x : α} {p : filter ι} {g : ι → α} (h : p s) (hf : x) (hg : (𝓝[s] x)) :
filter.tendsto (λ (n : ι), F n (g n)) p (𝓝 (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 tendsto_locally_uniformly.tendsto_comp {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {x : α} {p : filter ι} {g : ι → α} (h : p) (hf : x) (hg : (𝓝 x)) :
filter.tendsto (λ (n : ι), F n (g n)) p (𝓝 (f x))

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

theorem tendsto_uniformly.tendsto_comp {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {x : α} {p : filter ι} {g : ι → α} (h : p) (hf : x) (hg : (𝓝 x)) :
filter.tendsto (λ (n : ι), F n (g n)) p (𝓝 (f x))

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