Theorem: Action.leftRegularTensorIso_hom_hom
File: Mathlib/RepresentationTheory/Action/Monoidal.lean

Proof steps:
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g : G
⊢ ((leftRegular G ⊗ X).ρ g ≫ fun g => (g.1, X.ρ g.1⁻¹ g.2)) =
    (fun g => (g.1, X.ρ g.1⁻¹ g.2)) ≫ (leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ ((leftRegular G ⊗ X).ρ g ≫ fun g => (g.1, X.ρ g.1⁻¹ g.2)) (x₁, x₂) =
    ((fun g => (g.1, X.ρ g.1⁻¹ g.2)) ≫ (leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g) (x₁, x₂)
tactic: funext ⟨(x₁ : G), (x₂ : X.V)⟩
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ ((leftRegular G ⊗ X).ρ g ≫ fun g => (g.1, X.ρ g.1⁻¹ g.2)) (x₁, x₂) =
    ((fun g => (g.1, X.ρ g.1⁻¹ g.2)) ≫ (leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g) (x₁, x₂)
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (((leftRegular G ⊗ X).ρ g ≫ fun g => (g.1, X.ρ g.1⁻¹ g.2)) (x₁, x₂)).2 =
    (((fun g => (g.1, X.ρ g.1⁻¹ g.2)) ≫ (leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g) (x₁, x₂)).2
tactic: refine Prod.ext rfl ?_
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (((leftRegular G ⊗ X).ρ g ≫ fun g => (g.1, X.ρ g.1⁻¹ g.2)) (x₁, x₂)).2 =
    (((fun g => (g.1, X.ρ g.1⁻¹ g.2)) ≫ (leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g) (x₁, x₂)).2
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (X.ρ (g * x₁)⁻¹ * X.ρ g) x₂ = X.ρ (x₁, x₂).1⁻¹ (x₁, x₂).2
tactic: change (X.ρ ((g * x₁)⁻¹ : G) * X.ρ g) x₂ = X.ρ _ _
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (X.ρ (g * x₁)⁻¹ * X.ρ g) x₂ = X.ρ (x₁, x₂).1⁻¹ (x₁, x₂).2
state_after: no goals
tactic: rw [mul_inv_rev, ← X.ρ.map_mul, inv_mul_cancel_right]
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g : G
⊢ ((leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g ≫ fun g => (g.1, X.ρ g.1 g.2)) =
    (fun g => (g.1, X.ρ g.1 g.2)) ≫ (leftRegular G ⊗ X).ρ g
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ ((leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g ≫ fun g => (g.1, X.ρ g.1 g.2)) (x₁, x₂) =
    ((fun g => (g.1, X.ρ g.1 g.2)) ≫ (leftRegular G ⊗ X).ρ g) (x₁, x₂)
tactic: funext ⟨(x₁ : G), (x₂ : X.V)⟩
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ ((leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g ≫ fun g => (g.1, X.ρ g.1 g.2)) (x₁, x₂) =
    ((fun g => (g.1, X.ρ g.1 g.2)) ≫ (leftRegular G ⊗ X).ρ g) (x₁, x₂)
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (((leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g ≫ fun g => (g.1, X.ρ g.1 g.2)) (x₁, x₂)).2 =
    (((fun g => (g.1, X.ρ g.1 g.2)) ≫ (leftRegular G ⊗ X).ρ g) (x₁, x₂)).2
tactic: refine Prod.ext rfl ?_
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (((leftRegular G ⊗ { V := X.V, ρ := 1 }).ρ g ≫ fun g => (g.1, X.ρ g.1 g.2)) (x₁, x₂)).2 =
    (((fun g => (g.1, X.ρ g.1 g.2)) ≫ (leftRegular G ⊗ X).ρ g) (x₁, x₂)).2
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ ((((leftRegular G).ρ g ⊗ { V := X.V, ρ := 1 }.ρ g) ≫ fun g => (g.1, X.ρ g.1 g.2)) (x₁, x₂)).2 =
    (((fun g => (g.1, X.ρ g.1 g.2)) ≫ ((leftRegular G).ρ g ⊗ X.ρ g)) (x₁, x₂)).2
tactic: erw [tensor_rho, tensor_rho]
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ ((((leftRegular G).ρ g ⊗ { V := X.V, ρ := 1 }.ρ g) ≫ fun g => (g.1, X.ρ g.1 g.2)) (x₁, x₂)).2 =
    (((fun g => (g.1, X.ρ g.1 g.2)) ≫ ((leftRegular G).ρ g ⊗ X.ρ g)) (x₁, x₂)).2
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ X.ρ ((leftRegular G).ρ g x₁) x₂ = X.ρ g (X.ρ x₁ x₂)
tactic: dsimp
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ X.ρ ((leftRegular G).ρ g x₁) x₂ = X.ρ g (X.ρ x₁ x₂)
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ X.ρ (g * x₁) x₂ = X.ρ g (X.ρ x₁ x₂)
tactic: erw [leftRegular_ρ_apply]
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ X.ρ (g * x₁) x₂ = X.ρ g (X.ρ x₁ x₂)
state_after: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (X.ρ g * X.ρ x₁) x₂ = X.ρ g (X.ρ x₁ x₂)
tactic: erw [map_mul]
state_before: case h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
g x₁ : G
x₂ : X.V
⊢ (X.ρ g * X.ρ x₁) x₂ = X.ρ g (X.ρ x₁ x₂)
state_after: no goals
tactic: rfl
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
⊢ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } =
    𝟙 (leftRegular G ⊗ X)
state_after: case hom
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
⊢ ({ hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ }).hom =
    (𝟙 (leftRegular G ⊗ X)).hom
tactic: apply Hom.ext
state_before: case hom
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
⊢ ({ hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ }).hom =
    (𝟙 (leftRegular G ⊗ X)).hom
state_after: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ X).V
⊢ ({ hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ }).hom x =
    (𝟙 (leftRegular G ⊗ X)).hom x
tactic: funext x
state_before: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ X).V
⊢ ({ hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ }).hom x =
    (𝟙 (leftRegular G ⊗ X)).hom x
state_after: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ X).V
⊢ (({ hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ }).hom x).2 =
    ((𝟙 (leftRegular G ⊗ X)).hom x).2
tactic: refine Prod.ext rfl ?_
state_before: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ X).V
⊢ (({ hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ }).hom x).2 =
    ((𝟙 (leftRegular G ⊗ X)).hom x).2
state_after: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ X).V
⊢ (X.ρ x.1 * X.ρ x.1⁻¹) x.2 = x.2
tactic: change (X.ρ x.1 * X.ρ (x.1⁻¹ : G)) x.2 = x.2
state_before: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ X).V
⊢ (X.ρ x.1 * X.ρ x.1⁻¹) x.2 = x.2
state_after: no goals
tactic: rw [← X.ρ.map_mul, mul_inv_self, X.ρ.map_one, MonCat.one_of, End.one_def, types_id_apply]
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
⊢ { hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ } =
    𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })
state_after: case hom
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
⊢ ({ hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ }).hom =
    (𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })).hom
tactic: apply Hom.ext
state_before: case hom
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
⊢ ({ hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ }).hom =
    (𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })).hom
state_after: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ { V := X.V, ρ := 1 }).V
⊢ ({ hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ }).hom x =
    (𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })).hom x
tactic: funext x
state_before: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ { V := X.V, ρ := 1 }).V
⊢ ({ hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ }).hom x =
    (𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })).hom x
state_after: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ { V := X.V, ρ := 1 }).V
⊢ (({ hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ }).hom x).2 =
    ((𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })).hom x).2
tactic: refine Prod.ext rfl ?_
state_before: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ { V := X.V, ρ := 1 }).V
⊢ (({ hom := fun g => (g.1, X.ρ g.1 g.2), comm := ⋯ } ≫ { hom := fun g => (g.1, X.ρ g.1⁻¹ g.2), comm := ⋯ }).hom x).2 =
    ((𝟙 (leftRegular G ⊗ { V := X.V, ρ := 1 })).hom x).2
state_after: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ { V := X.V, ρ := 1 }).V
⊢ (X.ρ x.1⁻¹ * X.ρ x.1) x.2 = x.2
tactic: change (X.ρ (x.1⁻¹ : G) * X.ρ x.1) x.2 = x.2
state_before: case hom.h
V : Type (u + 1)
inst✝¹ : LargeCategory V
G✝ : MonCat
G : Type u
inst✝ : Group G
X : Action (Type u) (MonCat.of G)
x : (leftRegular G ⊗ { V := X.V, ρ := 1 }).V
⊢ (X.ρ x.1⁻¹ * X.ρ x.1) x.2 = x.2
state_after: no goals
tactic: rw [← X.ρ.map_mul, inv_mul_self, X.ρ.map_one, MonCat.one_of, End.one_def, types_id_apply]