/-- An auxiliary definition used in `plus` below. -/
def plusMap {P Q : Cᵒᵖ ⥤ D} (η : P ⟶ Q) : J.plusObj P ⟶ J.plusObj Q where
  app X := colimMap (J.diagramNatTrans η X.unop)
  naturality := by
    intro X Y f
    dsimp [plusObj]
    ext
    simp only [diagramPullback_app, ι_colimMap, colimit.ι_pre_assoc, colimit.ι_pre,
      ι_colimMap_assoc, Category.assoc]
    simp_rw [← Category.assoc]
    congr 1
    exact 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
inst✝ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
P Q : Cᵒᵖ ⥤ D
η : P ⟶ Q
X Y : Cᵒᵖ
f : X ⟶ Y
j✝ : (Cover J X.unop)ᵒᵖ
I : (Cover.index ((pullback J f.unop).op.obj j✝).unop Q).L
⊢ (Multiequalizer.lift (Cover.index (Cover.pullback j✝.unop f.unop) P) (multiequalizer (Cover.index j✝.unop P))
          (fun I => Multiequalizer.ι (Cover.index j✝.unop P) (Cover.Arrow.base I))
          (_ :
            ∀ (I : (Cover.index ((pullback J f.unop).op.obj j✝).unop P).R),
              Multiequalizer.ι (Cover.index j✝.unop P)
                    (MulticospanIndex.fstTo (Cover.index j✝.unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.fst (Cover.index j✝.unop P) (Cover.Relation.base I) =
                Multiequalizer.ι (Cover.index j✝.unop P)
                    (MulticospanIndex.sndTo (Cover.index j✝.unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.snd (Cover.index j✝.unop P) (Cover.Relation.base I)) ≫
        Multiequalizer.lift (Cover.index (Cover.pullback j✝.unop f.unop) Q)
          (multiequalizer (Cover.index (Cover.pullback j✝.unop f.unop) P))
          (fun i => Multiequalizer.ι (Cover.index (Cover.pullback j✝.unop f.unop) P) i ≫ η.app (op i.Y))
          (_ :
            ∀ (i : (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop Q).R),
              (fun i => Multiequalizer.ι (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop P) i ≫ η.app (op i.Y))
                    (MulticospanIndex.fstTo (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop Q) i) ≫
                  MulticospanIndex.fst (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop Q) i =
                (fun i => Multiequalizer.ι (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop P) i ≫ η.app (op i.Y))
                    (MulticospanIndex.sndTo (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop Q) i) ≫
                  MulticospanIndex.snd (Cover.index (op (Cover.pullback j✝.unop f.unop)).unop Q) i)) ≫
      Multiequalizer.ι (Cover.index (Cover.pullback j✝.unop f.unop) Q) I =
    (Multiequalizer.lift (Cover.index j✝.unop Q) (multiequalizer (Cover.index j✝.unop P))
          (fun i => Multiequalizer.ι (Cover.index j✝.unop P) i ≫ η.app (op i.Y))
          (_ :
            ∀ (i : (Cover.index j✝.unop Q).R),
              (fun i => Multiequalizer.ι (Cover.index j✝.unop P) i ≫ η.app (op i.Y))
                    (MulticospanIndex.fstTo (Cover.index j✝.unop Q) i) ≫
                  MulticospanIndex.fst (Cover.index j✝.unop Q) i =
                (fun i => Multiequalizer.ι (Cover.index j✝.unop P) i ≫ η.app (op i.Y))
                    (MulticospanIndex.sndTo (Cover.index j✝.unop Q) i) ≫
                  MulticospanIndex.snd (Cover.index j✝.unop Q) i) ≫
        Multiequalizer.lift (Cover.index (Cover.pullback j✝.unop f.unop) Q) (multiequalizer (Cover.index j✝.unop Q))
          (fun I => Multiequalizer.ι (Cover.index j✝.unop Q) (Cover.Arrow.base I))
          (_ :
            ∀ (I : (Cover.index ((pullback J f.unop).op.obj j✝).unop Q).R),
              Multiequalizer.ι (Cover.index j✝.unop Q)
                    (MulticospanIndex.fstTo (Cover.index j✝.unop Q) (Cover.Relation.base I)) ≫
                  MulticospanIndex.fst (Cover.index j✝.unop Q) (Cover.Relation.base I) =
                Multiequalizer.ι (Cover.index j✝.unop Q)
                    (MulticospanIndex.sndTo (Cover.index j✝.unop Q) (Cover.Relation.base I)) ≫
                  MulticospanIndex.snd (Cover.index j✝.unop Q) (Cover.Relation.base I))) ≫
      Multiequalizer.ι (Cover.index (Cover.pullback j✝.unop f.unop) Q) I

Next tactic:
simp