Documentation

Mathlib.CategoryTheory.Sites.Canonical

The canonical topology on a category #

We define the finest (largest) Grothendieck topology for which a given presheaf P is a sheaf. This is well defined since if P is a sheaf for a topology J, then it is a sheaf for any coarser (smaller) topology. Nonetheless we define the topology explicitly by specifying its sieves: A sieve S on X is covering for finestTopologySingle P iff for any f : Y โŸถ X, P satisfies the sheaf axiom for S.pullback f. Showing that this is a genuine Grothendieck topology (namely that it satisfies the transitivity axiom) forms the bulk of this file.

This generalises to a set of presheaves, giving the topology finestTopology Ps which is the finest topology for which every presheaf in Ps is a sheaf. Using Ps as the set of representable presheaves defines the canonicalTopology: the finest topology for which every representable is a sheaf.

A Grothendieck topology is called Subcanonical if it is smaller than the canonical topology, equivalently it is subcanonical iff every representable presheaf is a sheaf.

References #

@[deprecated CategoryTheory.Presieve.isSheafFor_bind (since := "2026-02-06")]
theorem CategoryTheory.Sheaf.isSheafFor_bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (P : Functor Cแต’แต– (Type u_1)) (U : Sieve X) (B : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ U.arrows f โ†’ Sieve Y) (hU : Presieve.IsSheafFor P U.arrows) (hB : โˆ€ โฆƒY : Cโฆ„ โฆƒf : Y โŸถ Xโฆ„ (hf : U.arrows f), Presieve.IsSheafFor P (B hf).arrows) (hB' : โˆ€ โฆƒY : Cโฆ„ โฆƒf : Y โŸถ Xโฆ„ (h : U.arrows f) โฆƒZ : Cโฆ„ (g : Z โŸถ Y), Presieve.IsSeparatedFor P (Sieve.pullback g (B h)).arrows) :

Alias of CategoryTheory.Presieve.isSheafFor_bind.

@[deprecated CategoryTheory.Presieve.isSheafFor_trans (since := "2026-02-06")]
theorem CategoryTheory.Sheaf.isSheafFor_trans {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (P : Functor Cแต’แต– (Type u_1)) (R S : Sieve X) (hR : Presieve.IsSheafFor P R.arrows) (hR' : โˆ€ โฆƒY : Cโฆ„ โฆƒf : Y โŸถ Xโฆ„, S.arrows f โ†’ Presieve.IsSeparatedFor P (Sieve.pullback f R).arrows) (hS : โˆ€ โฆƒY : Cโฆ„ โฆƒf : Y โŸถ Xโฆ„, R.arrows f โ†’ Presieve.IsSheafFor P (Sieve.pullback f S).arrows) :

Alias of CategoryTheory.Presieve.isSheafFor_trans.

Construct the finest (largest) Grothendieck topology for which the given presheaf is a sheaf.

Instances For

    Construct the finest (largest) Grothendieck topology for which all the given presheaves are sheaves.

    Instances For

      Check that if P โˆˆ Ps, then P is indeed a sheaf for the finest topology on Ps.

      Check that if each P โˆˆ Ps is a sheaf for J, then J is a subtopology of finestTopology Ps.

      The canonicalTopology on a category is the finest (largest) topology for which every representable presheaf is a sheaf.

      Instances For

        yoneda.obj X is a sheaf for the canonical topology.

        A representable functor is a sheaf for the canonical topology.

        A subcanonical topology is a topology which is smaller than the canonical topology. Equivalently, a topology is subcanonical iff every representable is a sheaf.

        Instances

          If every functor yoneda.obj X is a J-sheaf, then J is subcanonical.

          If J is subcanonical, we obtain a "Yoneda" functor from the defining site into the sheaf category.

          Instances For

            Variant of the Yoneda embedding which allows a raise in the universe level for the category of types.

            Instances For
              @[simp]
              theorem CategoryTheory.GrothendieckTopology.uliftYoneda_map_hom_app_down {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) [J.Subcanonical] {Xโœ Yโœ : C} (f : Xโœ โŸถ Yโœ) (X : Cแต’แต–) (aโœ : uliftFunctor.{w, v}.obj (((sheafToPresheaf J (Type v)).obj (J.yoneda.obj Xโœ)).obj X)) :
              (((uliftYoneda.{w, v, u} J).map f).hom.app X aโœ).down = CategoryStruct.comp aโœ.down f
              @[simp]
              theorem CategoryTheory.GrothendieckTopology.uliftYoneda_obj_obj_map_down {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) [J.Subcanonical] (X : C) {Xโœ Yโœ : Cแต’แต–} (f : Xโœ โŸถ Yโœ) (aโœ : uliftFunctor.{w, v}.obj (((sheafToPresheaf J (Type v)).obj (J.yoneda.obj X)).obj Xโœ)) :
              (((uliftYoneda.{w, v, u} J).obj X).obj.map f aโœ).down = CategoryStruct.comp f.unop aโœ.down
              @[deprecated CategoryTheory.GrothendieckTopology.uliftYoneda (since := "2025-11-10")]

              Alias of CategoryTheory.GrothendieckTopology.uliftYoneda.


              Variant of the Yoneda embedding which allows a raise in the universe level for the category of types.

              Instances For

                If C is a category with [Category.{max w v} C], this is the isomorphism uliftYoneda.{w} (C := C) โ‰… yoneda.

                Instances For
                  @[simp]
                  theorem CategoryTheory.GrothendieckTopology.uliftYonedaIsoYoneda_inv_app_hom_app_down {C : Type u} [Category.{max w v, u} C] (J : GrothendieckTopology C) [J.Subcanonical] (X : C) (Xโœ : Cแต’แต–) (aโœ : ((sheafToPresheaf J (Type (max v w))).obj (J.yoneda.obj X)).obj Xโœ) :
                  ((J.uliftYonedaIsoYoneda.inv.app X).hom.app Xโœ aโœ).down = aโœ

                  The yoneda embedding into the presheaf category factors through the one to the sheaf category.

                  Instances For

                    The yoneda functor into the sheaf category is fully faithful

                    Instances For