# mathlibdocumentation

category_theory.sites.closed

# Closed sieves #

A natural closure operator on sieves is a closure operator on sieve X for each X which commutes with pullback. We show that a Grothendieck topology J induces a natural closure operator, and define what the closed sieves are. The collection of J-closed sieves forms a presheaf which is a sheaf for J, and further this presheaf can be used to determine the Grothendieck topology from the sheaf predicate. Finally we show that a natural closure operator on sieves induces a Grothendieck topology, and hence that natural closure operators are in bijection with Grothendieck topologies.

## Main definitions #

• category_theory.grothendieck_topology.close: Sends a sieve S on X to the set of arrows which it covers. This has all the usual properties of a closure operator, as well as commuting with pullback.
• category_theory.grothendieck_topology.closure_operator: The bundled closure_operator given by category_theory.grothendieck_topology.close.
• category_theory.grothendieck_topology.closed: A sieve S on X is closed for the topology J if it contains every arrow it covers.
• category_theory.functor.closed_sieves: The presheaf sending X to the collection of J-closed sieves on X. This is additionally shown to be a sheaf for J, and if this is a sheaf for a different topology J', then J' ≤ J.
• category_theory.grothendieck_topology.topology_of_closure_operator: A closure operator on the set of sieves on every object which commutes with pullback additionally induces a Grothendieck topology, giving a bijection with category_theory.grothendieck_topology.closure_operator.

## Tags #

closed sieve, closure, Grothendieck topology

## References #

The J-closure of a sieve is the collection of arrows which it covers.

Equations
@[simp]
theorem category_theory.grothendieck_topology.close_apply {C : Type u} {X : C} (S : category_theory.sieve X) (Y : C) (f : Y X) :
(J₁.close S) f = J₁.covers S f
theorem category_theory.grothendieck_topology.le_close {C : Type u} {X : C} (S : category_theory.sieve X) :
S J₁.close S

Any sieve is smaller than its closure.

A sieve is closed for the Grothendieck topology if it contains every arrow it covers. In the case of the usual topology on a topological space, this means that the open cover contains every open set which it covers.

Note this has no relation to a closed subset of a topological space.

Equations
theorem category_theory.grothendieck_topology.covers_iff_mem_of_closed {C : Type u} {X : C} {S : category_theory.sieve X} (h : J₁.is_closed S) {Y : C} (f : Y X) :
J₁.covers S f S f

If S is J₁-closed, then S covers exactly the arrows it contains.

theorem category_theory.grothendieck_topology.is_closed_pullback {C : Type u} {X Y : C} (f : Y X) (S : category_theory.sieve X) :
J₁.is_closed S

Being J-closed is stable under pullback.

theorem category_theory.grothendieck_topology.le_close_of_is_closed {C : Type u} {X : C} {S T : category_theory.sieve X} (h : S T) (hT : J₁.is_closed T) :
J₁.close S T

The closure of a sieve S is the largest closed sieve which contains S (justifying the name "closure").

theorem category_theory.grothendieck_topology.close_is_closed {C : Type u} {X : C} (S : category_theory.sieve X) :
J₁.is_closed (J₁.close S)

The closure of a sieve is closed.

The sieve S is closed iff its closure is equal to itself.

theorem category_theory.grothendieck_topology.pullback_close {C : Type u} {X Y : C} (f : Y X) (S : category_theory.sieve X) :
J₁.close = (J₁.close S)

Closing under J is stable under pullback.

@[simp]
theorem category_theory.grothendieck_topology.close_close {C : Type u} {X : C} (S : category_theory.sieve X) :
J₁.close (J₁.close S) = J₁.close S

The sieve S is in the topology iff its closure is the maximal sieve. This shows that the closure operator determines the topology.

A Grothendieck topology induces a natural family of closure operators on sieves.

Equations
@[simp]
theorem category_theory.grothendieck_topology.closure_operator_apply_apply {C : Type u} (X : C) (S : category_theory.sieve X) (Y : C) (f : Y X) :
((J₁.closure_operator X) S) f = J₁.covers S f
@[simp]
theorem category_theory.functor.closed_sieves_obj {C : Type u} (X : Cᵒᵖ) :
= {S // J₁.is_closed S}
@[simp]
theorem category_theory.functor.closed_sieves_map_coe {C : Type u} (X Y : Cᵒᵖ) (f : X Y) (S : {S // J₁.is_closed S}) :
def category_theory.functor.closed_sieves {C : Type u}  :
Cᵒᵖ Type (max v u)

The presheaf sending each object to the set of J-closed sieves on it. This presheaf is a J-sheaf (and will turn out to be a subobject classifier for the category of J-sheaves).

Equations
theorem category_theory.classifier_is_sheaf {C : Type u}  :

The presheaf of J-closed sieves is a J-sheaf. The proof of this is adapted from [MM92], Chatper III, Section 7, Lemma 1.

If presheaf of J₁-closed sieves is a J₂-sheaf then J₁ ≤ J₂. Note the converse is true by classifier_is_sheaf and is_sheaf_of_le.

theorem category_theory.topology_eq_iff_same_sheaves {C : Type u} {J₁ J₂ : category_theory.grothendieck_topology C} :
J₁ = J₂ ∀ (P : Cᵒᵖ Type (max v u)),

If being a sheaf for J₁ is equivalent to being a sheaf for J₂, then J₁ = J₂.

@[simp]
theorem category_theory.topology_of_closure_operator_sieves {C : Type u} (c : Π (X : C), ) (hc : ∀ ⦃X Y : C⦄ (f : Y X) (S : , (c Y) = ((c X) S)) (X : C) :
= {S : | (c X) S = }
def category_theory.topology_of_closure_operator {C : Type u} (c : Π (X : C), ) (hc : ∀ ⦃X Y : C⦄ (f : Y X) (S : , (c Y) = ((c X) S)) :

A closure (increasing, inflationary and idempotent) operation on sieves that commutes with pullback induces a Grothendieck topology. In fact, such operations are in bijection with Grothendieck topologies.

Equations

The topology given by the closure operator J.close on a Grothendieck topology is the same as J.

theorem category_theory.topology_of_closure_operator_close {C : Type u} (c : Π (X : C), ) (pb : ∀ ⦃X Y : C⦄ (f : Y X) (S : , (c Y) = ((c X) S)) (X : C) (S : category_theory.sieve X) :
= (c X) S