Documentation

Mathlib.GroupTheory.PGroup

p-groups #

A p-group is a group in which the order of every element is a power of p.

Main definitions #

Main results #

Being a p-group is also shown to pass to subgroups, quotients, images and joins, and p-groups for distinct primes are shown to be disjoint.

def IsPGroup (p : ℕ) (G : Type u_1) [Group G] :

A p-group is a group in which the order of every element divides a power of p.

Equations
Instances For
    def IsAddPGroup (p : ℕ) (G : Type u_1) [AddGroup G] :

    A p-group is a group in which the order of every element divides a power of p.

    Equations
    Instances For
      theorem isPGroup_iff_pow_pow_eq_one {p : ℕ} {G : Type u_1} [Group G] :
      IsPGroup p G ↔ ∀ (g : G), ∃ (k : ℕ), g ^ p ^ k = 1
      theorem isAddPGroup_iff_pow_nsmul_eq_zero {p : ℕ} {G : Type u_1} [AddGroup G] :
      IsAddPGroup p G ↔ ∀ (g : G), ∃ (k : ℕ), p ^ k • g = 0
      theorem IsPGroup.exists_pow_pow_eq_one {p : ℕ} {G : Type u_1} [Group G] :
      IsPGroup p G → ∀ (g : G), ∃ (k : ℕ), g ^ p ^ k = 1

      Alias of the forward direction of isPGroup_iff_pow_pow_eq_one.

      theorem IsAddPGroup.exists_pow_nsmul_eq_zero {p : ℕ} {G : Type u_1} [AddGroup G] :
      IsAddPGroup p G → ∀ (g : G), ∃ (k : ℕ), p ^ k • g = 0

      Alias of the forward direction of isAddPGroup_iff_pow_nsmul_eq_zero.

      theorem isPGroup_iff_orderOf_dvd_pow {p : ℕ} {G : Type u_1} [Group G] :
      IsPGroup p G ↔ ∀ (g : G), ∃ (k : ℕ), orderOf g ∣ p ^ k
      theorem isAddPGroup_iff_addOrderOf_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] :
      IsAddPGroup p G ↔ ∀ (g : G), ∃ (k : ℕ), addOrderOf g ∣ p ^ k
      theorem IsPGroup.exists_orderOf_dvd_pow {p : ℕ} {G : Type u_1} [Group G] :
      IsPGroup p G → ∀ (g : G), ∃ (k : ℕ), orderOf g ∣ p ^ k

      Alias of the forward direction of isPGroup_iff_orderOf_dvd_pow.

      theorem IsAddPGroup.exists_addOrderOf_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] :
      IsAddPGroup p G → ∀ (g : G), ∃ (k : ℕ), addOrderOf g ∣ p ^ k

      Alias of the forward direction of isAddPGroup_iff_addOrderOf_dvd_pow.

      theorem IsPGroup.iff_orderOf {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] :
      IsPGroup p G ↔ ∀ (g : G), ∃ (k : ℕ), orderOf g = p ^ k
      theorem IsAddPGroup.iff_addOrderOf {p : ℕ} {G : Type u_1} [AddGroup G] [Fact (Nat.Prime p)] :
      IsAddPGroup p G ↔ ∀ (g : G), ∃ (k : ℕ), addOrderOf g = p ^ k
      theorem IsPGroup.exists_orderOf_eq_pow {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] :
      IsPGroup p G → ∀ (g : G), ∃ (k : ℕ), orderOf g = p ^ k

      Alias of the forward direction of IsPGroup.iff_orderOf.

      theorem IsAddPGroup.exists_addOrderOf_eq_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Fact (Nat.Prime p)] :
      IsAddPGroup p G → ∀ (g : G), ∃ (k : ℕ), addOrderOf g = p ^ k

      Alias of the forward direction of IsAddPGroup.iff_addOrderOf.

      theorem IsPGroup.of_card_dvd_pow {p : ℕ} {G : Type u_1} [Group G] {n : ℕ} (hG : Nat.card G ∣ p ^ n) :
      theorem IsAddPGroup.of_card_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] {n : ℕ} (hG : Nat.card G ∣ p ^ n) :
      theorem isPGroup_iff_card_dvd_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] :
      IsPGroup p G ↔ ∃ (n : ℕ), Nat.card G ∣ p ^ n
      theorem isAddPGroup_iff_card_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] :
      IsAddPGroup p G ↔ ∃ (n : ℕ), Nat.card G ∣ p ^ n
      theorem IsPGroup.exists_card_dvd_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] :
      IsPGroup p G → ∃ (n : ℕ), Nat.card G ∣ p ^ n

      Alias of the forward direction of isPGroup_iff_card_dvd_pow.

      theorem IsAddPGroup.exists_card_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] :
      IsAddPGroup p G → ∃ (n : ℕ), Nat.card G ∣ p ^ n

      Alias of the forward direction of isAddPGroup_iff_card_dvd_pow.

      theorem IsPGroup.dvd_orderOf {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] (hG : IsPGroup p G) {g : G} (hg : g ≠ 1) :
      theorem IsAddPGroup.dvd_addOrderOf {p : ℕ} {G : Type u_1} [AddGroup G] [Fact (Nat.Prime p)] (hG : IsAddPGroup p G) {g : G} (hg : g ≠ 0) :
      theorem IsPGroup.of_card {p : ℕ} {G : Type u_1} [Group G] {n : ℕ} (hG : Nat.card G = p ^ n) :
      theorem IsAddPGroup.of_card {p : ℕ} {G : Type u_1} [AddGroup G] {n : ℕ} (hG : Nat.card G = p ^ n) :
      theorem IsPGroup.of_subsingleton (p : ℕ) (G : Type u_1) [Group G] [Subsingleton G] :
      theorem IsPGroup.of_bot {p : ℕ} {G : Type u_1} [Group G] :
      theorem IsAddPGroup.of_bot {p : ℕ} {G : Type u_1} [AddGroup G] :
      @[simp]
      theorem IsPGroup.zero (G : Type u_1) [Group G] :
      @[simp]
      theorem IsAddPGroup.zero (G : Type u_1) [AddGroup G] :
      theorem IsPGroup.card {G : Type u_1} [Group G] :
      theorem IsPGroup.mono {p : ℕ} {G : Type u_1} [Group G] {q : ℕ} (hpq : p ∣ q) (hp : IsPGroup p G) :
      theorem IsAddPGroup.mono {p : ℕ} {G : Type u_1} [AddGroup G] {q : ℕ} (hpq : p ∣ q) (hp : IsAddPGroup p G) :
      theorem IsPGroup.of_pow {p : ℕ} {G : Type u_1} [Group G] {n : ℕ} (h : IsPGroup (p ^ n) G) :
      theorem IsAddPGroup.of_pow {p : ℕ} {G : Type u_1} [AddGroup G] {n : ℕ} (h : IsAddPGroup (p ^ n) G) :
      theorem IsPGroup.iff_card {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] [Finite G] :
      IsPGroup p G ↔ ∃ (n : ℕ), Nat.card G = p ^ n
      theorem IsAddPGroup.iff_card {p : ℕ} {G : Type u_1} [AddGroup G] [Fact (Nat.Prime p)] [Finite G] :
      IsAddPGroup p G ↔ ∃ (n : ℕ), Nat.card G = p ^ n
      theorem IsPGroup.exists_card_eq {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] [Finite G] :
      IsPGroup p G → ∃ (n : ℕ), Nat.card G = p ^ n

      Alias of the forward direction of IsPGroup.iff_card.

      theorem IsAddPGroup.exists_card_eq {p : ℕ} {G : Type u_1} [AddGroup G] [Fact (Nat.Prime p)] [Finite G] :
      IsAddPGroup p G → ∃ (n : ℕ), Nat.card G = p ^ n

      Alias of the forward direction of IsAddPGroup.iff_card.

      theorem isPGroup_iff_exists_orderOf_dvd_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] :
      IsPGroup p G ↔ ∃ (k : ℕ), ∀ (g : G), orderOf g ∣ p ^ k
      theorem isAddPGroup_iff_exists_addOrderOf_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] :
      IsAddPGroup p G ↔ ∃ (k : ℕ), ∀ (g : G), addOrderOf g ∣ p ^ k
      theorem isPGroup_iff_exists_pow_pow_eq_one {p : ℕ} {G : Type u_1} [Group G] [Finite G] :
      IsPGroup p G ↔ ∃ (k : ℕ), ∀ (g : G), g ^ p ^ k = 1
      theorem isAddPGroup_iff_exists_pow_nsmul_eq_zero {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] :
      IsAddPGroup p G ↔ ∃ (k : ℕ), ∀ (g : G), p ^ k • g = 0
      theorem IsPGroup.of_exponent_dvd_pow {p : ℕ} {G : Type u_1} [Group G] {n : ℕ} (h : Monoid.exponent G ∣ p ^ n) :
      theorem IsAddPGroup.of_exponent_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] {n : ℕ} (h : AddMonoid.exponent G ∣ p ^ n) :
      theorem isPGroup_iff_exponent_dvd_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] :
      IsPGroup p G ↔ ∃ (n : ℕ), Monoid.exponent G ∣ p ^ n
      theorem IsPGroup.exists_exponent_dvd_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] :
      IsPGroup p G → ∃ (n : ℕ), Monoid.exponent G ∣ p ^ n

      Alias of the forward direction of isPGroup_iff_exponent_dvd_pow.

      theorem IsAddPGroup.exists_exponent_dvd_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] :
      IsAddPGroup p G → ∃ (n : ℕ), AddMonoid.exponent G ∣ p ^ n

      Alias of the forward direction of isAddPGroup_iff_exponent_dvd_pow.

      theorem isPGroup_iff_exponent_eq_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] [Fact (Nat.Prime p)] :
      IsPGroup p G ↔ ∃ (n : ℕ), Monoid.exponent G = p ^ n
      theorem isAddPGroup_iff_exponent_eq_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] [Fact (Nat.Prime p)] :
      IsAddPGroup p G ↔ ∃ (n : ℕ), AddMonoid.exponent G = p ^ n
      theorem IsPGroup.exists_exponent_eq_pow {p : ℕ} {G : Type u_1} [Group G] [Finite G] [Fact (Nat.Prime p)] :
      IsPGroup p G → ∃ (n : ℕ), Monoid.exponent G = p ^ n

      Alias of the forward direction of isPGroup_iff_exponent_eq_pow.

      theorem IsAddPGroup.exists_exponent_eq_pow {p : ℕ} {G : Type u_1} [AddGroup G] [Finite G] [Fact (Nat.Prime p)] :
      IsAddPGroup p G → ∃ (n : ℕ), AddMonoid.exponent G = p ^ n

      Alias of the forward direction of isAddPGroup_iff_exponent_eq_pow.

      theorem IsPGroup.of_injective {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {H : Type u_2} [Group H] (ϕ : H →* G) (hϕ : Function.Injective ⇑ϕ) :
      theorem IsAddPGroup.of_injective {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {H : Type u_2} [AddGroup H] (ϕ : H →+ G) (hϕ : Function.Injective ⇑ϕ) :
      theorem IsPGroup.to_subgroup {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) (H : Subgroup G) :
      IsPGroup p ↥H
      theorem IsAddPGroup.to_addSubgroup {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) (H : AddSubgroup G) :
      theorem IsPGroup.of_surjective {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {H : Type u_2} [Group H] (ϕ : G →* H) (hϕ : Function.Surjective ⇑ϕ) :
      theorem IsAddPGroup.of_surjective {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {H : Type u_2} [AddGroup H] (ϕ : G →+ H) (hϕ : Function.Surjective ⇑ϕ) :
      theorem IsPGroup.to_quotient {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) (H : Subgroup G) [H.Normal] :
      IsPGroup p (G ⧸ H)
      theorem IsAddPGroup.to_quotient {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) (H : AddSubgroup G) [H.Normal] :
      theorem IsPGroup.of_equiv {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {H : Type u_2} [Group H] (ϕ : G ≃* H) :
      theorem IsAddPGroup.of_equiv {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {H : Type u_2} [AddGroup H] (ϕ : G ≃+ H) :
      theorem IsPGroup.isOfFinOrder {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) (hp : p ≠ 0) (g : G) :
      theorem IsAddPGroup.isOfFinAddOrder {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) (hp : p ≠ 0) (g : G) :
      theorem IsPGroup.orderOf_coprime {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G) :
      theorem IsAddPGroup.addOrderOf_coprime {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G) :
      noncomputable def IsPGroup.powEquiv {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) :
      G ≃ G

      If gcd(p,n) = 1, then the nth power map is a bijection.

      Equations
      Instances For
        noncomputable def IsAddPGroup.nsmulEquiv {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {n : ℕ} (hn : p.Coprime n) :
        G ≃ G

        If gcd(p,n) = 1, then multiplication by n is a bijection.

        Equations
        Instances For
          @[simp]
          theorem IsPGroup.powEquiv_apply {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G) :
          (hG.powEquiv hn) g = g ^ n
          @[simp]
          theorem IsAddPGroup.nsmulEquiv_apply {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G) :
          (hG.nsmulEquiv hn) g = n • g
          @[simp]
          theorem IsPGroup.powEquiv_symm_apply {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G) :
          (hG.powEquiv hn).symm g = g ^ (orderOf g).gcdB n
          @[simp]
          theorem IsAddPGroup.nsmulEquiv_symm_apply {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G) :
          (hG.nsmulEquiv hn).symm g = (addOrderOf g).gcdB n • g
          @[reducible, inline]
          noncomputable abbrev IsPGroup.powEquiv' {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] {n : ℕ} (hn : ¬p ∣ n) :
          G ≃ G

          If p ∤ n, then the nth power map is a bijection.

          Equations
          Instances For
            @[reducible, inline]
            noncomputable abbrev IsAddPGroup.nsmulEquiv' {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] {n : ℕ} (hn : ¬p ∣ n) :
            G ≃ G

            If p ∤ n, then multiplication by n is a bijection.

            Equations
            Instances For
              theorem IsPGroup.index {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (H : Subgroup G) [H.FiniteIndex] :
              ∃ (n : ℕ), H.index = p ^ n
              theorem IsAddPGroup.index {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] (H : AddSubgroup G) [H.FiniteIndex] :
              ∃ (n : ℕ), H.index = p ^ n
              theorem IsPGroup.card_eq_or_dvd {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] :
              theorem IsAddPGroup.card_eq_or_dvd {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] :
              theorem IsPGroup.nontrivial_iff_card {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Finite G] :
              Nontrivial G ↔ ∃ n > 0, Nat.card G = p ^ n
              theorem IsAddPGroup.nontrivial_iff_card {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] [Finite G] :
              Nontrivial G ↔ ∃ n > 0, Nat.card G = p ^ n
              theorem IsPGroup.card_orbit {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] {α : Type u_2} [MulAction G α] (a : α) [Finite ↑(MulAction.orbit G a)] :
              ∃ (n : ℕ), Nat.card ↑(MulAction.orbit G a) = p ^ n
              theorem IsAddPGroup.card_orbit {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] {α : Type u_2} [AddAction G α] (a : α) [Finite ↑(AddAction.orbit G a)] :
              ∃ (n : ℕ), Nat.card ↑(AddAction.orbit G a) = p ^ n
              theorem IsPGroup.card_modEq_card_fixedPoints {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [MulAction G α] [Finite α] :

              If G is a p-group acting on a finite set α, then the number of fixed points of the action is congruent mod p to the cardinality of α

              theorem IsAddPGroup.card_modEq_card_fixedPoints {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [AddAction G α] [Finite α] :

              If G is a p-group acting on a finite set α, then the number of fixed points of the action is congruent mod p to the cardinality of α

              theorem IsPGroup.nonempty_fixed_point_of_prime_not_dvd_card {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_3) [MulAction G α] (hpα : ¬p ∣ Nat.card α) :

              If a p-group acts on α and the cardinality of α is not a multiple of p then the action has a fixed point.

              theorem IsAddPGroup.nonempty_fixed_point_of_prime_not_dvd_card {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_3) [AddAction G α] (hpα : ¬p ∣ Nat.card α) :

              If a p-group acts on α and the cardinality of α is not a multiple of p then the action has a fixed point.

              theorem IsPGroup.exists_fixed_point_of_prime_dvd_card_of_fixed_point {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [MulAction G α] [Finite α] (hpα : p ∣ Nat.card α) {a : α} (ha : a ∈ MulAction.fixedPoints G α) :
              ∃ b ∈ MulAction.fixedPoints G α, a ≠ b

              If a p-group acts on α and the cardinality of α is a multiple of p, and the action has one fixed point, then it has another fixed point.

              theorem IsAddPGroup.exists_fixed_point_of_prime_dvd_card_of_fixed_point {p : ℕ} {G : Type u_1} [AddGroup G] (hG : IsAddPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [AddAction G α] [Finite α] (hpα : p ∣ Nat.card α) {a : α} (ha : a ∈ AddAction.fixedPoints G α) :
              ∃ b ∈ AddAction.fixedPoints G α, a ≠ b

              If a p-group acts on α and the cardinality of α is a multiple of p, and the action has one fixed point, then it has another fixed point.

              theorem IsPGroup.center_nontrivial {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Nontrivial G] [Finite G] :
              theorem IsPGroup.bot_lt_center {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Nontrivial G] [Finite G] :
              theorem IsPGroup.isSimpleGroup_iff_card_eq {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Finite G] :

              A p-group is simple iff it has cardinality p.

              theorem IsPGroup.to_le {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hK : IsPGroup p ↥K) (hHK : H ≤ K) :
              IsPGroup p ↥H
              theorem IsAddPGroup.to_le {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hK : IsAddPGroup p ↥K) (hHK : H ≤ K) :
              theorem IsPGroup.to_inf_left {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) :
              IsPGroup p ↥(H ⊓ K)
              theorem IsAddPGroup.to_inf_left {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : IsAddPGroup p ↥H) :
              IsAddPGroup p ↥(H ⊓ K)
              theorem IsPGroup.to_inf_right {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hK : IsPGroup p ↥K) :
              IsPGroup p ↥(H ⊓ K)
              theorem IsAddPGroup.to_inf_right {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hK : IsAddPGroup p ↥K) :
              IsAddPGroup p ↥(H ⊓ K)
              theorem IsPGroup.map {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Type u_2} [Group K] (ϕ : G →* K) :
              theorem IsAddPGroup.map {p : ℕ} {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (hH : IsAddPGroup p ↥H) {K : Type u_2} [AddGroup K] (ϕ : G →+ K) :
              theorem IsPGroup.comap_of_ker_isPGroup {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Type u_2} [Group K] (ϕ : K →* G) (hϕ : IsPGroup p ↥ϕ.ker) :
              theorem IsAddPGroup.comap_of_ker_isAddPGroup {p : ℕ} {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (hH : IsAddPGroup p ↥H) {K : Type u_2} [AddGroup K] (ϕ : K →+ G) (hϕ : IsAddPGroup p ↥ϕ.ker) :
              theorem IsPGroup.ker_isPGroup_of_injective {p : ℕ} {G : Type u_1} [Group G] {K : Type u_2} [Group K] {ϕ : K →* G} (hϕ : Function.Injective ⇑ϕ) :
              IsPGroup p ↥ϕ.ker
              theorem IsAddPGroup.ker_isAddPGroup_of_injective {p : ℕ} {G : Type u_1} [AddGroup G] {K : Type u_2} [AddGroup K] {ϕ : K →+ G} (hϕ : Function.Injective ⇑ϕ) :
              theorem IsPGroup.comap_of_injective {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Type u_2} [Group K] (ϕ : K →* G) (hϕ : Function.Injective ⇑ϕ) :
              theorem IsAddPGroup.comap_of_injective {p : ℕ} {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (hH : IsAddPGroup p ↥H) {K : Type u_2} [AddGroup K] (ϕ : K →+ G) (hϕ : Function.Injective ⇑ϕ) :
              theorem IsPGroup.comap_subtype {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Subgroup G} :
              theorem IsAddPGroup.comap_subtype {p : ℕ} {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (hH : IsAddPGroup p ↥H) {K : AddSubgroup G} :
              theorem IsPGroup.to_sup_of_normal_right {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) [K.Normal] :
              IsPGroup p ↥(H ⊔ K)
              theorem IsAddPGroup.to_sup_of_normal_right {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : IsAddPGroup p ↥H) (hK : IsAddPGroup p ↥K) [K.Normal] :
              IsAddPGroup p ↥(H ⊔ K)
              theorem IsPGroup.to_sup_of_normal_left {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) [H.Normal] :
              IsPGroup p ↥(H ⊔ K)
              theorem IsAddPGroup.to_sup_of_normal_left {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : IsAddPGroup p ↥H) (hK : IsAddPGroup p ↥K) [H.Normal] :
              IsAddPGroup p ↥(H ⊔ K)
              theorem IsPGroup.to_sup_of_normal_right' {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) (hHK : H ≤ Subgroup.normalizer ↑K) :
              IsPGroup p ↥(H ⊔ K)
              theorem IsAddPGroup.to_sup_of_normal_right' {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : IsAddPGroup p ↥H) (hK : IsAddPGroup p ↥K) (hHK : H ≤ AddSubgroup.normalizer ↑K) :
              IsAddPGroup p ↥(H ⊔ K)
              theorem IsPGroup.to_sup_of_normal_left' {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) (hHK : K ≤ Subgroup.normalizer ↑H) :
              IsPGroup p ↥(H ⊔ K)
              theorem IsAddPGroup.to_sup_of_normal_left' {p : ℕ} {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : IsAddPGroup p ↥H) (hK : IsAddPGroup p ↥K) (hHK : K ≤ AddSubgroup.normalizer ↑H) :
              IsAddPGroup p ↥(H ⊔ K)
              theorem IsPGroup.coprime_card_of_ne {G : Type u_1} [Group G] {G₂ : Type u_2} [Group G₂] (p₁ p₂ : ℕ) [hp₁ : Fact (Nat.Prime p₁)] [hp₂ : Fact (Nat.Prime p₂)] (hne : p₁ ≠ p₂) (H₁ : Subgroup G) (H₂ : Subgroup G₂) [Finite ↥H₁] [Finite ↥H₂] (hH₁ : IsPGroup p₁ ↥H₁) (hH₂ : IsPGroup p₂ ↥H₂) :
              (Nat.card ↥H₁).Coprime (Nat.card ↥H₂)

              Finite p-groups with different p have coprime orders.

              theorem IsAddPGroup.coprime_card_of_ne {G : Type u_1} [AddGroup G] {G₂ : Type u_2} [AddGroup G₂] (p₁ p₂ : ℕ) [hp₁ : Fact (Nat.Prime p₁)] [hp₂ : Fact (Nat.Prime p₂)] (hne : p₁ ≠ p₂) (H₁ : AddSubgroup G) (H₂ : AddSubgroup G₂) [Finite ↥H₁] [Finite ↥H₂] (hH₁ : IsAddPGroup p₁ ↥H₁) (hH₂ : IsAddPGroup p₂ ↥H₂) :
              (Nat.card ↥H₁).Coprime (Nat.card ↥H₂)

              Finite p-groups with different p have coprime orders.

              theorem IsPGroup.disjoint_of_coprime {G : Type u_1} [Group G] {p₁ p₂ : ℕ} {H₁ H₂ : Subgroup G} (hH₁ : IsPGroup p₁ ↥H₁) (hH₂ : IsPGroup p₂ ↥H₂) (h : p₁.Coprime p₂) :
              Disjoint H₁ H₂
              theorem IsAddPGroup.disjoint_of_coprime {G : Type u_1} [AddGroup G] {p₁ p₂ : ℕ} {H₁ H₂ : AddSubgroup G} (hH₁ : IsAddPGroup p₁ ↥H₁) (hH₂ : IsAddPGroup p₂ ↥H₂) (h : p₁.Coprime p₂) :
              Disjoint H₁ H₂
              theorem IsPGroup.disjoint_of_ne {G : Type u_1} [Group G] (p₁ p₂ : ℕ) [hp₁ : Fact (Nat.Prime p₁)] [hp₂ : Fact (Nat.Prime p₂)] (hne : p₁ ≠ p₂) (H₁ H₂ : Subgroup G) (hH₁ : IsPGroup p₁ ↥H₁) (hH₂ : IsPGroup p₂ ↥H₂) :
              Disjoint H₁ H₂

              p-groups with different p are disjoint.

              theorem IsAddPGroup.disjoint_of_ne {G : Type u_1} [AddGroup G] (p₁ p₂ : ℕ) [hp₁ : Fact (Nat.Prime p₁)] [hp₂ : Fact (Nat.Prime p₂)] (hne : p₁ ≠ p₂) (H₁ H₂ : AddSubgroup G) (hH₁ : IsAddPGroup p₁ ↥H₁) (hH₂ : IsAddPGroup p₂ ↥H₂) :
              Disjoint H₁ H₂

              p-groups with different p are disjoint.

              theorem IsPGroup.le_or_disjoint_of_coprime {p : ℕ} {G : Type u_1} [Group G] [hp : Fact (Nat.Prime p)] {P : Subgroup G} (hP : IsPGroup p ↥P) {H : Subgroup G} [H.Normal] (h_cop : (Nat.card ↥H).Coprime H.index) :
              P ≤ H ∨ Disjoint H P
              theorem IsAddPGroup.le_or_disjoint_of_coprime {p : ℕ} {G : Type u_1} [AddGroup G] [hp : Fact (Nat.Prime p)] {P : AddSubgroup G} (hP : IsAddPGroup p ↥P) {H : AddSubgroup G} [H.Normal] (h_cop : (Nat.card ↥H).Coprime H.index) :
              P ≤ H ∨ Disjoint H P
              theorem IsPGroup.card_center_eq_prime_pow {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] {n : ℕ} (hGpn : Nat.card G = p ^ n) (hn : 0 < n) :
              ∃ k > 0, Nat.card ↥(Subgroup.center G) = p ^ k

              The cardinality of the center of a p-group is p ^ k where k is positive.

              The quotient by the center of a group of cardinality p ^ 2 is cyclic.

              A group of order p ^ 2 is commutative. See also IsPGroup.commGroupOfCardEqPrimeSq for the CommGroup instance.

              @[instance_reducible]
              def IsPGroup.commGroupOfCardEqPrimeSq {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] (hG : Nat.card G = p ^ 2) :

              A group of order p ^ 2 is commutative. See also IsPGroup.isMulCommutative_of_card_eq_prime_sq for just the proof that G is commutative.

              Equations
              Instances For
                @[deprecated IsPGroup.isMulCommutative_of_card_eq_prime_sq (since := "2026-05-26")]
                theorem IsPGroup.commutative_of_card_eq_prime_sq {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] (hG : Nat.card G = p ^ 2) (a b : G) :
                a * b = b * a
                theorem ZModModule.isAddPGroup (n : ℕ) (G : Type u_2) [AddCommGroup G] [Module (ZMod n) G] :