# Uniform structure on topological groups #

This file defines uniform groups and its additive counterpart. These typeclasses should be preferred over using [TopologicalSpace α] [TopologicalGroup α] since every topological group naturally induces a uniform structure.

## Main declarations #

• UniformGroup and UniformAddGroup: Multiplicative and additive uniform groups, that i.e., groups with uniformly continuous (*) and (⁻¹) / (+) and (-).

## Main results #

• TopologicalAddGroup.toUniformSpace and comm_topologicalAddGroup_is_uniform can be used to construct a canonical uniformity for a topological add group.

• extension of ℤ-bilinear maps to complete groups (useful for ring completions)

• QuotientGroup.completeSpace and QuotientAddGroup.completeSpace guarantee that quotients of first countable topological groups by normal subgroups are themselves complete. In particular, the quotient of a Banach space by a subspace is complete.

class UniformGroup (α : Type u_3) [] [] :

A uniform group is a group in which multiplication and inversion are uniformly continuous.

Instances
theorem UniformGroup.uniformContinuous_div {α : Type u_3} [] [] [self : ] :
UniformContinuous fun (p : α × α) => p.1 / p.2
class UniformAddGroup (α : Type u_3) [] [] :

Instances
theorem UniformAddGroup.uniformContinuous_sub {α : Type u_3} [] [] [self : ] :
UniformContinuous fun (p : α × α) => p.1 - p.2
theorem UniformAddGroup.mk' {α : Type u_3} [] [] (h₁ : UniformContinuous fun (p : α × α) => p.1 + p.2) (h₂ : UniformContinuous fun (p : α) => -p) :
theorem UniformGroup.mk' {α : Type u_3} [] [] (h₁ : UniformContinuous fun (p : α × α) => p.1 * p.2) (h₂ : UniformContinuous fun (p : α) => p⁻¹) :
theorem uniformContinuous_sub {α : Type u_1} [] [] [] :
UniformContinuous fun (p : α × α) => p.1 - p.2
theorem uniformContinuous_div {α : Type u_1} [] [] [] :
UniformContinuous fun (p : α × α) => p.1 / p.2
theorem UniformContinuous.sub {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} {g : βα} (hf : ) (hg : ) :
UniformContinuous fun (x : β) => f x - g x
theorem UniformContinuous.div {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} {g : βα} (hf : ) (hg : ) :
UniformContinuous fun (x : β) => f x / g x
theorem UniformContinuous.neg {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} (hf : ) :
UniformContinuous fun (x : β) => -f x
theorem UniformContinuous.inv {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} (hf : ) :
UniformContinuous fun (x : β) => (f x)⁻¹
theorem uniformContinuous_neg {α : Type u_1} [] [] [] :
UniformContinuous fun (x : α) => -x
theorem uniformContinuous_inv {α : Type u_1} [] [] [] :
UniformContinuous fun (x : α) => x⁻¹
theorem UniformContinuous.add {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} {g : βα} (hf : ) (hg : ) :
UniformContinuous fun (x : β) => f x + g x
theorem UniformContinuous.mul {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} {g : βα} (hf : ) (hg : ) :
UniformContinuous fun (x : β) => f x * g x
theorem uniformContinuous_add {α : Type u_1} [] [] [] :
UniformContinuous fun (p : α × α) => p.1 + p.2
theorem uniformContinuous_mul {α : Type u_1} [] [] [] :
UniformContinuous fun (p : α × α) => p.1 * p.2
theorem UniformContinuous.const_nsmul {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} (hf : ) (n : ) :
UniformContinuous fun (x : β) => n f x
@[inline]
abbrev UniformContinuous.const_nsmul.match_1 (motive : ) :
∀ (x : ), (Unitmotive 0)(∀ (n : ), motive n.succ)motive x
Equations
• =
Instances For
theorem UniformContinuous.pow_const {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} (hf : ) (n : ) :
UniformContinuous fun (x : β) => f x ^ n
theorem uniformContinuous_const_nsmul {α : Type u_1} [] [] [] (n : ) :
UniformContinuous fun (x : α) => n x
theorem uniformContinuous_pow_const {α : Type u_1} [] [] [] (n : ) :
UniformContinuous fun (x : α) => x ^ n
@[inline]
abbrev UniformContinuous.const_zsmul.match_1 (motive : ) :
∀ (x : ), (∀ (n : ), motive (Int.ofNat n))(∀ (n : ), motive (Int.negSucc n))motive x
Equations
• =
Instances For
theorem UniformContinuous.const_zsmul {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} (hf : ) (n : ) :
UniformContinuous fun (x : β) => n f x
theorem UniformContinuous.zpow_const {α : Type u_1} {β : Type u_2} [] [] [] [] {f : βα} (hf : ) (n : ) :
UniformContinuous fun (x : β) => f x ^ n
theorem uniformContinuous_const_zsmul {α : Type u_1} [] [] [] (n : ) :
UniformContinuous fun (x : α) => n x
theorem uniformContinuous_zpow_const {α : Type u_1} [] [] [] (n : ) :
UniformContinuous fun (x : α) => x ^ n
@[instance 10]
Equations
• =
@[instance 10]
instance UniformGroup.to_topologicalGroup {α : Type u_1} [] [] [] :
Equations
• =
instance instUniformAddGroupSum {α : Type u_1} {β : Type u_2} [] [] [] [] [] [] :
Equations
• =
instance instUniformGroupProd {α : Type u_1} {β : Type u_2} [] [] [] [] [] [] :
Equations
• =
instance Pi.instUniformAddGroup {ι : Type u_3} {G : ιType u_4} [(i : ι) → UniformSpace (G i)] [(i : ι) → AddGroup (G i)] [∀ (i : ι), UniformAddGroup (G i)] :
UniformAddGroup ((i : ι) → G i)
Equations
• =
instance Pi.instUniformGroup {ι : Type u_3} {G : ιType u_4} [(i : ι) → UniformSpace (G i)] [(i : ι) → Group (G i)] [∀ (i : ι), UniformGroup (G i)] :
UniformGroup ((i : ι) → G i)
Equations
• =
theorem uniformity_translate_add {α : Type u_1} [] [] [] (a : α) :
Filter.map (fun (x : α × α) => (x.1 + a, x.2 + a)) (uniformity α) =
theorem uniformity_translate_mul {α : Type u_1} [] [] [] (a : α) :
Filter.map (fun (x : α × α) => (x.1 * a, x.2 * a)) (uniformity α) =
theorem uniformEmbedding_translate_add {α : Type u_1} [] [] [] (a : α) :
UniformEmbedding fun (x : α) => x + a
theorem uniformEmbedding_translate_mul {α : Type u_1} [] [] [] (a : α) :
UniformEmbedding fun (x : α) => x * a
Equations
• =
instance MulOpposite.instUniformGroup {α : Type u_1} [] [] [] :
Equations
• =
theorem uniformAddGroup_sInf {β : Type u_2} [] {us : Set (UniformSpace β)} (h : uus, ) :
theorem uniformGroup_sInf {β : Type u_2} [] {us : Set (UniformSpace β)} (h : uus, ) :
theorem uniformAddGroup_iInf {β : Type u_2} [] {ι : Sort u_3} {us' : ι} (h' : ∀ (i : ι), ) :
theorem uniformGroup_iInf {β : Type u_2} [] {ι : Sort u_3} {us' : ι} (h' : ∀ (i : ι), ) :
theorem uniformAddGroup_inf {β : Type u_2} [] {u₁ : } {u₂ : } (h₁ : ) (h₂ : ) :
theorem uniformGroup_inf {β : Type u_2} [] {u₁ : } {u₂ : } (h₁ : ) (h₂ : ) :
theorem UniformInducing.uniformAddGroup {β : Type u_2} [] {γ : Type u_3} [] [] [] [] {F : Type u_4} [FunLike F β γ] [] (f : F) (hf : ) :
theorem UniformInducing.uniformGroup {β : Type u_2} [] {γ : Type u_3} [] [] [] [] {F : Type u_4} [FunLike F β γ] [] (f : F) (hf : ) :
theorem UniformAddGroup.comap {β : Type u_2} [] {γ : Type u_3} [] {u : } [] {F : Type u_4} [FunLike F β γ] [] (f : F) :
theorem UniformGroup.comap {β : Type u_2} [] {γ : Type u_3} [] {u : } [] {F : Type u_4} [FunLike F β γ] [] (f : F) :
instance AddSubgroup.uniformAddGroup {α : Type u_1} [] [] [] (S : ) :
Equations
• =
instance Subgroup.uniformGroup {α : Type u_1} [] [] [] (S : ) :
Equations
• =
theorem uniformity_eq_comap_nhds_zero (α : Type u_1) [] [] [] :
= Filter.comap (fun (x : α × α) => x.2 - x.1) (nhds 0)
theorem uniformity_eq_comap_nhds_one (α : Type u_1) [] [] [] :
= Filter.comap (fun (x : α × α) => x.2 / x.1) (nhds 1)
theorem uniformity_eq_comap_nhds_zero_swapped (α : Type u_1) [] [] [] :
= Filter.comap (fun (x : α × α) => x.1 - x.2) (nhds 0)
theorem uniformity_eq_comap_nhds_one_swapped (α : Type u_1) [] [] [] :
= Filter.comap (fun (x : α × α) => x.1 / x.2) (nhds 1)
theorem UniformAddGroup.ext {G : Type u_3} [] {u : } {v : } (hu : ) (hv : ) (h : nhds 0 = nhds 0) :
u = v
theorem UniformGroup.ext {G : Type u_3} [] {u : } {v : } (hu : ) (hv : ) (h : nhds 1 = nhds 1) :
u = v
theorem UniformAddGroup.ext_iff {G : Type u_3} [] {u : } {v : } (hu : ) (hv : ) :
u = v nhds 0 = nhds 0
theorem UniformGroup.ext_iff {G : Type u_3} [] {u : } {v : } (hu : ) (hv : ) :
u = v nhds 1 = nhds 1
theorem UniformAddGroup.uniformity_countably_generated {α : Type u_1} [] [] [] [(nhds 0).IsCountablyGenerated] :
(uniformity α).IsCountablyGenerated
theorem UniformGroup.uniformity_countably_generated {α : Type u_1} [] [] [] [(nhds 1).IsCountablyGenerated] :
(uniformity α).IsCountablyGenerated
theorem uniformity_eq_comap_neg_add_nhds_zero {α : Type u_1} [] [] [] :
= Filter.comap (fun (x : α × α) => -x.1 + x.2) (nhds 0)
theorem uniformity_eq_comap_inv_mul_nhds_one {α : Type u_1} [] [] [] :
= Filter.comap (fun (x : α × α) => x.1⁻¹ * x.2) (nhds 1)
theorem uniformity_eq_comap_neg_add_nhds_zero_swapped {α : Type u_1} [] [] [] :
= Filter.comap (fun (x : α × α) => -x.2 + x.1) (nhds 0)
theorem uniformity_eq_comap_inv_mul_nhds_one_swapped {α : Type u_1} [] [] [] :
= Filter.comap (fun (x : α × α) => x.2⁻¹ * x.1) (nhds 1)
theorem Filter.HasBasis.uniformity_of_nhds_zero {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 0).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | x.2 - x.1 U i}
theorem Filter.HasBasis.uniformity_of_nhds_one {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 1).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | x.2 / x.1 U i}
theorem Filter.HasBasis.uniformity_of_nhds_zero_neg_add {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 0).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | -x.1 + x.2 U i}
theorem Filter.HasBasis.uniformity_of_nhds_one_inv_mul {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 1).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | x.1⁻¹ * x.2 U i}
theorem Filter.HasBasis.uniformity_of_nhds_zero_swapped {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 0).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | x.1 - x.2 U i}
theorem Filter.HasBasis.uniformity_of_nhds_one_swapped {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 1).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | x.1 / x.2 U i}
theorem Filter.HasBasis.uniformity_of_nhds_zero_neg_add_swapped {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 0).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | -x.2 + x.1 U i}
theorem Filter.HasBasis.uniformity_of_nhds_one_inv_mul_swapped {α : Type u_1} [] [] [] {ι : Sort u_3} {p : ιProp} {U : ιSet α} (h : (nhds 1).HasBasis p U) :
(uniformity α).HasBasis p fun (i : ι) => {x : α × α | x.2⁻¹ * x.1 U i}
theorem uniformContinuous_of_tendsto_zero {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [FunLike hom α β] [AddMonoidHomClass hom α β] {f : hom} (h : Filter.Tendsto (⇑f) (nhds 0) (nhds 0)) :
theorem uniformContinuous_of_tendsto_one {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [FunLike hom α β] [MonoidHomClass hom α β] {f : hom} (h : Filter.Tendsto (⇑f) (nhds 1) (nhds 1)) :
theorem uniformContinuous_of_continuousAt_zero {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [FunLike hom α β] [AddMonoidHomClass hom α β] (f : hom) (hf : ContinuousAt (⇑f) 0) :

An additive group homomorphism (a bundled morphism of a type that implements AddMonoidHomClass) between two uniform additive groups is uniformly continuous provided that it is continuous at zero. See also continuous_of_continuousAt_zero.

theorem uniformContinuous_of_continuousAt_one {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [FunLike hom α β] [MonoidHomClass hom α β] (f : hom) (hf : ContinuousAt (⇑f) 1) :

A group homomorphism (a bundled morphism of a type that implements MonoidHomClass) between two uniform groups is uniformly continuous provided that it is continuous at one. See also continuous_of_continuousAt_one.

theorem AddMonoidHom.uniformContinuous_of_continuousAt_zero {α : Type u_1} {β : Type u_2} [] [] [] [] [] [] (f : α →+ β) (hf : ContinuousAt (⇑f) 0) :
theorem MonoidHom.uniformContinuous_of_continuousAt_one {α : Type u_1} {β : Type u_2} [] [] [] [] [] [] (f : α →* β) (hf : ContinuousAt (⇑f) 1) :
theorem UniformAddGroup.uniformContinuous_iff_open_ker {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [] [FunLike hom α β] [AddMonoidHomClass hom α β] {f : hom} :
IsOpen (↑f).ker

A homomorphism from a uniform additive group to a discrete uniform additive group is continuous if and only if its kernel is open.

theorem UniformGroup.uniformContinuous_iff_open_ker {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [] [FunLike hom α β] [MonoidHomClass hom α β] {f : hom} :
IsOpen (↑f).ker

A homomorphism from a uniform group to a discrete uniform group is continuous if and only if its kernel is open.

theorem uniformContinuous_addMonoidHom_of_continuous {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [FunLike hom α β] [AddMonoidHomClass hom α β] {f : hom} (h : ) :
theorem uniformContinuous_monoidHom_of_continuous {α : Type u_1} {β : Type u_2} [] [] [] {hom : Type u_3} [] [] [] [FunLike hom α β] [MonoidHomClass hom α β] {f : hom} (h : ) :
theorem CauchySeq.add {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} {v : ια} (hu : ) (hv : ) :
CauchySeq (u + v)
theorem CauchySeq.mul {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} {v : ια} (hu : ) (hv : ) :
CauchySeq (u * v)
theorem CauchySeq.add_const {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} {x : α} (hu : ) :
CauchySeq fun (n : ι) => u n + x
theorem CauchySeq.mul_const {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} {x : α} (hu : ) :
CauchySeq fun (n : ι) => u n * x
theorem CauchySeq.const_add {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} {x : α} (hu : ) :
CauchySeq fun (n : ι) => x + u n
theorem CauchySeq.const_mul {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} {x : α} (hu : ) :
CauchySeq fun (n : ι) => x * u n
theorem CauchySeq.neg {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} (h : ) :
theorem CauchySeq.inv {α : Type u_1} [] [] [] {ι : Type u_3} [] {u : ια} (h : ) :
theorem totallyBounded_iff_subset_finite_iUnion_nhds_zero {α : Type u_1} [] [] [] {s : Set α} :
Unhds 0, ∃ (t : Set α), t.Finite s yt, y +ᵥ U
theorem totallyBounded_iff_subset_finite_iUnion_nhds_one {α : Type u_1} [] [] [] {s : Set α} :
Unhds 1, ∃ (t : Set α), t.Finite s yt, y U
theorem TendstoUniformlyOnFilter.add {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {l' : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformlyOnFilter f' g' l l') :
TendstoUniformlyOnFilter (f + f') (g + g') l l'
theorem TendstoUniformlyOnFilter.mul {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {l' : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformlyOnFilter f' g' l l') :
TendstoUniformlyOnFilter (f * f') (g * g') l l'
theorem TendstoUniformlyOnFilter.sub {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {l' : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformlyOnFilter f' g' l l') :
TendstoUniformlyOnFilter (f - f') (g - g') l l'
theorem TendstoUniformlyOnFilter.div {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {l' : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformlyOnFilter f' g' l l') :
TendstoUniformlyOnFilter (f / f') (g / g') l l'
theorem TendstoUniformlyOn.add {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} {s : Set β} (hf : ) (hf' : TendstoUniformlyOn f' g' l s) :
TendstoUniformlyOn (f + f') (g + g') l s
theorem TendstoUniformlyOn.mul {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} {s : Set β} (hf : ) (hf' : TendstoUniformlyOn f' g' l s) :
TendstoUniformlyOn (f * f') (g * g') l s
theorem TendstoUniformlyOn.sub {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} {s : Set β} (hf : ) (hf' : TendstoUniformlyOn f' g' l s) :
TendstoUniformlyOn (f - f') (g - g') l s
theorem TendstoUniformlyOn.div {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} {s : Set β} (hf : ) (hf' : TendstoUniformlyOn f' g' l s) :
TendstoUniformlyOn (f / f') (g / g') l s
theorem TendstoUniformly.add {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformly f' g' l) :
TendstoUniformly (f + f') (g + g') l
theorem TendstoUniformly.mul {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformly f' g' l) :
TendstoUniformly (f * f') (g * g') l
theorem TendstoUniformly.sub {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformly f' g' l) :
TendstoUniformly (f - f') (g - g') l
theorem TendstoUniformly.div {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {g : βα} {g' : βα} (hf : ) (hf' : TendstoUniformly f' g' l) :
TendstoUniformly (f / f') (g / g') l
theorem UniformCauchySeqOn.add {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {s : Set β} (hf : ) (hf' : ) :
theorem UniformCauchySeqOn.mul {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {s : Set β} (hf : ) (hf' : ) :
theorem UniformCauchySeqOn.sub {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {s : Set β} (hf : ) (hf' : ) :
theorem UniformCauchySeqOn.div {α : Type u_1} {β : Type u_2} [] [] [] {ι : Type u_3} {l : } {f : ιβα} {f' : ιβα} {s : Set β} (hf : ) (hf' : ) :
theorem TopologicalAddGroup.toUniformSpace.proof_3 (G : Type u_1) [] [] :
∀ (x : G), nhds x = Filter.comap (Prod.mk x) (Filter.comap (fun (p : G × G) => p.2 - p.1) (nhds 0))
theorem TopologicalAddGroup.toUniformSpace.proof_1 (G : Type u_1) [] [] :
Filter.Tendsto Prod.swap (Filter.comap (fun (p : G × G) => p.2 - p.1) (nhds 0)) (Filter.comap (fun (p : G × G) => p.2 - p.1) (nhds 0))

The right uniformity on a topological additive group (as opposed to the left uniformity).

Warning: in general the right and left uniformities do not coincide and so one does not obtain a UniformAddGroup structure. Two important special cases where they do coincide are for commutative additive groups (see comm_topologicalAddGroup_is_uniform) and for compact additive groups (see topologicalAddGroup_is_uniform_of_compactSpace).

Equations
Instances For
theorem TopologicalAddGroup.toUniformSpace.proof_2 (G : Type u_1) [] [] :
((Filter.comap (fun (p : G × G) => p.2 - p.1) (nhds 0)).lift' fun (s : Set (G × G)) => compRel s s) Filter.comap (fun (p : G × G) => p.2 - p.1) (nhds 0)
def TopologicalGroup.toUniformSpace (G : Type u_1) [] [] [] :

The right uniformity on a topological group (as opposed to the left uniformity).

Warning: in general the right and left uniformities do not coincide and so one does not obtain a UniformGroup structure. Two important special cases where they do coincide are for commutative groups (see comm_topologicalGroup_is_uniform) and for compact groups (see topologicalGroup_is_uniform_of_compactSpace).

Equations
Instances For
theorem uniformity_eq_comap_nhds_zero' (G : Type u_1) [] [] :
= Filter.comap (fun (p : G × G) => p.2 - p.1) (nhds 0)
theorem uniformity_eq_comap_nhds_one' (G : Type u_1) [] [] [] :
= Filter.comap (fun (p : G × G) => p.2 / p.1) (nhds 1)
instance AddSubgroup.isClosed_of_discrete {G : Type u_1} [] [] [] {H : } [] :
Equations
• =
instance Subgroup.isClosed_of_discrete {G : Type u_1} [] [] [] [] {H : } [] :
Equations
• =
theorem AddSubgroup.tendsto_coe_cofinite_of_discrete {G : Type u_1} [] [] [] (H : ) [] :
Filter.Tendsto Subtype.val Filter.cofinite
theorem Subgroup.tendsto_coe_cofinite_of_discrete {G : Type u_1} [] [] [] [] (H : ) [] :
Filter.Tendsto Subtype.val Filter.cofinite
theorem AddMonoidHom.tendsto_coe_cofinite_of_discrete {G : Type u_1} [] [] [] {H : Type u_2} [] {f : H →+ G} (hf : ) (hf' : DiscreteTopology f.range) :
Filter.Tendsto (⇑f) Filter.cofinite
theorem MonoidHom.tendsto_coe_cofinite_of_discrete {G : Type u_1} [] [] [] [] {H : Type u_2} [] {f : H →* G} (hf : ) (hf' : DiscreteTopology f.range) :
Filter.Tendsto (⇑f) Filter.cofinite
@[inline]
abbrev TopologicalAddGroup.tendstoUniformly_iff.match_1 {G : Type u_1} [] [] :
∀ (x : Set (G × G)) (motive : x Prop) (x_1 : x ), (∀ (u : Set G) (hu : u nhds 0) (hv : (fun (p : G × G) => p.2 - p.1) ⁻¹' u x), motive )motive x_1
Equations
• =
Instances For
theorem TopologicalAddGroup.tendstoUniformly_iff {G : Type u_1} [] [] {ι : Type u_2} {α : Type u_3} (F : ιαG) (f : αG) (p : ) :
unhds 0, ∀ᶠ (i : ι) in p, ∀ (a : α), F i a - f a u
theorem TopologicalGroup.tendstoUniformly_iff {G : Type u_1} [] [] [] {ι : Type u_2} {α : Type u_3} (F : ιαG) (f : αG) (p : ) :
unhds 1, ∀ᶠ (i : ι) in p, ∀ (a : α), F i a / f a u
theorem TopologicalAddGroup.tendstoUniformlyOn_iff {G : Type u_1} [] [] {ι : Type u_2} {α : Type u_3} (F : ιαG) (f : αG) (p : ) (s : Set α) :
unhds 0, ∀ᶠ (i : ι) in p, as, F i a - f a u
theorem TopologicalGroup.tendstoUniformlyOn_iff {G : Type u_1} [] [] [] {ι : Type u_2} {α : Type u_3} (F : ιαG) (f : αG) (p : ) (s : Set α) :
unhds 1, ∀ᶠ (i : ι) in p, as, F i a / f a u
@[inline]
abbrev TopologicalAddGroup.tendstoLocallyUniformly_iff.match_1 {G : Type u_3} [] {ι : Type u_2} {α : Type u_1} [] (F : ιαG) (f : αG) (p : ) (x : α) (u : Set G) :
∀ (x_1 : Set α) (motive : (x_1 nhds x ∀ᶠ (i : ι) in p, ax_1, F i a - f a u)Prop) (x_2 : x_1 nhds x ∀ᶠ (i : ι) in p, ax_1, F i a - f a u), (∀ (h : x_1 nhds x) (hp : ∀ᶠ (i : ι) in p, ax_1, F i a - f a u), motive )motive x_2
Equations
• =
Instances For
theorem TopologicalAddGroup.tendstoLocallyUniformly_iff {G : Type u_1} [] [] {ι : Type u_2} {α : Type u_3} [] (F : ιαG) (f : αG) (p : ) :
unhds 0, ∀ (x : α), tnhds x, ∀ᶠ (i : ι) in p, at, F i a - f a u
theorem TopologicalGroup.tendstoLocallyUniformly_iff {G : Type u_1} [] [] [] {ι : Type u_2} {α : Type u_3} [] (F : ιαG) (f : αG) (p : ) :
unhds 1, ∀ (x : α), tnhds x, ∀ᶠ (i : ι) in p, at, F i a / f a u
@[inline]
abbrev TopologicalAddGroup.tendstoLocallyUniformlyOn_iff.match_1 {G : Type u_3} [] {ι : Type u_2} {α : Type u_1} [] (F : ιαG) (f : αG) (p : ) (s : Set α) (x : α) (u : Set G) :
∀ (x_1 : Set α) (motive : (x_1 ∀ᶠ (i : ι) in p, ax_1, F i a - f a u)Prop) (x_2 : x_1 ∀ᶠ (i : ι) in p, ax_1, F i a - f a u), (∀ (h : x_1 ) (hp : ∀ᶠ (i : ι) in p, ax_1, F i a - f a u), motive )motive x_2
Equations
• =
Instances For
theorem TopologicalAddGroup.tendstoLocallyUniformlyOn_iff {G : Type u_1} [] [] {ι : Type u_2} {α : Type u_3} [] (F : ιαG) (f : αG) (p : ) (s : Set α) :
unhds 0, xs, t, ∀ᶠ (i : ι) in p, at, F i a - f a u
theorem TopologicalGroup.tendstoLocallyUniformlyOn_iff {G : Type u_1} [] [] [] {ι : Type u_2} {α : Type u_3} [] (F : ιαG) (f : αG) (p : ) (s : Set α) :
unhds 1, xs, t, ∀ᶠ (i : ι) in p, at, F i a / f a u
theorem comm_topologicalGroup_is_uniform {G : Type u_1} [] [] [] :
theorem UniformAddGroup.toUniformSpace_eq {G : Type u_2} [u : ] [] [] :
theorem UniformGroup.toUniformSpace_eq {G : Type u_2} [u : ] [] [] :
theorem tendsto_sub_comap_self {α : Type u_1} {β : Type u_2} {hom : Type u_3} [] [] [] [] [FunLike hom β α] [AddMonoidHomClass hom β α] {e : hom} (de : ) (x₀ : α) :
Filter.Tendsto (fun (t : β × β) => t.2 - t.1) (Filter.comap (fun (p : β × β) => (e p.1, e p.2)) (nhds (x₀, x₀))) (nhds 0)
theorem tendsto_div_comap_self {α : Type u_1} {β : Type u_2} {hom : Type u_3} [] [] [] [] [] [FunLike hom β α] [MonoidHomClass hom β α] {e : hom} (de : ) (x₀ : α) :
Filter.Tendsto (fun (t : β × β) => t.2 / t.1) (Filter.comap (fun (p : β × β) => (e p.1, e p.2)) (nhds (x₀, x₀))) (nhds 1)
theorem DenseInducing.extend_Z_bilin {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {G : Type u_5} [] [] [] [] [] [] [] [] [] [] {e : β →+ α} (de : ) {f : δ →+ γ} (df : ) {φ : β →+ δ →+ G} (hφ : Continuous fun (p : β × δ) => (φ p.1) p.2) [] [] [] :
Continuous (.extend fun (p : β × δ) => (φ p.1) p.2)

Bourbaki GT III.6.5 Theorem I: ℤ-bilinear continuous maps from dense images into a complete Hausdorff group extend by continuity. Note: Bourbaki assumes that α and β are also complete Hausdorff, but this is not necessary.

instance QuotientAddGroup.completeSpace' (G : Type u) [] [] (N : ) [N.Normal] [] :

The quotient G ⧸ N of a complete first countable topological additive group G by a normal additive subgroup is itself complete. Consequently, quotients of Banach spaces by subspaces are complete. N. Bourbaki, General Topology, IX.3.1 Proposition 4

Because an additive topological group is not equipped with a UniformSpace instance by default, we must explicitly provide it in order to consider completeness. See QuotientAddGroup.completeSpace for a version in which G is already equipped with a uniform structure.

Equations
• =
instance QuotientGroup.completeSpace' (G : Type u) [] [] [] (N : ) [N.Normal] [] :

The quotient G ⧸ N of a complete first countable topological group G by a normal subgroup is itself complete. N. Bourbaki, General Topology, IX.3.1 Proposition 4

Because a topological group is not equipped with a UniformSpace instance by default, we must explicitly provide it in order to consider completeness. See QuotientGroup.completeSpace for a version in which G is already equipped with a uniform structure.

Equations
• =
instance QuotientAddGroup.completeSpace (G : Type u) [] [us : ] [] (N : ) [N.Normal] [hG : ] :

The quotient G ⧸ N of a complete first countable uniform additive group G by a normal additive subgroup is itself complete. Consequently, quotients of Banach spaces by subspaces are complete. In contrast to QuotientAddGroup.completeSpace', in this version G is already equipped with a uniform structure. N. Bourbaki, General Topology, IX.3.1 Proposition 4

Even though G is equipped with a uniform structure, the quotient G ⧸ N does not inherit a uniform structure, so it is still provided manually via TopologicalAddGroup.toUniformSpace. In the most common use case ─ quotients of normed additive commutative groups by subgroups ─ significant care was taken so that the uniform structure inherent in that setting coincides (definitionally) with the uniform structure provided here.

Equations
• =
instance QuotientGroup.completeSpace (G : Type u) [] [us : ] [] (N : ) [N.Normal] [hG : ] :

The quotient G ⧸ N of a complete first countable uniform group G by a normal subgroup is itself complete. In contrast to QuotientGroup.completeSpace', in this version G is already equipped with a uniform structure. N. Bourbaki, General Topology, IX.3.1 Proposition 4

Even though G is equipped with a uniform structure, the quotient G ⧸ N does not inherit a uniform structure, so it is still provided manually via TopologicalGroup.toUniformSpace. In the most common use cases, this coincides (definitionally) with the uniform structure on the quotient obtained via other means.

Equations
• =