Subsheaf of types #
We define the sub(pre)sheaf of a type valued presheaf.
Main results #
CategoryTheory.Subpresheaf
: A subpresheaf of a presheaf of types.CategoryTheory.Subpresheaf.sheafify
: The sheafification of a subpresheaf as a subpresheaf. Note that this is a sheaf only when the whole sheaf is.CategoryTheory.Subpresheaf.sheafify_isSheaf
: The sheafification is a sheafCategoryTheory.Subpresheaf.sheafifyLift
: The descent of a map into a sheaf to the sheafification.CategoryTheory.GrothendieckTopology.imageSheaf
: The image sheaf of a morphism.CategoryTheory.GrothendieckTopology.imageFactorization
: The image sheaf as aLimits.imageFactorization
.
def
CategoryTheory.Subpresheaf.sheafify
{C : Type u}
[Category.{v, u} C]
(J : GrothendieckTopology C)
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
:
The sheafification of a subpresheaf as a subpresheaf. Note that this is a sheaf only when the whole presheaf is a sheaf.
Equations
- CategoryTheory.Subpresheaf.sheafify J G = { obj := fun (U : Cᵒᵖ) => {s : F.obj U | G.sieveOfSection s ∈ J (Opposite.unop U)}, map := ⋯ }
Instances For
theorem
CategoryTheory.Subpresheaf.le_sheafify
{C : Type u}
[Category.{v, u} C]
(J : GrothendieckTopology C)
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
:
theorem
CategoryTheory.Subpresheaf.eq_sheafify
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(h : Presieve.IsSheaf J F)
(hG : Presieve.IsSheaf J G.toPresheaf)
:
theorem
CategoryTheory.Subpresheaf.sheafify_isSheaf
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(hF : Presieve.IsSheaf J F)
:
Presieve.IsSheaf J (sheafify J G).toPresheaf
theorem
CategoryTheory.Subpresheaf.eq_sheafify_iff
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(h : Presieve.IsSheaf J F)
:
G = sheafify J G ↔ Presieve.IsSheaf J G.toPresheaf
theorem
CategoryTheory.Subpresheaf.isSheaf_iff
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(h : Presieve.IsSheaf J F)
:
Presieve.IsSheaf J G.toPresheaf ↔ ∀ (U : Cᵒᵖ) (s : F.obj U), G.sieveOfSection s ∈ J (Opposite.unop U) → s ∈ G.obj U
theorem
CategoryTheory.Subpresheaf.sheafify_sheafify
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(h : Presieve.IsSheaf J F)
:
noncomputable def
CategoryTheory.Subpresheaf.sheafifyLift
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(f : G.toPresheaf ⟶ F')
(h : Presieve.IsSheaf J F')
:
The lift of a presheaf morphism onto the sheafification subpresheaf.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
CategoryTheory.Subpresheaf.to_sheafifyLift
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(f : G.toPresheaf ⟶ F')
(h : Presieve.IsSheaf J F')
:
CategoryStruct.comp (homOfLe ⋯) (G.sheafifyLift f h) = f
theorem
CategoryTheory.Subpresheaf.to_sheafify_lift_unique
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Functor Cᵒᵖ (Type w)}
(G : Subpresheaf F)
(h : Presieve.IsSheaf J F')
(l₁ l₂ : (sheafify J G).toPresheaf ⟶ F')
(e : CategoryStruct.comp (homOfLe ⋯) l₁ = CategoryStruct.comp (homOfLe ⋯) l₂)
:
l₁ = l₂
theorem
CategoryTheory.Subpresheaf.sheafify_le
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F : Functor Cᵒᵖ (Type w)}
(G G' : Subpresheaf F)
(h : G ≤ G')
(hF : Presieve.IsSheaf J F)
(hG' : Presieve.IsSheaf J G'.toPresheaf)
:
def
CategoryTheory.toImagePresheafSheafify
{C : Type u}
[Category.{v, u} C]
(J : GrothendieckTopology C)
{F F' : Functor Cᵒᵖ (Type w)}
(f : F' ⟶ F)
:
F' ⟶ (Subpresheaf.sheafify J (imagePresheaf f)).toPresheaf
A morphism factors through the sheafification of the image presheaf.
Equations
Instances For
@[simp]
theorem
CategoryTheory.toImagePresheafSheafify_app_coe
{C : Type u}
[Category.{v, u} C]
(J : GrothendieckTopology C)
{F F' : Functor Cᵒᵖ (Type w)}
(f : F' ⟶ F)
(X : Cᵒᵖ)
(a✝ : F'.obj X)
:
↑((toImagePresheafSheafify J f).app X a✝) = f.app X a✝
def
CategoryTheory.imageSheaf
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
The image sheaf of a morphism between sheaves, defined to be the sheafification of
image_presheaf
.
Equations
- CategoryTheory.imageSheaf f = { val := (CategoryTheory.Subpresheaf.sheafify J (CategoryTheory.imagePresheaf f.val)).toPresheaf, cond := ⋯ }
Instances For
@[simp]
theorem
CategoryTheory.imageSheaf_val
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
(imageSheaf f).val = (Subpresheaf.sheafify J (imagePresheaf f.val)).toPresheaf
def
CategoryTheory.toImageSheaf
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
F ⟶ imageSheaf f
A morphism factors through the image sheaf.
Equations
- CategoryTheory.toImageSheaf f = { val := CategoryTheory.toImagePresheafSheafify J f.val }
Instances For
@[simp]
theorem
CategoryTheory.toImageSheaf_val
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
(toImageSheaf f).val = toImagePresheafSheafify J f.val
def
CategoryTheory.imageSheafι
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
imageSheaf f ⟶ F'
The inclusion of the image sheaf to the target.
Equations
- CategoryTheory.imageSheafι f = { val := (CategoryTheory.Subpresheaf.sheafify J (CategoryTheory.imagePresheaf f.val)).ι }
Instances For
@[simp]
theorem
CategoryTheory.imageSheafι_val
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
(imageSheafι f).val = (Subpresheaf.sheafify J (imagePresheaf f.val)).ι
@[simp]
theorem
CategoryTheory.toImageSheaf_ι
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
CategoryStruct.comp (toImageSheaf f) (imageSheafι f) = f
@[simp]
theorem
CategoryTheory.toImageSheaf_ι_assoc
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
{Z : Sheaf J (Type w)}
(h : F' ⟶ Z)
:
CategoryStruct.comp (toImageSheaf f) (CategoryStruct.comp (imageSheafι f) h) = CategoryStruct.comp f h
instance
CategoryTheory.instMonoSheafTypeImageSheafι
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
Mono (imageSheafι f)
instance
CategoryTheory.instEpiSheafTypeToImageSheaf
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
Epi (toImageSheaf f)
def
CategoryTheory.imageMonoFactorization
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type w)}
(f : F ⟶ F')
:
The mono factorization given by image_sheaf
for a morphism.
Equations
Instances For
noncomputable def
CategoryTheory.imageFactorization
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
{F F' : Sheaf J (Type (max v u))}
(f : F ⟶ F')
:
The mono factorization given by image_sheaf
for a morphism is an image.
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
CategoryTheory.instHasImagesSheafType
{C : Type u}
[Category.{v, u} C]
{J : GrothendieckTopology C}
:
Limits.HasImages (Sheaf J (Type (max v u)))