Open subgroups of a topological groups #
This files builds the lattice OpenSubgroup G
of open subgroups in a topological group G
,
and its additive version OpenAddSubgroup
. 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 #
OpenSubgroup.isClosed
: An open subgroup is automatically closed.Subgroup.isOpen_mono
: A subgroup containing an open subgroup is open. There are also versions for additive groups, submodules and ideals.OpenSubgroup.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.
The type of open subgroups of a topological additive group.
Instances For
The type of open subgroups of a topological group.
Instances For
Equations
- OpenAddSubgroup.hasCoeAddSubgroup = { coe := OpenAddSubgroup.toAddSubgroup }
Equations
- OpenSubgroup.hasCoeSubgroup = { coe := OpenSubgroup.toSubgroup }
Equations
- OpenAddSubgroup.instSetLike = { coe := fun (U : OpenAddSubgroup G) => ↑↑U, coe_injective' := ⋯ }
Equations
- OpenSubgroup.instSetLike = { coe := fun (U : OpenSubgroup G) => ↑↑U, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Coercion from OpenAddSubgroup G
to Opens G
.
Equations
- ↑U = { carrier := ↑U, is_open' := ⋯ }
Instances For
Coercion from OpenSubgroup G
to Opens G
.
Equations
- ↑U = { carrier := ↑U, is_open' := ⋯ }
Instances For
Equations
- OpenAddSubgroup.hasCoeOpens = { coe := OpenAddSubgroup.toOpens }
Equations
- OpenSubgroup.hasCoeOpens = { coe := OpenSubgroup.toOpens }
The product of two open subgroups as an open subgroup of the product group.
Equations
- U.sum V = { toAddSubgroup := (↑U).prod ↑V, isOpen' := ⋯ }
Instances For
The product of two open subgroups as an open subgroup of the product group.
Equations
- U.prod V = { toSubgroup := (↑U).prod ↑V, isOpen' := ⋯ }
Instances For
Equations
- OpenAddSubgroup.instInfOpenAddSubgroup = { inf := fun (U V : OpenAddSubgroup G) => { toAddSubgroup := ↑U ⊓ ↑V, isOpen' := ⋯ } }
Equations
- OpenSubgroup.instInfOpenSubgroup = { inf := fun (U V : OpenSubgroup G) => { toSubgroup := ↑U ⊓ ↑V, isOpen' := ⋯ } }
Equations
- OpenAddSubgroup.instPartialOrderOpenAddSubgroup = inferInstance
Equations
- OpenSubgroup.instPartialOrderOpenSubgroup = inferInstance
Equations
- OpenAddSubgroup.instSemilatticeInfOpenAddSubgroup = SemilatticeInf.mk ⋯ ⋯ ⋯
Equations
- OpenSubgroup.instSemilatticeInfOpenSubgroup = SemilatticeInf.mk ⋯ ⋯ ⋯
Equations
- OpenAddSubgroup.instOrderTop = OrderTop.mk ⋯
Equations
- OpenSubgroup.instOrderTop = OrderTop.mk ⋯
The preimage of an OpenAddSubgroup
along a continuous AddMonoid
homomorphism
is an OpenAddSubgroup
.
Equations
- OpenAddSubgroup.comap f hf H = { toAddSubgroup := AddSubgroup.comap f ↑H, isOpen' := ⋯ }
Instances For
The preimage of an OpenSubgroup
along a continuous Monoid
homomorphism
is an OpenSubgroup
.
Equations
- OpenSubgroup.comap f hf H = { toSubgroup := Subgroup.comap f ↑H, isOpen' := ⋯ }
Instances For
If a subgroup of an additive topological group has 0
in its interior, then it is
open.
If a subgroup of a topological group has 1
in its interior, then it is open.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- OpenAddSubgroup.instSup = { sup := fun (U V : OpenAddSubgroup G) => { toAddSubgroup := ↑U ⊔ ↑V, isOpen' := ⋯ } }
Equations
- OpenSubgroup.instSup = { sup := fun (U V : OpenSubgroup G) => { toSubgroup := ↑U ⊔ ↑V, isOpen' := ⋯ } }
Equations
- OpenAddSubgroup.instLattice = Lattice.mk ⋯ ⋯ ⋯
Equations
- OpenSubgroup.instLattice = Lattice.mk ⋯ ⋯ ⋯
Open normal subgroups of a topological group #
This section builds the lattice OpenNormalSubgroup G
of open subgroups in a topological group G
,
and its additive version OpenNormalAddSubgroup
.
The type of open normal subgroups of a topological group.
- carrier : Set G
- one_mem' : 1 ∈ (↑self.toOpenSubgroup).carrier
- isOpen' : IsOpen (↑self.toOpenSubgroup).carrier
- isNormal' : (↑self.toOpenSubgroup).Normal
Instances For
The type of open normal subgroups of a topological additive group.
- carrier : Set G
- zero_mem' : 0 ∈ (↑self.toOpenAddSubgroup).carrier
- isOpen' : IsOpen (↑self.toOpenAddSubgroup).carrier
- isNormal' : (↑self.toOpenAddSubgroup).Normal
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- OpenNormalAddSubgroup.instSetLike = { coe := fun (U : OpenNormalAddSubgroup G) => ↑U.toOpenAddSubgroup, coe_injective' := ⋯ }
Equations
- OpenNormalSubgroup.instSetLike = { coe := fun (U : OpenNormalSubgroup G) => ↑U.toOpenSubgroup, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- OpenNormalAddSubgroup.instCoeAddSubgroup = { coe := fun (H : OpenNormalAddSubgroup G) => ↑H.toOpenAddSubgroup }
Equations
- OpenNormalSubgroup.instCoeSubgroup = { coe := fun (H : OpenNormalSubgroup G) => ↑H.toOpenSubgroup }
Equations
- OpenNormalAddSubgroup.instPartialOrderOpenNormalAddSubgroup = inferInstance
Equations
- OpenNormalSubgroup.instPartialOrderOpenNormalSubgroup = inferInstance
Equations
- OpenNormalAddSubgroup.instInfOpenNormalAddSubgroup = { inf := fun (U V : OpenNormalAddSubgroup G) => { toOpenAddSubgroup := U.toOpenAddSubgroup ⊓ V.toOpenAddSubgroup, isNormal' := ⋯ } }
Equations
- OpenNormalSubgroup.instInfOpenNormalSubgroup = { inf := fun (U V : OpenNormalSubgroup G) => { toOpenSubgroup := U.toOpenSubgroup ⊓ V.toOpenSubgroup, isNormal' := ⋯ } }
Equations
- OpenNormalAddSubgroup.instSemilatticeInfOpenNormalAddSubgroup = Function.Injective.semilatticeInf SetLike.coe ⋯ ⋯
Equations
- OpenNormalSubgroup.instSemilatticeInfOpenNormalSubgroup = Function.Injective.semilatticeInf SetLike.coe ⋯ ⋯
Equations
- OpenNormalAddSubgroup.instSupOfContinuousAdd = { sup := fun (U V : OpenNormalAddSubgroup G) => { toOpenAddSubgroup := U.toOpenAddSubgroup ⊔ V.toOpenAddSubgroup, isNormal' := ⋯ } }
Equations
- OpenNormalSubgroup.instSupOfContinuousMul = { sup := fun (U V : OpenNormalSubgroup G) => { toOpenSubgroup := U.toOpenSubgroup ⊔ V.toOpenSubgroup, isNormal' := ⋯ } }
Equations
- OpenNormalAddSubgroup.instSemilatticeSupOpenNormalAddSubgroup = Function.Injective.semilatticeSup (fun (H : OpenNormalAddSubgroup G) => ↑H.toOpenAddSubgroup) ⋯ ⋯
Equations
- OpenNormalSubgroup.instSemilatticeSupOpenNormalSubgroup = Function.Injective.semilatticeSup (fun (H : OpenNormalSubgroup G) => ↑H.toOpenSubgroup) ⋯ ⋯
Equations
- OpenNormalAddSubgroup.instLatticeOfContinuousAdd = Lattice.mk ⋯ ⋯ ⋯
Equations
- OpenNormalSubgroup.instLatticeOfContinuousMul = Lattice.mk ⋯ ⋯ ⋯
Existence of an open subgroup in any clopen neighborhood of the neutral element #
This section proves the lemma TopologicalGroup.exist_openSubgroup_sub_clopen_nhd_of_one
, which
states that in a compact topological group, for any clopen neighborhood of 1,
there exists an open subgroup contained within it.
For a set W
, T
is a neighborhood of 0
which is open, stable under negation and satisfies
T + W ⊆ W
.
- isOpen : IsOpen T