Module: Mathlib.CategoryTheory.Limits.Preserves.Presheaf

Goal state before:
pp: C : Type u
inst✝⁴ : SmallCategory C
inst✝³ : HasFiniteColimits C
A : Cᵒᵖ ⥤ Type u
J : Type
inst✝² : SmallCategory J
inst✝¹ : FinCategory J
K : J ⥤ Cᵒᵖ
inst✝ : IsFiltered (CostructuredArrow yoneda A)
j : J
i : CostructuredArrow yoneda A
⊢ (colimit.ι (CostructuredArrow.proj yoneda A ⋙ yoneda) i).app (limit K) ≫
      (((Presheaf.isColimitTautologicalCocone A).coconePointUniqueUpToIso
                (colimit.isColimit (CostructuredArrow.proj yoneda A ⋙ yoneda))).app
            (limit K)).inv ≫
        A.map (limit.π K j) =
    colimit.ι ((CostructuredArrow.proj yoneda A ⋙ yoneda) ⋙ (evaluation Cᵒᵖ (Type u)).obj (limit K)) i ≫
      (HasColimit.isoOfNatIso
            ((CostructuredArrow.proj yoneda A).associator yoneda ((evaluation Cᵒᵖ (Type u)).obj (limit K)))).hom ≫
        (HasColimit.isoOfNatIso (isoAux A K)).hom ≫
          (HasColimit.isoOfNatIso
                (preservesLimitIso
                  (coyoneda ⋙
                    (whiskeringLeft (CostructuredArrow yoneda A) C (Type u)).obj (CostructuredArrow.proj yoneda A))
                  K)).hom ≫
            (HasColimit.isoOfNatIso (HasLimit.isoOfNatIso (functorToInterchangeIso A K).symm)).hom ≫
              (colimitLimitIso (functorToInterchange A K)).hom ≫
                (HasLimit.isoOfNatIso (HasColimit.isoOfNatIso (flipFunctorToInterchange A K))).hom ≫
                  limit.π (colimit ((CostructuredArrow.proj yoneda A ⋙ yoneda) ⋙ (whiskeringLeft J Cᵒᵖ (Type u)).obj K))
                      j ≫
                    (colimitCompWhiskeringLeftIsoCompColimit (CostructuredArrow.proj yoneda A ⋙ yoneda) K).hom.app j ≫
                      (K.isoWhiskerLeft
                              ((colimit.isColimit (CostructuredArrow.proj yoneda A ⋙ yoneda)).coconePointUniqueUpToIso
                                (Presheaf.isColimitTautologicalCocone A))).hom.app
                        j

Tactic:
Iso.app_inv,

Goal state after:
C : Type u
inst✝⁴ : SmallCategory C
inst✝³ : HasFiniteColimits C
A : Cᵒᵖ ⥤ Type u
J : Type
inst✝² : SmallCategory J
inst✝¹ : FinCategory J
K : J ⥤ Cᵒᵖ
inst✝ : IsFiltered (CostructuredArrow yoneda A)
j : J
i : CostructuredArrow yoneda A
⊢ (colimit.ι (CostructuredArrow.proj yoneda A ⋙ yoneda) i).app (limit K) ≫
      ((Presheaf.isColimitTautologicalCocone A).coconePointUniqueUpToIso
                (colimit.isColimit (CostructuredArrow.proj yoneda A ⋙ yoneda))).inv.app
          (limit K) ≫
        A.map (limit.π K j) =
    colimit.ι ((CostructuredArrow.proj yoneda A ⋙ yoneda) ⋙ (evaluation Cᵒᵖ (Type u)).obj (limit K)) i ≫
      (HasColimit.isoOfNatIso
            ((CostructuredArrow.proj yoneda A).associator yoneda ((evaluation Cᵒᵖ (Type u)).obj (limit K)))).hom ≫
        (HasColimit.isoOfNatIso (isoAux A K)).hom ≫
          (HasColimit.isoOfNatIso
                (preservesLimitIso
                  (coyoneda ⋙
                    (whiskeringLeft (CostructuredArrow yoneda A) C (Type u)).obj (CostructuredArrow.proj yoneda A))
                  K)).hom ≫
            (HasColimit.isoOfNatIso (HasLimit.isoOfNatIso (functorToInterchangeIso A K).symm)).hom ≫
              (colimitLimitIso (functorToInterchange A K)).hom ≫
                (HasLimit.isoOfNatIso (HasColimit.isoOfNatIso (flipFunctorToInterchange A K))).hom ≫
                  limit.π (colimit ((CostructuredArrow.proj yoneda A ⋙ yoneda) ⋙ (whiskeringLeft J Cᵒᵖ (Type u)).obj K))
                      j ≫
                    (colimitCompWhiskeringLeftIsoCompColimit (CostructuredArrow.proj yoneda A ⋙ yoneda) K).hom.app j ≫
                      (K.isoWhiskerLeft
                              ((colimit.isColimit (CostructuredArrow.proj yoneda A ⋙ yoneda)).coconePointUniqueUpToIso
                                (Presheaf.isColimitTautologicalCocone A))).hom.app
                        j