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 jto bothsingle iandsingle 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))