awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.CategoryTheory.Sites.CompatiblePlus
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_7 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_8 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
hP : Presheaf.IsSheaf J (J.plusObj P ⋙ F)
⊢ Eq (α := P ⋙ F ⟶ J.plusObj P ⋙ F)
    (CategoryStruct.comp (Y := J.plusObj (P ⋙ F)) (J.toPlus (P ⋙ F) : P ⋙ F ⟶ J.plusObj (P ⋙ F))
        (Iso.inv (J.plusCompIso F P) : J.plusObj (P ⋙ F) ⟶ J.plusObj P ⋙ F) :
      P ⋙ F ⟶ J.plusObj P ⋙ F)
    (whiskerRight (J.toPlus P) F : P ⋙ F ⟶ J.plusObj P ⋙ F)

Tactic:
simp
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P_1 P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
inst_9 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_10 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
refine :
  Iso (C := Functor.{v_1, v_2, u_1, u_2} D E ⥤ Functor.{v, v_2, u, u_2} Cᵒᵖ E)
    (obj (whiskeringLeft Cᵒᵖ D E) (J.plusObj P) ⋙ J.plusFunctor E)
    ((obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.plusFunctor E) ⋙ J.plusFunctor E)
⊢ Iso (C := Functor.{v_1, v_2, u_1, u_2} D E ⥤ Functor.{v, v_2, u, u_2} Cᵒᵖ E)
    (obj (whiskeringLeft Cᵒᵖ D E) (J.sheafify P)) (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.sheafification E)

Tactic:
refine J.plusFunctorWhiskerLeftIso _ ≪≫ ?_ ≪≫ associator _ _ _

Premises used: CategoryTheory.Functor.associator, CategoryTheory.GrothendieckTopology.plusFunctorWhiskerLeftIso
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P_1 P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
inst_9 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_10 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
refine :
  Iso (C := Functor.{v_1, v_2, u_1, u_2} D E ⥤ Functor.{v, v_2, u, u_2} Cᵒᵖ E)
    (obj (whiskeringLeft Cᵒᵖ D E) (J.plusObj P)) (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.plusFunctor E)
⊢ Iso (C := Functor.{v_1, v_2, u_1, u_2} D E ⥤ Functor.{v, v_2, u, u_2} Cᵒᵖ E)
    (obj (whiskeringLeft Cᵒᵖ D E) (J.plusObj P) ⋙ J.plusFunctor E)
    ((obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.plusFunctor E) ⋙ J.plusFunctor E)

Tactic:
refine isoWhiskerRight ?_ _

Premises used: CategoryTheory.Functor.isoWhiskerRight
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P_1 P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
inst_9 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_10 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
⊢ Iso (C := Functor.{v_1, v_2, u_1, u_2} D E ⥤ Functor.{v, v_2, u, u_2} Cᵒᵖ E)
    (obj (whiskeringLeft Cᵒᵖ D E) (J.plusObj P)) (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.plusFunctor E)

Tactic:
exact J.plusFunctorWhiskerLeftIso _

Premises used: CategoryTheory.GrothendieckTopology.plusFunctorWhiskerLeftIso
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_7 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
dsimp :
  Eq (α := J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (Iso.hom (J.plusCompIso F (J.plusObj P)) : J.plusObj (J.plusObj P) ⋙ F ⟶ J.plusObj (J.plusObj P ⋙ F))
        (CategoryStruct.comp (Y := J.plusObj (J.plusObj (P ⋙ F)))
            (J.plusMap (Iso.hom (J.plusCompIso F P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F)))
            (𝟙 (J.plusObj (J.plusObj (P ⋙ F))) : J.plusObj (J.plusObj (P ⋙ F)) ⟶ J.plusObj (J.plusObj (P ⋙ F))) :
          J.plusObj (J.plusObj P ⋙ F) ⟶ J.sheafify (P ⋙ F)) :
      J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (Iso.hom (J.plusCompIso F (J.plusObj P)) : J.sheafify P ⋙ F ⟶ J.plusObj (J.plusObj P ⋙ F))
        (J.plusMap (Iso.hom (J.plusCompIso F P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F))) :
      J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))
⊢ Eq (α :=
    obj (obj (whiskeringLeft Cᵒᵖ D E) (J.sheafify P)) F ⟶ obj (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.sheafification E) F)
    (NatTrans.app (Iso.hom (J.sheafificationWhiskerLeftIso P)) F :
      obj (obj (whiskeringLeft Cᵒᵖ D E) (J.sheafify P)) F ⟶ obj (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.sheafification E) F)
    (Iso.hom (J.sheafifyCompIso F P) : J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))

Tactic:
dsimp [sheafificationWhiskerLeftIso, sheafifyCompIso]

Premises used: CategoryTheory.GrothendieckTopology.sheafificationWhiskerLeftIso, CategoryTheory.GrothendieckTopology.sheafifyCompIso
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_7 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
⊢ Eq (α := J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (Iso.hom (J.plusCompIso F (J.plusObj P)) : J.plusObj (J.plusObj P) ⋙ F ⟶ J.plusObj (J.plusObj P ⋙ F))
        (CategoryStruct.comp (Y := J.plusObj (J.plusObj (P ⋙ F)))
            (J.plusMap (Iso.hom (J.plusCompIso F P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F)))
            (𝟙 (J.plusObj (J.plusObj (P ⋙ F))) : J.plusObj (J.plusObj (P ⋙ F)) ⟶ J.plusObj (J.plusObj (P ⋙ F))) :
          J.plusObj (J.plusObj P ⋙ F) ⟶ J.sheafify (P ⋙ F)) :
      J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (Iso.hom (J.plusCompIso F (J.plusObj P)) : J.sheafify P ⋙ F ⟶ J.plusObj (J.plusObj P ⋙ F))
        (J.plusMap (Iso.hom (J.plusCompIso F P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F))) :
      J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))

Tactic:
simp only [sheafify, Category.comp_id]

Premises used: CategoryTheory.GrothendieckTopology.sheafify, CategoryTheory.Category.comp_id
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_7 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
dsimp :
  Eq (α := J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (𝟙 (J.plusObj (J.plusObj (P ⋙ F))) ≫ J.plusMap (Iso.inv (J.plusCompIso F P)) :
          J.sheafify (P ⋙ F) ⟶ J.plusObj (J.plusObj P ⋙ F))
        (Iso.inv (J.plusCompIso F (J.plusObj P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj P) ⋙ F) :
      J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (J.plusMap (Iso.inv (J.plusCompIso F P)) : J.plusObj (J.plusObj (P ⋙ F)) ⟶ J.plusObj (J.plusObj P ⋙ F))
        (Iso.inv (J.plusCompIso F (J.plusObj P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.sheafify P ⋙ F) :
      J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)
⊢ Eq (α :=
    obj (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.sheafification E) F ⟶ obj (obj (whiskeringLeft Cᵒᵖ D E) (J.sheafify P)) F)
    (NatTrans.app (Iso.inv (J.sheafificationWhiskerLeftIso P)) F :
      obj (obj (whiskeringLeft Cᵒᵖ D E) P ⋙ J.sheafification E) F ⟶ obj (obj (whiskeringLeft Cᵒᵖ D E) (J.sheafify P)) F)
    (Iso.inv (J.sheafifyCompIso F P) : J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)

Tactic:
dsimp [sheafificationWhiskerLeftIso, sheafifyCompIso]

Premises used: CategoryTheory.GrothendieckTopology.sheafificationWhiskerLeftIso, CategoryTheory.GrothendieckTopology.sheafifyCompIso
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_7 : ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 :
  ∀ (F : Functor.{v_1, v_2, u_1, u_2} D E) (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D),
    PreservesLimit (W.index P).multicospan F
⊢ Eq (α := J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (𝟙 (J.plusObj (J.plusObj (P ⋙ F))) ≫ J.plusMap (Iso.inv (J.plusCompIso F P)) :
          J.sheafify (P ⋙ F) ⟶ J.plusObj (J.plusObj P ⋙ F))
        (Iso.inv (J.plusCompIso F (J.plusObj P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj P) ⋙ F) :
      J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)
    (CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
        (J.plusMap (Iso.inv (J.plusCompIso F P)) : J.plusObj (J.plusObj (P ⋙ F)) ⟶ J.plusObj (J.plusObj P ⋙ F))
        (Iso.inv (J.plusCompIso F (J.plusObj P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.sheafify P ⋙ F) :
      J.sheafify (P ⋙ F) ⟶ J.sheafify P ⋙ F)

Tactic:
simp only [sheafify, Category.id_comp]

Premises used: CategoryTheory.GrothendieckTopology.sheafify, CategoryTheory.Category.id_comp
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
refine :
  J.plusFunctor D ⋙ J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ≅
    obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E
⊢ J.sheafification D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ≅ obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E

Tactic:
refine associator _ _ _ ≪≫ ?_

Premises used: CategoryTheory.Functor.associator
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
refine :
  J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E ≅
    obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E
⊢ J.plusFunctor D ⋙ J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ≅
    obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E

Tactic:
refine isoWhiskerLeft (J.plusFunctor D) (J.plusFunctorWhiskerRightIso _) ≪≫ ?_

Premises used: CategoryTheory.GrothendieckTopology.plusFunctor, CategoryTheory.Functor.isoWhiskerLeft, CategoryTheory.GrothendieckTopology.plusFunctorWhiskerRightIso
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
refine :
  J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E ≅
    (obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E) ⋙ J.plusFunctor E
⊢ J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E ≅
    obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E

Tactic:
refine ?_ ≪≫ associator _ _ _

Premises used: CategoryTheory.Functor.associator
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
refine :
  (J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F) ⋙ J.plusFunctor E ≅
    (obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E) ⋙ J.plusFunctor E
⊢ J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E ≅
    (obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E) ⋙ J.plusFunctor E

Tactic:
refine (associator _ _ _).symm ≪≫ ?_

Premises used: CategoryTheory.Functor.associator, CategoryTheory.Iso.symm
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
⊢ (J.plusFunctor D ⋙ obj (whiskeringRight Cᵒᵖ D E) F) ⋙ J.plusFunctor E ≅
    (obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.plusFunctor E) ⋙ J.plusFunctor E

Tactic:
exact isoWhiskerRight (J.plusFunctorWhiskerRightIso _) (J.plusFunctor E)

Premises used: CategoryTheory.GrothendieckTopology.plusFunctor, CategoryTheory.GrothendieckTopology.plusFunctorWhiskerRightIso, CategoryTheory.Functor.isoWhiskerRight
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
dsimp :
  𝟙 (J.plusObj (J.plusObj P) ⋙ F) ≫
      Iso.hom (J.plusCompIso F (J.plusObj P)) ≫
        CategoryStruct.comp (Y := J.plusObj (J.plusObj (P ⋙ F)))
          (𝟙 (J.plusObj (J.plusObj P ⋙ F)) ≫ J.plusMap (Iso.hom (J.plusCompIso F P)) :
            J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F)))
          (𝟙 (J.plusObj (J.plusObj (P ⋙ F))) : J.plusObj (J.plusObj (P ⋙ F)) ⟶ J.plusObj (J.plusObj (P ⋙ F))) =
    CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
      (Iso.hom (J.plusCompIso F (J.plusObj P)) : J.sheafify P ⋙ F ⟶ J.plusObj (J.plusObj P ⋙ F))
      (J.plusMap (Iso.hom (J.plusCompIso F P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F)))
⊢ Eq (α :=
    (J.sheafification D ⋙ obj (whiskeringRight Cᵒᵖ D E) F).obj P ⟶
      (obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E).obj P)
    (NatTrans.app (Iso.hom (J.sheafificationWhiskerRightIso F)) P :
      (J.sheafification D ⋙ obj (whiskeringRight Cᵒᵖ D E) F).obj P ⟶
        (obj (whiskeringRight Cᵒᵖ D E) F ⋙ J.sheafification E).obj P)
    (Iso.hom (J.sheafifyCompIso F P) : J.sheafify P ⋙ F ⟶ J.sheafify (P ⋙ F))

Tactic:
dsimp [sheafificationWhiskerRightIso, sheafifyCompIso]

Premises used: CategoryTheory.GrothendieckTopology.sheafifyCompIso, CategoryTheory.GrothendieckTopology.sheafificationWhiskerRightIso
-- Module: Mathlib.CategoryTheory.Sites.CompatibleSheafification
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
D : Type u_1
inst_1 : Category.{v_1, u_1} D
E : Type u_2
inst_2 : Category.{v_2, u_2} E
F : Functor.{v_1, v_2, u_1, u_2} D E
inst_3 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) D
inst_4 : ∀ (J : MulticospanShape), HasLimitsOfShape (WalkingMulticospan J) E
inst_5 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ D
inst_6 : ∀ (X : C), HasColimitsOfShape (J.Cover X)ᵒᵖ E
inst_7 : ∀ (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F
inst_8 : ∀ (X : C) (W : J.Cover X) (P : Functor.{v, v_1, u, u_1} Cᵒᵖ D), PreservesLimit (W.index P).multicospan F
P : Functor.{v, v_1, u, u_1} Cᵒᵖ D
⊢ 𝟙 (J.plusObj (J.plusObj P) ⋙ F) ≫
      Iso.hom (J.plusCompIso F (J.plusObj P)) ≫
        CategoryStruct.comp (Y := J.plusObj (J.plusObj (P ⋙ F)))
          (𝟙 (J.plusObj (J.plusObj P ⋙ F)) ≫ J.plusMap (Iso.hom (J.plusCompIso F P)) :
            J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F)))
          (𝟙 (J.plusObj (J.plusObj (P ⋙ F))) : J.plusObj (J.plusObj (P ⋙ F)) ⟶ J.plusObj (J.plusObj (P ⋙ F))) =
    CategoryStruct.comp (Y := J.plusObj (J.plusObj P ⋙ F))
      (Iso.hom (J.plusCompIso F (J.plusObj P)) : J.sheafify P ⋙ F ⟶ J.plusObj (J.plusObj P ⋙ F))
      (J.plusMap (Iso.hom (J.plusCompIso F P)) : J.plusObj (J.plusObj P ⋙ F) ⟶ J.plusObj (J.plusObj (P ⋙ F)))

Tactic:
simp only [sheafify, Category.id_comp, Category.comp_id]

Premises used: CategoryTheory.GrothendieckTopology.sheafify, CategoryTheory.Category.comp_id, CategoryTheory.Category.id_comp