Documentation

Mathlib.GroupTheory.Torsion

Torsion groups #

This file defines torsion groups, i.e. groups where all elements have finite order.

Main definitions #

Implementation #

All torsion monoids are really groups (which is proven here as Monoid.IsTorsion.group), but since the definition can be stated on monoids it is implemented on Monoid to match other declarations in the group theory library.

Tags #

periodic group, aperiodic group, torsion subgroup, torsion abelian group

Future work #

def IsMulTorsion (G : Type u_1) [Monoid G] :

A predicate on a monoid saying that all elements are of finite order.

Equations
Instances For
    def IsAddTorsion (G : Type u_1) [AddMonoid G] :

    A predicate on an additive monoid saying that all elements are of finite order.

    Equations
    Instances For
      @[deprecated IsMulTorsion (since := "2026-07-01")]
      def Monoid.IsTorsion (G : Type u_1) [Monoid G] :

      Alias of IsMulTorsion.


      A predicate on a monoid saying that all elements are of finite order.

      Equations
      Instances For
        @[deprecated IsAddTorsion (since := "2026-07-01")]

        Alias of IsAddTorsion.


        A predicate on an additive monoid saying that all elements are of finite order.

        Equations
        Instances For
          @[simp]
          theorem not_isMulTorsion_iff (G : Type u_1) [Monoid G] :

          A monoid is not a torsion monoid if it has an element of infinite order.

          @[simp]
          theorem not_isAddTorsion_iff (G : Type u_1) [AddMonoid G] :

          An additive monoid is not a torsion additive monoid if it has an element of infinite order.

          @[deprecated not_isMulTorsion_iff (since := "2026-07-01")]
          theorem Monoid.not_isTorsion_iff (G : Type u_1) [Monoid G] :

          Alias of not_isMulTorsion_iff.


          A monoid is not a torsion monoid if it has an element of infinite order.

          @[deprecated not_isAddTorsion_iff (since := "2026-07-01")]

          Alias of not_isAddTorsion_iff.


          An additive monoid is not a torsion additive monoid if it has an element of infinite order.

          @[instance_reducible]
          noncomputable def IsMulTorsion.group {G : Type u_1} [Monoid G] (tG : IsMulTorsion G) :

          Torsion monoids are really groups.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[instance_reducible]
            noncomputable def IsAddTorsion.addGroup {G : Type u_1} [AddMonoid G] (tG : IsAddTorsion G) :

            Torsion additive monoids are really additive groups.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[deprecated IsMulTorsion.group (since := "2026-07-01")]
              def IsTorsion.group {G : Type u_1} [Monoid G] (tG : IsMulTorsion G) :

              Alias of IsMulTorsion.group.


              Torsion monoids are really groups.

              Equations
              Instances For
                @[deprecated IsAddTorsion.addGroup (since := "2026-07-01")]
                def IsTorsion.addGroup {G : Type u_1} [AddMonoid G] (tG : IsAddTorsion G) :

                Alias of IsAddTorsion.addGroup.


                Torsion additive monoids are really additive groups.

                Equations
                Instances For
                  theorem IsMulTorsion.subgroup {G : Type u_1} [Group G] (tG : IsMulTorsion G) (H : Subgroup G) :

                  Subgroups of torsion groups are torsion groups.

                  theorem IsAddTorsion.addSubgroup {G : Type u_1} [AddGroup G] (tG : IsAddTorsion G) (H : AddSubgroup G) :

                  Additive subgroups of torsion additive groups are torsion additive groups.

                  @[deprecated IsMulTorsion.subgroup (since := "2026-07-01")]
                  theorem IsTorsion.subgroup {G : Type u_1} [Group G] (tG : IsMulTorsion G) (H : Subgroup G) :

                  Alias of IsMulTorsion.subgroup.


                  Subgroups of torsion groups are torsion groups.

                  @[deprecated IsAddTorsion.addSubgroup (since := "2026-07-01")]
                  theorem IsTorsion.addSubgroup {G : Type u_1} [AddGroup G] (tG : IsAddTorsion G) (H : AddSubgroup G) :

                  Alias of IsAddTorsion.addSubgroup.


                  Additive subgroups of torsion additive groups are torsion additive groups.

                  theorem IsMulTorsion.of_surjective {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G →* H} (hf : Function.Surjective f) (tG : IsMulTorsion G) :

                  The image of a surjective torsion group homomorphism is torsion.

                  theorem IsAddTorsion.of_surjective {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G →+ H} (hf : Function.Surjective f) (tG : IsAddTorsion G) :

                  The image of a surjective torsion additive group homomorphism is torsion.

                  @[deprecated IsMulTorsion.of_surjective (since := "2026-06-30")]
                  theorem IsTorsion.of_surjective {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G →* H} (hf : Function.Surjective f) (tG : IsMulTorsion G) :

                  Alias of IsMulTorsion.of_surjective.


                  The image of a surjective torsion group homomorphism is torsion.

                  @[deprecated IsAddTorsion.of_surjective (since := "2026-06-30")]
                  theorem AddIsTorsion.of_surjective {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G →+ H} (hf : Function.Surjective f) (tG : IsAddTorsion G) :

                  Alias of IsAddTorsion.of_surjective.


                  The image of a surjective torsion additive group homomorphism is torsion.

                  theorem IsMulTorsion.extension_closed {G : Type u_1} {H : Type u_2} [Group G] {N : Subgroup G} [Group H] {f : G →* H} (hN : N = f.ker) (tH : IsMulTorsion H) (tN : IsMulTorsion N) :

                  Torsion groups are closed under extensions.

                  theorem IsAddTorsion.extension_closed {G : Type u_1} {H : Type u_2} [AddGroup G] {N : AddSubgroup G} [AddGroup H] {f : G →+ H} (hN : N = f.ker) (tH : IsAddTorsion H) (tN : IsAddTorsion N) :

                  Torsion additive groups are closed under extensions.

                  @[deprecated IsMulTorsion.extension_closed (since := "2026-06-30")]
                  theorem IsTorsion.extension_closed {G : Type u_1} {H : Type u_2} [Group G] {N : Subgroup G} [Group H] {f : G →* H} (hN : N = f.ker) (tH : IsMulTorsion H) (tN : IsMulTorsion N) :

                  Alias of IsMulTorsion.extension_closed.


                  Torsion groups are closed under extensions.

                  @[deprecated IsAddTorsion.extension_closed (since := "2026-06-30")]
                  theorem AddIsTorsion.extension_closed {G : Type u_1} {H : Type u_2} [AddGroup G] {N : AddSubgroup G} [AddGroup H] {f : G →+ H} (hN : N = f.ker) (tH : IsAddTorsion H) (tN : IsAddTorsion N) :

                  Alias of IsAddTorsion.extension_closed.


                  Torsion additive groups are closed under extensions.

                  theorem IsMulTorsion.quotient_iff {G : Type u_1} {H : Type u_2} [Group G] {N : Subgroup G} [Group H] {f : G →* H} (hf : Function.Surjective f) (hN : N = f.ker) (tN : IsMulTorsion N) :

                  The image of a quotient is torsion iff the group is torsion.

                  theorem IsAddTorsion.quotient_iff {G : Type u_1} {H : Type u_2} [AddGroup G] {N : AddSubgroup G} [AddGroup H] {f : G →+ H} (hf : Function.Surjective f) (hN : N = f.ker) (tN : IsAddTorsion N) :

                  The image of a quotient is torsion iff the additive group is torsion.

                  @[deprecated IsMulTorsion.quotient_iff (since := "2026-06-30")]
                  theorem IsTorsion.quotient_iff {G : Type u_1} {H : Type u_2} [Group G] {N : Subgroup G} [Group H] {f : G →* H} (hf : Function.Surjective f) (hN : N = f.ker) (tN : IsMulTorsion N) :

                  Alias of IsMulTorsion.quotient_iff.


                  The image of a quotient is torsion iff the group is torsion.

                  @[deprecated IsAddTorsion.quotient_iff (since := "2026-06-30")]
                  theorem AddIsTorsion.quotient_iff {G : Type u_1} {H : Type u_2} [AddGroup G] {N : AddSubgroup G} [AddGroup H] {f : G →+ H} (hf : Function.Surjective f) (hN : N = f.ker) (tN : IsAddTorsion N) :

                  Alias of IsAddTorsion.quotient_iff.


                  The image of a quotient is torsion iff the additive group is torsion.

                  If a group exponent exists, the group is torsion.

                  If a group exponent exists, the additive group is torsion.

                  @[deprecated ExponentExists.isMulTorsion (since := "2026-06-30")]

                  Alias of ExponentExists.isMulTorsion.


                  If a group exponent exists, the group is torsion.

                  @[deprecated ExponentExists.isAddTorsion (since := "2026-06-30")]

                  Alias of ExponentExists.isAddTorsion.


                  If a group exponent exists, the additive group is torsion.

                  theorem IsMulTorsion.exponentExists {G : Type u_1} [Group G] (tG : IsMulTorsion G) (bounded : (Set.range fun (g : G) => orderOf g).Finite) :

                  The group exponent exists for any bounded torsion group.

                  theorem IsAddTorsion.exponentExists {G : Type u_1} [AddGroup G] (tG : IsAddTorsion G) (bounded : (Set.range fun (g : G) => addOrderOf g).Finite) :

                  The group exponent exists for any bounded torsion additive group.

                  @[deprecated IsMulTorsion.exponentExists (since := "2026-07-01")]
                  theorem IsTorsion.exponentExists {G : Type u_1} [Group G] (tG : IsMulTorsion G) (bounded : (Set.range fun (g : G) => orderOf g).Finite) :

                  Alias of IsMulTorsion.exponentExists.


                  The group exponent exists for any bounded torsion group.

                  theorem isMulTorsion_of_finite {G : Type u_1} [Group G] [Finite G] :

                  Finite groups are torsion groups.

                  Finite additive groups are torsion additive groups.

                  @[deprecated isMulTorsion_of_finite (since := "2026-06-30")]
                  theorem isTorsion_of_finite {G : Type u_1} [Group G] [Finite G] :

                  Alias of isMulTorsion_of_finite.


                  Finite groups are torsion groups.

                  @[deprecated isAddTorsion_of_finite (since := "2026-06-30")]

                  Alias of isAddTorsion_of_finite.


                  Finite additive groups are torsion additive groups.

                  A nontrivial torsion abelian group is not torsion-free.

                  A nontrivial torsion additive abelian group is not torsion-free.

                  @[deprecated not_isMulTorsionFree_of_isMulTorsion (since := "2026-07-01")]

                  Alias of not_isMulTorsionFree_of_isMulTorsion.


                  A nontrivial torsion abelian group is not torsion-free.

                  @[deprecated not_isAddTorsionFree_of_isAddTorsion (since := "2026-07-01")]

                  Alias of not_isAddTorsionFree_of_isAddTorsion.


                  A nontrivial torsion additive abelian group is not torsion-free.

                  A nontrivial torsion-free abelian group is not torsion.

                  A nontrivial torsion-free additive abelian group is not torsion.

                  @[deprecated not_isMulTorsion_of_isMulTorsionFree (since := "2026-07-01")]

                  Alias of not_isMulTorsion_of_isMulTorsionFree.


                  A nontrivial torsion-free abelian group is not torsion.

                  @[deprecated not_isAddTorsion_of_isAddTorsionFree (since := "2026-07-01")]

                  Alias of not_isAddTorsion_of_isAddTorsionFree.


                  A nontrivial torsion-free additive abelian group is not torsion.

                  theorem IsAddTorsion.module_of_torsion (R : Type u_3) (M : Type u_4) [AddCommMonoid M] [Semiring R] [Module R M] (tR : IsAddTorsion R) :

                  A module whose scalars are torsion is torsion.

                  @[deprecated IsAddTorsion.module_of_torsion (since := "2026-07-01")]

                  Alias of IsAddTorsion.module_of_torsion.


                  A module whose scalars are torsion is torsion.

                  theorem IsAddTorsion.module_of_finite (R : Type u_3) (M : Type u_4) [AddCommMonoid M] [Ring R] [Finite R] [Module R M] :

                  A module with a finite ring of scalars is torsion.

                  @[deprecated IsAddTorsion.module_of_finite (since := "2026-07-01")]

                  Alias of IsAddTorsion.module_of_finite.


                  A module with a finite ring of scalars is torsion.

                  The torsion submonoid of a commutative monoid.

                  (Note that by IsMulTorsion.group torsion monoids are truthfully groups.)

                  Equations
                  Instances For

                    The torsion additive submonoid of an additive commutative monoid.

                    Equations
                    Instances For
                      theorem CommMonoid.torsion_prod (G : Type u_1) {H : Type u_2} [CommMonoid G] [CommMonoid H] :
                      torsion (G × H) = (torsion G).prod (torsion H)

                      Torsion submonoids are torsion.

                      Torsion additive submonoids are torsion.

                      @[deprecated CommMonoid.torsion.isMulTorsion (since := "2026-07-01")]

                      Alias of CommMonoid.torsion.isMulTorsion.


                      Torsion submonoids are torsion.

                      @[deprecated AddCommMonoid.addTorsion.isAddTorsion (since := "2026-07-01")]

                      Alias of AddCommMonoid.addTorsion.isAddTorsion.


                      Torsion additive submonoids are torsion.

                      The p-primary component is the submonoid of elements g such that g ^ p ^ k = 1 for some k. For prime p, these are exactly the elements of p-power order.

                      Equations
                      Instances For

                        The additive p-primary component is the submonoid of elements g such that p ^ k • g = 0 for some k. For prime p, these are exactly the elements of additive p-power order.

                        Equations
                        Instances For
                          @[simp]
                          theorem CommMonoid.mem_primaryComponent {G : Type u_1} [CommMonoid G] {p : } {g : G} :
                          g primaryComponent G p ∃ (k : ), g ^ p ^ k = 1

                          g lies in the p-primary component iff g ^ p ^ k = 1 for some k.

                          @[simp]
                          theorem AddCommMonoid.mem_primaryComponent {G : Type u_1} [AddCommMonoid G] {p : } {g : G} :
                          g primaryComponent G p ∃ (k : ), p ^ k g = 0

                          g lies in the additive p-primary component iff p ^ k • g = 0 for some k.

                          theorem CommMonoid.mem_primaryComponent_iff_orderOf {G : Type u_1} [CommMonoid G] {p : } [Fact (Nat.Prime p)] {g : G} :
                          g primaryComponent G p ∃ (n : ), orderOf g = p ^ n

                          For prime p, g lies in the p-primary component iff its order is a power of p.

                          For prime p, g lies in the additive p-primary component iff its additive order is a power of p.

                          theorem CommMonoid.primaryComponent.exists_orderOf_eq_prime_pow {G : Type u_1} [CommMonoid G] {p : } [hp : Fact (Nat.Prime p)] (g : (primaryComponent G p)) :
                          ∃ (n : ), orderOf g = p ^ n

                          Elements of the p-primary component have order p^n for some n.

                          Elements of the p-primary component have additive order p^n for some n.

                          theorem CommMonoid.primaryComponent.disjoint {G : Type u_1} [CommMonoid G] {p : } [hp : Fact (Nat.Prime p)] {p' : } [hp' : Fact (Nat.Prime p')] (hne : p p') :

                          The p- and q-primary components are disjoint for p ≠ q.

                          theorem AddCommMonoid.primaryComponent.disjoint {G : Type u_1} [AddCommMonoid G] {p : } [hp : Fact (Nat.Prime p)] {p' : } [hp' : Fact (Nat.Prime p')] (hne : p p') :

                          The p- and q-primary components are disjoint for p ≠ q.

                          @[simp]

                          The torsion submonoid of a torsion monoid is .

                          @[simp]

                          The torsion additive submonoid of a torsion additive monoid is .

                          A torsion monoid is isomorphic to its torsion submonoid.

                          Equations
                          Instances For

                            A torsion additive monoid is isomorphic to its torsion additive submonoid.

                            Equations
                            Instances For
                              @[simp]
                              theorem IsMulTorsion.torsionMulEquiv_symm_apply_coe {G : Type u_1} [CommMonoid G] (tG : IsMulTorsion G) (a✝ : G) :
                              (tG.torsionMulEquiv.symm a✝) = a✝
                              @[simp]
                              theorem IsAddTorsion.torsionAddEquiv_symm_apply_coe {G : Type u_1} [AddCommMonoid G] (tG : IsAddTorsion G) (a✝ : G) :
                              (tG.torsionAddEquiv.symm a✝) = a✝
                              @[simp]
                              theorem IsMulTorsion.torsionMulEquiv_apply {G : Type u_1} [CommMonoid G] (tG : IsMulTorsion G) (a✝ : (CommMonoid.torsion G)) :
                              tG.torsionMulEquiv a✝ = ((MulEquiv.submonoidCongr ) a✝)
                              @[deprecated IsMulTorsion.torsion_eq_top (since := "2026-07-01")]

                              Alias of IsMulTorsion.torsion_eq_top.


                              The torsion submonoid of a torsion monoid is .

                              @[deprecated IsAddTorsion.torsion_eq_top (since := "2026-07-01")]

                              Alias of IsAddTorsion.torsion_eq_top.


                              The torsion additive submonoid of a torsion additive monoid is .

                              @[deprecated IsMulTorsion.torsionMulEquiv (since := "2026-07-01")]

                              Alias of IsMulTorsion.torsionMulEquiv.


                              A torsion monoid is isomorphic to its torsion submonoid.

                              Equations
                              Instances For
                                @[deprecated IsAddTorsion.torsionAddEquiv (since := "2026-07-01")]

                                Alias of IsAddTorsion.torsionAddEquiv.


                                A torsion additive monoid is isomorphic to its torsion additive submonoid.

                                Equations
                                Instances For
                                  @[deprecated IsMulTorsion.torsionMulEquiv_apply (since := "2026-07-01")]

                                  Alias of IsMulTorsion.torsionMulEquiv_apply.

                                  @[deprecated IsAddTorsion.torsionAddEquiv_apply (since := "2026-07-01")]

                                  Alias of IsAddTorsion.torsionAddEquiv_apply.

                                  @[deprecated IsMulTorsion.torsionMulEquiv_symm_apply_coe (since := "2026-07-01")]
                                  theorem Monoid.IsTorsion.torsionMulEquiv_symm_apply_coe {G : Type u_1} [CommMonoid G] (tG : IsMulTorsion G) (a✝ : G) :
                                  (tG.torsionMulEquiv.symm a✝) = a✝

                                  Alias of IsMulTorsion.torsionMulEquiv_symm_apply_coe.

                                  @[deprecated IsAddTorsion.torsionAddEquiv_symm_apply_coe (since := "2026-07-01")]
                                  theorem AddMonoid.IsTorsion.torsionAddEquiv_symm_apply_coe {G : Type u_1} [AddCommMonoid G] (tG : IsAddTorsion G) (a✝ : G) :
                                  (tG.torsionAddEquiv.symm a✝) = a✝

                                  Alias of IsAddTorsion.torsionAddEquiv_symm_apply_coe.

                                  Torsion submonoids of a torsion submonoid are isomorphic to the submonoid.

                                  Equations
                                  Instances For

                                    Torsion additive submonoids of a torsion additive submonoid are isomorphic to the additive submonoid.

                                    Equations
                                    Instances For
                                      @[deprecated CommMonoid.Torsion.ofTorsion (since := "2026-07-01")]

                                      Alias of CommMonoid.Torsion.ofTorsion.


                                      Torsion submonoids of a torsion submonoid are isomorphic to the submonoid.

                                      Equations
                                      Instances For

                                        The torsion subgroup of an abelian group.

                                        Equations
                                        Instances For

                                          The torsion additive subgroup of an additive abelian group.

                                          Equations
                                          Instances For

                                            The torsion submonoid of an abelian group equals the torsion subgroup as a submonoid.

                                            The torsion additive submonoid of an abelian group equals the torsion additive subgroup as an additive submonoid.

                                            @[deprecated AddCommGroup.torsion_eq_torsion_addSubmonoid (since := "2026-07-01")]

                                            Alias of AddCommGroup.torsion_eq_torsion_addSubmonoid.


                                            The torsion additive submonoid of an abelian group equals the torsion additive subgroup as an additive submonoid.

                                            theorem CommGroup.le_comap_torsion {G : Type u_1} {H : Type u_2} [CommGroup G] [CommGroup H] (f : G →* H) :
                                            theorem CommGroup.map_torsion_le {G : Type u_1} {H : Type u_2} [CommGroup G] [CommGroup H] (f : G →* H) :
                                            theorem MulEquiv.map_torsion {G : Type u_1} {H : Type u_2} [CommGroup G] [CommGroup H] (e : G ≃* H) :
                                            theorem CommGroup.torsion_prod {G : Type u_1} {H : Type u_2} [CommGroup G] [CommGroup H] :
                                            torsion (G × H) = (torsion G).prod (torsion H)
                                            theorem AddCommGroup.torsion_sum {G : Type u_1} {H : Type u_2} [AddCommGroup G] [AddCommGroup H] :
                                            torsion (G × H) = (torsion G).prod (torsion H)
                                            @[deprecated CommGroup.isMulTorsion_quotient_range_powMonoidHom (since := "2026-07-01")]

                                            Alias of CommGroup.isMulTorsion_quotient_range_powMonoidHom.

                                            @[deprecated AddCommGroup.isAddTorsion_quotient_range_nsmulAddMonoidHom (since := "2026-07-01")]

                                            Alias of AddCommGroup.isAddTorsion_quotient_range_nsmulAddMonoidHom.

                                            The p-primary component is the subgroup of elements g such that g ^ p ^ k = 1 for some k. For prime p, these are exactly the elements of p-power order.

                                            Equations
                                            Instances For

                                              The additive p-primary component is the subgroup of elements g such that p ^ k • g = 0 for some k. For prime p, these are exactly the elements of additive p-power order.

                                              Equations
                                              Instances For
                                                @[simp]
                                                theorem CommGroup.mem_primaryComponent {G : Type u_1} [CommGroup G] {p : } {g : G} :
                                                g primaryComponent G p ∃ (k : ), g ^ p ^ k = 1

                                                g lies in the p-primary component iff g ^ p ^ k = 1 for some k.

                                                @[simp]
                                                theorem AddCommGroup.mem_primaryComponent {G : Type u_1} [AddCommGroup G] {p : } {g : G} :
                                                g primaryComponent G p ∃ (k : ), p ^ k g = 0

                                                g lies in the additive p-primary component iff p ^ k • g = 0 for some k.

                                                theorem CommGroup.mem_primaryComponent_iff_orderOf {G : Type u_1} [CommGroup G] {p : } [Fact (Nat.Prime p)] {g : G} :
                                                g primaryComponent G p ∃ (n : ), orderOf g = p ^ n

                                                For prime p, g lies in the p-primary component iff its order is a power of p.

                                                theorem AddCommGroup.mem_primaryComponent_iff_addOrderOf {G : Type u_1} [AddCommGroup G] {p : } [Fact (Nat.Prime p)] {g : G} :
                                                g primaryComponent G p ∃ (n : ), addOrderOf g = p ^ n

                                                For prime p, g lies in the additive p-primary component iff its additive order is a power of p.

                                                The p-primary component is a p-group.

                                                noncomputable def CommGroup.freeRank (G : Type u_1) [CommGroup G] [Group.FG G] :

                                                The free rank of a finitely generated abelian group is the rank of its free part.

                                                Equations
                                                Instances For
                                                  noncomputable def AddCommGroup.freeRank (G : Type u_1) [AddCommGroup G] [AddGroup.FG G] :

                                                  The free rank of a finitely generated abelian group is the rank of its free part.

                                                  Equations
                                                  Instances For
                                                    theorem CommGroup.freeRank_congr {G : Type u_1} {H : Type u_2} [CommGroup G] [CommGroup H] [Group.FG G] [Group.FG H] (e : G ≃* H) :

                                                    Quotienting a group by its torsion subgroup yields a torsion-free group.

                                                    Quotienting an additive group by its torsion additive subgroup yields a torsion-free additive group.

                                                    @[instance_reducible]
                                                    Equations
                                                    • One or more equations did not get rendered due to their size.