Theorem: CategoryTheory.Limits.ι_colimitLimitIso_limit_π
File: Mathlib/CategoryTheory/Limits/FilteredColimitCommutesFiniteLimit.lean

Proof steps:
state_before: J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (limit F) a ≫ (colimitLimitIso F).hom ≫ limit.π (colimit F.flip) b =
    (limit.π F b).app a ≫ (colimit.ι F.flip a).app b
state_after: J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (limit F) a ≫
      (((isLimitOfPreserves colim (limit.isLimit F)).conePointUniqueUpToIso (limit.isLimit (F ⋙ colim))).hom ≫
          (HasLimit.isoOfNatIso (colimitFlipIsoCompColim F).symm).hom) ≫
        limit.π (colimit F.flip) b =
    (limit.π F b).app a ≫ (colimit.ι F.flip a).app b
tactic: dsimp [colimitLimitIso]
state_before: J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (limit F) a ≫
      (((isLimitOfPreserves colim (limit.isLimit F)).conePointUniqueUpToIso (limit.isLimit (F ⋙ colim))).hom ≫
          (HasLimit.isoOfNatIso (colimitFlipIsoCompColim F).symm).hom) ≫
        limit.π (colimit F.flip) b =
    (limit.π F b).app a ≫ (colimit.ι F.flip a).app b
state_after: J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ (limit.π F b).app a ≫
      colimit.ι (F.obj b) a ≫
        (HasColimit.isoOfNatIso (flipCompEvaluation F b)).inv ≫ (colimitObjIsoColimitCompEvaluation F.flip b).inv =
    (limit.π F b).app a ≫ (colimit.ι F.flip a).app b
tactic: simp only [Functor.mapCone_π_app, Iso.symm_hom,
    Limits.limit.conePointUniqueUpToIso_hom_comp_assoc, Limits.limit.cone_π,
    Limits.colimit.ι_map_assoc, Limits.colimitFlipIsoCompColim_inv_app, assoc,
    Limits.HasLimit.isoOfNatIso_hom_π]
state_before: J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ (limit.π F b).app a ≫
      colimit.ι (F.obj b) a ≫
        (HasColimit.isoOfNatIso (flipCompEvaluation F b)).inv ≫ (colimitObjIsoColimitCompEvaluation F.flip b).inv =
    (limit.π F b).app a ≫ (colimit.ι F.flip a).app b
state_after: case e_a
J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (F.obj b) a ≫
      (HasColimit.isoOfNatIso (flipCompEvaluation F b)).inv ≫ (colimitObjIsoColimitCompEvaluation F.flip b).inv =
    (colimit.ι F.flip a).app b
tactic: congr 1
state_before: case e_a
J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (F.obj b) a ≫
      (HasColimit.isoOfNatIso (flipCompEvaluation F b)).inv ≫ (colimitObjIsoColimitCompEvaluation F.flip b).inv =
    (colimit.ι F.flip a).app b
state_after: case e_a
J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (F.obj b) a = (flipCompEvaluation F b).hom.app a ≫ colimit.ι (F.obj b) a
tactic: simp only [← Category.assoc, Iso.comp_inv_eq,
    Limits.colimitObjIsoColimitCompEvaluation_ι_app_hom,
    Limits.HasColimit.isoOfNatIso_ι_hom, NatIso.ofComponents_hom_app]
state_before: case e_a
J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (F.obj b) a = (flipCompEvaluation F b).hom.app a ≫ colimit.ι (F.obj b) a
state_after: case e_a
J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (F.obj b) a = 𝟙 ((F.obj b).obj a) ≫ colimit.ι (F.obj b) a
tactic: dsimp
state_before: case e_a
J : Type u₁
K : Type u₂
inst✝¹¹ : SmallCategory J
inst✝¹⁰ : Category.{v₂, u₂} K
inst✝⁹ : Small.{v, u₂} K
inst✝⁸ : FinCategory J
F✝ : J × K ⥤ Type v
inst✝⁷ : IsFiltered K
C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasLimitsOfShape J C
inst✝³ : HasColimitsOfShape K C
inst✝² : ReflectsLimitsOfShape J (forget C)
inst✝¹ : PreservesColimitsOfShape K (forget C)
inst✝ : PreservesLimitsOfShape J (forget C)
F : J ⥤ K ⥤ C
a : K
b : J
⊢ colimit.ι (F.obj b) a = 𝟙 ((F.obj b).obj a) ≫ colimit.ι (F.obj b) a
state_after: no goals
tactic: simp