Documentation

Mathlib.Topology.Algebra.OpenSubgroup

Open subgroups of a topological group #

This file 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 #

TODO #

structure OpenAddSubgroup (G : Type u_1) [AddGroup G] [TopologicalSpace G] extends AddSubgroup G :
Type u_1

The type of open subgroups of a topological additive group.

Instances For
    structure OpenSubgroup (G : Type u_1) [Group G] [TopologicalSpace G] extends Subgroup G :
    Type u_1

    The type of open subgroups of a topological group.

    Instances For
      @[implicit_reducible]
      @[implicit_reducible]

      Coercion from OpenSubgroup G to Opens G.

      Instances For
        @[simp]
        theorem OpenSubgroup.coe_toOpens {G : Type u_1} [Group G] [TopologicalSpace G] {U : OpenSubgroup G} :
        โ†‘โ†‘U = โ†‘U
        @[simp]
        theorem OpenAddSubgroup.coe_toOpens {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U : OpenAddSubgroup G} :
        โ†‘โ†‘U = โ†‘U
        @[simp]
        theorem OpenSubgroup.coe_toSubgroup {G : Type u_1} [Group G] [TopologicalSpace G] {U : OpenSubgroup G} :
        โ†‘โ†‘U = โ†‘U
        @[simp]
        theorem OpenAddSubgroup.coe_toAddSubgroup {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U : OpenAddSubgroup G} :
        โ†‘โ†‘U = โ†‘U
        @[simp]
        theorem OpenSubgroup.mem_toOpens {G : Type u_1} [Group G] [TopologicalSpace G] {U : OpenSubgroup G} {g : G} :
        g โˆˆ โ†‘U โ†” g โˆˆ U
        @[simp]
        theorem OpenAddSubgroup.mem_toOpens {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U : OpenAddSubgroup G} {g : G} :
        g โˆˆ โ†‘U โ†” g โˆˆ U
        @[simp]
        theorem OpenSubgroup.mem_toSubgroup {G : Type u_1} [Group G] [TopologicalSpace G] {U : OpenSubgroup G} {g : G} :
        g โˆˆ โ†‘U โ†” g โˆˆ U
        @[simp]
        theorem OpenAddSubgroup.mem_toAddSubgroup {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U : OpenAddSubgroup G} {g : G} :
        g โˆˆ โ†‘U โ†” g โˆˆ U
        theorem OpenSubgroup.ext {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} (h : โˆ€ (x : G), x โˆˆ U โ†” x โˆˆ V) :
        U = V
        theorem OpenAddSubgroup.ext {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} (h : โˆ€ (x : G), x โˆˆ U โ†” x โˆˆ V) :
        U = V
        theorem OpenSubgroup.ext_iff {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} :
        U = V โ†” โˆ€ (x : G), x โˆˆ U โ†” x โˆˆ V
        theorem OpenAddSubgroup.ext_iff {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} :
        U = V โ†” โˆ€ (x : G), x โˆˆ U โ†” x โˆˆ V
        theorem OpenSubgroup.mem_nhds_one {G : Type u_1} [Group G] [TopologicalSpace G] (U : OpenSubgroup G) :
        โ†‘U โˆˆ nhds 1
        @[implicit_reducible]
        @[simp]
        theorem OpenSubgroup.mem_top {G : Type u_1} [Group G] [TopologicalSpace G] (x : G) :
        x โˆˆ โŠค
        @[simp]
        theorem OpenAddSubgroup.mem_top {G : Type u_1} [AddGroup G] [TopologicalSpace G] (x : G) :
        x โˆˆ โŠค
        @[implicit_reducible]
        instance OpenSubgroup.instInhabited {G : Type u_1} [Group G] [TopologicalSpace G] :
        Inhabited (OpenSubgroup G)
        @[implicit_reducible]
        def OpenSubgroup.prod {G : Type u_1} [Group G] [TopologicalSpace G] {H : Type u_2} [Group H] [TopologicalSpace H] (U : OpenSubgroup G) (V : OpenSubgroup H) :
        OpenSubgroup (G ร— H)

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

        Instances For

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

          Instances For
            @[simp]
            theorem OpenSubgroup.coe_prod {G : Type u_1} [Group G] [TopologicalSpace G] {H : Type u_2} [Group H] [TopologicalSpace H] (U : OpenSubgroup G) (V : OpenSubgroup H) :
            โ†‘(U.prod V) = โ†‘U ร—หข โ†‘V
            @[simp]
            theorem OpenAddSubgroup.coe_prod {G : Type u_1} [AddGroup G] [TopologicalSpace G] {H : Type u_2} [AddGroup H] [TopologicalSpace H] (U : OpenAddSubgroup G) (V : OpenAddSubgroup H) :
            โ†‘(U.prod V) = โ†‘U ร—หข โ†‘V
            @[simp]
            theorem OpenSubgroup.toSubgroup_prod {G : Type u_1} [Group G] [TopologicalSpace G] {H : Type u_2} [Group H] [TopologicalSpace H] (U : OpenSubgroup G) (V : OpenSubgroup H) :
            โ†‘(U.prod V) = (โ†‘U).prod โ†‘V
            @[simp]
            theorem OpenAddSubgroup.toAddSubgroup_prod {G : Type u_1} [AddGroup G] [TopologicalSpace G] {H : Type u_2} [AddGroup H] [TopologicalSpace H] (U : OpenAddSubgroup G) (V : OpenAddSubgroup H) :
            โ†‘(U.prod V) = (โ†‘U).prod โ†‘V
            @[implicit_reducible]
            @[simp]
            theorem OpenSubgroup.coe_inf {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} :
            โ†‘(U โŠ“ V) = โ†‘U โˆฉ โ†‘V
            @[simp]
            theorem OpenAddSubgroup.coe_inf {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} :
            โ†‘(U โŠ“ V) = โ†‘U โˆฉ โ†‘V
            @[simp]
            theorem OpenSubgroup.toSubgroup_inf {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} :
            โ†‘(U โŠ“ V) = โ†‘U โŠ“ โ†‘V
            @[simp]
            theorem OpenAddSubgroup.toAddSubgroup_inf {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} :
            โ†‘(U โŠ“ V) = โ†‘U โŠ“ โ†‘V
            @[simp]
            theorem OpenSubgroup.toOpens_inf {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} :
            โ†‘(U โŠ“ V) = โ†‘U โŠ“ โ†‘V
            @[simp]
            theorem OpenAddSubgroup.toOpens_inf {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} :
            โ†‘(U โŠ“ V) = โ†‘U โŠ“ โ†‘V
            @[simp]
            theorem OpenSubgroup.mem_inf {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} {x : G} :
            x โˆˆ U โŠ“ V โ†” x โˆˆ U โˆง x โˆˆ V
            @[simp]
            theorem OpenAddSubgroup.mem_inf {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} {x : G} :
            x โˆˆ U โŠ“ V โ†” x โˆˆ U โˆง x โˆˆ V
            @[simp]
            theorem OpenSubgroup.toSubgroup_le {G : Type u_1} [Group G] [TopologicalSpace G] {U V : OpenSubgroup G} :
            โ†‘U โ‰ค โ†‘V โ†” U โ‰ค V
            @[simp]
            theorem OpenAddSubgroup.toAddSubgroup_le {G : Type u_1} [AddGroup G] [TopologicalSpace G] {U V : OpenAddSubgroup G} :
            โ†‘U โ‰ค โ†‘V โ†” U โ‰ค V
            def OpenSubgroup.comap {G : Type u_1} [Group G] [TopologicalSpace G] {N : Type u_2} [Group N] [TopologicalSpace N] (f : G โ†’* N) (hf : Continuous โ‡‘f) (H : OpenSubgroup N) :

            The preimage of an OpenSubgroup along a continuous Monoid homomorphism is an OpenSubgroup.

            Instances For
              def OpenAddSubgroup.comap {G : Type u_1} [AddGroup G] [TopologicalSpace G] {N : Type u_2} [AddGroup N] [TopologicalSpace N] (f : G โ†’+ N) (hf : Continuous โ‡‘f) (H : OpenAddSubgroup N) :

              The preimage of an OpenAddSubgroup along a continuous AddMonoid homomorphism is an OpenAddSubgroup.

              Instances For
                @[simp]
                theorem OpenSubgroup.coe_comap {G : Type u_1} [Group G] [TopologicalSpace G] {N : Type u_2} [Group N] [TopologicalSpace N] (H : OpenSubgroup N) (f : G โ†’* N) (hf : Continuous โ‡‘f) :
                โ†‘(comap f hf H) = โ‡‘f โปยน' โ†‘H
                @[simp]
                theorem OpenAddSubgroup.coe_comap {G : Type u_1} [AddGroup G] [TopologicalSpace G] {N : Type u_2} [AddGroup N] [TopologicalSpace N] (H : OpenAddSubgroup N) (f : G โ†’+ N) (hf : Continuous โ‡‘f) :
                โ†‘(comap f hf H) = โ‡‘f โปยน' โ†‘H
                @[simp]
                theorem OpenSubgroup.toSubgroup_comap {G : Type u_1} [Group G] [TopologicalSpace G] {N : Type u_2} [Group N] [TopologicalSpace N] (H : OpenSubgroup N) (f : G โ†’* N) (hf : Continuous โ‡‘f) :
                โ†‘(comap f hf H) = Subgroup.comap f โ†‘H
                @[simp]
                theorem OpenAddSubgroup.toAddSubgroup_comap {G : Type u_1} [AddGroup G] [TopologicalSpace G] {N : Type u_2} [AddGroup N] [TopologicalSpace N] (H : OpenAddSubgroup N) (f : G โ†’+ N) (hf : Continuous โ‡‘f) :
                โ†‘(comap f hf H) = AddSubgroup.comap f โ†‘H
                @[simp]
                theorem OpenSubgroup.mem_comap {G : Type u_1} [Group G] [TopologicalSpace G] {N : Type u_2} [Group N] [TopologicalSpace N] {H : OpenSubgroup N} {f : G โ†’* N} {hf : Continuous โ‡‘f} {x : G} :
                x โˆˆ comap f hf H โ†” f x โˆˆ H
                @[simp]
                theorem OpenAddSubgroup.mem_comap {G : Type u_1} [AddGroup G] [TopologicalSpace G] {N : Type u_2} [AddGroup N] [TopologicalSpace N] {H : OpenAddSubgroup N} {f : G โ†’+ N} {hf : Continuous โ‡‘f} {x : G} :
                x โˆˆ comap f hf H โ†” f x โˆˆ H
                theorem OpenSubgroup.comap_comap {G : Type u_1} [Group G] [TopologicalSpace G] {N : Type u_2} [Group N] [TopologicalSpace N] {P : Type u_3} [Group P] [TopologicalSpace P] (K : OpenSubgroup P) (fโ‚‚ : N โ†’* P) (hfโ‚‚ : Continuous โ‡‘fโ‚‚) (fโ‚ : G โ†’* N) (hfโ‚ : Continuous โ‡‘fโ‚) :
                comap fโ‚ hfโ‚ (comap fโ‚‚ hfโ‚‚ K) = comap (fโ‚‚.comp fโ‚) โ‹ฏ K
                theorem OpenAddSubgroup.comap_comap {G : Type u_1} [AddGroup G] [TopologicalSpace G] {N : Type u_2} [AddGroup N] [TopologicalSpace N] {P : Type u_3} [AddGroup P] [TopologicalSpace P] (K : OpenAddSubgroup P) (fโ‚‚ : N โ†’+ P) (hfโ‚‚ : Continuous โ‡‘fโ‚‚) (fโ‚ : G โ†’+ N) (hfโ‚ : Continuous โ‡‘fโ‚) :
                comap fโ‚ hfโ‚ (comap fโ‚‚ hfโ‚‚ K) = comap (fโ‚‚.comp fโ‚) โ‹ฏ K
                theorem Subgroup.isOpen_of_mem_nhds {G : Type u_1} [Group G] [TopologicalSpace G] [SeparatelyContinuousMul G] (H : Subgroup G) {g : G} (hg : โ†‘H โˆˆ nhds g) :
                IsOpen โ†‘H
                theorem AddSubgroup.isOpen_of_mem_nhds {G : Type u_1} [AddGroup G] [TopologicalSpace G] [SeparatelyContinuousAdd G] (H : AddSubgroup G) {g : G} (hg : โ†‘H โˆˆ nhds g) :
                IsOpen โ†‘H
                theorem Subgroup.isOpen_mono {G : Type u_1} [Group G] [TopologicalSpace G] [SeparatelyContinuousMul G] {Hโ‚ Hโ‚‚ : Subgroup G} (h : Hโ‚ โ‰ค Hโ‚‚) (hโ‚ : IsOpen โ†‘Hโ‚) :
                IsOpen โ†‘Hโ‚‚
                theorem AddSubgroup.isOpen_mono {G : Type u_1} [AddGroup G] [TopologicalSpace G] [SeparatelyContinuousAdd G] {Hโ‚ Hโ‚‚ : AddSubgroup G} (h : Hโ‚ โ‰ค Hโ‚‚) (hโ‚ : IsOpen โ†‘Hโ‚) :
                IsOpen โ†‘Hโ‚‚
                theorem Subgroup.isOpen_of_one_mem_interior {G : Type u_1} [Group G] [TopologicalSpace G] [SeparatelyContinuousMul G] (H : Subgroup G) (h_1_int : 1 โˆˆ interior โ†‘H) :
                IsOpen โ†‘H

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

                theorem AddSubgroup.isOpen_of_zero_mem_interior {G : Type u_1} [AddGroup G] [TopologicalSpace G] [SeparatelyContinuousAdd G] (H : AddSubgroup G) (h_1_int : 0 โˆˆ interior โ†‘H) :
                IsOpen โ†‘H

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

                theorem Subgroup.subgroupOf_isOpen {G : Type u_1} [Group G] [TopologicalSpace G] (U K : Subgroup G) (h : IsOpen โ†‘K) :
                IsOpen โ†‘(K.subgroupOf U)
                @[deprecated QuotientGroup.discreteTopology (since := "2025-10-09")]
                @[deprecated QuotientGroup.discreteTopology (since := "2025-10-09")]
                theorem Subgroup.quotient_finite_of_isOpen' {G : Type u_1} [Group G] [TopologicalSpace G] [IsTopologicalGroup G] [CompactSpace G] (U : Subgroup G) (K : Subgroup โ†ฅU) (hUopen : IsOpen โ†‘U) (hKopen : IsOpen โ†‘K) :
                Finite (โ†ฅU โงธ K)
                theorem AddSubgroup.quotient_finite_of_isOpen' {G : Type u_1} [AddGroup G] [TopologicalSpace G] [IsTopologicalAddGroup G] [CompactSpace G] (U : AddSubgroup G) (K : AddSubgroup โ†ฅU) (hUopen : IsOpen โ†‘U) (hKopen : IsOpen โ†‘K) :
                Finite (โ†ฅU โงธ K)
                @[simp]
                theorem OpenSubgroup.toSubgroup_sup {G : Type u_1} [Group G] [TopologicalSpace G] [SeparatelyContinuousMul G] (U V : OpenSubgroup G) :
                โ†‘(U โŠ” V) = โ†‘U โŠ” โ†‘V
                @[simp]
                theorem OpenAddSubgroup.toAddSubgroup_sup {G : Type u_1} [AddGroup G] [TopologicalSpace G] [SeparatelyContinuousAdd G] (U V : OpenAddSubgroup G) :
                โ†‘(U โŠ” V) = โ†‘U โŠ” โ†‘V
                theorem Submodule.isOpen_mono {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [TopologicalSpace M] [IsTopologicalAddGroup M] [Module R M] {U P : Submodule R M} (h : U โ‰ค P) (hU : IsOpen โ†‘U) :
                IsOpen โ†‘P
                theorem Ideal.isOpen_of_isOpen_subideal {R : Type u_1} [CommRing R] [TopologicalSpace R] [IsTopologicalRing R] {U I : Ideal R} (h : U โ‰ค I) (hU : IsOpen โ†‘U) :
                IsOpen โ†‘I

                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.

                structure OpenNormalSubgroup (G : Type u) [Group G] [TopologicalSpace G] extends OpenSubgroup G :

                The type of open normal subgroups of a topological group.

                Instances For
                  theorem OpenNormalSubgroup.ext_iff {G : Type u} {instโœ : Group G} {instโœยน : TopologicalSpace G} {x y : OpenNormalSubgroup G} :
                  x = y โ†” (โ†‘x.toOpenSubgroup).carrier = (โ†‘y.toOpenSubgroup).carrier
                  theorem OpenNormalSubgroup.ext {G : Type u} {instโœ : Group G} {instโœยน : TopologicalSpace G} {x y : OpenNormalSubgroup G} (carrier : (โ†‘x.toOpenSubgroup).carrier = (โ†‘y.toOpenSubgroup).carrier) :
                  x = y

                  The type of open normal subgroups of a topological additive group.

                  Instances For
                    theorem OpenNormalAddSubgroup.ext_iff {G : Type u} {instโœ : AddGroup G} {instโœยน : TopologicalSpace G} {x y : OpenNormalAddSubgroup G} :
                    x = y โ†” (โ†‘x.toOpenAddSubgroup).carrier = (โ†‘y.toOpenAddSubgroup).carrier
                    theorem OpenNormalAddSubgroup.ext {G : Type u} {instโœ : AddGroup G} {instโœยน : TopologicalSpace G} {x y : OpenNormalAddSubgroup G} (carrier : (โ†‘x.toOpenAddSubgroup).carrier = (โ†‘y.toOpenAddSubgroup).carrier) :
                    x = y

                    Existence of an open subgroup in any clopen neighborhood of the neutral element #

                    This section proves the lemma IsTopologicalGroup.exist_openSubgroup_sub_clopen_nhds_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.

                    Instances For

                      For a set W, T is a neighborhood of 1 which is open, stable under inverse and satisfies T * W โІ W.

                      Instances For
                        theorem IsTopologicalGroup.exist_mul_closure_nhds {G : Type u_1} [TopologicalSpace G] [Group G] [IsTopologicalGroup G] [CompactSpace G] {W : Set G} (WClopen : IsClopen W) :
                        โˆƒ T โˆˆ nhds 1, W * T โІ W
                        theorem IsTopologicalAddGroup.exist_add_closure_nhds {G : Type u_1} [TopologicalSpace G] [AddGroup G] [IsTopologicalAddGroup G] [CompactSpace G] {W : Set G} (WClopen : IsClopen W) :
                        โˆƒ T โˆˆ nhds 0, W + T โІ W
                        theorem IsTopologicalGroup.exist_openSubgroup_sub_clopen_nhds_of_one {G : Type u_2} [Group G] [TopologicalSpace G] [IsTopologicalGroup G] [CompactSpace G] {W : Set G} (WClopen : IsClopen W) (einW : 1 โˆˆ W) :
                        โˆƒ (H : OpenSubgroup G), โ†‘H โІ W
                        theorem IsTopologicalAddGroup.exist_openAddSubgroup_sub_clopen_nhds_of_zero {G : Type u_2} [AddGroup G] [TopologicalSpace G] [IsTopologicalAddGroup G] [CompactSpace G] {W : Set G} (WClopen : IsClopen W) (einW : 0 โˆˆ W) :
                        โˆƒ (H : OpenAddSubgroup G), โ†‘H โІ W