Theorem: ModuleCat.HasColimit.colimitCocone_pt
File: Mathlib/Algebra/Category/ModuleCat/Colimits.lean

Proof steps:
state_before: R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
j : J
r : R
⊢ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j ≫
      (((Functor.const J).obj (mkOfSMul (coconePointSMul F))).obj j).smul r =
    (F.obj j).smul r ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j
state_after: R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
j : J
r : R
⊢ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j ≫ (mkOfSMul (coconePointSMul F)).smul r =
    (F.obj j).smul r ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j
tactic: dsimp
state_before: R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
j : J
r : R
⊢ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j ≫ (mkOfSMul (coconePointSMul F)).smul r =
    (F.obj j).smul r ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j
state_after: R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
j : J
r : R
⊢ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j ≫ (coconePointSMul F) r =
    (F.obj j).smul r ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j
tactic: erw [mkOfSMul_smul]
state_before: R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
j : J
r : R
⊢ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j ≫ (coconePointSMul F) r =
    (F.obj j).smul r ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j
state_after: no goals
tactic: simp
state_before: R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ F.map f ≫ (fun j => homMk (colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j) ⋯) j =
    (fun j => homMk (colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j) ⋯) i ≫
      ((Functor.const J).obj (mkOfSMul (coconePointSMul F))).map f
state_after: case a
R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ (forget₂ (ModuleCat R) AddCommGrp).map
      (F.map f ≫ (fun j => homMk (colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j) ⋯) j) =
    (forget₂ (ModuleCat R) AddCommGrp).map
      ((fun j => homMk (colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j) ⋯) i ≫
        ((Functor.const J).obj (mkOfSMul (coconePointSMul F))).map f)
tactic: apply (forget₂ _ AddCommGrp).map_injective
state_before: case a
R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ (forget₂ (ModuleCat R) AddCommGrp).map
      (F.map f ≫ (fun j => homMk (colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j) ⋯) j) =
    (forget₂ (ModuleCat R) AddCommGrp).map
      ((fun j => homMk (colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j) ⋯) i ≫
        ((Functor.const J).obj (mkOfSMul (coconePointSMul F))).map f)
state_after: case a
R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ (forget₂ (ModuleCat R) AddCommGrp).map (F.map f) ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j =
    colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) i ≫
      (forget₂ (ModuleCat R) AddCommGrp).map (((Functor.const J).obj (mkOfSMul (coconePointSMul F))).map f)
tactic: simp only [Functor.map_comp, forget₂_map_homMk]
state_before: case a
R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ (forget₂ (ModuleCat R) AddCommGrp).map (F.map f) ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j =
    colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) i ≫
      (forget₂ (ModuleCat R) AddCommGrp).map (((Functor.const J).obj (mkOfSMul (coconePointSMul F))).map f)
state_after: case a
R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ LinearMap.toAddMonoidHom (F.map f) ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j =
    colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) i ≫ LinearMap.toAddMonoidHom (𝟙 (mkOfSMul (coconePointSMul F)))
tactic: dsimp
state_before: case a
R : Type w
inst✝² : Ring R
J : Type u
inst✝¹ : Category.{v, u} J
F : J ⥤ ModuleCat R
inst✝ : HasColimit (F ⋙ forget₂ (ModuleCat R) AddCommGrp)
i j : J
f : i ⟶ j
⊢ LinearMap.toAddMonoidHom (F.map f) ≫ colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) j =
    colimit.ι (F ⋙ forget₂ (ModuleCat R) AddCommGrp) i ≫ LinearMap.toAddMonoidHom (𝟙 (mkOfSMul (coconePointSMul F)))
state_after: no goals
tactic: erw [colimit.w (F ⋙ forget₂ _ AddCommGrp), comp_id]