mathlib documentation

topology.uniform_space.uniform_convergence_topology

Topology and uniform structure of uniform convergence #

This files endows α → β with the topologies / uniform structures of

Usual examples of the second construction include :

This file contains a lot of technical facts, so it is heavily commented, proofs included!

Main definitions #

Main statements #

Basic properties #

Functoriality and compatibility with product of uniform spaces #

In order to avoid the need for filter bases as much as possible when using these definitions, we develop an extensive API for manipulating these structures abstractly. As usual in the topology section of mathlib, we first state results about the complete lattices of uniform_spaces on fixed types, and then we use these to deduce categorical-like results about maps between two uniform spaces.

We only describe these in the harder case of 𝔖-convergence, as the names of the corresponding results for uniform convergence can easily be guessed.

Order statements #

An interesting note about these statements is that they are proved without ever unfolding the basis definition of the uniform structure of uniform convergence! Instead, we build a (not very interesting) Galois connection uniform_convergence.gc and then rely on the Galois connection API to do most of the work.

Morphism statements (unbundled) #

Isomorphism statements (bundled) #

Important use cases #

Implementation details #

We do not declare these structures as instances, since they would conflict with Pi.uniform_space.

TODO #

References #

Tags #

uniform convergence

@[protected]
def uniform_convergence.gen (α : Type u_1) (β : Type u_2) (V : set × β)) :
set ((α → β) × (α → β))

Basis sets for the uniformity of uniform convergence: gen α β V is the set of pairs (f, g) of functions α → β such that ∀ x, (f x, g x) ∈ V.

Equations
@[protected]
theorem uniform_convergence.is_basis_gen (α : Type u_1) (β : Type u_2) (𝓑 : filter × β)) :
filter.is_basis (λ (V : set × β)), V 𝓑) (uniform_convergence.gen α β)

If 𝓕 is a filter on β × β, then the set of all uniform_convergence.gen α β V for V ∈ 𝓕 is too. This will only be applied to 𝓕 = 𝓤 β when β is equipped with a uniform_space structure, but it is useful to define it for any filter in order to be able to state that it has a lower adjoint (see uniform_convergence.gc).

@[protected]
def uniform_convergence.basis (α : Type u_1) (β : Type u_2) (𝓕 : filter × β)) :
filter_basis ((α → β) × (α → β))

For 𝓕 : filter (β × β), this is the set of all uniform_convergence.gen α β V for V ∈ 𝓕 is as a bundled filter_basis. This will only be applied to 𝓕 = 𝓤 β when β is equipped with a uniform_space structure, but it is useful to define it for any filter in order to be able to state that it has a lower adjoint (see uniform_convergence.gc).

Equations
@[protected]
def uniform_convergence.filter (α : Type u_1) (β : Type u_2) (𝓕 : filter × β)) :
filter ((α → β) × (α → β))

For 𝓕 : filter (β × β), this is the filter generated by the filter basis uniform_convergence.basis α β 𝓕. For 𝓕 = 𝓤 β, this will be the uniformity of uniform convergence on α.

Equations
@[protected]
theorem uniform_convergence.gc (α : Type u_1) (β : Type u_2) :
galois_connection (λ (𝓐 : filter ((α → β) × (α → β))), filter.map ((λ (α : Type u_1) (β : Type u_2) (uvx : ((α → β) × (α → β)) × α), (uvx.fst.fst uvx.snd, uvx.fst.snd uvx.snd)) α β) (𝓐.prod )) (λ (𝓕 : filter × β)), uniform_convergence.filter α β 𝓕)

The function uniform_convergence.filter α β : filter (β × β) → filter ((α → β) × (α → β)) has a lower adjoint l (in the sense of galois_connection). The exact definition of l is not interesting; we will only use that it exists (in uniform_convergence.mono and uniform_convergence.infi_eq) and that l (filter.map (prod.map f f) 𝓕) = filter.map (prod.map ((∘) f) ((∘) f)) (l 𝓕) for each 𝓕 : filter (γ × γ) and f : γ → α (in uniform_convergence.comap_eq).

@[protected]
def uniform_convergence.uniform_core (α : Type u_1) (β : Type u_2) [uniform_space β] :
uniform_space.core (α → β)

Core of the uniform structure of uniform convergence.

Equations
@[protected]
def uniform_convergence.uniform_space (α : Type u_1) (β : Type u_2) [uniform_space β] :
uniform_space (α → β)

Uniform structure of uniform convergence. We will denote it 𝒰(α, β, uβ).

Equations
@[protected]
theorem uniform_convergence.has_basis_uniformity (α : Type u_1) (β : Type u_2) [uniform_space β] :
(uniformity (α → β)).has_basis (λ (V : set × β)), V uniformity β) (uniform_convergence.gen α β)

By definition, the uniformity of α → β endowed with the structure of uniform convergence on α admits the family {(f, g) | ∀ x, (f x, g x) ∈ V} for V ∈ 𝓤 β as a filter basis.

@[protected]
def uniform_convergence.topological_space (α : Type u_1) (β : Type u_2) [uniform_space β] :
topological_space (α → β)

Topology of uniform convergence.

Equations
@[protected]
theorem uniform_convergence.has_basis_nhds (α : Type u_1) (β : Type u_2) {f : α → β} [uniform_space β] :
(nhds f).has_basis (λ (V : set × β)), V uniformity β) (λ (V : set × β)), {g : α → β | (f, g) uniform_convergence.gen α β V})

If α → β is endowed with the topology of uniform convergence, 𝓝 f admits the family {g | ∀ x, (f x, g x) ∈ V} for V ∈ 𝓤 β as a filter basis.

theorem uniform_convergence.uniform_continuous_eval {α : Type u_1} (β : Type u_2) [uniform_space β] (x : α) :

Evaluation at a fixed point is uniformly continuous for 𝒰(α, β, uβ).

@[protected]
theorem uniform_convergence.mono {α : Type u_1} {γ : Type u_3} :

If u₁ and u₂ are two uniform structures on γ and u₁ ≤ u₂, then 𝒰(α, γ, u₁) ≤ 𝒰(α, γ, u₂).

@[protected]
theorem uniform_convergence.infi_eq {α : Type u_1} {γ : Type u_3} {ι : Type u_4} {u : ι → uniform_space γ} :

If u is a family of uniform structures on γ, then 𝒰(α, γ, (⨅ i, u i)) = ⨅ i, 𝒰(α, γ, u i).

@[protected]

If u₁ and u₂ are two uniform structures on γ, then 𝒰(α, γ, u₁ ⊓ u₂) = 𝒰(α, γ, u₁) ⊓ 𝒰(α, γ, u₂).

@[protected]
theorem uniform_convergence.comap_eq {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {f : γ → β} :

If u is a uniform structures on β and f : γ → β, then 𝒰(α, γ, comap f u) = comap (λ g, f ∘ g) 𝒰(α, γ, u₁).

@[protected]
theorem uniform_convergence.postcomp_uniform_continuous {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] [uniform_space γ] {f : γ → β} (hf : uniform_continuous f) :

Post-composition by a uniformly continuous function is uniformly continuous for the uniform structures of uniform convergence.

More precisely, if f : (γ, uγ) → (β, uβ) is uniformly continuous, then (λ g, f ∘ g) : (α → γ, 𝒰(α, γ, uγ)) → (α → β, 𝒰(α, β, uβ)) is uniformly continuous.

@[protected]
theorem uniform_convergence.postcomp_uniform_inducing {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] [uniform_space γ] {f : γ → β} (hf : uniform_inducing f) :

Post-composition by a uniform inducing is a uniform inducing for the uniform structures of uniform convergence.

More precisely, if f : (γ, uγ) → (β, uβ) is a uniform inducing, then (λ g, f ∘ g) : (α → γ, 𝒰(α, γ, uγ)) → (α → β, 𝒰(α, β, uβ)) is a uniform inducing.

@[protected]
def uniform_convergence.congr_right {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] [uniform_space γ] (e : γ ≃ᵤ β) :
(α → γ) ≃ᵤ (α → β)

Turn a uniform isomorphism (γ, uγ) ≃ᵤ (β, uβ) into a uniform isomorphism (α → γ, 𝒰(α, γ, uγ)) ≃ᵤ (α → β, 𝒰(α, β, uβ)) by post-composing.

Equations
@[protected]
theorem uniform_convergence.precomp_uniform_continuous {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {f : γ → α} :
uniform_continuous (λ (g : α → β), g f)

Pre-composition by a any function is uniformly continuous for the uniform structures of uniform convergence.

More precisely, for any f : γ → α, the function (λ g, g ∘ f) : (α → β, 𝒰(α, β, uβ)) → (γ → β, 𝒰(γ, β, uβ)) is uniformly continuous.

@[protected]
def uniform_convergence.congr_left {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] (e : γ α) :
(γ → β) ≃ᵤ (α → β)

Turn a bijection γ ≃ α into a uniform isomorphism (γ → β, 𝒰(γ, β, uβ)) ≃ᵤ (α → β, 𝒰(α, β, uβ)) by pre-composing.

Equations
theorem uniform_convergence.t2_space {α : Type u_1} {β : Type u_2} [uniform_space β] [t2_space β] :
t2_space (α → β)

The topology of uniform convergence is T₂.

@[protected]
theorem uniform_convergence.le_Pi {α : Type u_1} {β : Type u_2} [uniform_space β] :

The uniform structure of uniform convergence is finer than that of pointwise convergence, aka the product uniform structure.

@[protected]
theorem uniform_convergence.tendsto_iff_tendsto_uniformly {α : Type u_1} {β : Type u_2} {ι : Type u_4} {F : ι → α → β} {f : α → β} {p : filter ι} [uniform_space β] :

The topology of uniform convergence indeed gives the same notion of convergence as tendsto_uniformly.

@[protected]
def uniform_convergence.uniform_equiv_prod_arrow {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] [uniform_space γ] :
(α → β × γ) ≃ᵤ (α → β) × (α → γ)

The natural bijection between α → β × γ and (α → β) × (α → γ), upgraded to a uniform isomorphism between (α → β × γ, 𝒰(α, β × γ, uβ × uγ)) and ((α → β) × (α → γ), 𝒰(α, β, uβ) × 𝒰(α, γ, uγ)).

Equations
@[protected]
def uniform_convergence.uniform_equiv_Pi_comm (α : Type u_1) {ι : Type u_4} (δ : ι → Type u_5) [Π (i : ι), uniform_space (δ i)] :
(α → Π (i : ι), δ i) ≃ᵤ Π (i : ι), α → δ i

The natural bijection between α → Π i, δ i and Π i, α → δ i, upgraded to a uniform isomorphism between (α → (Π i, δ i), 𝒰(α, (Π i, δ i), (Π i, uδ i))) and ((Π i, α → δ i), (Π i, 𝒰(α, δ i, uδ i))).

Equations
@[protected]
def uniform_convergence_on.uniform_space (α : Type u_1) (β : Type u_2) [uniform_space β] (𝔖 : set (set α)) :
uniform_space (α → β)

Uniform structure of 𝔖-convergence, i.e uniform convergence on the elements of 𝔖. It is defined as the infimum, for S ∈ 𝔖, of the pullback of 𝒰 S β by S.restrict, the map of restriction to S. We will denote it 𝒱(α, β, 𝔖, uβ), where is the uniform structure on β.

Equations
@[protected]
def uniform_convergence_on.topological_space (α : Type u_1) (β : Type u_2) [uniform_space β] (𝔖 : set (set α)) :
topological_space (α → β)

Topology of 𝔖-convergence, i.e uniform convergence on the elements of 𝔖.

Equations
@[protected]
theorem uniform_convergence_on.topological_space_eq (α : Type u_1) (β : Type u_2) [uniform_space β] (𝔖 : set (set α)) :

The topology of 𝔖-convergence is the infimum, for S ∈ 𝔖, of topology induced by the map of restriction to S, where ↥S → β is endowed with the topology of uniform convergence.

@[protected]
theorem uniform_convergence_on.uniform_continuous_restrict (α : Type u_1) (β : Type u_2) [uniform_space β] (𝔖 : set (set α)) {s : set α} (h : s 𝔖) :

If S ∈ 𝔖, then the restriction to S is a uniformly continuous map from 𝒱(α, β, 𝔖, uβ) to 𝒰(↥S, β, uβ).

@[protected]
theorem uniform_convergence_on.mono {α : Type u_1} {γ : Type u_3} ⦃u₁ u₂ : uniform_space γ⦄ (hu : u₁ u₂) ⦃𝔖₁ 𝔖₂ : set (set α) (h𝔖 : 𝔖₂ 𝔖₁) :

Let u₁, u₂ be two uniform structures on γ and 𝔖₁ 𝔖₂ : set (set α). If u₁ ≤ u₂ and 𝔖₂ ⊆ 𝔖₁ then 𝒱(α, γ, 𝔖₁, u₁) ≤ 𝒱(α, γ, 𝔖₂, u₂).

theorem uniform_convergence_on.uniform_continuous_eval_of_mem {α : Type u_1} (β : Type u_2) [uniform_space β] (𝔖 : set (set α)) {s : set α} {x : α} (hxs : x s) (hs : s 𝔖) :

If x : α is in some S ∈ 𝔖, then evaluation at x is uniformly continuous for 𝒱(α, β, 𝔖, uβ).

@[protected]
theorem uniform_convergence_on.infi_eq {α : Type u_1} {γ : Type u_3} {ι : Type u_4} {𝔖 : set (set α)} {u : ι → uniform_space γ} :

If u is a family of uniform structures on γ, then 𝒱(α, γ, 𝔖, (⨅ i, u i)) = ⨅ i, 𝒱(α, γ, 𝔖, u i).

@[protected]
theorem uniform_convergence_on.inf_eq {α : Type u_1} {γ : Type u_3} {𝔖 : set (set α)} {u₁ u₂ : uniform_space γ} :

If u₁ and u₂ are two uniform structures on γ, then 𝒱(α, γ, 𝔖, u₁ ⊓ u₂) = 𝒱(α, γ, 𝔖, u₁) ⊓ 𝒱(α, γ, 𝔖, u₂).

@[protected]
theorem uniform_convergence_on.comap_eq {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} {f : γ → β} :

If u is a uniform structures on β and f : γ → β, then 𝒱(α, γ, 𝔖, comap f u) = comap (λ g, f ∘ g) 𝒱(α, γ, 𝔖, u₁).

@[protected]
theorem uniform_convergence_on.postcomp_uniform_continuous {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} [uniform_space γ] {f : γ → β} (hf : uniform_continuous f) :

Post-composition by a uniformly continuous function is uniformly continuous for the uniform structures of 𝔖-convergence.

More precisely, if f : (γ, uγ) → (β, uβ) is uniformly continuous, then (λ g, f ∘ g) : (α → γ, 𝒱(α, γ, 𝔖, uγ)) → (α → β, 𝒱(α, β, 𝔖, uβ)) is uniformly continuous.

@[protected]
theorem uniform_convergence_on.postcomp_uniform_inducing {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} [uniform_space γ] {f : γ → β} (hf : uniform_inducing f) :

Post-composition by a uniform inducing is a uniform inducing for the uniform structures of 𝔖-convergence.

More precisely, if f : (γ, uγ) → (β, uβ) is a uniform inducing, then (λ g, f ∘ g) : (α → γ, 𝒱(α, γ, 𝔖, uγ)) → (α → β, 𝒱(α, β, 𝔖, uβ)) is a uniform inducing.

@[protected]
def uniform_convergence_on.congr_right {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} [uniform_space γ] (e : γ ≃ᵤ β) :
(α → γ) ≃ᵤ (α → β)

Turn a uniform isomorphism (γ, uγ) ≃ᵤ (β, uβ) into a uniform isomorphism (α → γ, 𝒱(α, γ, 𝔖, uγ)) ≃ᵤ (α → β, 𝒱(α, β, 𝔖, uβ)) by post-composing.

Equations
@[protected]
theorem uniform_convergence_on.precomp_uniform_continuous {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} {𝔗 : set (set γ)} {f : γ → α} (hf : 𝔗 set.image f ⁻¹' 𝔖) :
uniform_continuous (λ (g : α → β), g f)

Let f : γ → α, 𝔖 : set (set α), 𝔗 : set (set γ), and assume that ∀ T ∈ 𝔗, f '' T ∈ 𝔖. Then, the function (λ g, g ∘ f) : (α → β, 𝒱(α, β, 𝔖, uβ)) → (γ → β, 𝒱(γ, β, 𝔗 uβ)) is uniformly continuous.

Note that one can easily see that assuming ∀ T ∈ 𝔗, ∃ S ∈ 𝔖, f '' T ⊆ S would work too, but we will get this for free when we prove that 𝒱(α, β, 𝔖, uβ) = 𝒱(α, β, 𝔖', uβ) for 𝔖' the noncovering bornology generated by 𝔖.

@[protected]
def uniform_convergence_on.congr_left {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} {𝔗 : set (set γ)} (e : γ α) (he : 𝔗 set.image e ⁻¹' 𝔖) (he' : 𝔖 set.preimage e ⁻¹' 𝔗) :
(γ → β) ≃ᵤ (α → β)

Turn a bijection e : γ ≃ α such that we have both ∀ T ∈ 𝔗, e '' T ∈ 𝔖 and ∀ S ∈ 𝔖, e ⁻¹' S ∈ 𝔗 into a uniform isomorphism (γ → β, 𝒰(γ, β, uβ)) ≃ᵤ (α → β, 𝒰(α, β, uβ)) by pre-composing.

Equations
theorem uniform_convergence_on.t2_space_of_covering {α : Type u_1} {β : Type u_2} [uniform_space β] {𝔖 : set (set α)} [t2_space β] (h : ⋃₀ 𝔖 = set.univ) :
t2_space (α → β)

If 𝔖 covers α, then the topology of 𝔖-convergence is T₂.

@[protected]
theorem uniform_convergence_on.le_Pi_of_covering {α : Type u_1} {β : Type u_2} [uniform_space β] {𝔖 : set (set α)} (h : ⋃₀ 𝔖 = set.univ) :

If 𝔖 covers α, then the uniform structure of 𝔖-convergence is finer than that of pointwise convergence.

@[protected]
theorem uniform_convergence_on.tendsto_iff_tendsto_uniformly_on {α : Type u_1} {β : Type u_2} {ι : Type u_4} [uniform_space β] {𝔖 : set (set α)} {F : ι → α → β} {f : α → β} {p : filter ι} :
filter.tendsto F p (nhds f) ∀ (s : set α), s 𝔖tendsto_uniformly_on F f p s

Convergence in the topology of 𝔖-convergence means uniform convergence on S (in the sense of tendsto_uniformly_on) for all S ∈ 𝔖.

@[protected]
def uniform_convergence_on.uniform_equiv_prod_arrow {α : Type u_1} {β : Type u_2} {γ : Type u_3} [uniform_space β] {𝔖 : set (set α)} [uniform_space γ] :
(α → β × γ) ≃ᵤ (α → β) × (α → γ)

The natural bijection between α → β × γ and (α → β) × (α → γ), upgraded to a uniform isomorphism between (α → β × γ, 𝒱(α, β × γ, 𝔖, uβ × uγ)) and ((α → β) × (α → γ), 𝒱(α, β, 𝔖, uβ) × 𝒰(α, γ, 𝔖, uγ)).

Equations
@[protected]
def uniform_convergence_on.uniform_equiv_Pi_comm {α : Type u_1} {ι : Type u_4} (𝔖 : set (set α)) (δ : ι → Type u_5) [Π (i : ι), uniform_space (δ i)] :
(α → Π (i : ι), δ i) ≃ᵤ Π (i : ι), α → δ i

The natural bijection between α → Π i, δ i and Π i, α → δ i, upgraded to a uniform isomorphism between (α → (Π i, δ i), 𝒱(α, (Π i, δ i), 𝔖, (Π i, uδ i))) and ((Π i, α → δ i), (Π i, 𝒱(α, δ i, 𝔖, uδ i))).

Equations