/-- A helper definition used to define the morphisms for `plus`. -/
@[simps]
def diagramPullback {X Y : C} (f : X ⟶ Y) : J.diagram P Y ⟶ (J.pullback f).op ⋙ J.diagram P X where
  app S :=
    Multiequalizer.lift _ _ (fun I => Multiequalizer.ι (S.unop.index P) I.base) fun I =>
      Multiequalizer.condition (S.unop.index P) I.base
  naturality S T f := Multiequalizer.hom_ext _ _ _ (fun I => by dsimp; 

Proof state:
C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝¹ : Category.{max v u, w} D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
P : Cᵒᵖ ⥤ D
X Y : C
f✝ : X ⟶ Y
S T : (Cover J Y)ᵒᵖ
f : S ⟶ T
I : (Cover.index ((pullback J f✝).op.obj T).unop P).L
⊢ (Multiequalizer.lift (Cover.index T.unop P) (multiequalizer (Cover.index S.unop P))
          (fun I => Multiequalizer.ι (Cover.index S.unop P) (Cover.Arrow.map I f.unop))
          (_ :
            ∀ (I : (Cover.index T.unop P).R),
              Multiequalizer.ι (Cover.index S.unop P)
                    (MulticospanIndex.fstTo (Cover.index S.unop P) (Cover.Relation.map I f.unop)) ≫
                  MulticospanIndex.fst (Cover.index S.unop P) (Cover.Relation.map I f.unop) =
                Multiequalizer.ι (Cover.index S.unop P)
                    (MulticospanIndex.sndTo (Cover.index S.unop P) (Cover.Relation.map I f.unop)) ≫
                  MulticospanIndex.snd (Cover.index S.unop P) (Cover.Relation.map I f.unop)) ≫
        Multiequalizer.lift (Cover.index (Cover.pullback T.unop f✝) P) (multiequalizer (Cover.index T.unop P))
          (fun I => Multiequalizer.ι (Cover.index T.unop P) (Cover.Arrow.base I))
          (_ :
            ∀ (I : (Cover.index (Cover.pullback T.unop f✝) P).R),
              Multiequalizer.ι (Cover.index T.unop P)
                    (MulticospanIndex.fstTo (Cover.index T.unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.fst (Cover.index T.unop P) (Cover.Relation.base I) =
                Multiequalizer.ι (Cover.index T.unop P)
                    (MulticospanIndex.sndTo (Cover.index T.unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.snd (Cover.index T.unop P) (Cover.Relation.base I))) ≫
      Multiequalizer.ι (Cover.index (Cover.pullback T.unop f✝) P) I =
    (Multiequalizer.lift (Cover.index (Cover.pullback S.unop f✝) P) (multiequalizer (Cover.index S.unop P))
          (fun I => Multiequalizer.ι (Cover.index S.unop P) (Cover.Arrow.base I))
          (_ :
            ∀ (I : (Cover.index (Cover.pullback S.unop f✝) P).R),
              Multiequalizer.ι (Cover.index S.unop P)
                    (MulticospanIndex.fstTo (Cover.index S.unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.fst (Cover.index S.unop P) (Cover.Relation.base I) =
                Multiequalizer.ι (Cover.index S.unop P)
                    (MulticospanIndex.sndTo (Cover.index S.unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.snd (Cover.index S.unop P) (Cover.Relation.base I)) ≫
        Multiequalizer.lift (Cover.index (Cover.pullback T.unop f✝) P)
          (multiequalizer (Cover.index (Cover.pullback S.unop f✝) P))
          (fun I =>
            Multiequalizer.ι (Cover.index (Cover.pullback S.unop f✝) P)
              (Cover.Arrow.map I ((pullback J f✝).map f.unop)))
          (_ :
            ∀ (I : (Cover.index (op (Cover.pullback T.unop f✝)).unop P).R),
              Multiequalizer.ι (Cover.index (op (Cover.pullback S.unop f✝)).unop P)
                    (MulticospanIndex.fstTo (Cover.index (op (Cover.pullback S.unop f✝)).unop P)
                      (Cover.Relation.map I ((pullback J f✝).map f.unop).op.unop)) ≫
                  MulticospanIndex.fst (Cover.index (op (Cover.pullback S.unop f✝)).unop P)
                    (Cover.Relation.map I ((pullback J f✝).map f.unop).op.unop) =
                Multiequalizer.ι (Cover.index (op (Cover.pullback S.unop f✝)).unop P)
                    (MulticospanIndex.sndTo (Cover.index (op (Cover.pullback S.unop f✝)).unop P)
                      (Cover.Relation.map I ((pullback J f✝).map f.unop).op.unop)) ≫
                  MulticospanIndex.snd (Cover.index (op (Cover.pullback S.unop f✝)).unop P)
                    (Cover.Relation.map I ((pullback J f✝).map f.unop).op.unop))) ≫
      Multiequalizer.ι (Cover.index (Cover.pullback T.unop f✝) P) I

Next tactic:
simp