Theorem: Rep.ihom_map_hom
File: Mathlib/RepresentationTheory/Rep.lean

Proof steps:
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X Y : Rep k G
f : X ⟶ Y
g : ↑(MonCat.of G)
x : ↑((fun B => of (A.ρ.linHom B.ρ)) X).V
y : CoeSort.coe A
⊢ ((((fun B => of (A.ρ.linHom B.ρ)) X).ρ g ≫
          ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom))
        x)
      y =
    ((ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom) ≫
          ((fun B => of (A.ρ.linHom B.ρ)) Y).ρ g)
        x)
      y
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X Y : Rep k G
f : X ⟶ Y
g : ↑(MonCat.of G)
x : ↑((fun B => of (A.ρ.linHom B.ρ)) X).V
y : CoeSort.coe A
⊢ f.hom ((X.ρ g) ((x ∘ₗ A.ρ g⁻¹) y)) =
    ((ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom) ≫
          ((fun B => of (A.ρ.linHom B.ρ)) Y).ρ g)
        x)
      y
tactic: show f.hom (X.ρ g _) = _
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X Y : Rep k G
f : X ⟶ Y
g : ↑(MonCat.of G)
x : ↑((fun B => of (A.ρ.linHom B.ρ)) X).V
y : CoeSort.coe A
⊢ f.hom ((X.ρ g) ((x ∘ₗ A.ρ g⁻¹) y)) =
    ((ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom) ≫
          ((fun B => of (A.ρ.linHom B.ρ)) Y).ρ g)
        x)
      y
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X Y : Rep k G
f : X ⟶ Y
g : ↑(MonCat.of G)
x : ↑((fun B => of (A.ρ.linHom B.ρ)) X).V
y : CoeSort.coe A
⊢ (Y.ρ g) (f.hom ((x ∘ₗ A.ρ g⁻¹) y)) =
    ((ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom) ≫
          (of (A.ρ.linHom Y.ρ)).ρ g)
        x)
      y
tactic: simp only [hom_comm_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X Y : Rep k G
f : X ⟶ Y
g : ↑(MonCat.of G)
x : ↑((fun B => of (A.ρ.linHom B.ρ)) X).V
y : CoeSort.coe A
⊢ (Y.ρ g) (f.hom ((x ∘ₗ A.ρ g⁻¹) y)) =
    ((ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom) ≫
          (of (A.ρ.linHom Y.ρ)).ρ g)
        x)
      y
state_after: no goals
tactic: rfl
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A x✝ : Rep k G
⊢ { obj := fun B => of (A.ρ.linHom B.ρ),
          map := fun {X Y} f =>
            { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
              comm := ⋯ } }.map
      (𝟙 x✝) =
    𝟙
      ({ obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.obj
        x✝)
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A x✝¹ : Rep k G
x✝ :
  ↑({ obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.obj
        x✝¹).V
⊢ ({ obj := fun B => of (A.ρ.linHom B.ρ),
              map := fun {X Y} f =>
                { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                  comm := ⋯ } }.map
          (𝟙 x✝¹)).hom
      x✝ =
    (𝟙
          ({ obj := fun B => of (A.ρ.linHom B.ρ),
                map := fun {X Y} f =>
                  { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                    comm := ⋯ } }.obj
            x✝¹)).hom
      x✝
tactic: ext
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A x✝¹ : Rep k G
x✝ :
  ↑({ obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.obj
        x✝¹).V
⊢ ({ obj := fun B => of (A.ρ.linHom B.ρ),
              map := fun {X Y} f =>
                { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                  comm := ⋯ } }.map
          (𝟙 x✝¹)).hom
      x✝ =
    (𝟙
          ({ obj := fun B => of (A.ρ.linHom B.ρ),
                map := fun {X Y} f =>
                  { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                    comm := ⋯ } }.obj
            x✝¹)).hom
      x✝
state_after: no goals
tactic: rfl
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X✝ Y✝ Z✝ : Rep k G
x✝¹ : X✝ ⟶ Y✝
x✝ : Y✝ ⟶ Z✝
⊢ { obj := fun B => of (A.ρ.linHom B.ρ),
          map := fun {X Y} f =>
            { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
              comm := ⋯ } }.map
      (x✝¹ ≫ x✝) =
    { obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.map
        x✝¹ ≫
      { obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.map
        x✝
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X✝ Y✝ Z✝ : Rep k G
x✝² : X✝ ⟶ Y✝
x✝¹ : Y✝ ⟶ Z✝
x✝ :
  ↑({ obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.obj
        X✝).V
⊢ ({ obj := fun B => of (A.ρ.linHom B.ρ),
              map := fun {X Y} f =>
                { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                  comm := ⋯ } }.map
          (x✝² ≫ x✝¹)).hom
      x✝ =
    ({ obj := fun B => of (A.ρ.linHom B.ρ),
                map := fun {X Y} f =>
                  { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                    comm := ⋯ } }.map
            x✝² ≫
          { obj := fun B => of (A.ρ.linHom B.ρ),
                map := fun {X Y} f =>
                  { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                    comm := ⋯ } }.map
            x✝¹).hom
      x✝
tactic: ext
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A✝ B C A X✝ Y✝ Z✝ : Rep k G
x✝² : X✝ ⟶ Y✝
x✝¹ : Y✝ ⟶ Z✝
x✝ :
  ↑({ obj := fun B => of (A.ρ.linHom B.ρ),
            map := fun {X Y} f =>
              { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                comm := ⋯ } }.obj
        X✝).V
⊢ ({ obj := fun B => of (A.ρ.linHom B.ρ),
              map := fun {X Y} f =>
                { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                  comm := ⋯ } }.map
          (x✝² ≫ x✝¹)).hom
      x✝ =
    ({ obj := fun B => of (A.ρ.linHom B.ρ),
                map := fun {X Y} f =>
                  { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                    comm := ⋯ } }.map
            x✝² ≫
          { obj := fun B => of (A.ρ.linHom B.ρ),
                map := fun {X Y} f =>
                  { hom := ModuleCat.ofHom ((LinearMap.llcomp k (CoeSort.coe A) (CoeSort.coe X) (CoeSort.coe Y)) f.hom),
                    comm := ⋯ } }.map
            x✝¹).hom
      x✝
state_after: no goals
tactic: rfl