Documentation

Mathlib.Deprecated.Subgroup

Unbundled subgroups (deprecated) #

This file is deprecated, and is no longer imported by anything in mathlib other than other deprecated files, and test files. You should not need to import it.

This file defines unbundled multiplicative and additive subgroups. Instead of using this file, please use Subgroup G and AddSubgroup A, defined in GroupTheory.Subgroup.Basic.

Main definitions #

IsAddSubgroup (S : Set A) : the predicate that S is the underlying subset of an additive subgroup of A. The bundled variant AddSubgroup A should be used in preference to this.

IsSubgroup (S : Set G) : the predicate that S is the underlying subset of a subgroup of G. The bundled variant Subgroup G should be used in preference to this.

Tags #

subgroup, subgroups, IsSubgroup

structure IsAddSubgroup {A : Type u_3} [AddGroup A] (s : Set A) extends IsAddSubmonoid :

s is an additive subgroup: a set containing 0 and closed under addition and negation.

  • zero_mem : 0 s
  • add_mem : ∀ {a b : A}, a sb sa + b s
  • neg_mem : ∀ {a : A}, a s-a s

    The proposition that s is closed under negation.

Instances For
    structure IsSubgroup {G : Type u_1} [Group G] (s : Set G) extends IsSubmonoid :

    s is a subgroup: a set containing 1 and closed under multiplication and inverse.

    • one_mem : 1 s
    • mul_mem : ∀ {a b : G}, a sb sa * b s
    • inv_mem : ∀ {a : G}, a sa⁻¹ s

      The proposition that s is closed under inverse.

    Instances For
      theorem IsAddSubgroup.sub_mem {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) {x : G} {y : G} (hx : x s) (hy : y s) :
      x - y s
      theorem IsSubgroup.div_mem {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s) {x : G} {y : G} (hx : x s) (hy : y s) :
      x / y s
      theorem Additive.isAddSubgroup {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s) :
      theorem Multiplicative.isSubgroup {A : Type u_3} [AddGroup A] {s : Set A} (hs : IsAddSubgroup s) :
      theorem IsAddSubgroup.of_add_neg {G : Type u_1} [AddGroup G] (s : Set G) (one_mem : 0 s) (div_mem : ∀ {a b : G}, a sb sa + -b s) :
      theorem IsSubgroup.of_div {G : Type u_1} [Group G] (s : Set G) (one_mem : 1 s) (div_mem : ∀ {a b : G}, a sb sa * b⁻¹ s) :
      theorem IsAddSubgroup.of_sub {A : Type u_3} [AddGroup A] (s : Set A) (zero_mem : 0 s) (sub_mem : ∀ {a b : A}, a sb sa - b s) :
      theorem IsAddSubgroup.inter {G : Type u_1} [AddGroup G] {s₁ : Set G} {s₂ : Set G} (hs₁ : IsAddSubgroup s₁) (hs₂ : IsAddSubgroup s₂) :
      IsAddSubgroup (s₁ s₂)
      theorem IsSubgroup.inter {G : Type u_1} [Group G] {s₁ : Set G} {s₂ : Set G} (hs₁ : IsSubgroup s₁) (hs₂ : IsSubgroup s₂) :
      IsSubgroup (s₁ s₂)
      theorem IsAddSubgroup.iInter {G : Type u_1} [AddGroup G] {ι : Sort u_4} {s : ιSet G} (hs : ∀ (y : ι), IsAddSubgroup (s y)) :
      theorem IsSubgroup.iInter {G : Type u_1} [Group G] {ι : Sort u_4} {s : ιSet G} (hs : ∀ (y : ι), IsSubgroup (s y)) :
      theorem isAddSubgroup_iUnion_of_directed {G : Type u_1} [AddGroup G] {ι : Type u_4} [Nonempty ι] {s : ιSet G} (hs : ∀ (i : ι), IsAddSubgroup (s i)) (directed : ∀ (i j : ι), ∃ (k : ι), s i s k s j s k) :
      IsAddSubgroup (⋃ (i : ι), s i)
      abbrev isAddSubgroup_iUnion_of_directed.match_1 {G : Type u_2} {ι : Type u_1} {s : ιSet G} :
      ∀ {a : G} (motive : (∃ (i : ι), a s i)Prop) (x : ∃ (i : ι), a s i), (∀ (i : ι) (hi : a s i), motive )motive x
      Equations
      • =
      Instances For
        theorem isSubgroup_iUnion_of_directed {G : Type u_1} [Group G] {ι : Type u_4} [Nonempty ι] {s : ιSet G} (hs : ∀ (i : ι), IsSubgroup (s i)) (directed : ∀ (i j : ι), ∃ (k : ι), s i s k s j s k) :
        IsSubgroup (⋃ (i : ι), s i)
        theorem IsAddSubgroup.neg_mem_iff {G : Type u_1} {a : G} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) :
        -a s a s
        theorem IsSubgroup.inv_mem_iff {G : Type u_1} {a : G} [Group G] {s : Set G} (hs : IsSubgroup s) :
        a⁻¹ s a s
        theorem IsAddSubgroup.add_mem_cancel_right {G : Type u_1} {a : G} {b : G} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) (h : a s) :
        b + a s b s
        theorem IsSubgroup.mul_mem_cancel_right {G : Type u_1} {a : G} {b : G} [Group G] {s : Set G} (hs : IsSubgroup s) (h : a s) :
        b * a s b s
        theorem IsAddSubgroup.add_mem_cancel_left {G : Type u_1} {a : G} {b : G} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) (h : a s) :
        a + b s b s
        theorem IsSubgroup.mul_mem_cancel_left {G : Type u_1} {a : G} {b : G} [Group G] {s : Set G} (hs : IsSubgroup s) (h : a s) :
        a * b s b s
        structure IsNormalAddSubgroup {A : Type u_3} [AddGroup A] (s : Set A) extends IsAddSubgroup :

        IsNormalAddSubgroup (s : Set A) expresses the fact that s is a normal additive subgroup of the additive group A. Important: the preferred way to say this in Lean is via bundled subgroups S : AddSubgroup A and hs : S.normal, and not via this structure.

        • zero_mem : 0 s
        • add_mem : ∀ {a b : A}, a sb sa + b s
        • neg_mem : ∀ {a : A}, a s-a s
        • normal : ns, ∀ (g : A), g + n + -g s

          The proposition that s is closed under (additive) conjugation.

        Instances For
          structure IsNormalSubgroup {G : Type u_1} [Group G] (s : Set G) extends IsSubgroup :

          IsNormalSubgroup (s : Set G) expresses the fact that s is a normal subgroup of the group G. Important: the preferred way to say this in Lean is via bundled subgroups S : Subgroup G and not via this structure.

          • one_mem : 1 s
          • mul_mem : ∀ {a b : G}, a sb sa * b s
          • inv_mem : ∀ {a : G}, a sa⁻¹ s
          • normal : ns, ∀ (g : G), g * n * g⁻¹ s

            The proposition that s is closed under conjugation.

          Instances For
            theorem IsAddSubgroup.mem_norm_comm {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsNormalAddSubgroup s) {a : G} {b : G} (hab : a + b s) :
            b + a s
            theorem IsSubgroup.mem_norm_comm {G : Type u_1} [Group G] {s : Set G} (hs : IsNormalSubgroup s) {a : G} {b : G} (hab : a * b s) :
            b * a s
            theorem IsAddSubgroup.mem_norm_comm_iff {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsNormalAddSubgroup s) {a : G} {b : G} :
            a + b s b + a s
            theorem IsSubgroup.mem_norm_comm_iff {G : Type u_1} [Group G] {s : Set G} (hs : IsNormalSubgroup s) {a : G} {b : G} :
            a * b s b * a s
            def IsAddSubgroup.trivial (G : Type u_4) [AddGroup G] :
            Set G

            the trivial additive subgroup

            Equations
            Instances For
              def IsSubgroup.trivial (G : Type u_4) [Group G] :
              Set G

              The trivial subgroup

              Equations
              Instances For
                @[simp]
                theorem IsAddSubgroup.mem_trivial {G : Type u_1} [AddGroup G] {g : G} :
                @[simp]
                theorem IsSubgroup.mem_trivial {G : Type u_1} [Group G] {g : G} :
                theorem IsAddSubgroup.eq_trivial_iff {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) :
                s = IsAddSubgroup.trivial G xs, x = 0
                theorem IsSubgroup.eq_trivial_iff {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s) :
                s = IsSubgroup.trivial G xs, x = 1

                The underlying set of the center of an additive group.

                Equations
                Instances For
                  def IsSubgroup.center (G : Type u_4) [Group G] :
                  Set G

                  The underlying set of the center of a group.

                  Equations
                  Instances For
                    theorem IsAddSubgroup.mem_add_center {G : Type u_1} [AddGroup G] {a : G} :
                    a IsAddSubgroup.addCenter G ∀ (g : G), g + a = a + g
                    theorem IsSubgroup.mem_center {G : Type u_1} [Group G] {a : G} :
                    a IsSubgroup.center G ∀ (g : G), g * a = a * g
                    def IsAddSubgroup.addNormalizer {G : Type u_1} [AddGroup G] (s : Set G) :
                    Set G

                    The underlying set of the normalizer of a subset S : Set A of an additive group A. That is, the elements a : A such that a + S - a = S.

                    Equations
                    Instances For
                      def IsSubgroup.normalizer {G : Type u_1} [Group G] (s : Set G) :
                      Set G

                      The underlying set of the normalizer of a subset S : Set G of a group G. That is, the elements g : G such that g * S * g⁻¹ = S.

                      Equations
                      Instances For
                        def IsAddGroupHom.ker {G : Type u_1} {H : Type u_2} [AddGroup H] (f : GH) :
                        Set G

                        ker f : Set A is the underlying subset of the kernel of a map A → B

                        Equations
                        Instances For
                          def IsGroupHom.ker {G : Type u_1} {H : Type u_2} [Group H] (f : GH) :
                          Set G

                          ker f : Set G is the underlying subset of the kernel of a map G → H.

                          Equations
                          Instances For
                            theorem IsAddGroupHom.mem_ker {G : Type u_1} {H : Type u_2} [AddGroup H] (f : GH) {x : G} :
                            theorem IsGroupHom.mem_ker {G : Type u_1} {H : Type u_2} [Group H] (f : GH) {x : G} :
                            theorem IsAddGroupHom.zero_ker_neg {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {a : G} {b : G} (h : f (a + -b) = 0) :
                            f a = f b
                            theorem IsGroupHom.one_ker_inv {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {a : G} {b : G} (h : f (a * b⁻¹) = 1) :
                            f a = f b
                            theorem IsAddGroupHom.zero_ker_neg' {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {a : G} {b : G} (h : f (-a + b) = 0) :
                            f a = f b
                            theorem IsGroupHom.one_ker_inv' {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {a : G} {b : G} (h : f (a⁻¹ * b) = 1) :
                            f a = f b
                            theorem IsAddGroupHom.neg_ker_zero {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {a : G} {b : G} (h : f a = f b) :
                            f (a + -b) = 0
                            theorem IsGroupHom.inv_ker_one {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {a : G} {b : G} (h : f a = f b) :
                            f (a * b⁻¹) = 1
                            theorem IsAddGroupHom.neg_ker_zero' {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {a : G} {b : G} (h : f a = f b) :
                            f (-a + b) = 0
                            theorem IsGroupHom.inv_ker_one' {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {a : G} {b : G} (h : f a = f b) :
                            f (a⁻¹ * b) = 1
                            theorem IsAddGroupHom.zero_iff_ker_neg {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) (a : G) (b : G) :
                            f a = f b f (a + -b) = 0
                            theorem IsGroupHom.one_iff_ker_inv {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (a : G) (b : G) :
                            f a = f b f (a * b⁻¹) = 1
                            theorem IsAddGroupHom.zero_iff_ker_neg' {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) (a : G) (b : G) :
                            f a = f b f (-a + b) = 0
                            theorem IsGroupHom.one_iff_ker_inv' {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (a : G) (b : G) :
                            f a = f b f (a⁻¹ * b) = 1
                            theorem IsAddGroupHom.neg_iff_ker {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) (a : G) (b : G) :
                            f a = f b a + -b IsAddGroupHom.ker f
                            theorem IsGroupHom.inv_iff_ker {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (a : G) (b : G) :
                            f a = f b a * b⁻¹ IsGroupHom.ker f
                            theorem IsAddGroupHom.neg_iff_ker' {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) (a : G) (b : G) :
                            f a = f b -a + b IsAddGroupHom.ker f
                            theorem IsGroupHom.inv_iff_ker' {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (a : G) (b : G) :
                            f a = f b a⁻¹ * b IsGroupHom.ker f
                            abbrev IsAddGroupHom.image_addSubgroup.match_1 {G : Type u_2} {H : Type u_1} {f : GH} {s : Set G} {a₂ : H} (motive : a₂ f '' sProp) :
                            ∀ (x : a₂ f '' s), (∀ (b₂ : G) (hb₂ : b₂ s) (eq₂ : f b₂ = a₂), motive )motive x
                            Equations
                            • =
                            Instances For
                              theorem IsAddGroupHom.image_addSubgroup {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {s : Set G} (hs : IsAddSubgroup s) :
                              theorem IsGroupHom.image_subgroup {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {s : Set G} (hs : IsSubgroup s) :
                              theorem IsAddGroupHom.range_addSubgroup {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) :
                              theorem IsGroupHom.range_subgroup {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) :
                              theorem IsAddGroupHom.preimage {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {s : Set H} (hs : IsAddSubgroup s) :
                              theorem IsGroupHom.preimage {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {s : Set H} (hs : IsSubgroup s) :
                              theorem IsAddGroupHom.preimage_normal {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) {s : Set H} (hs : IsNormalAddSubgroup s) :
                              theorem IsGroupHom.preimage_normal {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) {s : Set H} (hs : IsNormalSubgroup s) :
                              theorem IsGroupHom.isNormalSubgroup_ker {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) :
                              theorem IsGroupHom.injective_of_trivial_ker {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (h : IsGroupHom.ker f = IsSubgroup.trivial G) :
                              theorem IsGroupHom.trivial_ker_of_injective {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (h : Function.Injective f) :
                              theorem IsAddGroupHom.trivial_ker_iff_eq_zero {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) :
                              IsAddGroupHom.ker f = IsAddSubgroup.trivial G ∀ (x : G), f x = 0x = 0
                              theorem IsGroupHom.trivial_ker_iff_eq_one {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) :
                              IsGroupHom.ker f = IsSubgroup.trivial G ∀ (x : G), f x = 1x = 1
                              inductive AddGroup.InClosure {A : Type u_3} [AddGroup A] (s : Set A) :
                              AProp

                              If A is an additive group and s : Set A, then InClosure s : Set A is the underlying subset of the subgroup generated by s.

                              Instances For
                                inductive Group.InClosure {G : Type u_1} [Group G] (s : Set G) :
                                GProp

                                If G is a group and s : Set G, then InClosure s : Set G is the underlying subset of the subgroup generated by s.

                                Instances For
                                  def AddGroup.closure {G : Type u_1} [AddGroup G] (s : Set G) :
                                  Set G

                                  AddGroup.closure s is the additive subgroup generated by s, i.e., the smallest additive subgroup containing s.

                                  Equations
                                  Instances For
                                    def Group.closure {G : Type u_1} [Group G] (s : Set G) :
                                    Set G

                                    Group.closure s is the subgroup generated by s, i.e. the smallest subgroup containing s.

                                    Equations
                                    Instances For
                                      theorem AddGroup.mem_closure {G : Type u_1} [AddGroup G] {s : Set G} {a : G} :
                                      theorem Group.mem_closure {G : Type u_1} [Group G] {s : Set G} {a : G} :
                                      a sa Group.closure s
                                      theorem Group.subset_closure {G : Type u_1} [Group G] {s : Set G} :
                                      theorem AddGroup.closure_subset {G : Type u_1} [AddGroup G] {s : Set G} {t : Set G} (ht : IsAddSubgroup t) (h : s t) :
                                      theorem Group.closure_subset {G : Type u_1} [Group G] {s : Set G} {t : Set G} (ht : IsSubgroup t) (h : s t) :
                                      theorem AddGroup.closure_subset_iff {G : Type u_1} [AddGroup G] {s : Set G} {t : Set G} (ht : IsAddSubgroup t) :
                                      theorem Group.closure_subset_iff {G : Type u_1} [Group G] {s : Set G} {t : Set G} (ht : IsSubgroup t) :
                                      theorem AddGroup.closure_mono {G : Type u_1} [AddGroup G] {s : Set G} {t : Set G} (h : s t) :
                                      theorem Group.closure_mono {G : Type u_1} [Group G] {s : Set G} {t : Set G} (h : s t) :
                                      @[simp]
                                      theorem AddGroup.closure_addSubgroup {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) :
                                      @[simp]
                                      theorem Group.closure_subgroup {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s) :
                                      abbrev AddGroup.exists_list_of_mem_closure.match_1 {G : Type u_1} [AddGroup G] (L : List G) (x : G) (motive : (∃ a ∈ List.reverse L, -a = x)Prop) :
                                      ∀ (x_1 : ∃ a ∈ List.reverse L, -a = x), (∀ (y : G) (hy1 : y List.reverse L) (hy2 : -y = x), motive )motive x_1
                                      Equations
                                      • =
                                      Instances For
                                        abbrev AddGroup.exists_list_of_mem_closure.match_2 {G : Type u_1} [AddGroup G] {s : Set G} {x : G} (motive : (∃ (l : List G), (xl, x s -x s) List.sum l = x)Prop) :
                                        ∀ (x_1 : ∃ (l : List G), (xl, x s -x s) List.sum l = x), (∀ (L : List G) (HL1 : xL, x s -x s) (HL2 : List.sum L = x), motive )motive x_1
                                        Equations
                                        • =
                                        Instances For
                                          theorem AddGroup.exists_list_of_mem_closure {G : Type u_1} [AddGroup G] {s : Set G} {a : G} (h : a AddGroup.closure s) :
                                          ∃ (l : List G), (xl, x s -x s) List.sum l = a
                                          theorem Group.exists_list_of_mem_closure {G : Type u_1} [Group G] {s : Set G} {a : G} (h : a Group.closure s) :
                                          ∃ (l : List G), (xl, x s x⁻¹ s) List.prod l = a
                                          theorem AddGroup.image_closure {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : GH} (hf : IsAddGroupHom f) (s : Set G) :
                                          theorem Group.image_closure {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : GH} (hf : IsGroupHom f) (s : Set G) :
                                          theorem Group.closure_eq_mclosure {G : Type u_1} [Group G] {s : Set G} :
                                          theorem AddGroup.mem_closure_union_iff {G : Type u_4} [AddCommGroup G] {s : Set G} {t : Set G} {x : G} :
                                          x AddGroup.closure (s t) ∃ y ∈ AddGroup.closure s, ∃ z ∈ AddGroup.closure t, y + z = x
                                          theorem Group.mem_closure_union_iff {G : Type u_4} [CommGroup G] {s : Set G} {t : Set G} {x : G} :
                                          x Group.closure (s t) ∃ y ∈ Group.closure s, ∃ z ∈ Group.closure t, y * z = x
                                          theorem Group.conjugatesOf_subset {G : Type u_1} [Group G] {t : Set G} (ht : IsNormalSubgroup t) {a : G} (h : a t) :
                                          theorem Group.conjugatesOfSet_subset' {G : Type u_1} [Group G] {s : Set G} {t : Set G} (ht : IsNormalSubgroup t) (h : s t) :
                                          def Group.normalClosure {G : Type u_1} [Group G] (s : Set G) :
                                          Set G

                                          The normal closure of a set s is the subgroup closure of all the conjugates of elements of s. It is the smallest normal subgroup containing s.

                                          Equations
                                          Instances For

                                            The normal closure of a set is a subgroup.

                                            The normal closure of s is a normal subgroup.

                                            theorem Group.normalClosure_subset {G : Type u_1} [Group G] {s : Set G} {t : Set G} (ht : IsNormalSubgroup t) (h : s t) :

                                            The normal closure of s is the smallest normal subgroup containing s.

                                            theorem Group.normalClosure_subset_iff {G : Type u_1} [Group G] {s : Set G} {t : Set G} (ht : IsNormalSubgroup t) :
                                            theorem AddSubgroup.of.proof_2 {G : Type u_1} [AddGroup G] {s : Set G} (h : IsAddSubgroup s) :
                                            0 s
                                            theorem AddSubgroup.of.proof_1 {G : Type u_1} [AddGroup G] {s : Set G} (h : IsAddSubgroup s) :
                                            ∀ {a b : G}, a sb sa + b s
                                            def AddSubgroup.of {G : Type u_1} [AddGroup G] {s : Set G} (h : IsAddSubgroup s) :

                                            Create a bundled additive subgroup from a set s and [IsAddSubgroup s].

                                            Equations
                                            • AddSubgroup.of h = { toAddSubmonoid := { toAddSubsemigroup := { carrier := s, add_mem' := }, zero_mem' := }, neg_mem' := }
                                            Instances For
                                              def Subgroup.of {G : Type u_1} [Group G] {s : Set G} (h : IsSubgroup s) :

                                              Create a bundled subgroup from a set s and [IsSubgroup s].

                                              Equations
                                              • Subgroup.of h = { toSubmonoid := { toSubsemigroup := { carrier := s, mul_mem' := }, one_mem' := }, inv_mem' := }
                                              Instances For
                                                theorem Subgroup.isSubgroup {G : Type u_1} [Group G] (K : Subgroup G) :