Documentation

Mathlib.CategoryTheory.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 #

Tags #

closed sieve, closure, Grothendieck topology

References #

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

Equations
  • J₁.close S = { arrows := fun (x : C) (f : x X) => J₁.Covers S f, downward_closed := }
Instances For
    @[simp]
    theorem CategoryTheory.GrothendieckTopology.close_apply {C : Type u} [Category.{v, u} C] (J₁ : GrothendieckTopology C) {X : C} (S : Sieve X) (x✝ : C) (f : x✝ X) :
    (J₁.close S).arrows f = J₁.Covers S f

    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
    Instances For
      theorem CategoryTheory.GrothendieckTopology.covers_iff_mem_of_isClosed {C : Type u} [Category.{v, u} C] (J₁ : GrothendieckTopology C) {X : C} {S : Sieve X} (h : J₁.IsClosed S) {Y : C} (f : Y X) :
      J₁.Covers S f S.arrows f

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

      theorem CategoryTheory.GrothendieckTopology.isClosed_pullback {C : Type u} [Category.{v, u} C] (J₁ : GrothendieckTopology C) {X Y : C} (f : Y X) (S : Sieve X) :
      J₁.IsClosed SJ₁.IsClosed (Sieve.pullback f S)

      Being J-closed is stable under pullback.

      theorem CategoryTheory.GrothendieckTopology.le_close_of_isClosed {C : Type u} [Category.{v, u} C] (J₁ : GrothendieckTopology C) {X : C} {S T : Sieve X} (h : S T) (hT : J₁.IsClosed T) :
      J₁.close S T

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

      The closure of a sieve is closed.

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

      Equations
      Instances For

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

        theorem CategoryTheory.GrothendieckTopology.pullback_close {C : Type u} [Category.{v, u} C] (J₁ : GrothendieckTopology C) {X Y : C} (f : Y X) (S : Sieve X) :
        J₁.close (Sieve.pullback f S) = Sieve.pullback f (J₁.close S)

        Closing under J is stable under pullback.

        @[simp]
        theorem CategoryTheory.GrothendieckTopology.close_close {C : Type u} [Category.{v, u} C] (J₁ : GrothendieckTopology C) {X : C} (S : 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.

        The presheaf sending each object to the type of sieves on it. This will turn out to be a subobject classifier for the category of presheaves.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.Functor.sieves_map (C : Type u) [Category.{v, u} C] {X✝ Y✝ : Cᵒᵖ} (f : X✝ Y✝) (S : Sieve (Opposite.unop X✝)) :

          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
          Instances For

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

            A sieve S is covering for J if and only if the subobject classifier is a sheaf for S.

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

            theorem CategoryTheory.topology_eq_iff_same_sheaves {C : Type u} [Category.{v, u} C] {J₁ J₂ : GrothendieckTopology C} :
            J₁ = J₂ ∀ (P : Functor Cᵒᵖ (Type (max v u))), Presieve.IsSheaf J₁ P Presieve.IsSheaf J₂ P

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

            def CategoryTheory.topologyOfClosureOperator {C : Type u} [Category.{v, u} C] (c : (X : C) → ClosureOperator (Sieve X)) (hc : ∀ ⦃X Y : C⦄ (f : Y X) (S : Sieve X), (c Y) (Sieve.pullback f S) = Sieve.pullback f ((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
            Instances For
              @[simp]
              theorem CategoryTheory.topologyOfClosureOperator_sieves {C : Type u} [Category.{v, u} C] (c : (X : C) → ClosureOperator (Sieve X)) (hc : ∀ ⦃X Y : C⦄ (f : Y X) (S : Sieve X), (c Y) (Sieve.pullback f S) = Sieve.pullback f ((c X) S)) (X : C) :

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

              theorem CategoryTheory.topologyOfClosureOperator_close {C : Type u} [Category.{v, u} C] (c : (X : C) → ClosureOperator (Sieve X)) (pb : ∀ ⦃X Y : C⦄ (f : Y X) (S : Sieve X), (c Y) (Sieve.pullback f S) = Sieve.pullback f ((c X) S)) (X : C) (S : Sieve X) :