/-- The canonical map from `P` to `J.plusObj P`.
See `toPlusNatTrans` for a functorial version. -/
def toPlus : P ⟶ J.plusObj P where
  app X := Cover.toMultiequalizer (⊤ : J.Cover X.unop) P ≫ colimit.ι (J.diagram P X.unop) (op ⊤)
  naturality := by
    intro X Y f
    dsimp [plusObj]
    delta Cover.toMultiequalizer
    simp only [diagramPullback_app, colimit.ι_pre, ι_colimMap_assoc, Category.assoc]
    dsimp only [Functor.op, unop_op]
    let e : (J.pullback f.unop).obj ⊤ ⟶ ⊤ := homOfLE (OrderTop.le_top _)
    rw [← colimit.w _ e.op, ← Category.assoc, ← Category.assoc, ← Category.assoc]
    congr 1
    refine' Multiequalizer.hom_ext _ _ _ (fun I => _)
    simp only [Multiequalizer.lift_ι, Category.assoc]
    dsimp [Cover.Arrow.base]
    

Proof state:
case e_a
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
X Y : Cᵒᵖ
f : X ⟶ Y
e : (pullback J f.unop).obj ⊤ ⟶ ⊤ := homOfLE (_ : (pullback J f.unop).obj ⊤ ≤ ⊤)
I : (Cover.index (op ((pullback J f.unop).obj ⊤)).unop P).L
⊢ P.map f ≫
      Multiequalizer.lift (Cover.index ⊤ P) (P.obj Y) (fun I => P.map I.f.op)
          (_ :
            ∀ (I : (Cover.index ⊤ P).R),
              (fun I => P.map I.f.op) (MulticospanIndex.fstTo (Cover.index ⊤ P) I) ≫
                  MulticospanIndex.fst (Cover.index ⊤ P) I =
                (fun I => P.map I.f.op) (MulticospanIndex.sndTo (Cover.index ⊤ P) I) ≫
                  MulticospanIndex.snd (Cover.index ⊤ P) I) ≫
        Multiequalizer.lift (Cover.index (Cover.pullback ⊤ f.unop) P) (multiequalizer (Cover.index ⊤ P))
            (fun I =>
              Multiequalizer.ι (Cover.index ⊤ P) (Cover.Arrow.map I (homOfLE (_ : Cover.pullback ⊤ f.unop ≤ ⊤))))
            (_ :
              ∀ (I : (Cover.index (op (Cover.pullback ⊤ f.unop)).unop P).R),
                Multiequalizer.ι (Cover.index (op ⊤).unop P)
                      (MulticospanIndex.fstTo (Cover.index (op ⊤).unop P)
                        (Cover.Relation.map I (homOfLE (_ : Cover.pullback ⊤ f.unop ≤ ⊤)).op.unop)) ≫
                    MulticospanIndex.fst (Cover.index (op ⊤).unop P)
                      (Cover.Relation.map I (homOfLE (_ : Cover.pullback ⊤ f.unop ≤ ⊤)).op.unop) =
                  Multiequalizer.ι (Cover.index (op ⊤).unop P)
                      (MulticospanIndex.sndTo (Cover.index (op ⊤).unop P)
                        (Cover.Relation.map I (homOfLE (_ : Cover.pullback ⊤ f.unop ≤ ⊤)).op.unop)) ≫
                    MulticospanIndex.snd (Cover.index (op ⊤).unop P)
                      (Cover.Relation.map I (homOfLE (_ : Cover.pullback ⊤ f.unop ≤ ⊤)).op.unop)) ≫
          Multiequalizer.ι (Cover.index (Cover.pullback ⊤ f.unop) P) I =
    Multiequalizer.lift (Cover.index ⊤ P) (P.obj X) (fun I => P.map I.f.op)
        (_ :
          ∀ (I : (Cover.index ⊤ P).R),
            (fun I => P.map I.f.op) (MulticospanIndex.fstTo (Cover.index ⊤ P) I) ≫
                MulticospanIndex.fst (Cover.index ⊤ P) I =
              (fun I => P.map I.f.op) (MulticospanIndex.sndTo (Cover.index ⊤ P) I) ≫
                MulticospanIndex.snd (Cover.index ⊤ P) I) ≫
      Multiequalizer.lift (Cover.index (Cover.pullback ⊤ f.unop) P) (multiequalizer (Cover.index ⊤ P))
          (fun I =>
            Multiequalizer.ι (Cover.index ⊤ P)
              { Y := I.Y, f := I.f ≫ f.unop, hf := (_ : (Cover.sieve (Cover.pullback ⊤ f.unop)).arrows I.f) })
          (_ :
            ∀ (I : (Cover.index ((pullback J f.unop).op.obj (op ⊤)).unop P).R),
              Multiequalizer.ι (Cover.index (op ⊤).unop P)
                    (MulticospanIndex.fstTo (Cover.index (op ⊤).unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.fst (Cover.index (op ⊤).unop P) (Cover.Relation.base I) =
                Multiequalizer.ι (Cover.index (op ⊤).unop P)
                    (MulticospanIndex.sndTo (Cover.index (op ⊤).unop P) (Cover.Relation.base I)) ≫
                  MulticospanIndex.snd (Cover.index (op ⊤).unop P) (Cover.Relation.base I)) ≫
        Multiequalizer.ι (Cover.index (Cover.pullback ⊤ f.unop) P) I

Next tactic:
simp