-- Module: Mathlib.CategoryTheory.Sites.Descent.DescentData
Goal:
C : Type u
inst : Category.{v, u} C
F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat
ι : Type t
S : C
X : ι → C
f : (i : ι) → X i ⟶ S
S' : C
p : S' ⟶ S
ι' : Type t'
X' : ι' → C
f' : (j : ι') → X' j ⟶ S'
α : ι' → ι
p' : (j : ι') → X' j ⟶ X (α j)
w : ∀ (j : ι'), p' j ≫ f (α j) = f' j ≫ p
S'' : C
q : S'' ⟶ S'
ι'' : Type t''
X'' : ι'' → C
f'' : (k : ι'') → X'' k ⟶ S''
β : ι'' → ι'
q' : (k : ι'') → X'' k ⟶ X' (β k)
w' : ∀ (k : ι''), q' k ≫ f' (β k) = f'' k ≫ q
r : S'' ⟶ S
r' : (k : ι'') → X'' k ⟶ X (α (β k))
hr : q ≫ p = r
hr' : ∀ (k : ι''), q' k ≫ p' (β k) = r' k
D : F.DescentData f
Y : C
s : Y ⟶ S''
k₁ k₂ : ι''
f₁ : Y ⟶ X'' k₁
f₂ : Y ⟶ X'' k₂
hf₁ : f₁ ≫ f'' k₁ = s
hf₂ : f₂ ≫ f'' k₂ = s
rw :
  Functor.map (Cat.Hom.toFunctor (F.map f₁.op.toLoc))
        ((F.mapComp' (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₁)))) (q' k₁).op.toLoc (r' k₁).op.toLoc
                  ⋯).inv.toNatTrans.app
          (D.obj (α (β k₁)))) ≫
      (F.mapComp' (r' k₁).op.toLoc f₁.op.toLoc
                  (CategoryStruct.comp (Y := { as := op (X'' k₁) : LocallyDiscrete Cᵒᵖ }) (r' k₁).op.toLoc f₁.op.toLoc)
                  ⋯).inv.toNatTrans.app
          (D.obj (α (β k₁))) ≫
        D.hom (s ≫ r) (f₁ ≫ r' k₁) (f₂ ≫ r' k₂) ⋯ ⋯ ≫
          (F.mapComp' (r' k₂).op.toLoc f₂.op.toLoc
                    (CategoryStruct.comp (Y := { as := op (X'' k₂) : LocallyDiscrete Cᵒᵖ }) (r' k₂).op.toLoc
                      f₂.op.toLoc)
                    ⋯).hom.toNatTrans.app
            (D.obj (α (β k₂))) =
    ((F.mapComp' (q' k₁).op.toLoc f₁.op.toLoc
                  (CategoryStruct.comp (Y := { as := op (X'' k₁) : LocallyDiscrete Cᵒᵖ }) (q' k₁).op.toLoc f₁.op.toLoc)
                  ⋯).inv.toNatTrans.app
          (Functor.obj (C := (↑(F.obj { as := op (X (α (β k₁))) : LocallyDiscrete Cᵒᵖ }) : Type u'))
            (Cat.Hom.toFunctor (F.map (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₁)))))) (D.obj (α (β k₁)))) ≫
        (NatTrans.app
              (Cat.Hom₂.toNatTrans
                (Iso.inv
                  (F.mapComp' (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₁)))) (f₁ ≫ q' k₁).op.toLoc (f₁ ≫ r' k₁).op.toLoc
                    ⋯)))
              (D.obj (α (β k₁))) ≫
            D.hom (s ≫ r) (f₁ ≫ r' k₁) (f₂ ≫ r' k₂) ⋯ ⋯ ≫
              NatTrans.app
                (Cat.Hom₂.toNatTrans
                  (Iso.hom
                    (F.mapComp' (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₂)))) (f₂ ≫ q' k₂).op.toLoc
                      (f₂ ≫ r' k₂).op.toLoc ⋯)))
                (D.obj (α (β k₂)))) ≫
          (F.mapComp' (q' k₂).op.toLoc f₂.op.toLoc
                    (CategoryStruct.comp (Y := { as := op (X'' k₂) : LocallyDiscrete Cᵒᵖ }) (q' k₂).op.toLoc
                      f₂.op.toLoc)
                    ⋯).hom.toNatTrans.app
            (Functor.obj (C := (↑(F.obj { as := op (X (α (β k₂))) : LocallyDiscrete Cᵒᵖ }) : Type u'))
              (Cat.Hom.toFunctor (F.map (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₂)))))) (D.obj (α (β k₂))))) ≫
      Functor.map (Cat.Hom.toFunctor (F.map f₂.op.toLoc))
        ((F.mapComp' (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₂)))) (q' k₂).op.toLoc (r' k₂).op.toLoc
                  ⋯).inv.toNatTrans.app
          (D.obj (α (β k₂))))
⊢ Functor.map (Cat.Hom.toFunctor (F.map f₁.op.toLoc))
        ((F.mapComp' (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₁)))) (q' k₁).op.toLoc (r' k₁).op.toLoc
                  ⋯).inv.toNatTrans.app
          (D.obj (α (β k₁)))) ≫
      (F.mapComp' (r' k₁).op.toLoc f₁.op.toLoc
                  (CategoryStruct.comp (Y := { as := op (X'' k₁) : LocallyDiscrete Cᵒᵖ }) (r' k₁).op.toLoc f₁.op.toLoc)
                  ⋯).inv.toNatTrans.app
          (D.obj (α (β k₁))) ≫
        D.hom (s ≫ r) (f₁ ≫ r' k₁) (f₂ ≫ r' k₂) ⋯ ⋯ ≫
          (F.mapComp' (r' k₂).op.toLoc f₂.op.toLoc
                    (CategoryStruct.comp (Y := { as := op (X'' k₂) : LocallyDiscrete Cᵒᵖ }) (r' k₂).op.toLoc
                      f₂.op.toLoc)
                    ⋯).hom.toNatTrans.app
            (D.obj (α (β k₂))) =
    ((F.mapComp' (q' k₁).op.toLoc f₁.op.toLoc
                  (CategoryStruct.comp (Y := { as := op (X'' k₁) : LocallyDiscrete Cᵒᵖ }) (q' k₁).op.toLoc f₁.op.toLoc)
                  ⋯).inv.toNatTrans.app
          (Functor.obj (C := (↑(F.obj { as := op (X (α (β k₁))) : LocallyDiscrete Cᵒᵖ }) : Type u'))
            (Cat.Hom.toFunctor (F.map (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₁)))))) (D.obj (α (β k₁)))) ≫
        pullFunctorObjHom w D ((f₁ ≫ q' k₁) ≫ f' (β k₁)) (f₁ ≫ q' k₁) (f₂ ≫ q' k₂) ⋯ ⋯ ≫
          (F.mapComp' (q' k₂).op.toLoc f₂.op.toLoc
                    (CategoryStruct.comp (Y := { as := op (X'' k₂) : LocallyDiscrete Cᵒᵖ }) (q' k₂).op.toLoc
                      f₂.op.toLoc)
                    ⋯).hom.toNatTrans.app
            (Functor.obj (C := (↑(F.obj { as := op (X (α (β k₂))) : LocallyDiscrete Cᵒᵖ }) : Type u'))
              (Cat.Hom.toFunctor (F.map (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₂)))))) (D.obj (α (β k₂))))) ≫
      Functor.map (Cat.Hom.toFunctor (F.map f₂.op.toLoc))
        ((F.mapComp' (Quiver.Hom.toLoc (Quiver.Hom.op (p' (β k₂)))) (q' k₂).op.toLoc (r' k₂).op.toLoc
                  ⋯).inv.toNatTrans.app
          (D.obj (α (β k₂))))

Tactic:
rw [pullFunctorObjHom_eq _ _ _ _ _ (s ≫ r) (f₁ ≫ r' k₁) (f₂ ≫ r' k₂)
        rfl (by simp [w', reassoc_of% hf₁, reassoc_of% hf₂]) (by
          simp [reassoc_of% w', reassoc_of% hf₁, hr])]

Premises used: CategoryTheory.CategoryStruct.comp, CategoryTheory.Pseudofunctor.DescentData.pullFunctorObjHom_eq, rfl