-- Module: Mathlib.CategoryTheory.Sites.CompatiblePlus
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_7 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_8 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
X Y : Cᵒᵖ
f : X ⟶ Y
W : (J.Cover (unop X))ᵒᵖ
slice_rhs :
  Eq (α := F.obj (multiequalizer ((unop W).index P)) ⟶ colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))
    (CategoryStruct.comp (Y := F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))))
        (F.map (colimit.ι (J.diagram P (unop X)) W) :
          F.obj (multiequalizer ((unop W).index P)) ⟶
            F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))))
        (CategoryStruct.comp (Y := F.obj (colimit ((J.pullback f.unop).op ⋙ J.diagram P (unop Y))))
            (F.map (colimMap (J.diagramPullback P f.unop)))
            (CategoryStruct.comp (Y := F.obj (colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram P (unop Y))))
              (F.map (colimit.pre (J.diagram P (unop Y)) (J.pullback f.unop).op))
              (CategoryStruct.comp (Y := colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram P (unop Y) ⋙ F))
                (Iso.hom
                  (IsColimit.coconePointUniqueUpToIso
                    (isColimitOfPreserves F (colimit.isColimit (J.diagram P (unop Y))))
                    (colimit.isColimit (J.diagram P (unop Y) ⋙ F))))
                (Iso.hom (HasColimit.isoOfNatIso (J.diagramCompIso F P (unop Y)))))) :
          F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))) ⟶
            colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y))) :
      F.obj (multiequalizer ((unop W).index P)) ⟶ colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))
    (CategoryStruct.comp (Y := colimit ((J.pullback f.unop).op ⋙ J.diagram (P ⋙ F) (unop Y)))
        (CategoryStruct.comp (Y := colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X)))
            (CategoryStruct.comp (Y := colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X) ⋙ F))
                (NatTrans.app (Cocone.ι (colimit.cocone (J.diagram P (unop X) ⋙ F))) W :
                  obj (J.diagram P (unop X) ⋙ F) W ⟶
                    obj
                      (obj (const (J.Cover (unop X))ᵒᵖ)
                        (Cocone.pt (J := (J.Cover (unop X))ᵒᵖ) (F := J.diagram P (unop X) ⋙ F)
                          (colimit.cocone (J.diagram P (unop X) ⋙ F))))
                      W)
                (Iso.hom (HasColimit.isoOfNatIso (J.diagramCompIso F P (unop X))) :
                  colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X) ⋙ F) ⟶
                    colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X))) :
              F.obj (multiequalizer ((unop W).index P)) ⟶
                colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X)))
            (colimMap (J.diagramPullback (P ⋙ F) f.unop) :
              colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X)) ⟶
                colimit ((J.pullback f.unop).op ⋙ J.diagram (P ⋙ F) (unop Y))) :
          F.obj (multiequalizer ((unop W).index P)) ⟶ colimit ((J.pullback f.unop).op ⋙ J.diagram (P ⋙ F) (unop Y)))
        (colimit.pre (J.diagram (P ⋙ F) (unop Y)) (J.pullback f.unop).op :
          colimit ((J.pullback f.unop).op ⋙ J.diagram (P ⋙ F) (unop Y)) ⟶
            colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y))) :
      F.obj (multiequalizer ((unop W).index P)) ⟶ colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))
⊢ Eq (α := F.obj (multiequalizer ((unop W).index P)) ⟶ colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))
    (CategoryStruct.comp (Y := F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))))
        (F.map (colimit.ι (J.diagram P (unop X)) W) :
          F.obj (multiequalizer ((unop W).index P)) ⟶
            F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))))
        (CategoryStruct.comp (Y := F.obj (colimit ((J.pullback f.unop).op ⋙ J.diagram P (unop Y))))
            (F.map (colimMap (J.diagramPullback P f.unop)))
            (CategoryStruct.comp (Y := F.obj (colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram P (unop Y))))
              (F.map (colimit.pre (J.diagram P (unop Y)) (J.pullback f.unop).op))
              (CategoryStruct.comp (Y := colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram P (unop Y) ⋙ F))
                (Iso.hom
                  (IsColimit.coconePointUniqueUpToIso
                    (isColimitOfPreserves F (colimit.isColimit (J.diagram P (unop Y))))
                    (colimit.isColimit (J.diagram P (unop Y) ⋙ F))))
                (Iso.hom (HasColimit.isoOfNatIso (J.diagramCompIso F P (unop Y)))))) :
          F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))) ⟶
            colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y))) :
      F.obj (multiequalizer ((unop W).index P)) ⟶ colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))
    (CategoryStruct.comp (Y := F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))))
        (F.map (colimit.ι (J.diagram P (unop X)) W) :
          F.obj (multiequalizer ((unop W).index P)) ⟶
            F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))))
        (CategoryStruct.comp (Y := colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X) ⋙ F))
            (Iso.hom
              (IsColimit.coconePointUniqueUpToIso (isColimitOfPreserves F (colimit.isColimit (J.diagram P (unop X))))
                (colimit.isColimit (J.diagram P (unop X) ⋙ F))))
            (CategoryStruct.comp (Y := colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X)))
              (Iso.hom (HasColimit.isoOfNatIso (J.diagramCompIso F P (unop X))) :
                colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X) ⋙ F) ⟶
                  colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X)))
              (CategoryStruct.comp (Y := colimit ((J.pullback f.unop).op ⋙ J.diagram (P ⋙ F) (unop Y)))
                  (colimMap (J.diagramPullback (P ⋙ F) f.unop))
                  (colimit.pre (J.diagram (P ⋙ F) (unop Y)) (J.pullback f.unop).op) :
                colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram (P ⋙ F) (unop X)) ⟶
                  colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))) :
          F.obj (colimit (J := (J.Cover (unop X))ᵒᵖ) (J.diagram P (unop X))) ⟶
            colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y))) :
      F.obj (multiequalizer ((unop W).index P)) ⟶ colimit (J := (J.Cover (unop Y))ᵒᵖ) (J.diagram (P ⋙ F) (unop Y)))

Tactic:
slice_rhs 1 2 =>
        erw [(isColimitOfPreserves F (colimit.isColimit (J.diagram P X.unop))).fac]

Premises used: CategoryTheory.Limits.IsColimit.fac, CategoryTheory.Limits.colimit.isColimit, Opposite.unop, CategoryTheory.Limits.isColimitOfPreserves, CategoryTheory.GrothendieckTopology.diagram