Documentation

Mathlib.GroupTheory.QuotientGroup.Basic

Quotients of groups by normal subgroups #

This file develops the basic theory of quotients of groups by normal subgroups. In particular, it proves Noether's first and second isomorphism theorems.

Main statements #

Tags #

isomorphism theorems, quotient groups

theorem QuotientGroup.sound {G : Type u} [Group G] (N : Subgroup G) [nN : N.Normal] (U : Set (G N)) (g : N.op) :
g (mk' N) ⁻¹' U = (mk' N) ⁻¹' U
theorem QuotientAddGroup.sound {G : Type u} [AddGroup G] (N : AddSubgroup G) [nN : N.Normal] (U : Set (G N)) (g : N.op) :
g +ᵥ (mk' N) ⁻¹' U = (mk' N) ⁻¹' U
@[simp]
theorem QuotientGroup.mk_prod {G : Type u_1} {ι : Type u_2} [CommGroup G] (N : Subgroup G) (s : Finset ι) {f : ιG} :
(s.prod f) = is, (f i)
@[simp]
theorem QuotientAddGroup.mk_sum {G : Type u_1} {ι : Type u_2} [AddCommGroup G] (N : AddSubgroup G) (s : Finset ι) {f : ιG} :
(s.sum f) = is, (f i)
def QuotientGroup.prodEquiv {G : Type u} [Group G] {H : Type v} [Group H] (A : Subgroup G) (B : Subgroup H) :
(G × H) A.prod B (G A) × H B

(G × H) / (A × B) is in bijection with G / A × H / B.

Instances For
    def QuotientAddGroup.prodEquiv {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (A : AddSubgroup G) (B : AddSubgroup H) :
    (G × H) A.prod B (G A) × H B

    (G × H) / (A × B) is in bijection with G / A × H / B.

    Instances For
      @[simp]
      theorem QuotientGroup.prodEquiv_apply {G : Type u} [Group G] {H : Type v} [Group H] (A : Subgroup G) (B : Subgroup H) (q : (G × H) A.prod B) :
      (prodEquiv A B) q = Quotient.liftOn' q (fun (x : G × H) => match x with | (g, h) => (g, h))
      @[simp]
      theorem QuotientAddGroup.prodEquiv_symm_apply {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (A : AddSubgroup G) (B : AddSubgroup H) (q : (G A) × H B) :
      (prodEquiv A B).symm q = Quotient.liftOn₂' q.1 q.2 (fun (g : G) (h : H) => (g, h))
      @[simp]
      theorem QuotientGroup.prodEquiv_symm_apply {G : Type u} [Group G] {H : Type v} [Group H] (A : Subgroup G) (B : Subgroup H) (q : (G A) × H B) :
      (prodEquiv A B).symm q = Quotient.liftOn₂' q.1 q.2 (fun (g : G) (h : H) => (g, h))
      @[simp]
      theorem QuotientAddGroup.prodEquiv_apply {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (A : AddSubgroup G) (B : AddSubgroup H) (q : (G × H) A.prod B) :
      (prodEquiv A B) q = Quotient.liftOn' q (fun (x : G × H) => match x with | (g, h) => (g, h))
      def QuotientGroup.prodMulEquiv {G : Type u} [Group G] {H : Type v} [Group H] (A : Subgroup G) (B : Subgroup H) [A.Normal] [B.Normal] :
      (G × H) A.prod B ≃* (G A) × H B

      (G × H) / (A × B) is isomorphic to G / A × H / B.

      Instances For
        def QuotientAddGroup.prodAddEquiv {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (A : AddSubgroup G) (B : AddSubgroup H) [A.Normal] [B.Normal] :
        (G × H) A.prod B ≃+ (G A) × H B

        (G × H) / (A × B) is isomorphic to G / A × H / B.

        Instances For
          @[simp]
          theorem QuotientGroup.prodMulEquiv_apply {G : Type u} [Group G] {H : Type v} [Group H] (A : Subgroup G) (B : Subgroup H) [A.Normal] [B.Normal] (q : (G × H) A.prod B) :
          (prodMulEquiv A B) q = Quotient.liftOn' q (fun (x : G × H) => (x.1, x.2))
          @[simp]
          theorem QuotientAddGroup.prodAddEquiv_symm_apply {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (A : AddSubgroup G) (B : AddSubgroup H) [A.Normal] [B.Normal] (q : (G A) × H B) :
          (prodAddEquiv A B).symm q = Quotient.liftOn₂' q.1 q.2 (fun (g : G) (h : H) => (g, h))
          @[simp]
          theorem QuotientGroup.prodMulEquiv_symm_apply {G : Type u} [Group G] {H : Type v} [Group H] (A : Subgroup G) (B : Subgroup H) [A.Normal] [B.Normal] (q : (G A) × H B) :
          (prodMulEquiv A B).symm q = Quotient.liftOn₂' q.1 q.2 (fun (g : G) (h : H) => (g, h))
          @[simp]
          theorem QuotientAddGroup.prodAddEquiv_apply {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (A : AddSubgroup G) (B : AddSubgroup H) [A.Normal] [B.Normal] (q : (G × H) A.prod B) :
          (prodAddEquiv A B) q = Quotient.liftOn' q (fun (x : G × H) => (x.1, x.2))
          def QuotientGroup.kerLift {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) :
          G φ.ker →* H

          The induced map from the quotient by the kernel to the codomain.

          Instances For
            def QuotientAddGroup.kerLift {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) :
            G φ.ker →+ H

            The induced map from the quotient by the kernel to the codomain.

            Instances For
              @[simp]
              theorem QuotientGroup.kerLift_mk {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) (g : G) :
              (kerLift φ) g = φ g
              @[simp]
              theorem QuotientAddGroup.kerLift_mk {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) (g : G) :
              (kerLift φ) g = φ g
              theorem QuotientGroup.kerLift_injective {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) :
              def QuotientGroup.rangeKerLift {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) :
              G φ.ker →* φ.range

              The induced map from the quotient by the kernel to the range.

              Instances For
                def QuotientAddGroup.rangeKerLift {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) :
                G φ.ker →+ φ.range

                The induced map from the quotient by the kernel to the range.

                Instances For
                  noncomputable def QuotientGroup.quotientKerEquivRange {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) :
                  G φ.ker ≃* φ.range

                  Noether's first isomorphism theorem (a definition): the canonical isomorphism between G/(ker φ) to range φ.

                  Instances For
                    noncomputable def QuotientAddGroup.quotientKerEquivRange {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) :
                    G φ.ker ≃+ φ.range

                    The first isomorphism theorem (a definition): the canonical isomorphism between G/(ker φ) to range φ.

                    Instances For
                      def QuotientGroup.quotientKerEquivOfRightInverse {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) (ψ : HG) ( : Function.RightInverse ψ φ) :
                      G φ.ker ≃* H

                      The canonical isomorphism G/(ker φ) ≃* H induced by a homomorphism φ : G →* H with a right inverse ψ : H → G.

                      Instances For
                        def QuotientAddGroup.quotientKerEquivOfRightInverse {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) (ψ : HG) ( : Function.RightInverse ψ φ) :
                        G φ.ker ≃+ H

                        The canonical isomorphism G/(ker φ) ≃+ H induced by a homomorphism φ : G →+ H with a right inverse ψ : H → G.

                        Instances For
                          @[simp]
                          theorem QuotientGroup.quotientKerEquivOfRightInverse_symm_apply {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) (ψ : HG) ( : Function.RightInverse ψ φ) (a✝ : H) :
                          (quotientKerEquivOfRightInverse φ ψ ).symm a✝ = (mk ψ) a✝
                          @[simp]
                          theorem QuotientGroup.quotientKerEquivOfRightInverse_apply {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) (ψ : HG) ( : Function.RightInverse ψ φ) (a : G φ.ker) :
                          @[simp]
                          theorem QuotientAddGroup.quotientKerEquivOfRightInverse_apply {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) (ψ : HG) ( : Function.RightInverse ψ φ) (a : G φ.ker) :
                          @[simp]
                          theorem QuotientAddGroup.quotientKerEquivOfRightInverse_symm_apply {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) (ψ : HG) ( : Function.RightInverse ψ φ) (a✝ : H) :
                          (quotientKerEquivOfRightInverse φ ψ ).symm a✝ = (mk ψ) a✝

                          The canonical isomorphism G/⊥ ≃* G.

                          Instances For

                            The canonical isomorphism G/⊥ ≃+ G.

                            Instances For
                              @[simp]
                              theorem QuotientGroup.quotientBot_symm_apply {G : Type u} [Group G] (a✝ : G) :
                              quotientBot.symm a✝ = a✝
                              @[simp]
                              theorem QuotientAddGroup.quotientBot_symm_apply {G : Type u} [AddGroup G] (a✝ : G) :
                              quotientBot.symm a✝ = a✝
                              noncomputable def QuotientGroup.quotientKerEquivOfSurjective {G : Type u} [Group G] {H : Type v} [Group H] (φ : G →* H) ( : Function.Surjective φ) :
                              G φ.ker ≃* H

                              The canonical isomorphism G/(ker φ) ≃* H induced by a surjection φ : G →* H.

                              For a computable version, see QuotientGroup.quotientKerEquivOfRightInverse.

                              Instances For
                                noncomputable def QuotientAddGroup.quotientKerEquivOfSurjective {G : Type u} [AddGroup G] {H : Type v} [AddGroup H] (φ : G →+ H) ( : Function.Surjective φ) :
                                G φ.ker ≃+ H

                                The canonical isomorphism G/(ker φ) ≃+ H induced by a surjection φ : G →+ H. For a computable version, see QuotientAddGroup.quotientKerEquivOfRightInverse.

                                Instances For
                                  def QuotientGroup.quotientMulEquivOfEq {G : Type u} [Group G] {M N : Subgroup G} [M.Normal] [N.Normal] (h : M = N) :
                                  G M ≃* G N

                                  If two normal subgroups M and N of G are the same, their quotient groups are isomorphic.

                                  Instances For
                                    def QuotientAddGroup.quotientAddEquivOfEq {G : Type u} [AddGroup G] {M N : AddSubgroup G} [M.Normal] [N.Normal] (h : M = N) :
                                    G M ≃+ G N

                                    If two normal subgroups M and N of G are the same, their quotient groups are isomorphic.

                                    Instances For
                                      @[simp]
                                      theorem QuotientGroup.quotientMulEquivOfEq_mk {G : Type u} [Group G] {M N : Subgroup G} [M.Normal] [N.Normal] (h : M = N) (x : G) :
                                      (quotientMulEquivOfEq h) x = x
                                      @[simp]
                                      theorem QuotientAddGroup.quotientAddEquivOfEq_mk {G : Type u} [AddGroup G] {M N : AddSubgroup G} [M.Normal] [N.Normal] (h : M = N) (x : G) :
                                      (quotientAddEquivOfEq h) x = x
                                      def QuotientGroup.quotientMapSubgroupOfOfLe {G : Type u} [Group G] {A' A B' B : Subgroup G} [_hAN : (A'.subgroupOf A).Normal] [_hBN : (B'.subgroupOf B).Normal] (h' : A' B') (h : A B) :
                                      A A'.subgroupOf A →* B B'.subgroupOf B

                                      Let A', A, B', B be subgroups of G. If A' ≤ B' and A ≤ B, then there is a map A / (A' ⊓ A) →* B / (B' ⊓ B) induced by the inclusions.

                                      Instances For
                                        def QuotientAddGroup.quotientMapAddSubgroupOfOfLe {G : Type u} [AddGroup G] {A' A B' B : AddSubgroup G} [_hAN : (A'.addSubgroupOf A).Normal] [_hBN : (B'.addSubgroupOf B).Normal] (h' : A' B') (h : A B) :
                                        A A'.addSubgroupOf A →+ B B'.addSubgroupOf B

                                        Let A', A, B', B be subgroups of G. If A' ≤ B' and A ≤ B, then there is a map A / (A' ⊓ A) →+ B / (B' ⊓ B) induced by the inclusions.

                                        Instances For
                                          @[simp]
                                          theorem QuotientGroup.quotientMapSubgroupOfOfLe_mk {G : Type u} [Group G] {A' A B' B : Subgroup G} [_hAN : (A'.subgroupOf A).Normal] [_hBN : (B'.subgroupOf B).Normal] (h' : A' B') (h : A B) (x : A) :
                                          @[simp]
                                          theorem QuotientAddGroup.quotientMapAddSubgroupOfOfLe_mk {G : Type u} [AddGroup G] {A' A B' B : AddSubgroup G} [_hAN : (A'.addSubgroupOf A).Normal] [_hBN : (B'.addSubgroupOf B).Normal] (h' : A' B') (h : A B) (x : A) :
                                          def QuotientGroup.equivQuotientSubgroupOfOfEq {G : Type u} [Group G] {A' A B' B : Subgroup G} [hAN : (A'.subgroupOf A).Normal] [hBN : (B'.subgroupOf B).Normal] (h' : A' = B') (h : A = B) :
                                          A A'.subgroupOf A ≃* B B'.subgroupOf B

                                          Let A', A, B', B be subgroups of G. If A' = B' and A = B, then the quotients A / (A' ⊓ A) and B / (B' ⊓ B) are isomorphic.

                                          Applying this equiv is nicer than rewriting along the equalities, since the type of (A'.subgroupOf A : Subgroup A) depends on A.

                                          Instances For
                                            def QuotientAddGroup.equivQuotientAddSubgroupOfOfEq {G : Type u} [AddGroup G] {A' A B' B : AddSubgroup G} [hAN : (A'.addSubgroupOf A).Normal] [hBN : (B'.addSubgroupOf B).Normal] (h' : A' = B') (h : A = B) :
                                            A A'.addSubgroupOf A ≃+ B B'.addSubgroupOf B

                                            Let A', A, B', B be subgroups of G. If A' = B' and A = B, then the quotients A / (A' ⊓ A) and B / (B' ⊓ B) are isomorphic. Applying this equiv is nicer than rewriting along the equalities, since the type of (A'.addSubgroupOf A : AddSubgroup A) depends on A.

                                            Instances For

                                              The map of quotients by powers of an integer induced by a group homomorphism.

                                              Instances For

                                                The map of quotients by multiples of an integer induced by an additive group homomorphism.

                                                Instances For

                                                  The equivalence of quotients by powers of an integer induced by a group isomorphism.

                                                  Instances For

                                                    The equivalence of quotients by multiples of an integer induced by an additive group isomorphism.

                                                    Instances For
                                                      noncomputable def QuotientGroup.quotientInfEquivProdNormalizerQuotient {G : Type u} [Group G] (H N : Subgroup G) (hLE : H Subgroup.normalizer N) :
                                                      H N.subgroupOf H ≃* (HN) N.subgroupOf (HN)

                                                      Noether's second isomorphism theorem: given a subgroup N of G and a subgroup H of the normalizer of N in G, defines an isomorphism between H/(H ∩ N) and (HN)/N.

                                                      Instances For
                                                        noncomputable def QuotientAddGroup.quotientInfEquivSumNormalizerQuotient {G : Type u} [AddGroup G] (H N : AddSubgroup G) (hLE : H AddSubgroup.normalizer N) :
                                                        H N.addSubgroupOf H ≃+ (HN) N.addSubgroupOf (HN)

                                                        Noether's second isomorphism theorem: given a subgroup N of G and a subgroup H of the normalizer of N in G, defines an isomorphism between H/(H ∩ N) and (H + N)/N

                                                        Instances For
                                                          noncomputable def QuotientGroup.quotientInfEquivProdNormalQuotient {G : Type u} [Group G] (H N : Subgroup G) [hN : N.Normal] :
                                                          H N.subgroupOf H ≃* (HN) N.subgroupOf (HN)

                                                          Noether's second isomorphism theorem: given two subgroups H and N of a group G, where N is normal, defines an isomorphism between H/(H ∩ N) and (HN)/N.

                                                          Instances For
                                                            noncomputable def QuotientAddGroup.quotientInfEquivSumNormalQuotient {G : Type u} [AddGroup G] (H N : AddSubgroup G) [hN : N.Normal] :
                                                            H N.addSubgroupOf H ≃+ (HN) N.addSubgroupOf (HN)

                                                            Noether's second isomorphism theorem: given two subgroups H and N of a group G, where N is normal, defines an isomorphism between H/(H ∩ N) and (H + N)/N.

                                                            Instances For
                                                              instance QuotientGroup.map_normal {G : Type u} [Group G] (N : Subgroup G) [nN : N.Normal] (M : Subgroup G) [nM : M.Normal] :
                                                              instance QuotientAddGroup.map_normal {G : Type u} [AddGroup G] (N : AddSubgroup G) [nN : N.Normal] (M : AddSubgroup G) [nM : M.Normal] :
                                                              def QuotientGroup.quotientQuotientEquivQuotientAux {G : Type u} [Group G] (N : Subgroup G) [nN : N.Normal] (M : Subgroup G) [nM : M.Normal] (h : N M) :
                                                              (G N) Subgroup.map (mk' N) M →* G M

                                                              The map from the third isomorphism theorem for groups: (G / N) / (M / N) → G / M.

                                                              Instances For
                                                                def QuotientAddGroup.quotientQuotientEquivQuotientAux {G : Type u} [AddGroup G] (N : AddSubgroup G) [nN : N.Normal] (M : AddSubgroup G) [nM : M.Normal] (h : N M) :
                                                                (G N) AddSubgroup.map (mk' N) M →+ G M

                                                                The map from the third isomorphism theorem for additive groups: (A / N) / (M / N) → A / M.

                                                                Instances For
                                                                  @[simp]
                                                                  theorem QuotientGroup.quotientQuotientEquivQuotientAux_mk {G : Type u} [Group G] (N : Subgroup G) [nN : N.Normal] (M : Subgroup G) [nM : M.Normal] (h : N M) (x : G N) :
                                                                  @[simp]
                                                                  theorem QuotientAddGroup.quotientQuotientEquivQuotientAux_mk {G : Type u} [AddGroup G] (N : AddSubgroup G) [nN : N.Normal] (M : AddSubgroup G) [nM : M.Normal] (h : N M) (x : G N) :
                                                                  theorem QuotientGroup.quotientQuotientEquivQuotientAux_mk_mk {G : Type u} [Group G] (N : Subgroup G) [nN : N.Normal] (M : Subgroup G) [nM : M.Normal] (h : N M) (x : G) :
                                                                  (quotientQuotientEquivQuotientAux N M h) x = x
                                                                  theorem QuotientAddGroup.quotientQuotientEquivQuotientAux_mk_mk {G : Type u} [AddGroup G] (N : AddSubgroup G) [nN : N.Normal] (M : AddSubgroup G) [nM : M.Normal] (h : N M) (x : G) :
                                                                  (quotientQuotientEquivQuotientAux N M h) x = x
                                                                  def QuotientGroup.quotientQuotientEquivQuotient {G : Type u} [Group G] (N : Subgroup G) [nN : N.Normal] (M : Subgroup G) [nM : M.Normal] (h : N M) :
                                                                  (G N) Subgroup.map (mk' N) M ≃* G M

                                                                  Noether's third isomorphism theorem for groups: (G / N) / (M / N) ≃* G / M.

                                                                  Instances For
                                                                    def QuotientAddGroup.quotientQuotientEquivQuotient {G : Type u} [AddGroup G] (N : AddSubgroup G) [nN : N.Normal] (M : AddSubgroup G) [nM : M.Normal] (h : N M) :
                                                                    (G N) AddSubgroup.map (mk' N) M ≃+ G M

                                                                    Noether's third isomorphism theorem for additive groups: (A / N) / (M / N) ≃+ A / M.

                                                                    Instances For
                                                                      theorem QuotientGroup.le_comap_mk' {G : Type u} [Group G] (N : Subgroup G) [N.Normal] (H : Subgroup (G N)) :
                                                                      @[simp]
                                                                      theorem QuotientGroup.comap_map_mk' {G : Type u} [Group G] (N H : Subgroup G) [N.Normal] :
                                                                      Subgroup.comap (mk' N) (Subgroup.map (mk' N) H) = NH
                                                                      @[simp]
                                                                      def QuotientGroup.comapMk'OrderIso {G : Type u} [Group G] (N : Subgroup G) [hn : N.Normal] :
                                                                      Subgroup (G N) ≃o { H : Subgroup G // N H }

                                                                      The correspondence theorem, or lattice theorem, or fourth isomorphism theorem for multiplicative groups

                                                                      Instances For

                                                                        The correspondence theorem, or lattice theorem, or fourth isomorphism theorem for additive groups

                                                                        Instances For

                                                                          If the quotient by a subgroup gives a singleton then the subgroup is the whole group.

                                                                          If the quotient by an additive subgroup gives a singleton then the additive subgroup is the whole additive group.

                                                                          theorem QuotientGroup.comap_comap_center {G : Type u} [Group G] {H₁ : Subgroup G} [H₁.Normal] {H₂ : Subgroup (G H₁)} [H₂.Normal] :
                                                                          def MonoidHom.restrictHomKerEquiv {G : Type u} [Group G] (A : Type u_1) [CommGroup A] (H : Subgroup G) [H.Normal] :
                                                                          (restrictHom H A).ker ≃* (G H →* A)

                                                                          The MulEquiv between the kernel of the restriction map to a normal subgroup H of homomorphisms of type G →* A and the group of homomorphisms G ⧸ H →* A.

                                                                          Instances For
                                                                            def AddMonoidHom.restrictHomKerEquiv {G : Type u} [AddGroup G] (A : Type u_1) [AddCommGroup A] (H : AddSubgroup G) [H.Normal] :
                                                                            (restrictHom H A).ker ≃+ (G H →+ A)

                                                                            The AddEquiv between the kernel of the restriction map to a normal subgroup H of homomorphisms of type G →+ A and the group of homomorphisms G ⧸ H →+ A.

                                                                            Instances For
                                                                              @[simp]
                                                                              theorem MonoidHom.restrictHomKerEquiv_apply_coe {G : Type u} [Group G] (A : Type u_1) [CommGroup A] (H : Subgroup G) [H.Normal] (f : (restrictHom H A).ker) (g : G) :
                                                                              ((restrictHomKerEquiv A H) f) g = f g
                                                                              @[simp]
                                                                              theorem MonoidHom.restrictHomKerEquiv_symm_coe_apply {G : Type u} [Group G] (A : Type u_1) [CommGroup A] (H : Subgroup G) [H.Normal] (f : G H →* A) (g : G) :
                                                                              ((restrictHomKerEquiv A H).symm f) g = f g
                                                                              @[simp]
                                                                              theorem QuotientAddGroup.mk_nat_mul {R : Type u_1} [NonAssocRing R] (N : AddSubgroup R) [N.Normal] (n : ) (a : R) :
                                                                              ↑(n * a) = n a
                                                                              @[simp]
                                                                              theorem QuotientAddGroup.mk_int_mul {R : Type u_1} [NonAssocRing R] (N : AddSubgroup R) [N.Normal] (n : ) (a : R) :
                                                                              ↑(n * a) = n a
                                                                              noncomputable def QuotientGroup.mulEquivPiModRangePowMonoidHom {ι : Type u_1} (A : ιType u_2) [(i : ι) → CommGroup (A i)] (n : ) :
                                                                              ((i : ι) → A i) (powMonoidHom n).range ≃* ((i : ι) → A i (powMonoidHom n).range)

                                                                              The isomorphism between the quotient of a product by the image of the nth power map and the product of the quotients by the images of the nth power maps on the factors.

                                                                              Instances For
                                                                                noncomputable def QuotientAddGroup.addEquivPiModRangeNSMulAddMonoidHom {ι : Type u_1} (A : ιType u_2) [(i : ι) → AddCommGroup (A i)] (n : ) :
                                                                                ((i : ι) → A i) (nsmulAddMonoidHom n).range ≃+ ((i : ι) → A i (nsmulAddMonoidHom n).range)

                                                                                The isomorphism between the quotient of a product by the image of the multiplication-by-n map and the product of the quotients by the images of the multiplication-by-n maps on the factors.

                                                                                Instances For
                                                                                  @[simp]
                                                                                  theorem QuotientGroup.mulEquivPiModRangePowMonoidHom_apply {ι : Type u_1} (A : ιType u_2) [(i : ι) → CommGroup (A i)] (n : ) (x : (i : ι) → A i) :
                                                                                  (mulEquivPiModRangePowMonoidHom A n) x = fun (i : ι) => (x i)
                                                                                  @[simp]
                                                                                  theorem QuotientAddGroup.addEquivPiModRangeNSMulAddMonoidHom_apply {ι : Type u_1} (A : ιType u_2) [(i : ι) → AddCommGroup (A i)] (n : ) (x : (i : ι) → A i) :
                                                                                  (addEquivPiModRangeNSMulAddMonoidHom A n) x = fun (i : ι) => (x i)