Theorem: CategoryTheory.MonoidalFunctor.mapActionLax_toFunctor_map_hom
File: Mathlib/RepresentationTheory/Action/Monoidal.lean

Proof steps:
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
g : ↑G
⊢ (𝟙_ (Action W G)).ρ g ≫ F.ε = F.ε ≫ ((F.mapAction G).obj (𝟙_ (Action V G))).ρ g
state_after: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
g : ↑G
⊢ 𝟙 (𝟙_ W) ≫ F.ε = F.ε ≫ F.map (𝟙 (𝟙_ V))
tactic: dsimp [FunctorCategoryEquivalence.inverse, Functor.mapAction]
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
g : ↑G
⊢ 𝟙 (𝟙_ W) ≫ F.ε = F.ε ≫ F.map (𝟙 (𝟙_ V))
state_after: no goals
tactic: rw [Category.id_comp, F.map_id, Category.comp_id]
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
⊢ ∀ {X Y X' Y' : Action V G} (f : X ⟶ Y) (g : X' ⟶ Y'),
    MonoidalCategory.tensorHom ((F.mapAction G).map f) ((F.mapAction G).map g) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y Y' =
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X X' ≫ (F.mapAction G).map (MonoidalCategory.tensorHom f g)
state_after: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ X'✝ Y'✝ : Action V G
f✝ : X✝ ⟶ Y✝
g✝ : X'✝ ⟶ Y'✝
⊢ MonoidalCategory.tensorHom ((F.mapAction G).map f✝) ((F.mapAction G).map g✝) ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Y'✝ =
    (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ X'✝ ≫ (F.mapAction G).map (MonoidalCategory.tensorHom f✝ g✝)
tactic: intros
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ X'✝ Y'✝ : Action V G
f✝ : X✝ ⟶ Y✝
g✝ : X'✝ ⟶ Y'✝
⊢ MonoidalCategory.tensorHom ((F.mapAction G).map f✝) ((F.mapAction G).map g✝) ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Y'✝ =
    (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ X'✝ ≫ (F.mapAction G).map (MonoidalCategory.tensorHom f✝ g✝)
state_after: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ X'✝ Y'✝ : Action V G
f✝ : X✝ ⟶ Y✝
g✝ : X'✝ ⟶ Y'✝
⊢ (MonoidalCategory.tensorHom ((F.mapAction G).map f✝) ((F.mapAction G).map g✝) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Y'✝).hom =
    ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ X'✝ ≫ (F.mapAction G).map (MonoidalCategory.tensorHom f✝ g✝)).hom
tactic: ext
state_before: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ X'✝ Y'✝ : Action V G
f✝ : X✝ ⟶ Y✝
g✝ : X'✝ ⟶ Y'✝
⊢ (MonoidalCategory.tensorHom ((F.mapAction G).map f✝) ((F.mapAction G).map g✝) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Y'✝).hom =
    ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ X'✝ ≫ (F.mapAction G).map (MonoidalCategory.tensorHom f✝ g✝)).hom
state_after: no goals
tactic: simp
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
⊢ ∀ (X Y Z : Action V G),
    MonoidalCategory.tensorHom ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X Y) (𝟙 ((F.mapAction G).obj Z)) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (MonoidalCategory.tensorObj X Y) Z ≫
          (F.mapAction G).map (MonoidalCategory.associator X Y Z).hom =
      (MonoidalCategory.associator ((F.mapAction G).obj X) ((F.mapAction G).obj Y) ((F.mapAction G).obj Z)).hom ≫
        MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X)) ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y Z) ≫
          (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X (MonoidalCategory.tensorObj Y Z)
state_after: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ Z✝ : Action V G
⊢ MonoidalCategory.tensorHom ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ Y✝) (𝟙 ((F.mapAction G).obj Z✝)) ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (MonoidalCategory.tensorObj X✝ Y✝) Z✝ ≫
        (F.mapAction G).map (MonoidalCategory.associator X✝ Y✝ Z✝).hom =
    (MonoidalCategory.associator ((F.mapAction G).obj X✝) ((F.mapAction G).obj Y✝) ((F.mapAction G).obj Z✝)).hom ≫
      MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Z✝) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (MonoidalCategory.tensorObj Y✝ Z✝)
tactic: intros
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ Z✝ : Action V G
⊢ MonoidalCategory.tensorHom ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ Y✝) (𝟙 ((F.mapAction G).obj Z✝)) ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (MonoidalCategory.tensorObj X✝ Y✝) Z✝ ≫
        (F.mapAction G).map (MonoidalCategory.associator X✝ Y✝ Z✝).hom =
    (MonoidalCategory.associator ((F.mapAction G).obj X✝) ((F.mapAction G).obj Y✝) ((F.mapAction G).obj Z✝)).hom ≫
      MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Z✝) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (MonoidalCategory.tensorObj Y✝ Z✝)
state_after: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ Z✝ : Action V G
⊢ (MonoidalCategory.tensorHom ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ Y✝) (𝟙 ((F.mapAction G).obj Z✝)) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (MonoidalCategory.tensorObj X✝ Y✝) Z✝ ≫
          (F.mapAction G).map (MonoidalCategory.associator X✝ Y✝ Z✝).hom).hom =
    ((MonoidalCategory.associator ((F.mapAction G).obj X✝) ((F.mapAction G).obj Y✝) ((F.mapAction G).obj Z✝)).hom ≫
        MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Z✝) ≫
          (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (MonoidalCategory.tensorObj Y✝ Z✝)).hom
tactic: ext
state_before: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ Y✝ Z✝ : Action V G
⊢ (MonoidalCategory.tensorHom ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ Y✝) (𝟙 ((F.mapAction G).obj Z✝)) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (MonoidalCategory.tensorObj X✝ Y✝) Z✝ ≫
          (F.mapAction G).map (MonoidalCategory.associator X✝ Y✝ Z✝).hom).hom =
    ((MonoidalCategory.associator ((F.mapAction G).obj X✝) ((F.mapAction G).obj Y✝) ((F.mapAction G).obj Z✝)).hom ≫
        MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) ((fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) Y✝ Z✝) ≫
          (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (MonoidalCategory.tensorObj Y✝ Z✝)).hom
state_after: no goals
tactic: simp
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
⊢ ∀ (X : Action V G),
    (MonoidalCategory.leftUnitor ((F.mapAction G).obj X)).hom =
      MonoidalCategory.tensorHom { hom := F.ε, comm := ⋯ } (𝟙 ((F.mapAction G).obj X)) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (𝟙_ (Action V G)) X ≫
          (F.mapAction G).map (MonoidalCategory.leftUnitor X).hom
state_after: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.leftUnitor ((F.mapAction G).obj X✝)).hom =
    MonoidalCategory.tensorHom { hom := F.ε, comm := ⋯ } (𝟙 ((F.mapAction G).obj X✝)) ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (𝟙_ (Action V G)) X✝ ≫
        (F.mapAction G).map (MonoidalCategory.leftUnitor X✝).hom
tactic: intros
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.leftUnitor ((F.mapAction G).obj X✝)).hom =
    MonoidalCategory.tensorHom { hom := F.ε, comm := ⋯ } (𝟙 ((F.mapAction G).obj X✝)) ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (𝟙_ (Action V G)) X✝ ≫
        (F.mapAction G).map (MonoidalCategory.leftUnitor X✝).hom
state_after: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.leftUnitor ((F.mapAction G).obj X✝)).hom.hom =
    (MonoidalCategory.tensorHom { hom := F.ε, comm := ⋯ } (𝟙 ((F.mapAction G).obj X✝)) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (𝟙_ (Action V G)) X✝ ≫
          (F.mapAction G).map (MonoidalCategory.leftUnitor X✝).hom).hom
tactic: ext
state_before: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.leftUnitor ((F.mapAction G).obj X✝)).hom.hom =
    (MonoidalCategory.tensorHom { hom := F.ε, comm := ⋯ } (𝟙 ((F.mapAction G).obj X✝)) ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) (𝟙_ (Action V G)) X✝ ≫
          (F.mapAction G).map (MonoidalCategory.leftUnitor X✝).hom).hom
state_after: no goals
tactic: simp
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
⊢ ∀ (X : Action V G),
    (MonoidalCategory.rightUnitor ((F.mapAction G).obj X)).hom =
      MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X)) { hom := F.ε, comm := ⋯ } ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X (𝟙_ (Action V G)) ≫
          (F.mapAction G).map (MonoidalCategory.rightUnitor X).hom
state_after: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.rightUnitor ((F.mapAction G).obj X✝)).hom =
    MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) { hom := F.ε, comm := ⋯ } ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (𝟙_ (Action V G)) ≫
        (F.mapAction G).map (MonoidalCategory.rightUnitor X✝).hom
tactic: intros
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.rightUnitor ((F.mapAction G).obj X✝)).hom =
    MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) { hom := F.ε, comm := ⋯ } ≫
      (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (𝟙_ (Action V G)) ≫
        (F.mapAction G).map (MonoidalCategory.rightUnitor X✝).hom
state_after: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.rightUnitor ((F.mapAction G).obj X✝)).hom.hom =
    (MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) { hom := F.ε, comm := ⋯ } ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (𝟙_ (Action V G)) ≫
          (F.mapAction G).map (MonoidalCategory.rightUnitor X✝).hom).hom
tactic: ext
state_before: case h
V : Type (u + 1)
inst✝³ : LargeCategory V
G✝ : MonCat
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : LaxMonoidalFunctor V W
G : MonCat
X✝ : Action V G
⊢ (MonoidalCategory.rightUnitor ((F.mapAction G).obj X✝)).hom.hom =
    (MonoidalCategory.tensorHom (𝟙 ((F.mapAction G).obj X✝)) { hom := F.ε, comm := ⋯ } ≫
        (fun X Y => { hom := F.μ X.V Y.V, comm := ⋯ }) X✝ (𝟙_ (Action V G)) ≫
          (F.mapAction G).map (MonoidalCategory.rightUnitor X✝).hom).hom
state_after: no goals
tactic: simp