# Documentation

Mathlib.Analysis.Normed.Group.Quotient

# Quotients of seminormed groups #

For any SeminormedAddCommGroup M and any S : AddSubgroup M, we provide a SeminormedAddCommGroup, the group quotient M ⧸ S. If S is closed, we provide NormedAddCommGroup (M ⧸ S) (regardless of whether M itself is separated). The two main properties of these structures are the underlying topology is the quotient topology and the projection is a normed group homomorphism which is norm non-increasing (better, it has operator norm exactly one unless S is dense in M). The corresponding universal property is that every normed group hom defined on M which vanishes on S descends to a normed group hom defined on M ⧸ S.

This file also introduces a predicate IsQuotient characterizing normed group homs that are isomorphic to the canonical projection onto a normed group quotient.

In addition, this file also provides normed structures for quotients of modules by submodules, and of (commutative) rings by ideals. The SeminormedAddCommGroup and NormedAddCommGroup instances described above are transferred directly, but we also define instances of NormedSpace, SeminormedCommRing, NormedCommRing and NormedAlgebra under appropriate type class assumptions on the original space. Moreover, while QuotientAddGroup.completeSpace works out-of-the-box for quotients of NormedAddCommGroups by AddSubgroups, we need to transfer this instance in Submodule.Quotient.completeSpace so that it applies to these other quotients.

## Main definitions #

We use M and N to denote seminormed groups and S : AddSubgroup M. All the following definitions are in the AddSubgroup namespace. Hence we can access AddSubgroup.normedMk S as S.normedMk.

• seminormedAddCommGroupQuotient : The seminormed group structure on the quotient by an additive subgroup. This is an instance so there is no need to explicitly use it.

• normedAddCommGroupQuotient : The normed group structure on the quotient by a closed additive subgroup. This is an instance so there is no need to explicitly use it.

• normedMk S : the normed group hom from M to M ⧸ S.

• lift S f hf: implements the universal property of M ⧸ S. Here (f : NormedAddGroupHom M N), (hf : ∀ s ∈ S, f s = 0) and lift S f hf : NormedAddGroupHom (M ⧸ S) N.

• IsQuotient: given f : NormedAddGroupHom M N, IsQuotient f means N is isomorphic to a quotient of M by a subgroup, with projection f. Technically it asserts f is surjective and the norm of f x is the infimum of the norms of x + m for m in f.ker.

## Main results #

• norm_normedMk : the operator norm of the projection is 1 if the subspace is not dense.

• IsQuotient.norm_lift: Provided f : normed_hom M N satisfies IsQuotient f, for every n : N and positive ε, there exists m such that f m = n ∧ ‖m‖ < ‖n‖ + ε.

## Implementation details #

For any SeminormedAddCommGroup M and any S : AddSubgroup M we define a norm on M ⧸ S by ‖x‖ = sInf (norm '' {m | mk' S m = x}). This formula is really an implementation detail, it shouldn't be needed outside of this file setting up the theory.

Since M ⧸ S is automatically a topological space (as any quotient of a topological space), one needs to be careful while defining the SeminormedAddCommGroup instance to avoid having two different topologies on this quotient. This is not purely a technological issue. Mathematically there is something to prove. The main point is proved in the auxiliary lemma quotient_nhd_basis that has no use beyond this verification and states that zero in the quotient admits as basis of neighborhoods in the quotient topology the sets {x | ‖x‖ < ε} for positive ε.

Once this mathematical point is settled, we have two topologies that are propositionally equal. This is not good enough for the type class system. As usual we ensure definitional equality using forgetful inheritance, see Note [forgetful inheritance]. A (semi)-normed group structure includes a uniform space structure which includes a topological space structure, together with propositional fields asserting compatibility conditions. The usual way to define a SeminormedAddCommGroup is to let Lean build a uniform space structure using the provided norm, and then trivially build a proof that the norm and uniform structure are compatible. Here the uniform structure is provided using TopologicalAddGroup.toUniformSpace which uses the topological structure and the group structure to build the uniform structure. This uniform structure induces the correct topological structure by construction, but the fact that it is compatible with the norm is not obvious; this is where the mathematical content explained in the previous paragraph kicks in.

noncomputable instance normOnQuotient {M : Type u_1} (S : ) :
Norm (M S)

The definition of the norm on the quotient by an additive subgroup.

theorem AddSubgroup.quotient_norm_eq {M : Type u_1} {S : } (x : M S) :
x = sInf (norm '' {m | m = x})
theorem QuotientAddGroup.norm_eq_infDist {M : Type u_1} {S : } (x : M S) :
x = Metric.infDist 0 {m | m = x}
theorem QuotientAddGroup.norm_mk {M : Type u_1} {S : } (x : M) :
x =

An alternative definition of the norm on the quotient group: the norm of ((x : M) : M ⧸ S) is equal to the distance from x to S.

theorem image_norm_nonempty {M : Type u_1} {S : } (x : M S) :
Set.Nonempty (norm '' {m | ↑() m = x})
theorem bddBelow_image_norm {M : Type u_1} (s : Set M) :
BddBelow (norm '' s)
theorem isGLB_quotient_norm {M : Type u_1} {S : } (x : M S) :
IsGLB (norm '' {m | ↑() m = x}) x
theorem quotient_norm_neg {M : Type u_1} {S : } (x : M S) :

The norm on the quotient satisfies ‖-x‖ = ‖x‖.

theorem quotient_norm_sub_rev {M : Type u_1} {S : } (x : M S) (y : M S) :
x - y = y - x
theorem quotient_norm_mk_le {M : Type u_1} (S : ) (m : M) :
↑() m m

The norm of the projection is smaller or equal to the norm of the original element.

theorem quotient_norm_mk_le' {M : Type u_1} (S : ) (m : M) :

The norm of the projection is smaller or equal to the norm of the original element.

theorem quotient_norm_mk_eq {M : Type u_1} (S : ) (m : M) :
↑() m = sInf ((fun x => m + x) '' S)

The norm of the image under the natural morphism to the quotient.

theorem quotient_norm_nonneg {M : Type u_1} (S : ) (x : M S) :

The quotient norm is nonnegative.

theorem norm_mk_nonneg {M : Type u_1} (S : ) (m : M) :
0 ↑() m

The quotient norm is nonnegative.

theorem quotient_norm_eq_zero_iff {M : Type u_1} (S : ) (m : M) :
↑() m = 0 m closure S

The norm of the image of m : M in the quotient by S is zero if and only if m belongs to the closure of S.

theorem QuotientAddGroup.norm_lt_iff {M : Type u_1} {S : } {x : M S} {r : } :
x < r m, m = x m < r
theorem norm_mk_lt {M : Type u_1} {S : } (x : M S) {ε : } (hε : 0 < ε) :
m, ↑() m = x m < x + ε

For any x : M ⧸ S and any 0 < ε, there is m : M such that mk' S m = x and ‖m‖ < ‖x‖ + ε.

theorem norm_mk_lt' {M : Type u_1} (S : ) (m : M) {ε : } (hε : 0 < ε) :
s, s S m + s < ↑() m + ε

For any m : M and any 0 < ε, there is s ∈ S such that ‖m + s‖ < ‖mk' S m‖ + ε.

theorem quotient_norm_add_le {M : Type u_1} (S : ) (x : M S) (y : M S) :

The quotient norm satisfies the triangle inequality.

theorem norm_mk_zero {M : Type u_1} (S : ) :

The quotient norm of 0 is 0.

theorem norm_mk_eq_zero {M : Type u_1} (S : ) (hS : IsClosed S) (m : M) (h : ↑() m = 0) :
m S

If (m : M) has norm equal to 0 in M ⧸ S for a closed subgroup S of M, then m ∈ S.

theorem quotient_nhd_basis {M : Type u_1} (S : ) :
Filter.HasBasis (nhds 0) (fun ε => 0 < ε) fun ε => {x | x < ε}

The seminormed group structure on the quotient by an additive subgroup.

noncomputable instance AddSubgroup.normedAddCommGroupQuotient {M : Type u_1} (S : ) [IsClosed S] :

The quotient in the category of normed groups.

noncomputable def AddSubgroup.normedMk {M : Type u_1} (S : ) :

The morphism from a seminormed group to the quotient by a subgroup.

Instances For
@[simp]
theorem AddSubgroup.normedMk.apply {M : Type u_1} (S : ) (m : M) :
↑() m = ↑() m

S.normedMk agrees with QuotientAddGroup.mk' S.

theorem AddSubgroup.surjective_normedMk {M : Type u_1} (S : ) :

S.normedMk is surjective.

theorem AddSubgroup.ker_normedMk {M : Type u_1} (S : ) :

The kernel of S.normedMk is S.

theorem AddSubgroup.norm_normedMk_le {M : Type u_1} (S : ) :

The operator norm of the projection is at most 1.

theorem QuotientAddGroup.norm_lift_apply_le {M : Type u_1} {N : Type u_2} {S : } (f : ) (hf : ∀ (x : M), x Sf x = 0) (x : M S) :
theorem AddSubgroup.norm_normedMk {M : Type u_1} (S : ) (h : Set.univ) :

The operator norm of the projection is 1 if the subspace is not dense.

theorem AddSubgroup.norm_trivial_quotient_mk {M : Type u_1} (S : ) (h : = Set.univ) :

The operator norm of the projection is 0 if the subspace is dense.

structure NormedAddGroupHom.IsQuotient {M : Type u_1} {N : Type u_2} (f : ) :

IsQuotient f, for f : M ⟶ N means that N is isomorphic to the quotient of M by the kernel of f.

Instances For
noncomputable def NormedAddGroupHom.lift {M : Type u_1} {N : Type u_3} (S : ) (f : ) (hf : ∀ (s : M), s Sf s = 0) :

Given f : NormedAddGroupHom M N such that f s = 0 for all s ∈ S, where, S : AddSubgroup M is closed, the induced morphism NormedAddGroupHom (M ⧸ S) N.

Instances For
theorem NormedAddGroupHom.lift_mk {M : Type u_1} {N : Type u_3} (S : ) (f : ) (hf : ∀ (s : M), s Sf s = 0) (m : M) :
↑() (↑() m) = f m
theorem NormedAddGroupHom.lift_unique {M : Type u_1} {N : Type u_3} (S : ) (f : ) (hf : ∀ (s : M), s Sf s = 0) (g : NormedAddGroupHom (M S) N) (h : ) :
g =
theorem NormedAddGroupHom.isQuotientQuotient {M : Type u_1} (S : ) :

S.normedMk satisfies IsQuotient.

theorem NormedAddGroupHom.IsQuotient.norm_lift {M : Type u_1} {N : Type u_2} {f : } (hquot : ) {ε : } (hε : 0 < ε) (n : N) :
m, f m = n m < n + ε
theorem NormedAddGroupHom.IsQuotient.norm_le {M : Type u_1} {N : Type u_2} {f : } (hquot : ) (m : M) :
theorem NormedAddGroupHom.norm_lift_le {M : Type u_1} {N : Type u_3} (S : ) (f : ) (hf : ∀ (s : M), s Sf s = 0) :
theorem NormedAddGroupHom.lift_norm_le {M : Type u_1} {N : Type u_3} (S : ) (f : ) (hf : ∀ (s : M), s Sf s = 0) {c : NNReal} (fb : f c) :
c
theorem NormedAddGroupHom.lift_normNoninc {M : Type u_1} {N : Type u_3} (S : ) (f : ) (hf : ∀ (s : M), s Sf s = 0) (fb : ) :

### Submodules and ideals #

In what follows, the norm structures created above for quotients of (semi)NormedAddCommGroups by AddSubgroups are transferred via definitional equality to quotients of modules by submodules, and of rings by ideals, thereby preserving the definitional equality for the topological group and uniform structures worked for above. Completeness is also transferred via this definitional equality.

In addition, instances are constructed for NormedSpace, SeminormedCommRing, NormedCommRing and NormedAlgebra under the appropriate hypotheses. Currently, we do not have quotients of rings by two-sided ideals, hence the commutativity hypotheses are required.

instance Submodule.Quotient.normedAddCommGroup {M : Type u_1} {R : Type u_3} [Ring R] [Module R M] (S : ) [hS : IsClosed S] :
instance Submodule.Quotient.completeSpace {M : Type u_1} {R : Type u_3} [Ring R] [Module R M] (S : ) [] :
theorem Submodule.Quotient.norm_mk_lt {M : Type u_1} {R : Type u_3} [Ring R] [Module R M] {S : } (x : M S) {ε : } (hε : 0 < ε) :
m, m < x + ε

For any x : M ⧸ S and any 0 < ε, there is m : M such that Submodule.Quotient.mk m = x and ‖m‖ < ‖x‖ + ε.

theorem Submodule.Quotient.norm_mk_le {M : Type u_1} {R : Type u_3} [Ring R] [Module R M] (S : ) (m : M) :
instance Submodule.Quotient.normedSpace {M : Type u_1} {R : Type u_3} [Ring R] [Module R M] (S : ) (𝕜 : Type u_4) [] [] [SMul 𝕜 R] [] :
NormedSpace 𝕜 (M S)
theorem Ideal.Quotient.norm_mk_lt {R : Type u_3} {I : } (x : R I) {ε : } (hε : 0 < ε) :
r, ↑() r = x r < x + ε
theorem Ideal.Quotient.norm_mk_le {R : Type u_3} (I : ) (r : R) :
↑() r r
instance Ideal.Quotient.normedCommRing {R : Type u_3} (I : ) [IsClosed I] :
instance Ideal.Quotient.normedAlgebra {R : Type u_3} (I : ) (𝕜 : Type u_4) [] [] :
NormedAlgebra 𝕜 (R I)