Documentation

Mathlib.CategoryTheory.Sites.Sieves.Functoriality

Functoriality of presieves and sieves #

Given a functor F : C ⥤ D, presieves and sieves can be transported between corresponding objects of C and D. This file develops these functorial pullback and pushforward operations.

For presieves, it defines preimage under F, the presieve generated by images of arrows, and the inductive image operation Presieve.map. The latter is left adjoint to functorial pullback. For sieves, it shows that functorial pullback is again a sieve and defines functorial pushforward by closing the image under precomposition. These operations likewise form a Galois connection.

The file records compatibility with lattice operations, composition of functors, fully faithful functors, equivalences of categories, and the corresponding constructions for arrow families.

Tags #

presieve, sieve, functor, pullback, pushforward

Given a presieve on F(X), we can define a presieve on X by taking the preimage via F.

Equations
Instances For
    @[simp]
    theorem CategoryTheory.Presieve.functorPullback_mem {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (R : Presieve (F.obj X)) {Y : C} (f : Y X) :
    functorPullback F R f R (F.map f)

    Given a presieve on X, we can define a presieve on F(X) (which is actually a sieve) by taking the sieve generated by the image via F.

    Equations
    Instances For
      structure CategoryTheory.Presieve.FunctorPushforwardStructure {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (S : Presieve X) {Y : D} (f : Y F.obj X) :
      Type (max (max u₁ v₁) v₂)

      An auxiliary definition in order to fix the choice of the preimages between various definitions.

      • preobj : C

        an object in the source category

      • premap : self.preobj X

        a map in the source category which has to be in the presieve

      • lift : Y F.obj self.preobj

        the morphism which appear in the factorisation

      • cover : S self.premap

        the condition that premap is in the presieve

      • fac : f = CategoryStruct.comp self.lift (F.map self.premap)

        the factorisation of the morphism

      Instances For
        noncomputable def CategoryTheory.Presieve.getFunctorPushforwardStructure {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {X : C} {F : Functor C D} {S : Presieve X} {Y : D} {f : Y F.obj X} (h : functorPushforward F S f) :

        The fixed choice of a preimage.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem CategoryTheory.Presieve.image_mem_functorPushforward {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (R : Presieve X) {f : Y X} (h : R f) :
          inductive CategoryTheory.Presieve.map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (s : Presieve X) :

          This presieve generates functorPushforward. See arrows_generate_map_eq_functorPushforward.

          Instances For
            theorem CategoryTheory.Presieve.map_map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {X Y : C} {f : Y X} {R : Presieve X} (hf : R f) :
            map F R (F.map f)
            theorem CategoryTheory.Presieve.map_iff {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {X : C} {R : Presieve X} {Y : D} {f : Y F.obj X} :
            map F R f ∃ (Z : C) (h : F.obj Z = Y) (g : Z X), R g F.map g = CategoryStruct.comp (eqToHom h) f
            @[simp]
            theorem CategoryTheory.Presieve.map_ofArrows {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {X : C} {ι : Type u_1} {Y : ιC} (f : (i : ι) → Y i X) :
            map F (ofArrows Y f) = ofArrows (fun (i : ι) => F.obj (Y i)) fun (i : ι) => F.map (f i)
            @[simp]
            theorem CategoryTheory.Presieve.map_singleton {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {X Y : C} (f : X Y) :
            @[simp]
            theorem CategoryTheory.Presieve.map_functorPullback_map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {X : C} (R : Presieve X) :
            map F (functorPullback F (map F R)) = map F R
            @[simp]
            theorem CategoryTheory.Presieve.map_id {C : Type u₁} [Category.{v₁, u₁} C] {X : C} (R : Presieve X) :
            map (Functor.id C) R = R
            @[simp]
            theorem CategoryTheory.Presieve.map_bot {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] {F : Functor C D} {X : C} :
            def CategoryTheory.Sieve.functorPullback {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (R : Sieve (F.obj X)) :

            If R is a sieve, then the CategoryTheory.Presieve.functorPullback of R is actually a sieve.

            Equations
            Instances For
              theorem CategoryTheory.Sieve.functorPullback_pullback {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (f : X Y) (S : Sieve (F.obj Y)) :
              def CategoryTheory.Sieve.functorPushforward {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (R : Sieve X) :
              Sieve (F.obj X)

              The sieve generated by the image of R under F.

              Equations
              Instances For
                theorem CategoryTheory.Sieve.functorPushforward_ofArrows {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} {ι : Type u_1} {Y : ιC} (f : (i : ι) → Y i X) :
                functorPushforward F (ofArrows Y f) = ofArrows (fun (i : ι) => F.obj (Y i)) fun (i : ι) => F.map (f i)
                theorem CategoryTheory.Sieve.functorPullback_union {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (S R : Sieve (F.obj X)) :
                theorem CategoryTheory.Sieve.functorPullback_inter {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (S R : Sieve (F.obj X)) :
                theorem CategoryTheory.Sieve.image_mem_functorPushforward {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X : C} (R : Sieve X) {V : C} {f : V X} (h : R.arrows f) :

                When F is essentially surjective and full, the Galois connection is a Galois insertion.

                Equations
                Instances For

                  When F is fully faithful, the Galois connection is a Galois coinsertion.

                  Equations
                  Instances For
                    theorem CategoryTheory.Sieve.mem_functorPushforward_iff_of_full {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) [F.Full] {X Y : C} (R : Sieve X) (f : F.obj Y F.obj X) :
                    Presieve.functorPushforward F R.arrows f ∃ (g : Y X), F.map g = f R.arrows g
                    theorem CategoryTheory.Sieve.functorPushforward_ofObjects_le {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {I : Type u_1} (X : IC) (Y : C) :
                    @[deprecated "Use Sieve.arrows_generate_map_eq_functorPushforward instead." (since := "2026-07-09")]