Theorem: CategoryTheory.GrothendieckTopology.Plus.toPlus_eq_mk
File: Mathlib/CategoryTheory/Sites/Sheafification.lean

tactic: dsimp [mk, toPlus]
state_before: C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
⊢ (forget D).map ((toPlus J P).app X.op) x = mk (Meq.mk ⊤ x)

tactic: delta Cover.toMultiequalizer
state_before: C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
⊢ (forget D).map (Cover.toMultiequalizer ⊤ P ≫ colimit.ι (diagram J P X) ⊤.op) x =
    (forget D).map (colimit.ι (diagram J P X) ⊤.op) (↑(Meq.equiv P ⊤).symm (Meq.mk ⊤ x))

tactic: simp only [comp_apply]
state_before: C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
⊢ (forget D).map
      (Multiequalizer.lift (Cover.index ⊤ P) (P.obj X.op) (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) ≫
        colimit.ι (diagram J P X) ⊤.op)
      x =
    (forget D).map (colimit.ι (diagram J P X) ⊤.op) (↑(Meq.equiv P ⊤).symm (Meq.mk ⊤ x))

tactic: apply congr_arg
state_before: C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
⊢ (forget D).map (colimit.ι (diagram J P X) ⊤.op)
      ((forget D).map
        (Multiequalizer.lift (Cover.index ⊤ P) (P.obj X.op) (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))
        x) =
    (forget D).map (colimit.ι (diagram J P X) ⊤.op) (↑(Meq.equiv P ⊤).symm (Meq.mk ⊤ x))

tactic: apply (Meq.equiv P ⊤).injective
state_before: case h
C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
⊢ (forget D).map
      (Multiequalizer.lift (Cover.index ⊤ P) (P.obj X.op) (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))
      x =
    ↑(Meq.equiv P ⊤).symm (Meq.mk ⊤ x)

tactic: ext i
state_before: case h.a
C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
⊢ ↑(Meq.equiv P ⊤)
      ((forget D).map
        (Multiequalizer.lift (Cover.index ⊤ P) (P.obj X.op) (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))
        x) =
    ↑(Meq.equiv P ⊤) (↑(Meq.equiv P ⊤).symm (Meq.mk ⊤ x))

tactic: simp
state_before: case h.a.h
C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
i : Cover.Arrow ⊤
⊢ ↑(↑(Meq.equiv P ⊤)
          ((forget D).map
            (Multiequalizer.lift (Cover.index ⊤ P) (P.obj X.op) (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))
            x))
      i =
    ↑(↑(Meq.equiv P ⊤) (↑(Meq.equiv P ⊤).symm (Meq.mk ⊤ x))) i

tactic: rfl
state_before: case h.a.h
C : Type u
inst✝⁵ : Category C
J : GrothendieckTopology C
D : Type w
inst✝⁴ : Category D
inst✝³ : ConcreteCategory D
inst✝² : PreservesLimits (forget D)
inst✝¹ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : Cover J X), HasMultiequalizer (Cover.index S P)
X : C
P : Cᵒᵖ ⥤ D
x : (forget D).obj (P.obj X.op)
i : Cover.Arrow ⊤
⊢ (forget D).map (P.map i.f.op) x = ↑(Meq.mk ⊤ x) i