Documentation

Mathlib.Algebra.Group.Subgroup.Map

map and comap for subgroups #

We prove results about images and preimages of subgroups under group homomorphisms. The bundled subgroups use bundled monoid homomorphisms.

Special thanks goes to Amelia Livingston and Yury Kudryashov for their help and inspiration.

Main definitions #

Notation used here:

Definitions in the file:

Implementation notes #

Subgroup inclusion is denoted โ‰ค rather than โІ, although โˆˆ is defined as membership of a subgroup's underlying set.

Tags #

subgroup, subgroups

def Subgroup.comap {G : Type u_1} [Group G] {N : Type u_7} [Group N] (f : G โ†’* N) (H : Subgroup N) :

The preimage of a subgroup along a monoid homomorphism is a subgroup.

Instances For
    def AddSubgroup.comap {G : Type u_1} [AddGroup G] {N : Type u_7} [AddGroup N] (f : G โ†’+ N) (H : AddSubgroup N) :

    The preimage of an AddSubgroup along an AddMonoid homomorphism is an AddSubgroup.

    Instances For
      @[simp]
      theorem Subgroup.coe_comap {G : Type u_1} [Group G] {N : Type u_5} [Group N] (K : Subgroup N) (f : G โ†’* N) :
      โ†‘(comap f K) = โ‡‘f โปยน' โ†‘K
      @[simp]
      theorem AddSubgroup.coe_comap {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (K : AddSubgroup N) (f : G โ†’+ N) :
      โ†‘(comap f K) = โ‡‘f โปยน' โ†‘K
      @[simp]
      theorem Subgroup.mem_comap {G : Type u_1} [Group G] {N : Type u_5} [Group N] {K : Subgroup N} {f : G โ†’* N} {x : G} :
      x โˆˆ comap f K โ†” f x โˆˆ K
      @[simp]
      theorem AddSubgroup.mem_comap {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {K : AddSubgroup N} {f : G โ†’+ N} {x : G} :
      x โˆˆ comap f K โ†” f x โˆˆ K
      theorem Subgroup.comap_mono {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} {K K' : Subgroup N} :
      K โ‰ค K' โ†’ comap f K โ‰ค comap f K'
      theorem AddSubgroup.comap_mono {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} {K K' : AddSubgroup N} :
      K โ‰ค K' โ†’ comap f K โ‰ค comap f K'
      theorem Subgroup.comap_comap {G : Type u_1} [Group G] {N : Type u_5} [Group N] {P : Type u_6} [Group P] (K : Subgroup P) (g : N โ†’* P) (f : G โ†’* N) :
      comap f (comap g K) = comap (g.comp f) K
      theorem AddSubgroup.comap_comap {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {P : Type u_6} [AddGroup P] (K : AddSubgroup P) (g : N โ†’+ P) (f : G โ†’+ N) :
      comap f (comap g K) = comap (g.comp f) K
      @[simp]
      theorem Subgroup.comap_id {N : Type u_5} [Group N] (K : Subgroup N) :
      @[simp]
      theorem Subgroup.toAddSubgroup_comap {G : Type u_1} [Group G] {Gโ‚‚ : Type u_7} [Group Gโ‚‚] (f : G โ†’* Gโ‚‚) (s : Subgroup Gโ‚‚) :
      @[simp]
      theorem AddSubgroup.toSubgroup_comap {A : Type u_7} {Aโ‚‚ : Type u_8} [AddGroup A] [AddGroup Aโ‚‚] (f : A โ†’+ Aโ‚‚) (s : AddSubgroup Aโ‚‚) :
      def Subgroup.map {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (H : Subgroup G) :

      The image of a subgroup along a monoid homomorphism is a subgroup.

      Instances For
        def AddSubgroup.map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (H : AddSubgroup G) :

        The image of an AddSubgroup along an AddMonoid homomorphism is an AddSubgroup.

        Instances For
          @[simp]
          theorem Subgroup.coe_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (K : Subgroup G) :
          โ†‘(map f K) = โ‡‘f '' โ†‘K
          @[simp]
          theorem AddSubgroup.coe_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (K : AddSubgroup G) :
          โ†‘(map f K) = โ‡‘f '' โ†‘K
          @[simp]
          theorem Subgroup.map_toSubmonoid {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (K : Subgroup G) :
          @[simp]
          theorem Subgroup.mem_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} {K : Subgroup G} {y : N} :
          y โˆˆ map f K โ†” โˆƒ x โˆˆ K, f x = y
          @[simp]
          theorem AddSubgroup.mem_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} {K : AddSubgroup G} {y : N} :
          y โˆˆ map f K โ†” โˆƒ x โˆˆ K, f x = y
          theorem Subgroup.mem_map_of_mem {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) {K : Subgroup G} {x : G} (hx : x โˆˆ K) :
          f x โˆˆ map f K
          theorem AddSubgroup.mem_map_of_mem {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) {K : AddSubgroup G} {x : G} (hx : x โˆˆ K) :
          f x โˆˆ map f K
          theorem Subgroup.apply_coe_mem_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (K : Subgroup G) (x : โ†ฅK) :
          f โ†‘x โˆˆ map f K
          theorem AddSubgroup.apply_coe_mem_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (K : AddSubgroup G) (x : โ†ฅK) :
          f โ†‘x โˆˆ map f K
          theorem Subgroup.map_mono {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} {K K' : Subgroup G} :
          K โ‰ค K' โ†’ map f K โ‰ค map f K'
          theorem AddSubgroup.map_mono {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} {K K' : AddSubgroup G} :
          K โ‰ค K' โ†’ map f K โ‰ค map f K'
          @[simp]
          theorem Subgroup.map_id {G : Type u_1} [Group G] (K : Subgroup G) :
          map (MonoidHom.id G) K = K
          @[simp]
          theorem AddSubgroup.map_id {G : Type u_1} [AddGroup G] (K : AddSubgroup G) :
          theorem Subgroup.map_map {G : Type u_1} [Group G] (K : Subgroup G) {N : Type u_5} [Group N] {P : Type u_6} [Group P] (g : N โ†’* P) (f : G โ†’* N) :
          map g (map f K) = map (g.comp f) K
          theorem AddSubgroup.map_map {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {N : Type u_5} [AddGroup N] {P : Type u_6} [AddGroup P] (g : N โ†’+ P) (f : G โ†’+ N) :
          map g (map f K) = map (g.comp f) K
          @[simp]
          theorem Subgroup.map_one_eq_bot {G : Type u_1} [Group G] (K : Subgroup G) {N : Type u_5} [Group N] :
          @[simp]
          theorem AddSubgroup.map_zero_eq_bot {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {N : Type u_5} [AddGroup N] :
          theorem Subgroup.mem_map_equiv {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ‰ƒ* N} {K : Subgroup G} {x : N} :
          x โˆˆ map f.toMonoidHom K โ†” f.symm x โˆˆ K
          theorem AddSubgroup.mem_map_equiv {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ‰ƒ+ N} {K : AddSubgroup G} {x : N} :
          x โˆˆ map f.toAddMonoidHom K โ†” f.symm x โˆˆ K
          @[simp]
          theorem Subgroup.mem_map_iff_mem {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} (hf : Function.Injective โ‡‘f) {K : Subgroup G} {x : G} :
          f x โˆˆ map f K โ†” x โˆˆ K
          @[simp]
          theorem AddSubgroup.mem_map_iff_mem {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} (hf : Function.Injective โ‡‘f) {K : AddSubgroup G} {x : G} :
          f x โˆˆ map f K โ†” x โˆˆ K
          theorem Subgroup.map_equiv_eq_comap_symm {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ‰ƒ* N) (K : Subgroup G) :
          map (โ†‘f) K = comap (โ†‘f.symm) K
          theorem AddSubgroup.map_equiv_eq_comap_symm {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ‰ƒ+ N) (K : AddSubgroup G) :
          map (โ†‘f) K = comap (โ†‘f.symm) K
          theorem Subgroup.comap_equiv_eq_map_symm {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : N โ‰ƒ* G) (K : Subgroup G) :
          comap (โ†‘f) K = map (โ†‘f.symm) K
          theorem AddSubgroup.comap_equiv_eq_map_symm {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : N โ‰ƒ+ G) (K : AddSubgroup G) :
          comap (โ†‘f) K = map (โ†‘f.symm) K
          theorem Subgroup.map_symm_eq_iff_map_eq {G : Type u_1} [Group G] (K : Subgroup G) {N : Type u_5} [Group N] {H : Subgroup N} {e : G โ‰ƒ* N} :
          map (โ†‘e.symm) H = K โ†” map (โ†‘e) K = H
          theorem AddSubgroup.map_symm_eq_iff_map_eq {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {N : Type u_5} [AddGroup N] {H : AddSubgroup N} {e : G โ‰ƒ+ N} :
          map (โ†‘e.symm) H = K โ†” map (โ†‘e) K = H
          theorem Subgroup.map_le_iff_le_comap {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} {K : Subgroup G} {H : Subgroup N} :
          map f K โ‰ค H โ†” K โ‰ค comap f H
          theorem AddSubgroup.map_le_iff_le_comap {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} {K : AddSubgroup G} {H : AddSubgroup N} :
          map f K โ‰ค H โ†” K โ‰ค comap f H
          theorem Subgroup.gc_map_comap {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) :
          theorem Subgroup.map_sup {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H K : Subgroup G) (f : G โ†’* N) :
          map f (H โŠ” K) = map f H โŠ” map f K
          theorem AddSubgroup.map_sup {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H K : AddSubgroup G) (f : G โ†’+ N) :
          map f (H โŠ” K) = map f H โŠ” map f K
          theorem Subgroup.map_iSup {G : Type u_1} [Group G] {N : Type u_5} [Group N] {ฮน : Sort u_7} (f : G โ†’* N) (s : ฮน โ†’ Subgroup G) :
          map f (iSup s) = โจ† (i : ฮน), map f (s i)
          theorem AddSubgroup.map_iSup {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {ฮน : Sort u_7} (f : G โ†’+ N) (s : ฮน โ†’ AddSubgroup G) :
          map f (iSup s) = โจ† (i : ฮน), map f (s i)
          theorem Subgroup.map_inf {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H K : Subgroup G) (f : G โ†’* N) (hf : Function.Injective โ‡‘f) :
          map f (H โŠ“ K) = map f H โŠ“ map f K
          theorem AddSubgroup.map_inf {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H K : AddSubgroup G) (f : G โ†’+ N) (hf : Function.Injective โ‡‘f) :
          map f (H โŠ“ K) = map f H โŠ“ map f K
          theorem Subgroup.map_iInf {G : Type u_1} [Group G] {N : Type u_5} [Group N] {ฮน : Sort u_7} [Nonempty ฮน] (f : G โ†’* N) (hf : Function.Injective โ‡‘f) (s : ฮน โ†’ Subgroup G) :
          map f (iInf s) = โจ… (i : ฮน), map f (s i)
          theorem AddSubgroup.map_iInf {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {ฮน : Sort u_7} [Nonempty ฮน] (f : G โ†’+ N) (hf : Function.Injective โ‡‘f) (s : ฮน โ†’ AddSubgroup G) :
          map f (iInf s) = โจ… (i : ฮน), map f (s i)
          theorem Subgroup.comap_sup_comap_le {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H K : Subgroup N) (f : G โ†’* N) :
          comap f H โŠ” comap f K โ‰ค comap f (H โŠ” K)
          theorem AddSubgroup.comap_sup_comap_le {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H K : AddSubgroup N) (f : G โ†’+ N) :
          comap f H โŠ” comap f K โ‰ค comap f (H โŠ” K)
          theorem Subgroup.iSup_comap_le {G : Type u_1} [Group G] {N : Type u_5} [Group N] {ฮน : Sort u_7} (f : G โ†’* N) (s : ฮน โ†’ Subgroup N) :
          โจ† (i : ฮน), comap f (s i) โ‰ค comap f (iSup s)
          theorem AddSubgroup.iSup_comap_le {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {ฮน : Sort u_7} (f : G โ†’+ N) (s : ฮน โ†’ AddSubgroup N) :
          โจ† (i : ฮน), comap f (s i) โ‰ค comap f (iSup s)
          theorem Subgroup.comap_inf {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H K : Subgroup N) (f : G โ†’* N) :
          comap f (H โŠ“ K) = comap f H โŠ“ comap f K
          theorem AddSubgroup.comap_inf {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H K : AddSubgroup N) (f : G โ†’+ N) :
          comap f (H โŠ“ K) = comap f H โŠ“ comap f K
          theorem Subgroup.comap_iInf {G : Type u_1} [Group G] {N : Type u_5} [Group N] {ฮน : Sort u_7} (f : G โ†’* N) (s : ฮน โ†’ Subgroup N) :
          comap f (iInf s) = โจ… (i : ฮน), comap f (s i)
          theorem AddSubgroup.comap_iInf {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {ฮน : Sort u_7} (f : G โ†’+ N) (s : ฮน โ†’ AddSubgroup N) :
          comap f (iInf s) = โจ… (i : ฮน), comap f (s i)
          theorem Subgroup.map_inf_le {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H K : Subgroup G) (f : G โ†’* N) :
          map f (H โŠ“ K) โ‰ค map f H โŠ“ map f K
          theorem AddSubgroup.map_inf_le {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H K : AddSubgroup G) (f : G โ†’+ N) :
          map f (H โŠ“ K) โ‰ค map f H โŠ“ map f K
          theorem Subgroup.map_inf_eq {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H K : Subgroup G) (f : G โ†’* N) (hf : Function.Injective โ‡‘f) :
          map f (H โŠ“ K) = map f H โŠ“ map f K
          theorem AddSubgroup.map_inf_eq {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H K : AddSubgroup G) (f : G โ†’+ N) (hf : Function.Injective โ‡‘f) :
          map f (H โŠ“ K) = map f H โŠ“ map f K
          @[simp]
          theorem Subgroup.map_bot {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) :
          @[simp]
          theorem AddSubgroup.map_bot {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) :
          theorem Subgroup.disjoint_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} (hf : Function.Injective โ‡‘f) {H K : Subgroup G} (h : Disjoint H K) :
          Disjoint (map f H) (map f K)
          theorem AddSubgroup.disjoint_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} (hf : Function.Injective โ‡‘f) {H K : AddSubgroup G} (h : Disjoint H K) :
          Disjoint (map f H) (map f K)
          theorem Subgroup.map_top_of_surjective {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (h : Function.Surjective โ‡‘f) :
          theorem AddSubgroup.map_top_of_surjective {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (h : Function.Surjective โ‡‘f) :
          theorem Subgroup.codisjoint_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} (hf : Function.Surjective โ‡‘f) {H K : Subgroup G} (h : Codisjoint H K) :
          Codisjoint (map f H) (map f K)
          theorem AddSubgroup.codisjoint_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} (hf : Function.Surjective โ‡‘f) {H K : AddSubgroup G} (h : Codisjoint H K) :
          Codisjoint (map f H) (map f K)
          @[simp]
          theorem Subgroup.map_equiv_top {G : Type u_1} [Group G] {N : Type u_5} [Group N] {F : Type u_7} [EquivLike F G N] [MulEquivClass F G N] (f : F) :
          map โ†‘f โŠค = โŠค
          @[simp]
          theorem AddSubgroup.map_equiv_top {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {F : Type u_7} [EquivLike F G N] [AddEquivClass F G N] (f : F) :
          map โ†‘f โŠค = โŠค
          @[simp]
          theorem Subgroup.comap_top {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) :
          @[simp]
          theorem AddSubgroup.comap_top {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) :
          def Subgroup.subgroupOf {G : Type u_1} [Group G] (H K : Subgroup G) :
          Subgroup โ†ฅK

          For any subgroups H and K, view H โŠ“ K as a subgroup of K.

          Instances For
            def AddSubgroup.addSubgroupOf {G : Type u_1} [AddGroup G] (H K : AddSubgroup G) :
            AddSubgroup โ†ฅK

            For any subgroups H and K, view H โŠ“ K as a subgroup of K.

            Instances For
              def Subgroup.subgroupOfEquivOfLe {G : Type u_7} [Group G] {H K : Subgroup G} (h : H โ‰ค K) :
              โ†ฅ(H.subgroupOf K) โ‰ƒ* โ†ฅH

              If H โ‰ค K, then H as a subgroup of K is isomorphic to H.

              Instances For
                def AddSubgroup.addSubgroupOfEquivOfLe {G : Type u_7} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) :
                โ†ฅ(H.addSubgroupOf K) โ‰ƒ+ โ†ฅH

                If H โ‰ค K, then H as a subgroup of K is isomorphic to H.

                Instances For
                  @[simp]
                  theorem AddSubgroup.addSubgroupOfEquivOfLe_symm_apply_coe_coe {G : Type u_7} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) (g : โ†ฅH) :
                  โ†‘โ†‘((addSubgroupOfEquivOfLe h).symm g) = โ†‘g
                  @[simp]
                  theorem Subgroup.subgroupOfEquivOfLe_apply_coe {G : Type u_7} [Group G] {H K : Subgroup G} (h : H โ‰ค K) (g : โ†ฅ(H.subgroupOf K)) :
                  โ†‘((subgroupOfEquivOfLe h) g) = โ†‘โ†‘g
                  @[simp]
                  theorem Subgroup.subgroupOfEquivOfLe_symm_apply_coe_coe {G : Type u_7} [Group G] {H K : Subgroup G} (h : H โ‰ค K) (g : โ†ฅH) :
                  โ†‘โ†‘((subgroupOfEquivOfLe h).symm g) = โ†‘g
                  @[simp]
                  theorem AddSubgroup.addSubgroupOfEquivOfLe_apply_coe {G : Type u_7} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) (g : โ†ฅ(H.addSubgroupOf K)) :
                  โ†‘((addSubgroupOfEquivOfLe h) g) = โ†‘โ†‘g
                  theorem Subgroup.subgroupOf_mono {G : Type u_1} [Group G] {Hโ‚ Hโ‚‚ : Subgroup G} (Hโ‚ƒ : Subgroup G) (h : Hโ‚ โ‰ค Hโ‚‚) :
                  Hโ‚.subgroupOf Hโ‚ƒ โ‰ค Hโ‚‚.subgroupOf Hโ‚ƒ
                  theorem AddSubgroup.addSubgroupOf_mono {G : Type u_1} [AddGroup G] {Hโ‚ Hโ‚‚ : AddSubgroup G} (Hโ‚ƒ : AddSubgroup G) (h : Hโ‚ โ‰ค Hโ‚‚) :
                  Hโ‚.addSubgroupOf Hโ‚ƒ โ‰ค Hโ‚‚.addSubgroupOf Hโ‚ƒ
                  @[simp]
                  theorem Subgroup.comap_subtype {G : Type u_1} [Group G] (H K : Subgroup G) :
                  @[simp]
                  theorem Subgroup.comap_inclusion_subgroupOf {G : Type u_1} [Group G] {Kโ‚ Kโ‚‚ : Subgroup G} (h : Kโ‚ โ‰ค Kโ‚‚) (H : Subgroup G) :
                  comap (inclusion h) (H.subgroupOf Kโ‚‚) = H.subgroupOf Kโ‚
                  @[simp]
                  theorem AddSubgroup.comap_inclusion_addSubgroupOf {G : Type u_1} [AddGroup G] {Kโ‚ Kโ‚‚ : AddSubgroup G} (h : Kโ‚ โ‰ค Kโ‚‚) (H : AddSubgroup G) :
                  comap (inclusion h) (H.addSubgroupOf Kโ‚‚) = H.addSubgroupOf Kโ‚
                  theorem Subgroup.coe_subgroupOf {G : Type u_1} [Group G] (H K : Subgroup G) :
                  โ†‘(H.subgroupOf K) = โ‡‘K.subtype โปยน' โ†‘H
                  theorem AddSubgroup.coe_addSubgroupOf {G : Type u_1} [AddGroup G] (H K : AddSubgroup G) :
                  โ†‘(H.addSubgroupOf K) = โ‡‘K.subtype โปยน' โ†‘H
                  theorem Subgroup.mem_subgroupOf {G : Type u_1} [Group G] {H K : Subgroup G} {h : โ†ฅK} :
                  h โˆˆ H.subgroupOf K โ†” โ†‘h โˆˆ H
                  theorem AddSubgroup.mem_addSubgroupOf {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} {h : โ†ฅK} :
                  h โˆˆ H.addSubgroupOf K โ†” โ†‘h โˆˆ H
                  @[simp]
                  theorem Subgroup.subgroupOf_map_subtype {G : Type u_1} [Group G] (H K : Subgroup G) :
                  map K.subtype (H.subgroupOf K) = H โŠ“ K
                  @[simp]
                  theorem Subgroup.subgroupOf_inj {G : Type u_1} [Group G] {Hโ‚ Hโ‚‚ K : Subgroup G} :
                  Hโ‚.subgroupOf K = Hโ‚‚.subgroupOf K โ†” Hโ‚ โŠ“ K = Hโ‚‚ โŠ“ K
                  @[simp]
                  theorem AddSubgroup.addSubgroupOf_inj {G : Type u_1} [AddGroup G] {Hโ‚ Hโ‚‚ K : AddSubgroup G} :
                  Hโ‚.addSubgroupOf K = Hโ‚‚.addSubgroupOf K โ†” Hโ‚ โŠ“ K = Hโ‚‚ โŠ“ K
                  @[simp]
                  theorem Subgroup.inf_subgroupOf_right {G : Type u_1} [Group G] (H K : Subgroup G) :
                  (H โŠ“ K).subgroupOf K = H.subgroupOf K
                  @[simp]
                  theorem Subgroup.inf_subgroupOf_left {G : Type u_1} [Group G] (H K : Subgroup G) :
                  (K โŠ“ H).subgroupOf K = H.subgroupOf K
                  @[simp]
                  theorem Subgroup.subgroupOf_eq_bot {G : Type u_1} [Group G] {H K : Subgroup G} :
                  H.subgroupOf K = โŠฅ โ†” Disjoint H K
                  @[simp]
                  theorem Subgroup.subgroupOf_eq_top {G : Type u_1} [Group G] {H K : Subgroup G} :
                  H.subgroupOf K = โŠค โ†” K โ‰ค H
                  instance Subgroup.map_isMulCommutative {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) (f : G โ†’* G') [IsMulCommutative โ†ฅH] :
                  IsMulCommutative โ†ฅ(map f H)
                  instance AddSubgroup.map_isAddCommutative {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) (f : G โ†’+ G') [IsAddCommutative โ†ฅH] :
                  IsAddCommutative โ†ฅ(map f H)
                  theorem Subgroup.comap_injective_isMulCommutative {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) {f : G' โ†’* G} (hf : Function.Injective โ‡‘f) [IsMulCommutative โ†ฅH] :
                  IsMulCommutative โ†ฅ(comap f H)
                  theorem AddSubgroup.comap_injective_isAddCommutative {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) {f : G' โ†’+ G} (hf : Function.Injective โ‡‘f) [IsAddCommutative โ†ฅH] :
                  IsAddCommutative โ†ฅ(comap f H)
                  def MulEquiv.comapSubgroup {G : Type u_1} [Group G] {H : Type u_5} [Group H] (f : G โ‰ƒ* H) :

                  An isomorphism of groups gives an order isomorphism between the lattices of subgroups, defined by sending subgroups to their inverse images.

                  See also MulEquiv.mapSubgroup which maps subgroups to their forward images.

                  Instances For

                    An isomorphism of groups gives an order isomorphism between the lattices of subgroups, defined by sending subgroups to their inverse images.

                    See also AddEquiv.mapAddSubgroup which maps subgroups to their forward images.

                    Instances For
                      @[simp]
                      theorem AddEquiv.comapAddSubgroup_apply {G : Type u_1} [AddGroup G] {H : Type u_5} [AddGroup H] (f : G โ‰ƒ+ H) (Hโœ : AddSubgroup H) :
                      f.comapAddSubgroup Hโœ = AddSubgroup.comap (โ†‘f) Hโœ
                      @[simp]
                      theorem MulEquiv.comapSubgroup_apply {G : Type u_1} [Group G] {H : Type u_5} [Group H] (f : G โ‰ƒ* H) (Hโœ : Subgroup H) :
                      f.comapSubgroup Hโœ = Subgroup.comap (โ†‘f) Hโœ
                      @[simp]
                      theorem AddEquiv.comapAddSubgroup_symm_apply {G : Type u_1} [AddGroup G] {H : Type u_5} [AddGroup H] (f : G โ‰ƒ+ H) (Hโœ : AddSubgroup G) :
                      (RelIso.symm f.comapAddSubgroup) Hโœ = AddSubgroup.comap (โ†‘f.symm) Hโœ
                      @[simp]
                      theorem MulEquiv.comapSubgroup_symm_apply {G : Type u_1} [Group G] {H : Type u_5} [Group H] (f : G โ‰ƒ* H) (Hโœ : Subgroup G) :
                      (RelIso.symm f.comapSubgroup) Hโœ = Subgroup.comap (โ†‘f.symm) Hโœ
                      @[simp]
                      theorem MulEquiv.coe_comapSubgroup {G : Type u_1} [Group G] {H : Type u_5} [Group H] (e : G โ‰ƒ* H) :
                      def MulEquiv.mapSubgroup {G : Type u_1} [Group G] {H : Type u_6} [Group H] (f : G โ‰ƒ* H) :

                      An isomorphism of groups gives an order isomorphism between the lattices of subgroups, defined by sending subgroups to their forward images.

                      See also MulEquiv.comapSubgroup which maps subgroups to their inverse images.

                      Instances For

                        An isomorphism of groups gives an order isomorphism between the lattices of subgroups, defined by sending subgroups to their forward images.

                        See also AddEquiv.comapAddSubgroup which maps subgroups to their inverse images.

                        Instances For
                          @[simp]
                          theorem AddEquiv.mapAddSubgroup_symm_apply {G : Type u_1} [AddGroup G] {H : Type u_6} [AddGroup H] (f : G โ‰ƒ+ H) (Hโœ : AddSubgroup H) :
                          (RelIso.symm f.mapAddSubgroup) Hโœ = AddSubgroup.map (โ†‘f.symm) Hโœ
                          @[simp]
                          theorem AddEquiv.mapAddSubgroup_apply {G : Type u_1} [AddGroup G] {H : Type u_6} [AddGroup H] (f : G โ‰ƒ+ H) (Hโœ : AddSubgroup G) :
                          f.mapAddSubgroup Hโœ = AddSubgroup.map (โ†‘f) Hโœ
                          @[simp]
                          theorem MulEquiv.mapSubgroup_apply {G : Type u_1} [Group G] {H : Type u_6} [Group H] (f : G โ‰ƒ* H) (Hโœ : Subgroup G) :
                          f.mapSubgroup Hโœ = Subgroup.map (โ†‘f) Hโœ
                          @[simp]
                          theorem MulEquiv.mapSubgroup_symm_apply {G : Type u_1} [Group G] {H : Type u_6} [Group H] (f : G โ‰ƒ* H) (Hโœ : Subgroup H) :
                          (RelIso.symm f.mapSubgroup) Hโœ = Subgroup.map (โ†‘f.symm) Hโœ
                          @[simp]
                          theorem MulEquiv.coe_mapSubgroup {G : Type u_1} [Group G] {H : Type u_5} [Group H] (e : G โ‰ƒ* H) :
                          @[simp]
                          theorem MulEquiv.symm_mapSubgroup {G : Type u_1} [Group G] {H : Type u_5} [Group H] (e : G โ‰ƒ* H) :
                          @[simp]
                          theorem Subgroup.comap_toSubmonoid {G : Type u_1} [Group G] {N : Type u_5} [Group N] (e : G โ‰ƒ* N) (s : Subgroup N) :
                          theorem Subgroup.map_comap_le {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (H : Subgroup N) :
                          map f (comap f H) โ‰ค H
                          theorem AddSubgroup.map_comap_le {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (H : AddSubgroup N) :
                          map f (comap f H) โ‰ค H
                          theorem Subgroup.le_comap_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (H : Subgroup G) :
                          H โ‰ค comap f (map f H)
                          theorem AddSubgroup.le_comap_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (H : AddSubgroup G) :
                          H โ‰ค comap f (map f H)
                          theorem Subgroup.map_eq_comap_of_inverse {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} {g : N โ†’* G} (hl : Function.LeftInverse โ‡‘g โ‡‘f) (hr : Function.RightInverse โ‡‘g โ‡‘f) (H : Subgroup G) :
                          map f H = comap g H
                          theorem AddSubgroup.map_eq_comap_of_inverse {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} {g : N โ†’+ G} (hl : Function.LeftInverse โ‡‘g โ‡‘f) (hr : Function.RightInverse โ‡‘g โ‡‘f) (H : AddSubgroup G) :
                          map f H = comap g H
                          noncomputable def Subgroup.equivMapOfInjective {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H : Subgroup G) (f : G โ†’* N) (hf : Function.Injective โ‡‘f) :
                          โ†ฅH โ‰ƒ* โ†ฅ(map f H)

                          A subgroup is isomorphic to its image under an injective function. If you have an isomorphism, use MulEquiv.subgroupMap for better definitional equalities.

                          Instances For
                            noncomputable def AddSubgroup.equivMapOfInjective {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H : AddSubgroup G) (f : G โ†’+ N) (hf : Function.Injective โ‡‘f) :
                            โ†ฅH โ‰ƒ+ โ†ฅ(map f H)

                            An additive subgroup is isomorphic to its image under an injective function. If you have an isomorphism, use AddEquiv.addSubgroupMap for better definitional equalities.

                            Instances For
                              @[simp]
                              theorem Subgroup.coe_equivMapOfInjective_apply {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H : Subgroup G) (f : G โ†’* N) (hf : Function.Injective โ‡‘f) (h : โ†ฅH) :
                              โ†‘((H.equivMapOfInjective f hf) h) = f โ†‘h
                              @[simp]
                              theorem AddSubgroup.coe_equivMapOfInjective_apply {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H : AddSubgroup G) (f : G โ†’+ N) (hf : Function.Injective โ‡‘f) (h : โ†ฅH) :
                              โ†‘((H.equivMapOfInjective f hf) h) = f โ†‘h
                              def MonoidHom.subgroupComap {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (H' : Subgroup G') :
                              โ†ฅ(Subgroup.comap f H') โ†’* โ†ฅH'

                              The MonoidHom from the preimage of a subgroup to itself.

                              Instances For
                                def AddMonoidHom.addSubgroupComap {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G โ†’+ G') (H' : AddSubgroup G') :
                                โ†ฅ(AddSubgroup.comap f H') โ†’+ โ†ฅH'

                                the AddMonoidHom from the preimage of an additive subgroup to itself.

                                Instances For
                                  @[simp]
                                  theorem MonoidHom.subgroupComap_apply_coe {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (H' : Subgroup G') (x : โ†ฅ(Submonoid.comap f H'.toSubmonoid)) :
                                  โ†‘((f.subgroupComap H') x) = f โ†‘x
                                  @[simp]
                                  theorem AddMonoidHom.addSubgroupComap_apply_coe {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G โ†’+ G') (H' : AddSubgroup G') (x : โ†ฅ(AddSubmonoid.comap f H'.toAddSubmonoid)) :
                                  โ†‘((f.addSubgroupComap H') x) = f โ†‘x
                                  theorem MonoidHom.subgroupComap_surjective_of_surjective {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (H' : Subgroup G') (hf : Function.Surjective โ‡‘f) :
                                  Function.Surjective โ‡‘(f.subgroupComap H')
                                  theorem AddMonoidHom.addSubgroupComap_surjective_of_surjective {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G โ†’+ G') (H' : AddSubgroup G') (hf : Function.Surjective โ‡‘f) :
                                  Function.Surjective โ‡‘(f.addSubgroupComap H')
                                  def MonoidHom.subgroupMap {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (H : Subgroup G) :
                                  โ†ฅH โ†’* โ†ฅ(Subgroup.map f H)

                                  The MonoidHom from a subgroup to its image.

                                  Instances For
                                    def AddMonoidHom.addSubgroupMap {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G โ†’+ G') (H : AddSubgroup G) :
                                    โ†ฅH โ†’+ โ†ฅ(AddSubgroup.map f H)

                                    the AddMonoidHom from an additive subgroup to its image

                                    Instances For
                                      @[simp]
                                      theorem MonoidHom.subgroupMap_apply_coe {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (H : Subgroup G) (x : โ†ฅH.toSubmonoid) :
                                      โ†‘((f.subgroupMap H) x) = f โ†‘x
                                      @[simp]
                                      theorem AddMonoidHom.addSubgroupMap_apply_coe {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G โ†’+ G') (H : AddSubgroup G) (x : โ†ฅH.toAddSubmonoid) :
                                      โ†‘((f.addSubgroupMap H) x) = f โ†‘x
                                      theorem MonoidHom.subgroupMap_surjective {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G โ†’* G') (H : Subgroup G) :
                                      Function.Surjective โ‡‘(f.subgroupMap H)
                                      theorem AddMonoidHom.addSubgroupMap_surjective {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G โ†’+ G') (H : AddSubgroup G) :
                                      Function.Surjective โ‡‘(f.addSubgroupMap H)
                                      def MulEquiv.subgroupCongr {G : Type u_1} [Group G] {H K : Subgroup G} (h : H = K) :
                                      โ†ฅH โ‰ƒ* โ†ฅK

                                      Makes the identity isomorphism from a proof two subgroups of a multiplicative group are equal.

                                      Instances For
                                        def AddEquiv.addSubgroupCongr {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H = K) :
                                        โ†ฅH โ‰ƒ+ โ†ฅK

                                        Makes the identity additive isomorphism from a proof two subgroups of an additive group are equal.

                                        Instances For
                                          @[simp]
                                          theorem MulEquiv.subgroupCongr_apply {G : Type u_1} [Group G] {H K : Subgroup G} (h : H = K) (x : โ†ฅH) :
                                          โ†‘((subgroupCongr h) x) = โ†‘x
                                          @[simp]
                                          theorem AddEquiv.addSubgroupCongr_apply {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H = K) (x : โ†ฅH) :
                                          โ†‘((addSubgroupCongr h) x) = โ†‘x
                                          @[simp]
                                          theorem MulEquiv.subgroupCongr_symm_apply {G : Type u_1} [Group G] {H K : Subgroup G} (h : H = K) (x : โ†ฅK) :
                                          โ†‘((subgroupCongr h).symm x) = โ†‘x
                                          @[simp]
                                          theorem AddEquiv.addSubgroupCongr_symm_apply {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H = K) (x : โ†ฅK) :
                                          โ†‘((addSubgroupCongr h).symm x) = โ†‘x
                                          def MulEquiv.subgroupMap {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (e : G โ‰ƒ* G') (H : Subgroup G) :
                                          โ†ฅH โ‰ƒ* โ†ฅ(Subgroup.map (โ†‘e) H)

                                          A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map, use Subgroup.equivMapOfInjective.

                                          Instances For
                                            def AddEquiv.addSubgroupMap {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (e : G โ‰ƒ+ G') (H : AddSubgroup G) :
                                            โ†ฅH โ‰ƒ+ โ†ฅ(AddSubgroup.map (โ†‘e) H)

                                            An additive subgroup is isomorphic to its image under an isomorphism. If you only have an injective map, use AddSubgroup.equivMapOfInjective.

                                            Instances For
                                              @[simp]
                                              theorem MulEquiv.coe_subgroupMap_apply {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (e : G โ‰ƒ* G') (H : Subgroup G) (g : โ†ฅH) :
                                              โ†‘((e.subgroupMap H) g) = e โ†‘g
                                              @[simp]
                                              theorem AddEquiv.coe_addSubgroupMap_apply {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (e : G โ‰ƒ+ G') (H : AddSubgroup G) (g : โ†ฅH) :
                                              โ†‘((e.addSubgroupMap H) g) = e โ†‘g
                                              @[simp]
                                              theorem MulEquiv.subgroupMap_symm_apply {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (e : G โ‰ƒ* G') (H : Subgroup G) (g : โ†ฅ(Subgroup.map (โ†‘e) H)) :
                                              (e.subgroupMap H).symm g = โŸจe.symm โ†‘g, โ‹ฏโŸฉ
                                              @[simp]
                                              theorem AddEquiv.addSubgroupMap_symm_apply {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (e : G โ‰ƒ+ G') (H : AddSubgroup G) (g : โ†ฅ(AddSubgroup.map (โ†‘e) H)) :
                                              (e.addSubgroupMap H).symm g = โŸจe.symm โ†‘g, โ‹ฏโŸฉ
                                              theorem MonoidHom.map_closure {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G โ†’* N) (s : Set G) :

                                              The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup generated by the image of the set.

                                              theorem AddMonoidHom.map_closure {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G โ†’+ N) (s : Set G) :

                                              The image under an AddMonoid hom of the AddSubgroup generated by a set equals the AddSubgroup generated by the image of the set.

                                              theorem Subgroup.surjOn_iff_le_map {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G โ†’* N} {H : Subgroup G} {K : Subgroup N} :
                                              Set.SurjOn โ‡‘f โ†‘H โ†‘K โ†” K โ‰ค map f H
                                              theorem AddSubgroup.surjOn_iff_le_map {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G โ†’+ N} {H : AddSubgroup G} {K : AddSubgroup N} :
                                              Set.SurjOn โ‡‘f โ†‘H โ†‘K โ†” K โ‰ค map f H
                                              @[simp]
                                              theorem Subgroup.equivMapOfInjective_coe_mulEquiv {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) (e : G โ‰ƒ* G') :
                                              H.equivMapOfInjective โ†‘e โ‹ฏ = e.subgroupMap H
                                              @[simp]
                                              theorem AddSubgroup.equivMapOfInjective_coe_addEquiv {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) (e : G โ‰ƒ+ G') :
                                              H.equivMapOfInjective โ†‘e โ‹ฏ = e.addSubgroupMap H