# Documentation

Mathlib.GroupTheory.GroupAction.ConjAct

# Conjugation action of a group on itself #

This file defines the conjugation action of a group on itself. See also MulAut.conj for the definition of conjugation as a homomorphism into the automorphism group.

## Main definitions #

A type alias ConjAct G is introduced for a group G. The group ConjAct G acts on G by conjugation. The group ConjAct G also acts on any normal subgroup of G by conjugation.

As a generalization, this also allows:

• ConjAct Mˣ to act on M, when M is a Monoid
• ConjAct G₀ to act on G₀, when G₀ is a GroupWithZero

## Implementation Notes #

The scalar action in defined in this file can also be written using MulAut.conj g • h. This has the advantage of not using the type alias ConjAct, but the downside of this approach is that some theorems about the group actions will not apply when since this MulAut.conj g • h describes an action of MulAut G on G, and not an action of G.

def ConjAct (G : Type u_3) :
Type u_3

A type alias for a group G. ConjAct G acts on G by conjugation

Instances For
instance ConjAct.instGroupConjAct {G : Type u_3} [] :
@[simp]
theorem ConjAct.card {G : Type u_3} [] :
def ConjAct.ofConjAct {G : Type u_3} [] :
≃* G

Reinterpret g : ConjAct G as an element of G.

Instances For
def ConjAct.toConjAct {G : Type u_3} [] :
G ≃*

Reinterpret g : G as an element of ConjAct G.

Instances For
def ConjAct.rec {G : Type u_3} [] {C : Sort u_7} (h : (g : G) → C (ConjAct.toConjAct g)) (g : ) :
C g

A recursor for ConjAct, for use as induction x using ConjAct.rec when x : ConjAct G.

Instances For
@[simp]
theorem ConjAct.forall {G : Type u_3} [] (p : Prop) :
((x : ) → p x) (x : G) → p (ConjAct.toConjAct x)
@[simp]
theorem ConjAct.of_mul_symm_eq {G : Type u_3} [] :
MulEquiv.symm ConjAct.ofConjAct = ConjAct.toConjAct
@[simp]
theorem ConjAct.to_mul_symm_eq {G : Type u_3} [] :
MulEquiv.symm ConjAct.toConjAct = ConjAct.ofConjAct
@[simp]
theorem ConjAct.toConjAct_ofConjAct {G : Type u_3} [] (x : ) :
ConjAct.toConjAct (ConjAct.ofConjAct x) = x
@[simp]
theorem ConjAct.ofConjAct_toConjAct {G : Type u_3} [] (x : G) :
ConjAct.ofConjAct (ConjAct.toConjAct x) = x
theorem ConjAct.ofConjAct_one {G : Type u_3} [] :
ConjAct.ofConjAct 1 = 1
theorem ConjAct.toConjAct_one {G : Type u_3} [] :
ConjAct.toConjAct 1 = 1
@[simp]
theorem ConjAct.ofConjAct_inv {G : Type u_3} [] (x : ) :
ConjAct.ofConjAct x⁻¹ = (ConjAct.ofConjAct x)⁻¹
@[simp]
theorem ConjAct.toConjAct_inv {G : Type u_3} [] (x : G) :
ConjAct.toConjAct x⁻¹ = (ConjAct.toConjAct x)⁻¹
theorem ConjAct.ofConjAct_mul {G : Type u_3} [] (x : ) (y : ) :
ConjAct.ofConjAct (x * y) = ConjAct.ofConjAct x * ConjAct.ofConjAct y
theorem ConjAct.toConjAct_mul {G : Type u_3} [] (x : G) (y : G) :
ConjAct.toConjAct (x * y) = ConjAct.toConjAct x * ConjAct.toConjAct y
instance ConjAct.instSMulConjAct {G : Type u_3} [] :
SMul () G
theorem ConjAct.smul_def {G : Type u_3} [] (g : ) (h : G) :
g h = ConjAct.ofConjAct g * h * (ConjAct.ofConjAct g)⁻¹
instance ConjAct.unitsScalar {M : Type u_2} [] :
SMul () M
theorem ConjAct.units_smul_def {M : Type u_2} [] (g : ) (h : M) :
g h = ↑(ConjAct.ofConjAct g) * h * (ConjAct.ofConjAct g)⁻¹
instance ConjAct.unitsSMulCommClass (α : Type u_1) {M : Type u_2} [] [SMul α M] [] [] :
instance ConjAct.unitsSMulCommClass' (α : Type u_1) {M : Type u_2} [] [SMul α M] [] [] :
theorem ConjAct.ofConjAct_zero {G₀ : Type u_4} [] :
ConjAct.ofConjAct 0 = 0
theorem ConjAct.toConjAct_zero {G₀ : Type u_4} [] :
ConjAct.toConjAct 0 = 0
instance ConjAct.mulAction₀ {G₀ : Type u_4} [] :
MulAction (ConjAct G₀) G₀
instance ConjAct.smulCommClass₀ (α : Type u_1) {G₀ : Type u_4} [] [SMul α G₀] [SMulCommClass α G₀ G₀] [IsScalarTower α G₀ G₀] :
SMulCommClass α (ConjAct G₀) G₀
instance ConjAct.smulCommClass₀' (α : Type u_1) {G₀ : Type u_4} [] [SMul α G₀] [SMulCommClass G₀ α G₀] [IsScalarTower α G₀ G₀] :
SMulCommClass (ConjAct G₀) α G₀
instance ConjAct.distribMulAction₀ {K : Type u_6} [] :
instance ConjAct.smulCommClass (α : Type u_1) {G : Type u_3} [] [SMul α G] [] [] :
instance ConjAct.smulCommClass' (α : Type u_1) {G : Type u_3} [] [SMul α G] [] [] :
theorem ConjAct.smul_eq_mulAut_conj {G : Type u_3} [] (g : ) (h : G) :
g h = ↑(MulAut.conj (ConjAct.ofConjAct g)) h
theorem ConjAct.fixedPoints_eq_center {G : Type u_3} [] :
= ↑()

The set of fixed points of the conjugation action of G on itself is the center of G.

@[simp]
theorem ConjAct.mem_orbit_conjAct {G : Type u_3} [] {g : G} {h : G} :
g IsConj g h
theorem ConjAct.orbitRel_conjAct {G : Type u_3} [] :
Setoid.Rel () = IsConj
theorem ConjAct.orbit_eq_carrier_conjClasses {G : Type u_3} [] (g : G) :
theorem ConjAct.stabilizer_eq_centralizer {G : Type u_3} [] (g : G) :
= Subgroup.centralizer ↑(Subgroup.zpowers (ConjAct.toConjAct g))
instance ConjAct.Subgroup.conjAction {G : Type u_3} [] {H : } [hH : ] :
SMul () { x // x H }

As normal subgroups are closed under conjugation, they inherit the conjugation action of the underlying group.

theorem ConjAct.Subgroup.val_conj_smul {G : Type u_3} [] {H : } [] (g : ) (h : { x // x H }) :
↑(g h) = g h
instance ConjAct.Subgroup.conjMulDistribMulAction {G : Type u_3} [] {H : } [] :
MulDistribMulAction () { x // x H }
def MulAut.conjNormal {G : Type u_3} [] {H : } [] :
G →* MulAut { x // x H }

Group conjugation on a normal subgroup. Analogous to MulAut.conj.

Instances For
@[simp]
theorem MulAut.conjNormal_apply {G : Type u_3} [] {H : } [] (g : G) (h : { x // x H }) :
↑(↑(MulAut.conjNormal g) h) = g * h * g⁻¹
@[simp]
theorem MulAut.conjNormal_symm_apply {G : Type u_3} [] {H : } [] (g : G) (h : { x // x H }) :
↑(↑(MulEquiv.symm (MulAut.conjNormal g)) h) = g⁻¹ * h * g
@[simp]
theorem MulAut.conjNormal_inv_apply {G : Type u_3} [] {H : } [] (g : G) (h : { x // x H }) :
↑((MulAut.conjNormal g)⁻¹ h) = g⁻¹ * h * g
theorem MulAut.conjNormal_val {G : Type u_3} [] {H : } [] {h : { x // x H }} :
MulAut.conjNormal h = MulAut.conj h
instance ConjAct.normal_of_characteristic_of_normal {G : Type u_3} [] {H : } [hH : ] {K : Subgroup { x // x H }} [h : ] :
@[simp]
theorem val_unitsCentralizerEquiv_symm_apply_coe (M : Type u_2) [] (x : Mˣ) :
∀ (a : { x // x }), ↑(↑() a) = ↑(ConjAct.ofConjAct a)
@[simp]
theorem val_unitsCentralizerEquiv_apply_coe (M : Type u_2) [] (x : Mˣ) :
∀ (a : { x // x }ˣ), ↑(↑() a) = a
def unitsCentralizerEquiv (M : Type u_2) [] (x : Mˣ) :
{ x // x }ˣ ≃* { x // x }

The stabilizer of Mˣ acting on itself by conjugation at x : Mˣ is exactly the units of the centralizer of x : M.

Instances For