Equivalent formulations of the sheaf condition #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We give an equivalent formulation of the sheaf condition.
Given any indexed type ι
, we define overlap ι
,
a category with objects corresponding to
- individual open sets,
single i
, and - intersections of pairs of open sets,
pair i j
, with morphisms frompair i j
to bothsingle i
andsingle j
.
Any open cover U : ι → opens X
provides a functor diagram U : overlap ι ⥤ (opens X)ᵒᵖ
.
There is a canonical cone over this functor, cone U
, whose cone point is supr U
,
and in fact this is a limit cone.
A presheaf F : presheaf C X
is a sheaf precisely if it preserves this limit.
We express this in two equivalent ways, as
is_limit (F.map_cone (cone U))
, orpreserves_limit (diagram U) F
We show that this sheaf condition is equivalent to the opens_le_cover
sheaf condition, and
thereby also equivalent to the default sheaf condition.
An alternative formulation of the sheaf condition
(which we prove equivalent to the usual one below as
is_sheaf_iff_is_sheaf_pairwise_intersections
).
A presheaf is a sheaf if F
sends the cone (pairwise.cocone U).op
to a limit cone.
(Recall pairwise.cocone U
has cone point supr U
, mapping down to the U i
and the U i ⊓ U j
.)
Equations
An alternative formulation of the sheaf condition
(which we prove equivalent to the usual one below as
is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections
).
A presheaf is a sheaf if F
preserves the limit of pairwise.diagram U
.
(Recall pairwise.diagram U
is the diagram consisting of the pairwise intersections
U i ⊓ U j
mapping into the open sets U i
. This diagram has limit supr U
.)
Equations
Implementation detail:
the object level of pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U
Equations
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj U (category_theory.pairwise.pair i j) = {obj := U i ⊓ U j, property := _}
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj U (category_theory.pairwise.single i) = {obj := U i, property := _}
Implementation detail:
the morphism level of pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U
Equations
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map U (category_theory.pairwise.hom.right i j) = category_theory.hom_of_le _
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map U (category_theory.pairwise.hom.left i j) = category_theory.hom_of_le _
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map U (category_theory.pairwise.hom.id_pair i j) = 𝟙 (Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj U (category_theory.pairwise.pair i j))
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map U (category_theory.pairwise.hom.id_single i) = 𝟙 (Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj U (category_theory.pairwise.single i))
The category of single and double intersections of the U i
maps into the category
of open sets below some U i
.
Equations
- Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover U = {obj := Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj U, map := λ (V W : category_theory.pairwise ι) (i : V ⟶ W), Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map U i, map_id' := _, map_comp' := _}
Instances for Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover
The diagram consisting of the U i
and U i ⊓ U j
is cofinal in the diagram
of all opens contained in some U i
.
The diagram in opens X
indexed by pairwise intersections from U
is isomorphic
(in fact, equal) to the diagram factored through opens_le_cover U
.
Equations
- Top.presheaf.sheaf_condition.pairwise_diagram_iso U = {hom := {app := λ (X_1 : category_theory.pairwise ι), X_1.cases_on (λ (i : ι), 𝟙 ((category_theory.pairwise.diagram U).obj (category_theory.pairwise.single i))) (λ (i j : ι), 𝟙 ((category_theory.pairwise.diagram U).obj (category_theory.pairwise.pair i j))), naturality' := _}, inv := {app := λ (X_1 : category_theory.pairwise ι), X_1.cases_on (λ (i : ι), 𝟙 ((Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover U ⋙ category_theory.full_subcategory_inclusion (λ (V : topological_space.opens ↥X), ∃ (i : ι), V ≤ U i)).obj (category_theory.pairwise.single i))) (λ (i j : ι), 𝟙 ((Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover U ⋙ category_theory.full_subcategory_inclusion (λ (V : topological_space.opens ↥X), ∃ (i : ι), V ≤ U i)).obj (category_theory.pairwise.pair i j))), naturality' := _}, hom_inv_id' := _, inv_hom_id' := _}
The cocone pairwise.cocone U
with cocone point supr U
over pairwise.diagram U
is isomorphic
to the cocone opens_le_cover_cocone U
(with the same cocone point)
after appropriate whiskering and postcomposition.
The sheaf condition
in terms of a limit diagram over all { V : opens X // ∃ i, V ≤ U i }
is equivalent to the reformulation
in terms of a limit diagram over U i
and U i ⊓ U j
.
The sheaf condition in terms of an equalizer diagram is equivalent
to the reformulation in terms of a limit diagram over U i
and U i ⊓ U j
.
The sheaf condition in terms of an equalizer diagram is equivalent
to the reformulation in terms of the presheaf preserving the limit of the diagram
consisting of the U i
and U i ⊓ U j
.
For a sheaf F
, F(U ⊔ V)
is the pullback of F(U) ⟶ F(U ⊓ V)
and F(V) ⟶ F(U ⊓ V)
.
This is the pullback cone.
Equations
- F.inter_union_pullback_cone U V = category_theory.limits.pullback_cone.mk (F.val.map (category_theory.hom_of_le _).op) (F.val.map (category_theory.hom_of_le _).op) _
(Implementation).
Every cone over F(U) ⟶ F(U ⊓ V)
and F(V) ⟶ F(U ⊓ V)
factors through F(U ⊔ V)
.
Equations
- F.inter_union_pullback_cone_lift U V s = let ι : ulift category_theory.limits.walking_pair → topological_space.opens ↥X := λ (j : ulift category_theory.limits.walking_pair), j.down.cases_on U V in _.some.lift {X := s.X, π := {app := opposite.rec (λ (X_1 : category_theory.pairwise (ulift category_theory.limits.walking_pair)), X_1.cases_on (λ (X_1 : ulift category_theory.limits.walking_pair), X_1.cases_on (λ (X_1 : category_theory.limits.walking_pair), X_1.cases_on s.fst s.snd)) (λ (X_1_ᾰ X_1_ᾰ_1 : ulift category_theory.limits.walking_pair), X_1_ᾰ.cases_on (λ (X_1_ᾰ : category_theory.limits.walking_pair), X_1_ᾰ.cases_on (s.fst ≫ F.val.map (category_theory.hom_of_le _).op) (s.snd ≫ F.val.map (category_theory.hom_of_le _).op)))), naturality' := _}} ≫ F.val.map (category_theory.eq_to_hom _).op
For a sheaf F
, F(U ⊔ V)
is the pullback of F(U) ⟶ F(U ⊓ V)
and F(V) ⟶ F(U ⊓ V)
.
Equations
- F.is_limit_pullback_cone U V = let ι : ulift category_theory.limits.walking_pair → topological_space.opens ↥X := λ (_x : ulift category_theory.limits.walking_pair), Top.sheaf.is_limit_pullback_cone._match_1 U V _x in (F.inter_union_pullback_cone U V).is_limit_aux' (λ (s : category_theory.limits.pullback_cone (F.val.map (category_theory.hom_of_le _).op) (F.val.map (category_theory.hom_of_le _).op)), ⟨F.inter_union_pullback_cone_lift U V s, _⟩)
- Top.sheaf.is_limit_pullback_cone._match_1 U V {down := j} = j.cases_on U V
If U, V
are disjoint, then F(U ⊔ V) = F(U) × F(V)
.
Equations
- F.is_product_of_disjoint U V h = is_product_of_is_terminal_is_pullback (F.val.map (category_theory.hom_of_le _).op) (F.val.map (category_theory.hom_of_le _).op) (F.val.map (category_theory.hom_of_le _).op) (F.val.map (category_theory.hom_of_le _).op) (F.is_terminal_of_eq_empty h) (F.is_limit_pullback_cone U V)
F(U ⊔ V)
is isomorphic to the eq_locus
of the two maps F(U) × F(V) ⟶ F(U ⊓ V)
.
Equations
- F.obj_sup_iso_prod_eq_locus U V = (F.is_limit_pullback_cone U V).cone_point_unique_up_to_iso (CommRing.pullback_cone_is_limit (F.val.map (category_theory.hom_of_le _).op) (F.val.map (category_theory.hom_of_le _).op))