# mathlib3documentation

topology.algebra.open_subgroup

# Open subgroups of a topological groups #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This files builds the lattice open_subgroup G of open subgroups in a topological group G, and its additive version open_add_subgroup. This lattice has a top element, the subgroup of all elements, but no bottom element in general. The trivial subgroup which is the natural candidate bottom has no reason to be open (this happens only in discrete groups).

Note that this notion is especially relevant in a non-archimedean context, for instance for p-adic groups.

## Main declarations #

• open_subgroup.is_closed: An open subgroup is automatically closed.
• subgroup.is_open_mono: A subgroup containing an open subgroup is open. There are also versions for additive groups, submodules and ideals.
• open_subgroup.comap: Open subgroups can be pulled back by a continuous group morphism.

## TODO #

• Prove that the identity component of a locally path connected group is an open subgroup. Up to now this file is really geared towards non-archimedean algebra, not Lie groups.
Type u_1
• is_open' :

The type of open subgroups of a topological additive group.

Instances for open_add_subgroup
structure open_subgroup (G : Type u_1) [group G]  :
Type u_1
• to_subgroup :
• is_open' :

The type of open subgroups of a topological group.

Instances for open_subgroup
@[protected, instance]
Equations
@[protected, instance]
Equations
@[protected, instance]
def open_subgroup.set_like {G : Type u_1} [group G]  :
G
Equations
@[protected, instance]
Equations
@[protected, instance]
def open_subgroup.subgroup_class {G : Type u_1} [group G]  :
@[protected, instance]
@[protected, instance]
def open_subgroup.has_coe_opens {G : Type u_1} [group G]  :
Equations
@[protected, instance]
Equations
@[simp, norm_cast]
@[simp, norm_cast]
theorem open_subgroup.coe_coe_opens {G : Type u_1} [group G] {U : open_subgroup G} :
@[simp, norm_cast]
theorem open_subgroup.coe_coe_subgroup {G : Type u_1} [group G] {U : open_subgroup G} :
@[simp, norm_cast]
@[simp, norm_cast]
g U g U
@[simp, norm_cast]
theorem open_subgroup.mem_coe_opens {G : Type u_1} [group G] {U : open_subgroup G} {g : G} :
g U g U
@[simp, norm_cast]
g U g U
@[simp, norm_cast]
theorem open_subgroup.mem_coe_subgroup {G : Type u_1} [group G] {U : open_subgroup G} {g : G} :
g U g U
@[ext]
theorem open_subgroup.ext {G : Type u_1} [group G] {U V : open_subgroup G} (h : (x : G), x U x V) :
U = V
@[ext]
theorem open_add_subgroup.ext {G : Type u_1} [add_group G] {U V : open_add_subgroup G} (h : (x : G), x U x V) :
U = V
@[protected]
@[protected]
theorem open_subgroup.is_open {G : Type u_1} [group G] (U : open_subgroup G) :
theorem open_subgroup.mem_nhds_one {G : Type u_1} [group G] (U : open_subgroup G) :
@[protected, instance]
def open_subgroup.has_top {G : Type u_1} [group G]  :
Equations
@[protected, instance]
Equations
@[simp]
theorem open_subgroup.mem_top {G : Type u_1} [group G] (x : G) :
@[simp]
theorem open_add_subgroup.mem_top {G : Type u_1} [add_group G] (x : G) :
@[simp, norm_cast]
theorem open_subgroup.coe_top {G : Type u_1} [group G]  :
@[simp, norm_cast]
@[simp, norm_cast]
@[simp, norm_cast]
theorem open_subgroup.coe_subgroup_top {G : Type u_1} [group G]  :
@[simp, norm_cast]
theorem open_subgroup.coe_opens_top {G : Type u_1} [group G]  :
@[simp, norm_cast]
@[protected, instance]
def open_subgroup.inhabited {G : Type u_1} [group G]  :
Equations
@[protected, instance]
Equations
theorem open_subgroup.is_closed {G : Type u_1} [group G] (U : open_subgroup G) :
theorem open_subgroup.is_clopen {G : Type u_1} [group G] (U : open_subgroup G) :
def open_subgroup.prod {G : Type u_1} [group G] {H : Type u_2} [group H] (U : open_subgroup G) (V : open_subgroup H) :

The product of two open subgroups as an open subgroup of the product group.

Equations

The product of two open subgroups as an open subgroup of the product group.

Equations
@[simp, norm_cast]
(U.sum V) = U ×ˢ V
@[simp, norm_cast]
theorem open_subgroup.coe_prod {G : Type u_1} [group G] {H : Type u_2} [group H] (U : open_subgroup G) (V : open_subgroup H) :
(U.prod V) = U ×ˢ V
@[simp, norm_cast]
@[simp, norm_cast]
theorem open_subgroup.coe_subgroup_prod {G : Type u_1} [group G] {H : Type u_2} [group H] (U : open_subgroup G) (V : open_subgroup H) :
(U.prod V) = U.prod V
@[protected, instance]
def open_subgroup.has_inf {G : Type u_1} [group G]  :
Equations
@[protected, instance]
Equations
@[simp, norm_cast]
theorem open_subgroup.coe_inf {G : Type u_1} [group G] {U V : open_subgroup G} :
(U V) = U V
@[simp, norm_cast]
(U V) = U V
@[simp, norm_cast]
@[simp, norm_cast]
theorem open_subgroup.coe_subgroup_inf {G : Type u_1} [group G] {U V : open_subgroup G} :
(U V) = U V
@[simp, norm_cast]
theorem open_subgroup.coe_opens_inf {G : Type u_1} [group G] {U V : open_subgroup G} :
(U V) = U V
@[simp, norm_cast]
(U V) = U V
@[simp]
theorem open_subgroup.mem_inf {G : Type u_1} [group G] {U V : open_subgroup G} {x : G} :
x U V x U x V
@[simp]
theorem open_add_subgroup.mem_inf {G : Type u_1} [add_group G] {U V : open_add_subgroup G} {x : G} :
x U V x U x V
@[protected, instance]
Equations
@[protected, instance]
def open_subgroup.semilattice_inf {G : Type u_1} [group G]  :
Equations
@[protected, instance]
def open_subgroup.order_top {G : Type u_1} [group G]  :
Equations
@[protected, instance]
Equations
@[simp, norm_cast]
@[simp, norm_cast]
theorem open_subgroup.coe_subgroup_le {G : Type u_1} [group G] {U V : open_subgroup G} :
U V U V
def open_add_subgroup.comap {G : Type u_1} [add_group G] {N : Type u_2} [add_group N] (f : G →+ N) (hf : continuous f) (H : open_add_subgroup N) :

The preimage of an open_add_subgroup along a continuous add_monoid homomorphism is an open_add_subgroup.

Equations
def open_subgroup.comap {G : Type u_1} [group G] {N : Type u_2} [group N] (f : G →* N) (hf : continuous f) (H : open_subgroup N) :

The preimage of an open_subgroup along a continuous monoid homomorphism is an open_subgroup.

Equations
@[simp, norm_cast]
theorem open_add_subgroup.coe_comap {G : Type u_1} [add_group G] {N : Type u_2} [add_group N] (H : open_add_subgroup N) (f : G →+ N) (hf : continuous f) :
@[simp, norm_cast]
theorem open_subgroup.coe_comap {G : Type u_1} [group G] {N : Type u_2} [group N] (H : open_subgroup N) (f : G →* N) (hf : continuous f) :
hf H) = f ⁻¹' H
@[simp, norm_cast]
theorem open_subgroup.coe_subgroup_comap {G : Type u_1} [group G] {N : Type u_2} [group N] (H : open_subgroup N) (f : G →* N) (hf : continuous f) :
hf H) =
@[simp, norm_cast]
theorem open_add_subgroup.coe_add_subgroup_comap {G : Type u_1} [add_group G] {N : Type u_2} [add_group N] (H : open_add_subgroup N) (f : G →+ N) (hf : continuous f) :
H) =
@[simp]
theorem open_subgroup.mem_comap {G : Type u_1} [group G] {N : Type u_2} [group N] {H : open_subgroup N} {f : G →* N} {hf : continuous f} {x : G} :
x H f x H
@[simp]
theorem open_add_subgroup.mem_comap {G : Type u_1} [add_group G] {N : Type u_2} [add_group N] {H : open_add_subgroup N} {f : G →+ N} {hf : continuous f} {x : G} :
x H f x H
theorem open_subgroup.comap_comap {G : Type u_1} [group G] {N : Type u_2} [group N] {P : Type u_3} [group P] (K : open_subgroup P) (f₂ : N →* P) (hf₂ : continuous f₂) (f₁ : G →* N) (hf₁ : continuous f₁) :
hf₁ hf₂ K) = open_subgroup.comap (f₂.comp f₁) _ K
theorem open_add_subgroup.comap_comap {G : Type u_1} [add_group G] {N : Type u_2} [add_group N] {P : Type u_3} [add_group P] (K : open_add_subgroup P) (f₂ : N →+ P) (hf₂ : continuous f₂) (f₁ : G →+ N) (hf₁ : continuous f₁) :
hf₁ hf₂ K) = open_add_subgroup.comap (f₂.comp f₁) _ K
theorem subgroup.is_open_of_mem_nhds {G : Type u_1} [group G] (H : subgroup G) {g : G} (hg : H nhds g) :
theorem add_subgroup.is_open_of_mem_nhds {G : Type u_1} [add_group G] (H : add_subgroup G) {g : G} (hg : H nhds g) :
theorem subgroup.is_open_mono {G : Type u_1} [group G] {H₁ H₂ : subgroup G} (h : H₁ H₂) (h₁ : is_open H₁) :
theorem add_subgroup.is_open_mono {G : Type u_1} [add_group G] {H₁ H₂ : add_subgroup G} (h : H₁ H₂) (h₁ : is_open H₁) :
theorem subgroup.is_open_of_open_subgroup {G : Type u_1} [group G] (H : subgroup G) {U : open_subgroup G} (h : U H) :
theorem add_subgroup.is_open_of_zero_mem_interior {G : Type u_1} [add_group G] (H : add_subgroup G) (h_1_int : 0 ) :

If a subgroup of an additive topological group has 0 in its interior, then it is open.

theorem subgroup.is_open_of_one_mem_interior {G : Type u_1} [group G] (H : subgroup G) (h_1_int : 1 ) :

If a subgroup of a topological group has 1 in its interior, then it is open.

@[protected, instance]
def open_subgroup.has_sup {G : Type u_1} [group G]  :
Equations
@[protected, instance]