Documentation

Mathlib.GroupTheory.Transfer

The Transfer Homomorphism #

In this file we construct the transfer homomorphism.

Main definitions #

Main results #

noncomputable def AddSubgroup.leftTransversals.diff {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) (S : (AddSubgroup.leftTransversals H)) (T : (AddSubgroup.leftTransversals H)) [H.FiniteIndex] :
A

The difference of two left transversals

Equations
Instances For
    noncomputable def Subgroup.leftTransversals.diff {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) (S : (Subgroup.leftTransversals H)) (T : (Subgroup.leftTransversals H)) [H.FiniteIndex] :
    A

    The difference of two left transversals

    Equations
    Instances For
      theorem Subgroup.leftTransversals.diff_mul_diff {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) (R : (Subgroup.leftTransversals H)) (S : (Subgroup.leftTransversals H)) (T : (Subgroup.leftTransversals H)) [H.FiniteIndex] :
      theorem AddSubgroup.leftTransversals.diff_self {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) (T : (AddSubgroup.leftTransversals H)) [H.FiniteIndex] :
      theorem Subgroup.leftTransversals.diff_self {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) (T : (Subgroup.leftTransversals H)) [H.FiniteIndex] :
      theorem AddSubgroup.leftTransversals.diff_neg {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) (S : (AddSubgroup.leftTransversals H)) (T : (AddSubgroup.leftTransversals H)) [H.FiniteIndex] :
      theorem Subgroup.leftTransversals.diff_inv {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) (S : (Subgroup.leftTransversals H)) (T : (Subgroup.leftTransversals H)) [H.FiniteIndex] :
      theorem AddSubgroup.leftTransversals.vadd_diff_vadd {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) (S : (AddSubgroup.leftTransversals H)) (T : (AddSubgroup.leftTransversals H)) [H.FiniteIndex] (g : G) :
      theorem Subgroup.leftTransversals.smul_diff_smul {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) (S : (Subgroup.leftTransversals H)) (T : (Subgroup.leftTransversals H)) [H.FiniteIndex] (g : G) :
      noncomputable def AddMonoidHom.transfer {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) [H.FiniteIndex] :
      G →+ A

      Given ϕ : H →+ A from H : AddSubgroup G to an additive commutative group A, the transfer homomorphism is transfer ϕ : G →+ A.

      Equations
      Instances For
        theorem AddMonoidHom.transfer.proof_2 {G : Type u_2} [AddGroup G] {H : AddSubgroup G} {A : Type u_1} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) [H.FiniteIndex] (g : G) (h : G) :
        { toFun := fun (g : G) => AddSubgroup.leftTransversals.diff ϕ default (g +ᵥ default), map_zero' := }.toFun (g + h) = { toFun := fun (g : G) => AddSubgroup.leftTransversals.diff ϕ default (g +ᵥ default), map_zero' := }.toFun g + { toFun := fun (g : G) => AddSubgroup.leftTransversals.diff ϕ default (g +ᵥ default), map_zero' := }.toFun h
        theorem AddMonoidHom.transfer.proof_1 {G : Type u_2} [AddGroup G] {H : AddSubgroup G} {A : Type u_1} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) [H.FiniteIndex] :
        (fun (g : G) => AddSubgroup.leftTransversals.diff ϕ default (g +ᵥ default)) 0 = 0
        noncomputable def MonoidHom.transfer {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) [H.FiniteIndex] :
        G →* A

        Given ϕ : H →* A from H : Subgroup G to a commutative group A, the transfer homomorphism is transfer ϕ : G →* A.

        Equations
        Instances For
          theorem AddMonoidHom.transfer_def {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {A : Type u_2} [AddCommGroup A] (ϕ : { x : G // x H } →+ A) (T : (AddSubgroup.leftTransversals H)) [H.FiniteIndex] (g : G) :
          ϕ.transfer g = AddSubgroup.leftTransversals.diff ϕ T (g +ᵥ T)
          theorem MonoidHom.transfer_def {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) (T : (Subgroup.leftTransversals H)) [H.FiniteIndex] (g : G) :
          ϕ.transfer g = Subgroup.leftTransversals.diff ϕ T (g T)
          theorem MonoidHom.transfer_eq_prod_quotient_orbitRel_zpowers_quot {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) [H.FiniteIndex] (g : G) [Fintype (Quotient (MulAction.orbitRel { x : G // x Subgroup.zpowers g } (G H)))] :
          ϕ.transfer g = q : Quotient (MulAction.orbitRel { x : G // x Subgroup.zpowers g } (G H)), ϕ (Quotient.out' q.out')⁻¹ * g ^ Function.minimalPeriod (fun (x : G H) => g x) q.out' * Quotient.out' q.out',

          Explicit computation of the transfer homomorphism.

          theorem MonoidHom.transfer_eq_pow_aux {G : Type u_1} [Group G] {H : Subgroup G} (g : G) (key : ∀ (k : ) (g₀ : G), g₀⁻¹ * g ^ k * g₀ Hg₀⁻¹ * g ^ k * g₀ = g ^ k) :
          g ^ H.index H

          Auxiliary lemma in order to state transfer_eq_pow.

          theorem MonoidHom.transfer_eq_pow {G : Type u_1} [Group G] {H : Subgroup G} {A : Type u_2} [CommGroup A] (ϕ : { x : G // x H } →* A) [H.FiniteIndex] (g : G) (key : ∀ (k : ) (g₀ : G), g₀⁻¹ * g ^ k * g₀ Hg₀⁻¹ * g ^ k * g₀ = g ^ k) :
          ϕ.transfer g = ϕ g ^ H.index,
          theorem MonoidHom.transfer_center_eq_pow {G : Type u_1} [Group G] [(Subgroup.center G).FiniteIndex] (g : G) :
          (MonoidHom.id { x : G // x Subgroup.center G }).transfer g = g ^ (Subgroup.center G).index,
          noncomputable def MonoidHom.transferCenterPow (G : Type u_1) [Group G] [(Subgroup.center G).FiniteIndex] :
          G →* { x : G // x Subgroup.center G }

          The transfer homomorphism G →* center G.

          Equations
          Instances For
            @[simp]
            theorem MonoidHom.transferCenterPow_apply {G : Type u_1} [Group G] [(Subgroup.center G).FiniteIndex] (g : G) :
            noncomputable def MonoidHom.transferSylow {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [(↑P).FiniteIndex] :
            G →* { x : G // x P }

            The homomorphism G →* P in Burnside's transfer theorem.

            Equations
            Instances For
              theorem MonoidHom.transferSylow_eq_pow_aux {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [Fact (Nat.Prime p)] [Finite (Sylow p G)] (g : G) (hg : g P) (k : ) (g₀ : G) (h : g₀⁻¹ * g ^ k * g₀ P) :
              g₀⁻¹ * g ^ k * g₀ = g ^ k

              Auxiliary lemma in order to state transferSylow_eq_pow.

              theorem MonoidHom.transferSylow_eq_pow {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [Fact (Nat.Prime p)] [Finite (Sylow p G)] [(↑P).FiniteIndex] (g : G) (hg : g P) :
              (MonoidHom.transferSylow P hP) g = g ^ (↑P).index,
              theorem MonoidHom.transferSylow_restrict_eq_pow {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [Fact (Nat.Prime p)] [Finite (Sylow p G)] [(↑P).FiniteIndex] :
              ((MonoidHom.transferSylow P hP).restrict P) = fun (x : { x : G // x P }) => x ^ (↑P).index
              theorem MonoidHom.ker_transferSylow_isComplement' {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [Fact (Nat.Prime p)] [Finite (Sylow p G)] [(↑P).FiniteIndex] :
              (MonoidHom.transferSylow P hP).ker.IsComplement' P

              Burnside's normal p-complement theorem: If N(P) ≤ C(P), then P has a normal complement.

              theorem MonoidHom.not_dvd_card_ker_transferSylow {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [Fact (Nat.Prime p)] [Finite (Sylow p G)] [(↑P).FiniteIndex] :
              ¬p Nat.card { x : G // x (MonoidHom.transferSylow P hP).ker }
              theorem MonoidHom.ker_transferSylow_disjoint {G : Type u_1} [Group G] {p : } (P : Sylow p G) (hP : (↑P).normalizer Subgroup.centralizer P) [Fact (Nat.Prime p)] [Finite (Sylow p G)] [(↑P).FiniteIndex] (Q : Subgroup G) (hQ : IsPGroup p { x : G // x Q }) :