# mathlibdocumentation

topology.sheaves.sheaf_condition.unique_gluing

# The sheaf condition in terms of unique gluings #

We provide an alternative formulation of the sheaf condition in terms of unique gluings.

We work with sheaves valued in a concrete category C admitting all limits, whose forgetful functor C ⥤ Type preserves limits and reflects isomorphisms. The usual categories of algebraic structures, such as Mon, AddCommGroup, Ring, CommRing etc. are all examples of this kind of category.

A presheaf F : presheaf C X satisfies the sheaf condition if and only if, for every compatible family of sections sf : Π i : ι, F.obj (op (U i)), there exists a unique gluing s : F.obj (op (supr U)).

Here, the family sf is called compatible, if for all i j : ι, the restrictions of sf i and sf j to U i ⊓ U j agree. A section s : F.obj (op (supr U)) is a gluing for the family sf, if s restricts to sf i on U i for all i : ι

We show that the sheaf condition in terms of unique gluings is equivalent to the definition in terms of equalizers. Our approach is as follows: First, we show them to be equivalent for Type-valued presheaves. Then we use that composing a presheaf with a limit-preserving and isomorphism-reflecting functor leaves the sheaf condition invariant, as shown in topology/sheaves/forget.lean.

def Top.presheaf.is_compatible {C : Type u} {X : Top} (F : X) {ι : Type v} (U : ι → ) (sf : Π (i : ι), (F.obj (opposite.op (U i)))) :
Prop

A family of sections sf is compatible, if the restrictions of sf i and sf j to U i ⊓ U j agree, for all i and j

Equations
def Top.presheaf.is_gluing {C : Type u} {X : Top} (F : X) {ι : Type v} (U : ι → ) (sf : Π (i : ι), (F.obj (opposite.op (U i)))) (s : (F.obj (opposite.op (supr U)))) :
Prop

A section s is a gluing for a family of sections sf if it restricts to sf i on U i, for all i

Equations
def Top.presheaf.is_sheaf_unique_gluing {C : Type u} {X : Top} (F : X) :
Prop

The sheaf condition in terms of unique gluings. A presheaf F : presheaf C X satisfies this sheaf condition if and only if, for every compatible family of sections sf : Π i : ι, F.obj (op (U i)), there exists a unique gluing s : F.obj (op (supr U)).

We prove this to be equivalent to the usual one below in is_sheaf_iff_is_sheaf_unique_gluing

Equations
def Top.presheaf.pi_opens_iso_sections_family {X : Top} (F : Top.presheaf (Type v) X) {ι : Type v} (U : ι → ) :
Π (i : ι), F.obj (opposite.op (U i))

For presheaves of types, terms of pi_opens F U are just families of sections.

Equations
theorem Top.presheaf.compatible_iff_left_res_eq_right_res {X : Top} (F : Top.presheaf (Type v) X) {ι : Type v} (U : ι → )  :

Under the isomorphism pi_opens_iso_sections_family, compatibility of sections is the same as being equalized by the arrows left_res and right_res of the equalizer diagram.

@[simp]
theorem Top.presheaf.is_gluing_iff_eq_res {X : Top} (F : Top.presheaf (Type v) X) {ι : Type v} (U : ι → ) (s : F.obj (opposite.op (supr U))) :
F.is_gluing U .hom sf) s

Under the isomorphism pi_opens_iso_sections_family, being a gluing of a family of sections sf is the same as lying in the preimage of res (the leftmost arrow of the equalizer diagram).

The "equalizer" sheaf condition can be obtained from the sheaf condition in terms of unique gluings.

The sheaf condition in terms of unique gluings can be obtained from the usual "equalizer" sheaf condition.

For type-valued presheaves, the sheaf condition in terms of unique gluings is equivalent to the usual sheaf condition in terms of equalizer diagrams.

For presheaves valued in a concrete category, whose forgetful functor reflects isomorphisms and preserves limits, the sheaf condition in terms of unique gluings is equivalent to the usual one in terms of equalizer diagrams.

theorem Top.sheaf.exists_unique_gluing {C : Type u} {X : Top} (F : X) {ι : Type v} (U : ι → ) (sf : Π (i : ι), (F.val.obj (opposite.op (U i)))) (h : F.val.is_compatible U sf) :
∃! (s : (F.val.obj (opposite.op (supr U)))), F.val.is_gluing U sf s

A more convenient way of obtaining a unique gluing of sections for a sheaf.

theorem Top.sheaf.exists_unique_gluing' {C : Type u} {X : Top} (F : X) {ι : Type v} (U : ι → ) (V : topological_space.opens X) (iUV : Π (i : ι), U i V) (hcover : V supr U) (sf : Π (i : ι), (F.val.obj (opposite.op (U i)))) (h : F.val.is_compatible U sf) :
∃! (s : (F.val.obj (opposite.op V))), ∀ (i : ι), (F.val.map (iUV i).op) s = sf i

In this version of the lemma, the inclusion homs iUV can be specified directly by the user, which can be more convenient in practice.

@[ext]
theorem Top.sheaf.eq_of_locally_eq {C : Type u} {X : Top} (F : X) {ι : Type v} (U : ι → ) (s t : (F.val.obj (opposite.op (supr U)))) (h : ∀ (i : ι), (F.val.map s = (F.val.map t) :
s = t
theorem Top.sheaf.eq_of_locally_eq' {C : Type u} {X : Top} (F : X) {ι : Type v} (U : ι → ) (V : topological_space.opens X) (iUV : Π (i : ι), U i V) (hcover : V supr U) (s t : (F.val.obj (opposite.op V))) (h : ∀ (i : ι), (F.val.map (iUV i).op) s = (F.val.map (iUV i).op) t) :
s = t

In this version of the lemma, the inclusion homs iUV can be specified directly by the user, which can be more convenient in practice.