Documentation

Mathlib.GroupTheory.Perm.Centralizer

Centralizer of a permutation and cardinality of conjugacy classes in the symmetric groups #

Let α : Type with Fintype α (and DecidableEq α). The main goal of this file is to compute the cardinality of conjugacy classes in Equiv.Perm α. Every g : Equiv.Perm α has a g.cycleType : Multiset ℕ. By Equiv.Perm.isConj_iff_cycleType_eq, two permutations are conjugate in Equiv.Perm α iff their cycle types are equal. To compute the cardinality of the conjugacy classes, we could use a purely combinatorial approach and compute the number of permutations with given cycle type but we resorted to a more algebraic approach based on the study of the centralizer of a permutation g.

Given g : Equiv.Perm α, the conjugacy class of g is the orbit of g under the action ConjAct (Equiv.Perm α), and we use the orbit-stabilizer theorem (MulAction.card_orbit_mul_card_stabilizer_eq_card_group) to reduce the computation to the computation of the centralizer of g, the subgroup of Equiv.Perm α consisting of all permutations which commute with g. It is accessed here as MulAction.stabilizer (ConjAct (Equiv.Perm α)) g and Subgroup.centralizer_eq_comap_stabilizer.

We compute this subgroup as follows.

This is shown by constructing a right inverse Equiv.Perm.Basis.toCentralizer, as established by Equiv.Perm.Basis.toPermHom_apply_toCentralizer.

This allows to give a description of the kernel of Equiv.Perm.OnCycleFactors.toPermHom g as the product of a symmetric group and of a product of cyclic groups. This analysis starts with the morphism Equiv.Perm.OnCycleFactors.kerParam, its injectivity Equiv.Perm.OnCycleFactors.kerParam_injective, its range Equiv.Perm.OnCycleFactors.kerParam_range_eq, and its cardinality Equiv.Perm.OnCycleFactors.kerParam_range_card.

@[implicit_reducible]

The action by conjugation of Subgroup.centralizer {g} on the cycles of a given permutation

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    The canonical morphism from Subgroup.centralizer {g} to the group of permutations of g.cycleFactorsFinset

    Equations
    Instances For
      theorem Equiv.Perm.OnCycleFactors.centralizer_smul_def {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) (k : ↥(Subgroup.centralizer {g})) (c : ↥g.cycleFactorsFinset) :
      k • c = ⟨↑k * ↑c * ↑k⁻¹, ⋯⟩
      @[simp]
      theorem Equiv.Perm.OnCycleFactors.val_centralizer_smul {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) (k : ↥(Subgroup.centralizer {g})) (c : ↥g.cycleFactorsFinset) :
      ↑(k • c) = ↑k * ↑c * ↑k⁻¹
      theorem Equiv.Perm.OnCycleFactors.toPermHom_apply {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) (k : ↥(Subgroup.centralizer {g})) (c : ↥g.cycleFactorsFinset) :
      ((toPermHom g) k) c = k • c
      theorem Equiv.Perm.OnCycleFactors.coe_toPermHom {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) (k : ↥(Subgroup.centralizer {g})) (c : ↥g.cycleFactorsFinset) :
      ↑(((toPermHom g) k) c) = ↑k * ↑c * (↑k)⁻¹

      The range of Equiv.Perm.OnCycleFactors.toPermHom.

      The equality is proved by Equiv.Perm.OnCycleFactors.range_toPermHom_eq_range_toPermHom'.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        k : Subgroup.centralizer {g} belongs to the kernel of toPermHom g iff it commutes with each cycle of g

        structure Equiv.Perm.Basis {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) :
        Type u_1

        A Basis of a permutation is a choice of an element in each of its cycles

        Instances For
          @[implicit_reducible]
          Equations
          theorem Equiv.Perm.Basis.nonempty {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) :
          theorem Equiv.Perm.Basis.mem_support_self {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (c : ↥g.cycleFactorsFinset) :
          a c ∈ (↑c).support
          theorem Equiv.Perm.Basis.injective {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) :
          theorem Equiv.Perm.Basis.cycleOf_eq {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (c : ↥g.cycleFactorsFinset) :
          g.cycleOf (a c) = ↑c
          theorem Equiv.Perm.Basis.sameCycle {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) {x : α} (hx : g.cycleOf x ∈ g.cycleFactorsFinset) :
          g.SameCycle (a ⟨g.cycleOf x, hx⟩) x
          def Equiv.Perm.Basis.ofPermHomFun {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) (x : α) :
          α

          The function that will provide a right inverse toCentralizer to toPermHom

          Equations
          Instances For
            theorem Equiv.Perm.Basis.mem_fixedPoints_or_exists_zpow_eq {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (x : α) :
            x ∈ Function.fixedPoints ⇑g ∨ ∃ (c : ↥g.cycleFactorsFinset) (_ : x ∈ (↑c).support) (m : ℤ), (g ^ m) (a c) = x
            theorem Equiv.Perm.Basis.ofPermHomFun_apply_of_cycleOf_mem {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) {x : α} {c : ↥g.cycleFactorsFinset} (hx : x ∈ (↑c).support) {m : ℤ} (hm : (g ^ m) (a c) = x) :
            a.ofPermHomFun τ x = (g ^ m) (a (↑τ c))
            theorem Equiv.Perm.Basis.ofPermHomFun_apply_mem_support_cycle_iff {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) {x : α} {c : ↥g.cycleFactorsFinset} :
            a.ofPermHomFun τ x ∈ (↑(↑τ c)).support ↔ x ∈ (↑c).support
            theorem Equiv.Perm.Basis.ofPermHomFun_commute_zpow_apply {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) (x : α) (j : ℤ) :
            a.ofPermHomFun τ ((g ^ j) x) = (g ^ j) (a.ofPermHomFun τ x)
            theorem Equiv.Perm.Basis.ofPermHomFun_mul {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (σ τ : ↥(OnCycleFactors.range_toPermHom' g)) (x : α) :
            a.ofPermHomFun (σ * τ) x = a.ofPermHomFun σ (a.ofPermHomFun τ x)
            theorem Equiv.Perm.Basis.ofPermHomFun_one {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (x : α) :
            a.ofPermHomFun 1 x = x
            noncomputable def Equiv.Perm.Basis.ofPermHom {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) :

            Given a : g.Basis and a permutation of g.cycleFactorsFinset that preserve the lengths of the cycles, a permutation of α that moves the Basis and commutes with g

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Equiv.Perm.Basis.ofPermHom_apply {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) (x : α) :
              (a.ofPermHom τ) x = a.ofPermHomFun τ x
              theorem Equiv.Perm.Basis.ofPermHom_support {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) :
              (a.ofPermHom τ).support = (↑τ).support.biUnion fun (c : ↥g.cycleFactorsFinset) => (↑c).support
              theorem Equiv.Perm.Basis.card_ofPermHom_support {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) :
              (a.ofPermHom τ).support.card = ∑ c ∈ (↑τ).support, (↑c).support.card
              noncomputable def Equiv.Perm.Basis.toCentralizer {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) :

              Given a : Equiv.Perm.Basis g, we define a right inverse of Equiv.Perm.OnCycleFactors.toPermHom, on range_toPermHom' g

              Equations
              Instances For
                theorem Equiv.Perm.Basis.toCentralizer_apply {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (τ : ↥(OnCycleFactors.range_toPermHom' g)) (x : α) :
                ↑(a.toCentralizer τ) x = a.ofPermHomFun τ x
                theorem Equiv.Perm.Basis.toCentralizer_equivariant {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} (a : g.Basis) (c : ↥g.cycleFactorsFinset) (τ : ↥(OnCycleFactors.range_toPermHom' g)) :
                a.toCentralizer τ • c = ↑τ c
                theorem Equiv.Perm.OnCycleFactors.mem_range_toPermHom_iff' {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} {τ : Perm ↥g.cycleFactorsFinset} :
                τ ∈ (toPermHom g).range ↔ (fun (c : ↥g.cycleFactorsFinset) => (↑c).support.card) ∘ ⇑τ = fun (c : ↥g.cycleFactorsFinset) => (↑c).support.card

                Unapplied variant of Equiv.Perm.mem_range_toPermHom_iff

                def Equiv.Perm.OnCycleFactors.kerParam {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) :
                Perm ↑(Function.fixedPoints ⇑g) × ((c : ↥g.cycleFactorsFinset) → ↥(Subgroup.zpowers ↑c)) →* Perm α

                The parametrization of the kernel of toPermHom

                Equations
                Instances For
                  theorem Equiv.Perm.OnCycleFactors.kerParam_apply {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} {u : Perm ↑(Function.fixedPoints ⇑g)} {v : (c : ↥g.cycleFactorsFinset) → ↥(Subgroup.zpowers ↑c)} {x : α} :
                  ((kerParam g) (u, v)) x = if hx : g.cycleOf x ∈ g.cycleFactorsFinset then ↑(v ⟨g.cycleOf x, hx⟩) x else (ofSubtype u) x
                  theorem Equiv.Perm.OnCycleFactors.sign_kerParam_apply_apply {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) (k : Perm ↑(Function.fixedPoints ⇑g)) (v : (c : ↥g.cycleFactorsFinset) → ↥(Subgroup.zpowers ↑c)) :
                  sign ((kerParam g) (k, v)) = sign k * ∏ c : ↥g.cycleFactorsFinset, sign ↑(v c)
                  theorem Equiv.Perm.OnCycleFactors.cycleType_kerParam_apply_apply {α : Type u_1} [DecidableEq α] [Fintype α] (g : Perm α) (k : Perm ↑(Function.fixedPoints ⇑g)) (v : (c : ↥g.cycleFactorsFinset) → ↥(Subgroup.zpowers ↑c)) :
                  ((kerParam g) (k, v)).cycleType = k.cycleType + ∑ c : ↥g.cycleFactorsFinset, (↑(v c)).cycleType

                  Cardinality of the centralizer in Equiv.Perm α of a permutation given cycleType

                  Cardinality of a conjugacy class in Equiv.Perm α of a given cycleType

                  theorem Equiv.Perm.card_of_cycleType_eq_zero_iff (α : Type u_1) [DecidableEq α] [Fintype α] {m : Multiset ℕ} :
                  {g : Perm α | g.cycleType = m}.card = 0 ↔ ¬(m.sum ≤ Fintype.card α ∧ ∀ a ∈ m, 2 ≤ a)
                  theorem Equiv.Perm.card_of_cycleType_mul_eq (α : Type u_1) [DecidableEq α] [Fintype α] (m : Multiset ℕ) :
                  {g : Perm α | g.cycleType = m}.card * ((Fintype.card α - m.sum).factorial * m.prod * ∏ n ∈ m.toFinset, (Multiset.count n m).factorial) = if m.sum ≤ Fintype.card α ∧ ∀ a ∈ m, 2 ≤ a then (Fintype.card α).factorial else 0
                  theorem Equiv.Perm.card_of_cycleType (α : Type u_1) [DecidableEq α] [Fintype α] (m : Multiset ℕ) :
                  {g : Perm α | g.cycleType = m}.card = if m.sum ≤ Fintype.card α ∧ ∀ a ∈ m, 2 ≤ a then (Fintype.card α).factorial / ((Fintype.card α - m.sum).factorial * m.prod * ∏ n ∈ m.toFinset, (Multiset.count n m).factorial) else 0

                  Cardinality of the Finset of Equiv.Perm α of given cycleType

                  theorem Equiv.Perm.card_of_cycleType_singleton {α : Type u_1} [DecidableEq α] [Fintype α] {n : ℕ} (hn' : 2 ≤ n) (hα : n ≤ Fintype.card α) :
                  {g : Perm α | g.cycleType = {n}}.card = (n - 1).factorial * (Fintype.card α).choose n

                  The number of cycles of given length