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.

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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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
          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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 { x : Perm α // x g.cycleFactorsFinset }} :
                τ (toPermHom g).range ∀ (c : { x : Perm α // x g.cycleFactorsFinset }), (↑(τ c)).support.card = (↑c).support.card
                theorem Equiv.Perm.OnCycleFactors.mem_range_toPermHom_iff' {α : Type u_1} [DecidableEq α] [Fintype α] {g : Perm α} {τ : Perm { x : Perm α // x g.cycleFactorsFinset }} :
                τ (toPermHom g).range (fun (c : { x : Perm α // x g.cycleFactorsFinset }) => (↑c).support.card) τ = fun (c : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x 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 : { x : Perm α // x g.cycleFactorsFinset }) → (Subgroup.zpowers c)) :
                  sign ((kerParam g) (k, v)) = sign k * c : { x : Perm α // x 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 : { x : Perm α // x g.cycleFactorsFinset }) → (Subgroup.zpowers c)) :
                  ((kerParam g) (k, v)).cycleType = k.cycleType + c : { x : Perm α // x 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 α am, 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 * nm.toFinset, (Multiset.count n m).factorial) = if m.sum Fintype.card α am, 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 α am, 2 a then (Fintype.card α).factorial / ((Fintype.card α - m.sum).factorial * m.prod * nm.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) ( : n Fintype.card α) :
                  {g : Perm α | g.cycleType = {n}}.card = (n - 1).factorial * (Fintype.card α).choose n

                  The number of cycles of given length