Documentation

Mathlib.Algebra.Group.Subgroup.Defs

Subgroups #

This file defines multiplicative and additive subgroups as an extension of submonoids, in a bundled form.

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

class InvMemClass (S : Type u_3) (G : outParam (Type u_4)) [Inv G] [SetLike S G] :

InvMemClass S G states S is a type of subsets s โІ G closed under inverses.

  • inv_mem {s : S} {x : G} : x โˆˆ s โ†’ xโปยน โˆˆ s

    s is closed under inverses

Instances
    class NegMemClass (S : Type u_3) (G : outParam (Type u_4)) [Neg G] [SetLike S G] :

    NegMemClass S G states S is a type of subsets s โІ G closed under negation.

    • neg_mem {s : S} {x : G} : x โˆˆ s โ†’ -x โˆˆ s

      s is closed under negation

    Instances
      class HasMemOrNegMem {S : Type u_3} {G : Type u_4} [Neg G] [SetLike S G] (s : S) :

      Typeclass for substructures s such that s โˆช -s = G.

      • mem_or_neg_mem (a : G) : a โˆˆ s โˆจ -a โˆˆ s
      Instances
        class HasMemOrInvMem {S : Type u_3} {G : Type u_4} [Inv G] [SetLike S G] (s : S) :

        Typeclass for substructures s such that s โˆช sโปยน = G.

        • mem_or_inv_mem (a : G) : a โˆˆ s โˆจ aโปยน โˆˆ s
        Instances
          theorem HasMemOrInvMem.inv_mem_of_notMem {S : Type u_3} {G : Type u_4} [Inv G] [SetLike S G] (s : S) [HasMemOrInvMem s] (x : G) (h : x โˆ‰ s) :
          xโปยน โˆˆ s
          theorem HasMemOrNegMem.neg_mem_of_notMem {S : Type u_3} {G : Type u_4} [Neg G] [SetLike S G] (s : S) [HasMemOrNegMem s] (x : G) (h : x โˆ‰ s) :
          -x โˆˆ s
          theorem HasMemOrInvMem.mem_of_inv_notMem {S : Type u_3} {G : Type u_4} [Inv G] [SetLike S G] (s : S) [HasMemOrInvMem s] (x : G) (h : xโปยน โˆ‰ s) :
          x โˆˆ s
          theorem HasMemOrNegMem.mem_of_neg_notMem {S : Type u_3} {G : Type u_4} [Neg G] [SetLike S G] (s : S) [HasMemOrNegMem s] (x : G) (h : -x โˆ‰ s) :
          x โˆˆ s
          class SubgroupClass (S : Type u_3) (G : outParam (Type u_4)) [DivInvMonoid G] [SetLike S G] extends SubmonoidClass S G, InvMemClass S G :

          SubgroupClass S G states S is a type of subsets s โІ G that are subgroups of G.

          • mul_mem {s : S} {a b : G} : a โˆˆ s โ†’ b โˆˆ s โ†’ a * b โˆˆ s
          • one_mem (s : S) : 1 โˆˆ s
          • inv_mem {s : S} {x : G} : x โˆˆ s โ†’ xโปยน โˆˆ s
          Instances
            class AddSubgroupClass (S : Type u_3) (G : outParam (Type u_4)) [SubNegMonoid G] [SetLike S G] extends AddSubmonoidClass S G, NegMemClass S G :

            AddSubgroupClass S G states S is a type of subsets s โІ G that are additive subgroups of G.

            • add_mem {s : S} {a b : G} : a โˆˆ s โ†’ b โˆˆ s โ†’ a + b โˆˆ s
            • zero_mem (s : S) : 0 โˆˆ s
            • neg_mem {s : S} {x : G} : x โˆˆ s โ†’ -x โˆˆ s
            Instances
              @[simp]
              theorem inv_mem_iff {S : Type u_3} {G : Type u_4} [InvolutiveInv G] {xโœ : SetLike S G} [InvMemClass S G] {H : S} {x : G} :
              xโปยน โˆˆ H โ†” x โˆˆ H
              @[simp]
              theorem neg_mem_iff {S : Type u_3} {G : Type u_4} [InvolutiveNeg G] {xโœ : SetLike S G} [NegMemClass S G] {H : S} {x : G} :
              -x โˆˆ H โ†” x โˆˆ H
              theorem div_mem {M : Type u_3} {S : Type u_4} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H : S} {x y : M} (hx : x โˆˆ H) (hy : y โˆˆ H) :
              x / y โˆˆ H

              A subgroup is closed under division.

              theorem sub_mem {M : Type u_3} {S : Type u_4} [SubNegMonoid M] [SetLike S M] [hSM : AddSubgroupClass S M] {H : S} {x y : M} (hx : x โˆˆ H) (hy : y โˆˆ H) :
              x - y โˆˆ H

              An additive subgroup is closed under subtraction.

              theorem zpow_mem {M : Type u_3} {S : Type u_4} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {K : S} {x : M} (hx : x โˆˆ K) (n : โ„ค) :
              x ^ n โˆˆ K
              theorem zsmul_mem {M : Type u_3} {S : Type u_4} [SubNegMonoid M] [SetLike S M] [hSM : AddSubgroupClass S M] {K : S} {x : M} (hx : x โˆˆ K) (n : โ„ค) :
              n โ€ข x โˆˆ K
              theorem exists_inv_mem_iff_exists_mem {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] {P : G โ†’ Prop} :
              (โˆƒ x โˆˆ H, P xโปยน) โ†” โˆƒ x โˆˆ H, P x
              theorem exists_neg_mem_iff_exists_mem {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] {P : G โ†’ Prop} :
              (โˆƒ x โˆˆ H, P (-x)) โ†” โˆƒ x โˆˆ H, P x
              theorem mul_mem_cancel_right {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] {x y : G} (h : x โˆˆ H) :
              y * x โˆˆ H โ†” y โˆˆ H
              theorem add_mem_cancel_right {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] {x y : G} (h : x โˆˆ H) :
              y + x โˆˆ H โ†” y โˆˆ H
              theorem mul_mem_cancel_left {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] {x y : G} (h : x โˆˆ H) :
              x * y โˆˆ H โ†” y โˆˆ H
              theorem add_mem_cancel_left {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] {x y : G} (h : x โˆˆ H) :
              x + y โˆˆ H โ†” y โˆˆ H
              @[implicit_reducible]
              instance InvMemClass.inv {G : Type u_5} {S : Type u_6} [Inv G] [SetLike S G] [InvMemClass S G] {H : S} :
              Inv โ†ฅH

              A subgroup of a group inherits an inverse.

              @[implicit_reducible]
              instance NegMemClass.neg {G : Type u_5} {S : Type u_6} [Neg G] [SetLike S G] [NegMemClass S G] {H : S} :
              Neg โ†ฅH

              An additive subgroup of an AddGroup inherits an inverse.

              @[simp]
              theorem InvMemClass.coe_inv {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] (x : โ†ฅH) :
              โ†‘xโปยน = (โ†‘x)โปยน
              @[simp]
              theorem NegMemClass.coe_neg {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] (x : โ†ฅH) :
              โ†‘(-x) = -โ†‘x
              theorem SubgroupClass.subset_union {G : Type u_1} [Group G] {S : Type u_4} [SetLike S G] [SubgroupClass S G] [LE S] [IsConcreteLE S G] {H K L : S} :
              โ†‘H โІ โ†‘K โˆช โ†‘L โ†” H โ‰ค K โˆจ H โ‰ค L
              theorem AddSubgroupClass.subset_union {G : Type u_1} [AddGroup G] {S : Type u_4} [SetLike S G] [AddSubgroupClass S G] [LE S] [IsConcreteLE S G] {H K L : S} :
              โ†‘H โІ โ†‘K โˆช โ†‘L โ†” H โ‰ค K โˆจ H โ‰ค L
              @[implicit_reducible]
              instance SubgroupClass.div {G : Type u_5} {S : Type u_6} [DivInvMonoid G] [SetLike S G] [SubgroupClass S G] {H : S} :
              Div โ†ฅH

              A subgroup of a group inherits a division

              @[implicit_reducible]
              instance AddSubgroupClass.sub {G : Type u_5} {S : Type u_6} [SubNegMonoid G] [SetLike S G] [AddSubgroupClass S G] {H : S} :
              Sub โ†ฅH

              An additive subgroup of an AddGroup inherits a subtraction.

              @[implicit_reducible]
              instance SubgroupClass.instZPow {M : Type u_5} {S : Type u_6} [DivInvMonoid M] [SetLike S M] [SubgroupClass S M] {H : S} :
              Pow โ†ฅH โ„ค

              A subgroup of a group inherits an integer power.

              @[implicit_reducible]
              instance AddSubgroupClass.instZSMul {M : Type u_5} {S : Type u_6} [SubNegMonoid M] [SetLike S M] [AddSubgroupClass S M] {H : S} :
              SMul โ„ค โ†ฅH

              An additive subgroup of an AddGroup inherits an integer scaling.

              @[simp]
              theorem SubgroupClass.coe_div {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] (x y : โ†ฅH) :
              โ†‘(x / y) = โ†‘x / โ†‘y
              @[simp]
              theorem AddSubgroupClass.coe_sub {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] (x y : โ†ฅH) :
              โ†‘(x - y) = โ†‘x - โ†‘y
              @[implicit_reducible, instance 75]
              instance SubgroupClass.toGroup {G : Type u_1} [Group G] {S : Type u_4} (H : S) [SetLike S G] [SubgroupClass S G] :
              Group โ†ฅH

              A subgroup of a group inherits a group structure.

              @[implicit_reducible, instance 75]
              instance AddSubgroupClass.toAddGroup {G : Type u_1} [AddGroup G] {S : Type u_4} (H : S) [SetLike S G] [AddSubgroupClass S G] :
              AddGroup โ†ฅH

              An additive subgroup of an AddGroup inherits an AddGroup structure.

              @[implicit_reducible, instance 75]
              instance SubgroupClass.toCommGroup {S : Type u_4} (H : S) {G : Type u_5} [CommGroup G] [SetLike S G] [SubgroupClass S G] :
              CommGroup โ†ฅH

              A subgroup of a CommGroup is a CommGroup.

              @[implicit_reducible, instance 75]
              instance AddSubgroupClass.toAddCommGroup {S : Type u_4} (H : S) {G : Type u_5} [AddCommGroup G] [SetLike S G] [AddSubgroupClass S G] :
              AddCommGroup โ†ฅH

              An additive subgroup of an AddCommGroup is an AddCommGroup.

              def SubgroupClass.subtype {G : Type u_1} [Group G] {S : Type u_4} (H : S) [SetLike S G] [SubgroupClass S G] :
              โ†ฅH โ†’* G

              The natural group hom from a subgroup of group G to G.

              Instances For
                def AddSubgroupClass.subtype {G : Type u_1} [AddGroup G] {S : Type u_4} (H : S) [SetLike S G] [AddSubgroupClass S G] :
                โ†ฅH โ†’+ G

                The natural group hom from an additive subgroup of AddGroup G to G.

                Instances For
                  @[simp]
                  theorem SubgroupClass.subtype_apply {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] (x : โ†ฅH) :
                  โ†‘H x = โ†‘x
                  @[simp]
                  theorem AddSubgroupClass.subtype_apply {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] (x : โ†ฅH) :
                  โ†‘H x = โ†‘x
                  theorem SubgroupClass.subtype_injective {G : Type u_1} [Group G] {S : Type u_4} (H : S) [SetLike S G] [SubgroupClass S G] :
                  Function.Injective โ‡‘โ†‘H
                  theorem AddSubgroupClass.subtype_injective {G : Type u_1} [AddGroup G] {S : Type u_4} (H : S) [SetLike S G] [AddSubgroupClass S G] :
                  Function.Injective โ‡‘โ†‘H
                  @[simp]
                  theorem SubgroupClass.coe_subtype {G : Type u_1} [Group G] {S : Type u_4} (H : S) [SetLike S G] [SubgroupClass S G] :
                  โ‡‘โ†‘H = Subtype.val
                  @[simp]
                  theorem AddSubgroupClass.coe_subtype {G : Type u_1} [AddGroup G] {S : Type u_4} (H : S) [SetLike S G] [AddSubgroupClass S G] :
                  โ‡‘โ†‘H = Subtype.val
                  @[simp]
                  theorem SubgroupClass.coe_pow {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] (x : โ†ฅH) (n : โ„•) :
                  โ†‘(x ^ n) = โ†‘x ^ n
                  @[simp]
                  theorem AddSubgroupClass.coe_nsmul {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] (x : โ†ฅH) (n : โ„•) :
                  โ†‘(n โ€ข x) = n โ€ข โ†‘x
                  @[simp]
                  theorem SubgroupClass.coe_zpow {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] (x : โ†ฅH) (n : โ„ค) :
                  โ†‘(x ^ n) = โ†‘x ^ n
                  @[simp]
                  theorem AddSubgroupClass.coe_zsmul {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] (x : โ†ฅH) (n : โ„ค) :
                  โ†‘(n โ€ข x) = n โ€ข โ†‘x
                  def SubgroupClass.inclusion {G : Type u_1} [Group G] {S : Type u_4} [SetLike S G] [SubgroupClass S G] [LE S] [IsConcreteLE S G] {H K : S} (h : H โ‰ค K) :
                  โ†ฅH โ†’* โ†ฅK

                  The inclusion homomorphism from a subgroup H contained in K to K.

                  Instances For
                    def AddSubgroupClass.inclusion {G : Type u_1} [AddGroup G] {S : Type u_4} [SetLike S G] [AddSubgroupClass S G] [LE S] [IsConcreteLE S G] {H K : S} (h : H โ‰ค K) :
                    โ†ฅH โ†’+ โ†ฅK

                    The inclusion homomorphism from an additive subgroup H contained in K to K.

                    Instances For
                      @[simp]
                      theorem SubgroupClass.inclusion_self {G : Type u_1} [Group G] {S : Type u_4} {H : S} [SetLike S G] [SubgroupClass S G] [Preorder S] [IsConcreteLE S G] (x : โ†ฅH) :
                      (inclusion โ‹ฏ) x = x
                      @[simp]
                      theorem AddSubgroupClass.inclusion_self {G : Type u_1} [AddGroup G] {S : Type u_4} {H : S} [SetLike S G] [AddSubgroupClass S G] [Preorder S] [IsConcreteLE S G] (x : โ†ฅH) :
                      (inclusion โ‹ฏ) x = x
                      @[simp]
                      theorem SubgroupClass.inclusion_mk {G : Type u_1} [Group G] {S : Type u_4} {H K : S} [SetLike S G] [SubgroupClass S G] [LE S] [IsConcreteLE S G] {h : H โ‰ค K} (x : G) (hx : x โˆˆ H) :
                      (inclusion h) โŸจx, hxโŸฉ = โŸจx, โ‹ฏโŸฉ
                      @[simp]
                      theorem AddSubgroupClass.inclusion_mk {G : Type u_1} [AddGroup G] {S : Type u_4} {H K : S} [SetLike S G] [AddSubgroupClass S G] [LE S] [IsConcreteLE S G] {h : H โ‰ค K} (x : G) (hx : x โˆˆ H) :
                      (inclusion h) โŸจx, hxโŸฉ = โŸจx, โ‹ฏโŸฉ
                      theorem SubgroupClass.inclusion_right {G : Type u_1} [Group G] {S : Type u_4} {H K : S} [SetLike S G] [SubgroupClass S G] [LE S] [IsConcreteLE S G] (h : H โ‰ค K) (x : โ†ฅK) (hx : โ†‘x โˆˆ H) :
                      (inclusion h) โŸจโ†‘x, hxโŸฉ = x
                      theorem AddSubgroupClass.inclusion_right {G : Type u_1} [AddGroup G] {S : Type u_4} {H K : S} [SetLike S G] [AddSubgroupClass S G] [LE S] [IsConcreteLE S G] (h : H โ‰ค K) (x : โ†ฅK) (hx : โ†‘x โˆˆ H) :
                      (inclusion h) โŸจโ†‘x, hxโŸฉ = x
                      @[simp]
                      theorem SubgroupClass.inclusion_inclusion {G : Type u_1} [Group G] {S : Type u_4} {H K : S} [SetLike S G] [SubgroupClass S G] [Preorder S] [IsConcreteLE S G] {L : S} (hHK : H โ‰ค K) (hKL : K โ‰ค L) (x : โ†ฅH) :
                      (inclusion hKL) ((inclusion hHK) x) = (inclusion โ‹ฏ) x
                      @[simp]
                      theorem SubgroupClass.coe_inclusion {G : Type u_1} [Group G] {S : Type u_4} [SetLike S G] [SubgroupClass S G] [LE S] [IsConcreteLE S G] {H K : S} (h : H โ‰ค K) (a : โ†ฅH) :
                      โ†‘((inclusion h) a) = โ†‘a
                      @[simp]
                      theorem AddSubgroupClass.coe_inclusion {G : Type u_1} [AddGroup G] {S : Type u_4} [SetLike S G] [AddSubgroupClass S G] [LE S] [IsConcreteLE S G] {H K : S} (h : H โ‰ค K) (a : โ†ฅH) :
                      โ†‘((inclusion h) a) = โ†‘a
                      @[simp]
                      theorem SubgroupClass.subtype_comp_inclusion {G : Type u_1} [Group G] {S : Type u_4} [SetLike S G] [SubgroupClass S G] [LE S] [IsConcreteLE S G] {H K : S} (h : H โ‰ค K) :
                      (โ†‘K).comp (inclusion h) = โ†‘H
                      @[simp]
                      theorem AddSubgroupClass.subtype_comp_inclusion {G : Type u_1} [AddGroup G] {S : Type u_4} [SetLike S G] [AddSubgroupClass S G] [LE S] [IsConcreteLE S G] {H K : S} (h : H โ‰ค K) :
                      (โ†‘K).comp (inclusion h) = โ†‘H
                      structure Subgroup (G : Type u_3) [Group G] extends Submonoid G :
                      Type u_3

                      A subgroup of a group G is a subset containing 1, closed under multiplication and closed under multiplicative inverse.

                      Instances For
                        structure AddSubgroup (G : Type u_3) [AddGroup G] extends AddSubmonoid G :
                        Type u_3

                        An additive subgroup of an additive group G is a subset containing 0, closed under addition and additive inverse.

                        Instances For
                          @[implicit_reducible]
                          instance Subgroup.instSetLike {G : Type u_1} [Group G] :
                          @[implicit_reducible]
                          @[implicit_reducible]
                          def Subgroup.ofClass {S : Type u_3} {G : Type u_4} [Group G] [SetLike S G] [SubgroupClass S G] (s : S) :

                          The actual Subgroup obtained from an element of a SubgroupClass

                          Instances For
                            def AddSubgroup.ofClass {S : Type u_3} {G : Type u_4} [AddGroup G] [SetLike S G] [AddSubgroupClass S G] (s : S) :

                            The actual AddSubgroup obtained from an element of a AddSubgroupClass

                            Instances For
                              @[simp]
                              theorem AddSubgroup.coe_ofClass {S : Type u_3} {G : Type u_4} [AddGroup G] [SetLike S G] [AddSubgroupClass S G] (s : S) :
                              โ†‘(ofClass s) = โ†‘s
                              @[simp]
                              theorem Subgroup.coe_ofClass {S : Type u_3} {G : Type u_4} [Group G] [SetLike S G] [SubgroupClass S G] (s : S) :
                              โ†‘(ofClass s) = โ†‘s
                              @[instance 100]
                              instance Subgroup.instCanLiftSetCoeAndMemOfNatForallForallForallForallHMulForallForallInv {G : Type u_1} [Group G] :
                              CanLift (Set G) (Subgroup G) SetLike.coe fun (s : Set G) => 1 โˆˆ s โˆง (โˆ€ {x y : G}, x โˆˆ s โ†’ y โˆˆ s โ†’ x * y โˆˆ s) โˆง โˆ€ {x : G}, x โˆˆ s โ†’ xโปยน โˆˆ s
                              @[instance 100]
                              instance AddSubgroup.instCanLiftSetCoeAndMemOfNatForallForallForallForallHAddForallForallNeg {G : Type u_1} [AddGroup G] :
                              CanLift (Set G) (AddSubgroup G) SetLike.coe fun (s : Set G) => 0 โˆˆ s โˆง (โˆ€ {x y : G}, x โˆˆ s โ†’ y โˆˆ s โ†’ x + y โˆˆ s) โˆง โˆ€ {x : G}, x โˆˆ s โ†’ -x โˆˆ s
                              theorem Subgroup.mem_carrier {G : Type u_1} [Group G] {s : Subgroup G} {x : G} :
                              x โˆˆ s.carrier โ†” x โˆˆ s
                              theorem AddSubgroup.mem_carrier {G : Type u_1} [AddGroup G] {s : AddSubgroup G} {x : G} :
                              x โˆˆ s.carrier โ†” x โˆˆ s
                              @[simp]
                              theorem Subgroup.mem_mk {G : Type u_1} [Group G] {s : Submonoid G} {x : G} (h_inv : โˆ€ {x : G}, x โˆˆ s.carrier โ†’ xโปยน โˆˆ s.carrier) :
                              x โˆˆ { toSubmonoid := s, inv_mem' := h_inv } โ†” x โˆˆ s
                              @[simp]
                              theorem AddSubgroup.mem_mk {G : Type u_1} [AddGroup G] {s : AddSubmonoid G} {x : G} (h_neg : โˆ€ {x : G}, x โˆˆ s.carrier โ†’ -x โˆˆ s.carrier) :
                              x โˆˆ { toAddSubmonoid := s, neg_mem' := h_neg } โ†” x โˆˆ s
                              @[simp]
                              theorem Subgroup.coe_set_mk {G : Type u_1} [Group G] {s : Submonoid G} (h_inv : โˆ€ {x : G}, x โˆˆ s.carrier โ†’ xโปยน โˆˆ s.carrier) :
                              โ†‘{ toSubmonoid := s, inv_mem' := h_inv } = โ†‘s
                              @[simp]
                              theorem AddSubgroup.coe_set_mk {G : Type u_1} [AddGroup G] {s : AddSubmonoid G} (h_neg : โˆ€ {x : G}, x โˆˆ s.carrier โ†’ -x โˆˆ s.carrier) :
                              โ†‘{ toAddSubmonoid := s, neg_mem' := h_neg } = โ†‘s
                              @[simp]
                              theorem Subgroup.mk_le_mk {G : Type u_1} [Group G] {s t : Submonoid G} (h_inv : โˆ€ {x : G}, x โˆˆ s.carrier โ†’ xโปยน โˆˆ s.carrier) (h_inv' : โˆ€ {x : G}, x โˆˆ t.carrier โ†’ xโปยน โˆˆ t.carrier) :
                              { toSubmonoid := s, inv_mem' := h_inv } โ‰ค { toSubmonoid := t, inv_mem' := h_inv' } โ†” s โ‰ค t
                              @[simp]
                              theorem AddSubgroup.mk_le_mk {G : Type u_1} [AddGroup G] {s t : AddSubmonoid G} (h_neg : โˆ€ {x : G}, x โˆˆ s.carrier โ†’ -x โˆˆ s.carrier) (h_neg' : โˆ€ {x : G}, x โˆˆ t.carrier โ†’ -x โˆˆ t.carrier) :
                              { toAddSubmonoid := s, neg_mem' := h_neg } โ‰ค { toAddSubmonoid := t, neg_mem' := h_neg' } โ†” s โ‰ค t
                              @[simp]
                              theorem Subgroup.coe_toSubmonoid {G : Type u_1} [Group G] (K : Subgroup G) :
                              โ†‘K.toSubmonoid = โ†‘K
                              @[simp]
                              theorem AddSubgroup.coe_toAddSubmonoid {G : Type u_1} [AddGroup G] (K : AddSubgroup G) :
                              โ†‘K.toAddSubmonoid = โ†‘K
                              @[simp]
                              theorem Subgroup.mem_toSubmonoid {G : Type u_1} [Group G] (K : Subgroup G) (x : G) :
                              x โˆˆ K.toSubmonoid โ†” x โˆˆ K
                              @[simp]
                              theorem AddSubgroup.mem_toAddSubmonoid {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (x : G) :
                              x โˆˆ K.toAddSubmonoid โ†” x โˆˆ K
                              @[simp]
                              theorem Subgroup.toSubmonoid_inj {G : Type u_1} [Group G] {p q : Subgroup G} :
                              p.toSubmonoid = q.toSubmonoid โ†” p = q
                              @[simp]
                              theorem Subgroup.coe_nonempty {G : Type u_1} [Group G] (s : Subgroup G) :
                              (โ†‘s).Nonempty
                              @[simp]
                              theorem AddSubgroup.coe_nonempty {G : Type u_1} [AddGroup G] (s : AddSubgroup G) :
                              (โ†‘s).Nonempty
                              def Subgroup.copy {G : Type u_1} [Group G] (K : Subgroup G) (s : Set G) (hs : s = โ†‘K) :

                              Copy of a subgroup with a new carrier equal to the old one. Useful to fix definitional equalities.

                              Instances For
                                def AddSubgroup.copy {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (s : Set G) (hs : s = โ†‘K) :

                                Copy of an additive subgroup with a new carrier equal to the old one. Useful to fix definitional equalities

                                Instances For
                                  @[simp]
                                  theorem AddSubgroup.coe_copy {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (s : Set G) (hs : s = โ†‘K) :
                                  โ†‘(K.copy s hs) = s
                                  @[simp]
                                  theorem Subgroup.coe_copy {G : Type u_1} [Group G] (K : Subgroup G) (s : Set G) (hs : s = โ†‘K) :
                                  โ†‘(K.copy s hs) = s
                                  theorem Subgroup.copy_eq {G : Type u_1} [Group G] (K : Subgroup G) (s : Set G) (hs : s = โ†‘K) :
                                  K.copy s hs = K
                                  theorem AddSubgroup.copy_eq {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (s : Set G) (hs : s = โ†‘K) :
                                  K.copy s hs = K
                                  theorem Subgroup.ext {G : Type u_1} [Group G] {H K : Subgroup G} (h : โˆ€ (x : G), x โˆˆ H โ†” x โˆˆ K) :
                                  H = K

                                  Two subgroups are equal if they have the same elements.

                                  theorem AddSubgroup.ext {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : โˆ€ (x : G), x โˆˆ H โ†” x โˆˆ K) :
                                  H = K

                                  Two AddSubgroups are equal if they have the same elements.

                                  theorem Subgroup.ext_iff {G : Type u_1} [Group G] {H K : Subgroup G} :
                                  H = K โ†” โˆ€ (x : G), x โˆˆ H โ†” x โˆˆ K
                                  theorem AddSubgroup.ext_iff {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} :
                                  H = K โ†” โˆ€ (x : G), x โˆˆ H โ†” x โˆˆ K
                                  theorem Subgroup.one_mem {G : Type u_1} [Group G] (H : Subgroup G) :
                                  1 โˆˆ H

                                  A subgroup contains the group's 1.

                                  theorem AddSubgroup.zero_mem {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                  0 โˆˆ H

                                  An AddSubgroup contains the group's 0.

                                  theorem Subgroup.mul_mem {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} :
                                  x โˆˆ H โ†’ y โˆˆ H โ†’ x * y โˆˆ H

                                  A subgroup is closed under multiplication.

                                  theorem AddSubgroup.add_mem {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} :
                                  x โˆˆ H โ†’ y โˆˆ H โ†’ x + y โˆˆ H

                                  An AddSubgroup is closed under addition.

                                  theorem Subgroup.inv_mem {G : Type u_1} [Group G] (H : Subgroup G) {x : G} :
                                  x โˆˆ H โ†’ xโปยน โˆˆ H

                                  A subgroup is closed under inverse.

                                  theorem AddSubgroup.neg_mem {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x : G} :
                                  x โˆˆ H โ†’ -x โˆˆ H

                                  An AddSubgroup is closed under inverse.

                                  theorem Subgroup.div_mem {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} (hx : x โˆˆ H) (hy : y โˆˆ H) :
                                  x / y โˆˆ H

                                  A subgroup is closed under division.

                                  theorem AddSubgroup.sub_mem {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} (hx : x โˆˆ H) (hy : y โˆˆ H) :
                                  x - y โˆˆ H

                                  An AddSubgroup is closed under subtraction.

                                  theorem Subgroup.inv_mem_iff {G : Type u_1} [Group G] (H : Subgroup G) {x : G} :
                                  xโปยน โˆˆ H โ†” x โˆˆ H
                                  theorem AddSubgroup.neg_mem_iff {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x : G} :
                                  -x โˆˆ H โ†” x โˆˆ H
                                  theorem Subgroup.exists_inv_mem_iff_exists_mem {G : Type u_1} [Group G] (K : Subgroup G) {P : G โ†’ Prop} :
                                  (โˆƒ x โˆˆ K, P xโปยน) โ†” โˆƒ x โˆˆ K, P x
                                  theorem AddSubgroup.exists_neg_mem_iff_exists_mem {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {P : G โ†’ Prop} :
                                  (โˆƒ x โˆˆ K, P (-x)) โ†” โˆƒ x โˆˆ K, P x
                                  theorem Subgroup.mul_mem_cancel_right {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} (h : x โˆˆ H) :
                                  y * x โˆˆ H โ†” y โˆˆ H
                                  theorem AddSubgroup.add_mem_cancel_right {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} (h : x โˆˆ H) :
                                  y + x โˆˆ H โ†” y โˆˆ H
                                  theorem Subgroup.mul_mem_cancel_left {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} (h : x โˆˆ H) :
                                  x * y โˆˆ H โ†” y โˆˆ H
                                  theorem AddSubgroup.add_mem_cancel_left {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} (h : x โˆˆ H) :
                                  x + y โˆˆ H โ†” y โˆˆ H
                                  theorem Subgroup.pow_mem {G : Type u_1} [Group G] (K : Subgroup G) {x : G} (hx : x โˆˆ K) (n : โ„•) :
                                  x ^ n โˆˆ K
                                  theorem AddSubgroup.nsmul_mem {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {x : G} (hx : x โˆˆ K) (n : โ„•) :
                                  n โ€ข x โˆˆ K
                                  theorem Subgroup.zpow_mem {G : Type u_1} [Group G] (K : Subgroup G) {x : G} (hx : x โˆˆ K) (n : โ„ค) :
                                  x ^ n โˆˆ K
                                  theorem AddSubgroup.zsmul_mem {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {x : G} (hx : x โˆˆ K) (n : โ„ค) :
                                  n โ€ข x โˆˆ K
                                  def Subgroup.ofDiv {G : Type u_1} [Group G] (s : Set G) (hsn : s.Nonempty) (hs : โˆ€ x โˆˆ s, โˆ€ y โˆˆ s, x * yโปยน โˆˆ s) :

                                  Construct a subgroup from a nonempty set that is closed under division.

                                  Instances For
                                    def AddSubgroup.ofSub {G : Type u_1} [AddGroup G] (s : Set G) (hsn : s.Nonempty) (hs : โˆ€ x โˆˆ s, โˆ€ y โˆˆ s, x + -y โˆˆ s) :

                                    Construct a subgroup from a nonempty set that is closed under subtraction

                                    Instances For
                                      @[implicit_reducible]
                                      instance Subgroup.mul {G : Type u_1} [Group G] (H : Subgroup G) :
                                      Mul โ†ฅH

                                      A subgroup of a group inherits a multiplication.

                                      @[implicit_reducible]
                                      instance AddSubgroup.add {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      Add โ†ฅH

                                      An AddSubgroup of an AddGroup inherits an addition.

                                      @[implicit_reducible]
                                      instance Subgroup.one {G : Type u_1} [Group G] (H : Subgroup G) :
                                      One โ†ฅH

                                      A subgroup of a group inherits a 1.

                                      @[implicit_reducible]
                                      instance AddSubgroup.zero {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      Zero โ†ฅH

                                      An AddSubgroup of an AddGroup inherits a zero.

                                      @[implicit_reducible]
                                      instance Subgroup.inv {G : Type u_1} [Group G] (H : Subgroup G) :
                                      Inv โ†ฅH

                                      A subgroup of a group inherits an inverse.

                                      @[implicit_reducible]
                                      instance AddSubgroup.neg {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      Neg โ†ฅH

                                      An AddSubgroup of an AddGroup inherits an inverse.

                                      @[implicit_reducible]
                                      instance Subgroup.div {G : Type u_1} [Group G] (H : Subgroup G) :
                                      Div โ†ฅH

                                      A subgroup of a group inherits a division

                                      @[implicit_reducible]
                                      instance AddSubgroup.sub {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      Sub โ†ฅH

                                      An AddSubgroup of an AddGroup inherits a subtraction.

                                      @[implicit_reducible]
                                      instance Subgroup.npow {G : Type u_1} [Group G] (H : Subgroup G) :
                                      Pow โ†ฅH โ„•

                                      A subgroup of a group inherits a natural power

                                      @[implicit_reducible]
                                      instance AddSubgroup.nsmul {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      SMul โ„• โ†ฅH

                                      An AddSubgroup of an AddGroup inherits a natural scaling.

                                      @[implicit_reducible]
                                      instance Subgroup.zpow {G : Type u_1} [Group G] (H : Subgroup G) :
                                      Pow โ†ฅH โ„ค

                                      A subgroup of a group inherits an integer power

                                      @[implicit_reducible]
                                      instance AddSubgroup.zsmul {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      SMul โ„ค โ†ฅH

                                      An AddSubgroup of an AddGroup inherits an integer scaling.

                                      @[simp]
                                      theorem Subgroup.coe_mul {G : Type u_1} [Group G] (H : Subgroup G) (x y : โ†ฅH) :
                                      โ†‘(x * y) = โ†‘x * โ†‘y
                                      @[simp]
                                      theorem AddSubgroup.coe_add {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x y : โ†ฅH) :
                                      โ†‘(x + y) = โ†‘x + โ†‘y
                                      @[simp]
                                      theorem Subgroup.coe_one {G : Type u_1} [Group G] (H : Subgroup G) :
                                      โ†‘1 = 1
                                      @[simp]
                                      theorem AddSubgroup.coe_zero {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                      โ†‘0 = 0
                                      @[simp]
                                      theorem Subgroup.coe_inv {G : Type u_1} [Group G] (H : Subgroup G) (x : โ†ฅH) :
                                      โ†‘xโปยน = (โ†‘x)โปยน
                                      @[simp]
                                      theorem AddSubgroup.coe_neg {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : โ†ฅH) :
                                      โ†‘(-x) = -โ†‘x
                                      @[simp]
                                      theorem Subgroup.coe_div {G : Type u_1} [Group G] (H : Subgroup G) (x y : โ†ฅH) :
                                      โ†‘(x / y) = โ†‘x / โ†‘y
                                      @[simp]
                                      theorem AddSubgroup.coe_sub {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x y : โ†ฅH) :
                                      โ†‘(x - y) = โ†‘x - โ†‘y
                                      theorem Subgroup.coe_mk {G : Type u_1} [Group G] (H : Subgroup G) (x : G) (hx : x โˆˆ H) :
                                      โ†‘โŸจx, hxโŸฉ = x
                                      theorem AddSubgroup.coe_mk {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : G) (hx : x โˆˆ H) :
                                      โ†‘โŸจx, hxโŸฉ = x
                                      @[simp]
                                      theorem Subgroup.coe_pow {G : Type u_1} [Group G] (H : Subgroup G) (x : โ†ฅH) (n : โ„•) :
                                      โ†‘(x ^ n) = โ†‘x ^ n
                                      @[simp]
                                      theorem AddSubgroup.coe_nsmul {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : โ†ฅH) (n : โ„•) :
                                      โ†‘(n โ€ข x) = n โ€ข โ†‘x
                                      theorem Subgroup.coe_zpow {G : Type u_1} [Group G] (H : Subgroup G) (x : โ†ฅH) (n : โ„ค) :
                                      โ†‘(x ^ n) = โ†‘x ^ n
                                      theorem AddSubgroup.coe_zsmul {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : โ†ฅH) (n : โ„ค) :
                                      โ†‘(n โ€ข x) = n โ€ข โ†‘x
                                      @[simp]
                                      theorem Subgroup.mk_eq_one {G : Type u_1} [Group G] (H : Subgroup G) {g : G} {h : g โˆˆ H} :
                                      โŸจg, hโŸฉ = 1 โ†” g = 1
                                      @[simp]
                                      theorem AddSubgroup.mk_eq_zero {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {g : G} {h : g โˆˆ H} :
                                      โŸจg, hโŸฉ = 0 โ†” g = 0
                                      @[implicit_reducible]
                                      instance Subgroup.toGroup {G : Type u_3} [Group G] (H : Subgroup G) :
                                      Group โ†ฅH

                                      A subgroup of a group inherits a group structure.

                                      @[implicit_reducible]
                                      instance AddSubgroup.toAddGroup {G : Type u_3} [AddGroup G] (H : AddSubgroup G) :
                                      AddGroup โ†ฅH

                                      An AddSubgroup of an AddGroup inherits an AddGroup structure.

                                      @[implicit_reducible]
                                      instance Subgroup.toCommGroup {G : Type u_3} [CommGroup G] (H : Subgroup G) :
                                      CommGroup โ†ฅH

                                      A subgroup of a CommGroup is a CommGroup.

                                      @[implicit_reducible]
                                      instance AddSubgroup.toAddCommGroup {G : Type u_3} [AddCommGroup G] (H : AddSubgroup G) :
                                      AddCommGroup โ†ฅH

                                      An AddSubgroup of an AddCommGroup is an AddCommGroup.

                                      def Subgroup.subtype {G : Type u_1} [Group G] (H : Subgroup G) :
                                      โ†ฅH โ†’* G

                                      The natural group hom from a subgroup of group G to G.

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

                                        The natural group hom from an AddSubgroup of AddGroup G to G.

                                        Instances For
                                          @[simp]
                                          theorem Subgroup.subtype_apply {G : Type u_1} [Group G] {s : Subgroup G} (x : โ†ฅs) :
                                          s.subtype x = โ†‘x
                                          @[simp]
                                          theorem AddSubgroup.subtype_apply {G : Type u_1} [AddGroup G] {s : AddSubgroup G} (x : โ†ฅs) :
                                          s.subtype x = โ†‘x
                                          theorem Subgroup.subtype_injective {G : Type u_1} [Group G] (s : Subgroup G) :
                                          Function.Injective โ‡‘s.subtype
                                          theorem AddSubgroup.subtype_injective {G : Type u_1} [AddGroup G] (s : AddSubgroup G) :
                                          Function.Injective โ‡‘s.subtype
                                          @[simp]
                                          theorem Subgroup.coe_subtype {G : Type u_1} [Group G] (H : Subgroup G) :
                                          โ‡‘H.subtype = Subtype.val
                                          @[simp]
                                          theorem AddSubgroup.coe_subtype {G : Type u_1} [AddGroup G] (H : AddSubgroup G) :
                                          โ‡‘H.subtype = Subtype.val
                                          def Subgroup.inclusion {G : Type u_1} [Group G] {H K : Subgroup G} (h : H โ‰ค K) :
                                          โ†ฅH โ†’* โ†ฅK

                                          The inclusion homomorphism from a subgroup H contained in K to K.

                                          Instances For
                                            def AddSubgroup.inclusion {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) :
                                            โ†ฅH โ†’+ โ†ฅK

                                            The inclusion homomorphism from an additive subgroup H contained in K to K.

                                            Instances For
                                              @[simp]
                                              theorem Subgroup.coe_inclusion {G : Type u_1} [Group G] {H K : Subgroup G} (h : H โ‰ค K) (a : โ†ฅH) :
                                              โ†‘((inclusion h) a) = โ†‘a
                                              @[simp]
                                              theorem AddSubgroup.coe_inclusion {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) (a : โ†ฅH) :
                                              โ†‘((inclusion h) a) = โ†‘a
                                              theorem Subgroup.inclusion_injective {G : Type u_1} [Group G] {H K : Subgroup G} (h : H โ‰ค K) :
                                              Function.Injective โ‡‘(inclusion h)
                                              theorem AddSubgroup.inclusion_injective {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) :
                                              Function.Injective โ‡‘(inclusion h)
                                              @[simp]
                                              theorem Subgroup.inclusion_inj {G : Type u_1} [Group G] {H K : Subgroup G} (h : H โ‰ค K) {x y : โ†ฅH} :
                                              (inclusion h) x = (inclusion h) y โ†” x = y
                                              @[simp]
                                              theorem AddSubgroup.inclusion_inj {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H โ‰ค K) {x y : โ†ฅH} :
                                              (inclusion h) x = (inclusion h) y โ†” x = y
                                              @[simp]
                                              theorem Subgroup.subtype_comp_inclusion {G : Type u_1} [Group G] {H K : Subgroup G} (hH : H โ‰ค K) :
                                              class Subgroup.Normal {G : Type u_1} [Group G] (H : Subgroup G) :

                                              A subgroup H is normal if whenever n โˆˆ H, then g * n * gโปยน โˆˆ H for every g : G

                                              • conj_mem (n : G) : n โˆˆ H โ†’ โˆ€ (g : G), g * n * gโปยน โˆˆ H

                                                H is closed under conjugation

                                              Instances
                                                class AddSubgroup.Normal {A : Type u_2} [AddGroup A] (H : AddSubgroup A) :

                                                An AddSubgroup H is normal if whenever n โˆˆ H, then g + n - g โˆˆ H for every g : A

                                                • conj_mem (n : A) : n โˆˆ H โ†’ โˆ€ (g : A), g + n + -g โˆˆ H

                                                  H is closed under additive conjugation

                                                Instances
                                                  @[instance 100]
                                                  instance Subgroup.normal_of_comm {G : Type u_3} [CommGroup G] (H : Subgroup G) :
                                                  @[instance 100]
                                                  theorem Subgroup.Normal.conj_mem' {G : Type u_1} [Group G] {H : Subgroup G} (nH : H.Normal) (n : G) (hn : n โˆˆ H) (g : G) :
                                                  gโปยน * n * g โˆˆ H
                                                  theorem AddSubgroup.Normal.addConj_mem' {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (nH : H.Normal) (n : G) (hn : n โˆˆ H) (g : G) :
                                                  -g + n + g โˆˆ H
                                                  theorem Subgroup.Normal.mem_comm {G : Type u_1} [Group G] {H : Subgroup G} (nH : H.Normal) {a b : G} (h : a * b โˆˆ H) :
                                                  b * a โˆˆ H
                                                  theorem AddSubgroup.Normal.mem_comm {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (nH : H.Normal) {a b : G} (h : a + b โˆˆ H) :
                                                  b + a โˆˆ H
                                                  theorem Subgroup.Normal.mem_comm_iff {G : Type u_1} [Group G] {H : Subgroup G} (nH : H.Normal) {a b : G} :
                                                  a * b โˆˆ H โ†” b * a โˆˆ H
                                                  theorem AddSubgroup.Normal.mem_comm_iff {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (nH : H.Normal) {a b : G} :
                                                  a + b โˆˆ H โ†” b + a โˆˆ H
                                                  def Subgroup.normalizer {G : Type u_1} [Group G] (S : Set G) :

                                                  The normalizer of S is the subgroup of G whose elements satisfy g * S * gโปยน = S. When S is a subgroup, this is the largest subgroup of G inside which S is normal.

                                                  Instances For
                                                    def AddSubgroup.normalizer {G : Type u_1} [AddGroup G] (S : Set G) :

                                                    The normalizer of S is the subgroup of G whose elements satisfy g + S - g = S. When S is a subgroup, this is the largest subgroup of G inside which S is normal.

                                                    Instances For
                                                      @[deprecated Subgroup.normalizer (since := "2026-03-19")]
                                                      def Subgroup.setNormalizer {G : Type u_1} [Group G] (S : Set G) :

                                                      Alias of Subgroup.normalizer.


                                                      The normalizer of S is the subgroup of G whose elements satisfy g * S * gโปยน = S. When S is a subgroup, this is the largest subgroup of G inside which S is normal.

                                                      Instances For
                                                        theorem Subgroup.mem_normalizer_iff {G : Type u_1} [Group G] {H : Subgroup G} {g : G} :
                                                        g โˆˆ normalizer โ†‘H โ†” โˆ€ (h : G), h โˆˆ H โ†” g * h * gโปยน โˆˆ H
                                                        theorem AddSubgroup.mem_normalizer_iff {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {g : G} :
                                                        g โˆˆ normalizer โ†‘H โ†” โˆ€ (h : G), h โˆˆ H โ†” g + h + -g โˆˆ H
                                                        theorem Subgroup.mem_normalizer_iff'' {G : Type u_1} [Group G] {H : Subgroup G} {g : G} :
                                                        g โˆˆ normalizer โ†‘H โ†” โˆ€ (h : G), h โˆˆ H โ†” gโปยน * h * g โˆˆ H
                                                        theorem AddSubgroup.mem_normalizer_iff'' {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {g : G} :
                                                        g โˆˆ normalizer โ†‘H โ†” โˆ€ (h : G), h โˆˆ H โ†” -g + h + g โˆˆ H
                                                        theorem Subgroup.mem_normalizer_iff' {G : Type u_1} [Group G] {H : Subgroup G} {g : G} :
                                                        g โˆˆ normalizer โ†‘H โ†” โˆ€ (n : G), n * g โˆˆ H โ†” g * n โˆˆ H
                                                        theorem AddSubgroup.mem_normalizer_iff' {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {g : G} :
                                                        g โˆˆ normalizer โ†‘H โ†” โˆ€ (n : G), n + g โˆˆ H โ†” g + n โˆˆ H

                                                        A subgroup of a commutative group is commutative.

                                                        A subgroup of a commutative group is commutative.

                                                        @[deprecated setLike_mul_comm (since := "2026-03-09")]
                                                        theorem Subgroup.mul_comm_of_mem_isMulCommutative {G : Type u_1} [Group G] (H : Subgroup G) [IsMulCommutative โ†ฅH] {a b : G} (ha : a โˆˆ H) (hb : b โˆˆ H) :
                                                        a * b = b * a
                                                        @[deprecated setLike_mul_comm (since := "2026-03-09")]
                                                        theorem AddSubgroup.add_comm_of_mem_isAddCommutative {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [IsAddCommutative โ†ฅH] {a b : G} (ha : a โˆˆ H) (hb : b โˆˆ H) :
                                                        a + b = b + a
                                                        theorem Set.injOn_iff_map_eq_one {F : Type u_3} {G : Type u_4} {H : Type u_5} {S : Type u_6} [Group G] [Group H] [FunLike F G H] [MonoidHomClass F G H] (f : F) [SetLike S G] [OneMemClass S G] [MulMemClass S G] [InvMemClass S G] (s : S) :
                                                        InjOn โ‡‘f โ†‘s โ†” โˆ€ a โˆˆ s, f a = 1 โ†’ a = 1
                                                        theorem Set.injOn_iff_map_eq_zero {F : Type u_3} {G : Type u_4} {H : Type u_5} {S : Type u_6} [AddGroup G] [AddGroup H] [FunLike F G H] [AddMonoidHomClass F G H] (f : F) [SetLike S G] [ZeroMemClass S G] [AddMemClass S G] [NegMemClass S G] (s : S) :
                                                        InjOn โ‡‘f โ†‘s โ†” โˆ€ a โˆˆ s, f a = 0 โ†’ a = 0