File: Mathlib/CategoryTheory/Sites/CompatibleSheafification.lean

full_name: CategoryTheory.GrothendieckTopology.sheafifyCompIso
code: /-- The isomorphism between the sheafification of `P` composed with `F` and
the sheafification of `P ⋙ F`.

Use the lemmas `whisker_right_to_sheafify_sheafify_comp_iso_hom`,
`to_sheafify_comp_sheafify_comp_iso_inv` and `sheafify_comp_iso_inv_eq_sheafify_lift` to reduce
the components of this isomorphisms to a state that can be handled using the universal property
of sheafification. -/
noncomputable def sheafifyCompIso : J.sheafify P ⋙ F ≅ J.sheafify (P ⋙ F) 
goal: (J.sheafify P).comp F ≅ J.sheafify (P.comp F)

full_name: CategoryTheory.GrothendieckTopology.sheafificationWhiskerLeftIso
code: /-- The isomorphism between the sheafification of `P` composed with `F` and
the sheafification of `P ⋙ F`, functorially in `F`. -/
noncomputable def sheafificationWhiskerLeftIso (P : Cᵒᵖ ⥤ D)
    [∀ (F : D ⥤ E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F]
    [∀ (F : D ⥤ E) (X : C) (W : J.Cover X) (P : Cᵒᵖ ⥤ D),
        PreservesLimit (W.index P).multicospan F] :
    (whiskeringLeft _ _ E).obj (J.sheafify P) ≅
    (whiskeringLeft _ _ _).obj P ⋙ J.sheafification E 
goal: (CategoryTheory.whiskeringLeft Cᵒᵖ D E).obj (J.sheafify P) ≅
  ((CategoryTheory.whiskeringLeft Cᵒᵖ D E).obj P).comp (J.sheafification E)

full_name: CategoryTheory.GrothendieckTopology.sheafificationWhiskerLeftIso_hom_app
code: @[simp]
theorem sheafificationWhiskerLeftIso_hom_app (P : Cᵒᵖ ⥤ D) (F : D ⥤ E)
    [∀ (F : D ⥤ E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F]
    [∀ (F : D ⥤ E) (X : C) (W : J.Cover X) (P : Cᵒᵖ ⥤ D),
        PreservesLimit (W.index P).multicospan F] :
    (sheafificationWhiskerLeftIso J P).hom.app F = (J.sheafifyCompIso F P).hom 
goal: (J.sheafificationWhiskerLeftIso P).hom.app F = (J.sheafifyCompIso F P).hom

full_name: CategoryTheory.GrothendieckTopology.sheafificationWhiskerLeftIso_inv_app
code: @[simp]
theorem sheafificationWhiskerLeftIso_inv_app (P : Cᵒᵖ ⥤ D) (F : D ⥤ E)
    [∀ (F : D ⥤ E) (X : C), PreservesColimitsOfShape (J.Cover X)ᵒᵖ F]
    [∀ (F : D ⥤ E) (X : C) (W : J.Cover X) (P : Cᵒᵖ ⥤ D),
        PreservesLimit (W.index P).multicospan F] :
    (sheafificationWhiskerLeftIso J P).inv.app F = (J.sheafifyCompIso F P).inv 
goal: (J.sheafificationWhiskerLeftIso P).inv.app F = (J.sheafifyCompIso F P).inv

full_name: CategoryTheory.GrothendieckTopology.sheafificationWhiskerRightIso
code: /-- The isomorphism between the sheafification of `P` composed with `F` and
the sheafification of `P ⋙ F`, functorially in `P`. -/
noncomputable def sheafificationWhiskerRightIso :
    J.sheafification D ⋙ (whiskeringRight _ _ _).obj F ≅
      (whiskeringRight _ _ _).obj F ⋙ J.sheafification E 
goal: (J.sheafification D).comp ((CategoryTheory.whiskeringRight Cᵒᵖ D E).obj F) ≅
  ((CategoryTheory.whiskeringRight Cᵒᵖ D E).obj F).comp (J.sheafification E)

full_name: CategoryTheory.GrothendieckTopology.sheafificationWhiskerRightIso_hom_app
code: @[simp]
theorem sheafificationWhiskerRightIso_hom_app :
    (J.sheafificationWhiskerRightIso F).hom.app P = (J.sheafifyCompIso F P).hom 
goal: (J.sheafificationWhiskerRightIso F).hom.app P = (J.sheafifyCompIso F P).hom

full_name: CategoryTheory.GrothendieckTopology.sheafificationWhiskerRightIso_inv_app
code: @[simp]
theorem sheafificationWhiskerRightIso_inv_app :
    (J.sheafificationWhiskerRightIso F).inv.app P = (J.sheafifyCompIso F P).inv 
goal: (J.sheafificationWhiskerRightIso F).inv.app P = (J.sheafifyCompIso F P).inv

full_name: CategoryTheory.GrothendieckTopology.whiskerRight_toSheafify_sheafifyCompIso_hom
code: @[simp, reassoc]
theorem whiskerRight_toSheafify_sheafifyCompIso_hom :
    whiskerRight (J.toSheafify _) _ ≫ (J.sheafifyCompIso F P).hom = J.toSheafify _ 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.whiskerRight (J.toSheafify P) F) (J.sheafifyCompIso F P).hom =
  J.toSheafify (P.comp F)

full_name: CategoryTheory.GrothendieckTopology.toSheafify_comp_sheafifyCompIso_inv
code: @[simp, reassoc]
theorem toSheafify_comp_sheafifyCompIso_inv :
    J.toSheafify _ ≫ (J.sheafifyCompIso F P).inv = whiskerRight (J.toSheafify _) _ 
goal: CategoryTheory.CategoryStruct.comp (J.toSheafify (P.comp F)) (J.sheafifyCompIso F P).inv =
  CategoryTheory.whiskerRight (J.toSheafify P) F

full_name: CategoryTheory.GrothendieckTopology.sheafifyCompIso_inv_eq_sheafifyLift
code: @[simp]
theorem sheafifyCompIso_inv_eq_sheafifyLift :
    (J.sheafifyCompIso F P).inv =
      J.sheafifyLift (whiskerRight (J.toSheafify P) F)
        (HasSheafCompose.isSheaf _ ((J.sheafify_isSheaf _))) 
goal: (J.sheafifyCompIso F P).inv = J.sheafifyLift (CategoryTheory.whiskerRight (J.toSheafify P) F) ⋯