Documentation

Mathlib.CategoryTheory.Sites.Sieves

Theory of sieves #

Tags #

sieve, pullback

def CategoryTheory.Presieve {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] (X : C) :
Type (max uโ‚ vโ‚)

A set of arrows all with codomain X.

Equations
    Instances For
      @[reducible, inline]
      abbrev CategoryTheory.Presieve.category {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (P : Presieve X) :
      Type (max uโ‚ vโ‚)

      The full subcategory of the over category C/X consisting of arrows which belong to a presieve on X.

      Equations
        Instances For
          @[reducible, inline]
          abbrev CategoryTheory.Presieve.categoryMk {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (P : Presieve X) {Y : C} (f : Y โŸถ X) (hf : P f) :

          Construct an object of P.category.

          Equations
            Instances For
              @[reducible, inline]

              Given a sieve S on X : C, its associated diagram S.diagram is defined to be the natural functor from the full subcategory of the over category C/X consisting of arrows in S to C.

              Equations
                Instances For
                  @[reducible, inline]

                  Given a sieve S on X : C, its associated cocone S.cocone is defined to be the natural cocone over the diagram defined above with cocone point X.

                  Equations
                    Instances For
                      def CategoryTheory.Presieve.bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Presieve Y) :

                      Given a set of arrows S all with codomain X, and a set of arrows with codomain Y for each f : Y โŸถ X in S, produce a set of arrows with codomain X: { g โ‰ซ f | (f : Y โŸถ X) โˆˆ S, (g : Z โŸถ Y) โˆˆ R f }.

                      Equations
                        Instances For
                          structure CategoryTheory.Presieve.BindStruct {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Presieve Y) {Z : C} (h : Z โŸถ X) :
                          Type (max uโ‚ vโ‚)

                          Structure which contains the data and properties for a morphism h satisfying Presieve.bind S R h.

                          • Y : C

                            the intermediate object

                          • g : Z โŸถ self.Y

                            a morphism in the family of presieves R

                          • f : self.Y โŸถ X

                            a morphism in the presieve S

                          • hf : S self.f
                          • hg : R โ‹ฏ self.g
                          • fac : CategoryStruct.comp self.g self.f = h
                          Instances For
                            @[simp]
                            theorem CategoryTheory.Presieve.BindStruct.fac_assoc {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {S : Presieve X} {R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Presieve Y} {Z : C} {h : Z โŸถ X} (self : S.BindStruct R h) {Zโœ : C} (hโœ : X โŸถ Zโœ) :
                            noncomputable def CategoryTheory.Presieve.bind.bindStruct {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {S : Presieve X} {R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Presieve Y} {Z : C} {h : Z โŸถ X} (H : S.bind R h) :

                            If a morphism h satisfies Presieve.bind S R h, this is a choice of a structure in BindStruct S R h.

                            Equations
                              Instances For
                                theorem CategoryTheory.Presieve.BindStruct.bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {S : Presieve X} {R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Presieve Y} {Z : C} {h : Z โŸถ X} (b : S.BindStruct R h) :
                                S.bind R h
                                @[simp]
                                theorem CategoryTheory.Presieve.bind_comp {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y Z : C} (f : Y โŸถ X) {S : Presieve X} {R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Presieve Y} {g : Z โŸถ Y} (hโ‚ : S f) (hโ‚‚ : R hโ‚ g) :
                                inductive CategoryTheory.Presieve.singleton {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (f : Y โŸถ X) :

                                The singleton presieve.

                                Instances For
                                  @[deprecated CategoryTheory.Presieve.singleton (since := "2025-08-22")]

                                  Alias of CategoryTheory.Presieve.singleton.


                                  The singleton presieve.

                                  Equations
                                    Instances For
                                      class CategoryTheory.Presieve.HasPullbacks {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (R : Presieve X) {Y : C} (f : Y โŸถ X) :

                                      A presieve R has pullbacks along f if for every h in R, the pullback with f exists.

                                      Instances
                                        theorem CategoryTheory.Presieve.hasPullback {C : Type uโ‚} {instโœ : Category.{vโ‚, uโ‚} C} {X : C} {R : Presieve X} {Y : C} (f : Y โŸถ X) [self : R.HasPullbacks f] {Z : C} {h : Z โŸถ X} :
                                        R h โ†’ Limits.HasPullback h f

                                        Alias of CategoryTheory.Presieve.HasPullbacks.hasPullback.

                                        inductive CategoryTheory.Presieve.pullbackArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (f : Y โŸถ X) (R : Presieve X) [R.HasPullbacks f] :

                                        Pullback a set of arrows with given codomain along a fixed map, by taking the pullback in the category. This is not the same as the arrow set of Sieve.pullback, but there is a relation between them in pullbackArrows_comm.

                                        Instances For
                                          inductive CategoryTheory.Presieve.ofArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} (Y : ฮน โ†’ C) (f : (i : ฮน) โ†’ Y i โŸถ X) :

                                          Construct the presieve given by the family of arrows indexed by ฮน.

                                          Instances For
                                            theorem CategoryTheory.Presieve.ofArrows.mk' {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} {Y : ฮน โ†’ C} {f : (i : ฮน) โ†’ Y i โŸถ X} {Z : C} {g : Z โŸถ X} (i : ฮน) (h : Z = Y i) (hg : g = CategoryStruct.comp (eqToHom h) (f i)) :
                                            ofArrows Y f g
                                            instance CategoryTheory.Presieve.instHasPullbacksOfArrowsOfHasPullback {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (f : Y โŸถ X) {ฮน : Type u_1} (Z : ฮน โ†’ C) (g : (i : ฮน) โ†’ Z i โŸถ X) [โˆ€ (i : ฮน), Limits.HasPullback (g i) f] :
                                            theorem CategoryTheory.Presieve.ofArrows_pullback {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (f : Y โŸถ X) {ฮน : Type u_1} (Z : ฮน โ†’ C) (g : (i : ฮน) โ†’ Z i โŸถ X) [โˆ€ (i : ฮน), Limits.HasPullback (g i) f] :
                                            (ofArrows (fun (i : ฮน) => Limits.pullback (g i) f) fun (x : ฮน) => Limits.pullback.snd (g x) f) = pullbackArrows f (ofArrows Z g)
                                            theorem CategoryTheory.Presieve.ofArrows_bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} (Z : ฮน โ†’ C) (g : (i : ฮน) โ†’ Z i โŸถ X) (j : โฆƒY : Cโฆ„ โ†’ (f : Y โŸถ X) โ†’ ofArrows Z g f โ†’ Type u_2) (W : โฆƒY : Cโฆ„ โ†’ (f : Y โŸถ X) โ†’ (H : ofArrows Z g f) โ†’ j f H โ†’ C) (k : โฆƒY : Cโฆ„ โ†’ (f : Y โŸถ X) โ†’ (H : ofArrows Z g f) โ†’ (i : j f H) โ†’ W f H i โŸถ Y) :
                                            ((ofArrows Z g).bind fun (x : C) (f : x โŸถ X) (H : ofArrows Z g f) => ofArrows (W f H) (k f H)) = ofArrows (fun (i : (i : ฮน) ร— j (g i) โ‹ฏ) => W (g i.fst) โ‹ฏ i.snd) fun (ij : (i : ฮน) ร— j (g i) โ‹ฏ) => CategoryStruct.comp (k (g ij.fst) โ‹ฏ ij.snd) (g ij.fst)
                                            theorem CategoryTheory.Presieve.ofArrows_surj {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} {Y : ฮน โ†’ C} (f : (i : ฮน) โ†’ Y i โŸถ X) {Z : C} (g : Z โŸถ X) (hg : ofArrows Y f g) :
                                            โˆƒ (i : ฮน) (h : Y i = Z), g = CategoryStruct.comp (eqToHom โ‹ฏ) (f i)
                                            theorem CategoryTheory.Presieve.exists_eq_ofArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (R : Presieve X) :
                                            โˆƒ (ฮน : Type (max uโ‚ vโ‚)) (Y : ฮน โ†’ C) (f : (i : ฮน) โ†’ Y i โŸถ X), R = ofArrows Y f
                                            noncomputable def CategoryTheory.Presieve.ofArrows.idx {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} {f : (i : ฮน) โ†’ X i โŸถ S} {Y : C} {g : Y โŸถ S} (hf : ofArrows X f g) :
                                            ฮน

                                            If g : Y โŸถ S is in the presieve given by the indexed family fแตข, this is a choice of index such that g = fแตข modulo eqToHom. Note: This should generally not be used! If possible, use the induction principle for the type Presieve.ofArrows instead (using e.g., rintro / obtain).

                                            Equations
                                              Instances For
                                                theorem CategoryTheory.Presieve.ofArrows.obj_idx {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} {f : (i : ฮน) โ†’ X i โŸถ S} {Y : C} {g : Y โŸถ S} (hf : ofArrows X f g) :
                                                X hf.idx = Y
                                                theorem CategoryTheory.Presieve.ofArrows.eq_eqToHom_comp_hom_idx {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} {f : (i : ฮน) โ†’ X i โŸถ S} {Y : C} {g : Y โŸถ S} (hf : ofArrows X f g) :
                                                g = CategoryStruct.comp (eqToHom โ‹ฏ) (f hf.idx)
                                                theorem CategoryTheory.Presieve.ofArrows.hom_idx {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} {f : (i : ฮน) โ†’ X i โŸถ S} {Y : C} {g : Y โŸถ S} (hf : ofArrows X f g) :
                                                f hf.idx = CategoryStruct.comp (eqToHom โ‹ฏ) g
                                                theorem CategoryTheory.Presieve.ofArrows_comp_le {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} {ฯƒ : Type u_2} {Y : ฮน โ†’ C} (f : (i : ฮน) โ†’ Y i โŸถ X) (a : ฯƒ โ†’ ฮน) :
                                                (ofArrows (Y โˆ˜ a) fun (i : ฯƒ) => f (a i)) โ‰ค ofArrows Y f
                                                theorem CategoryTheory.Presieve.ofArrows_comp_eq_of_surjective {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} {ฯƒ : Type u_2} {Y : ฮน โ†’ C} (f : (i : ฮน) โ†’ Y i โŸถ X) {a : ฯƒ โ†’ ฮน} (ha : Function.Surjective a) :
                                                (ofArrows (Y โˆ˜ a) fun (i : ฯƒ) => f (a i)) = ofArrows Y f
                                                theorem CategoryTheory.Presieve.ofArrows_le_iff {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} {Y : ฮน โ†’ C} {f : (i : ฮน) โ†’ Y i โŸถ X} {R : Presieve X} :
                                                ofArrows Y f โ‰ค R โ†” โˆ€ (i : ฮน), R (f i)
                                                theorem CategoryTheory.Presieve.ofArrows_of_unique {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} [Unique ฮน] {Y : ฮน โ†’ C} (f : (i : ฮน) โ†’ Y i โŸถ X) :
                                                inductive CategoryTheory.Presieve.bindOfArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {X : C} (Y : ฮน โ†’ C) (f : (i : ฮน) โ†’ Y i โŸถ X) (R : (i : ฮน) โ†’ Presieve (Y i)) :

                                                A convenient constructor for a refinement of a presieve of the form Presieve.ofArrows. This contains a sieve obtained by Sieve.bind and Sieve.ofArrows, see Presieve.bind_ofArrows_le_bindOfArrows, but has better definitional properties.

                                                Instances For
                                                  theorem CategoryTheory.Presieve.bindOfArrows_ofArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} (f : (i : ฮน) โ†’ X i โŸถ S) {ฯƒ : ฮน โ†’ Type u_2} {Y : (i : ฮน) โ†’ ฯƒ i โ†’ C} (g : (i : ฮน) โ†’ (j : ฯƒ i) โ†’ Y i j โŸถ X i) :
                                                  (bindOfArrows X f fun (i : ฮน) => ofArrows (Y i) (g i)) = ofArrows (fun (p : (i : ฮน) ร— ฯƒ i) => Y p.fst p.snd) fun (p : (i : ฮน) ร— ฯƒ i) => CategoryStruct.comp (g p.fst p.snd) (f p.fst)

                                                  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) :

                                                      Given a presieve R on X, the predicate R.HasPairwisePullbacks means that for all arrows f and g in R, the pullback of f and g exists.

                                                      Instances
                                                        @[deprecated CategoryTheory.Presieve.HasPairwisePullbacks (since := "2025-08-28")]

                                                        Alias of CategoryTheory.Presieve.HasPairwisePullbacks.


                                                        Given a presieve R on X, the predicate R.HasPairwisePullbacks means that for all arrows f and g in R, the pullback of f and g exists.

                                                        Equations
                                                          Instances For
                                                            instance CategoryTheory.Presieve.instHasPullbackOfHasPairwisePullbacksOfArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮฑ : Type vโ‚‚} {X : ฮฑ โ†’ C} {B : C} (ฯ€ : (a : ฮฑ) โ†’ X a โŸถ B) [(ofArrows X ฯ€).HasPairwisePullbacks] (a b : ฮฑ) :
                                                            Limits.HasPullback (ฯ€ a) (ฯ€ b)

                                                            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.

                                                                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
                                                                    Instances For
                                                                      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)
                                                                        @[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)
                                                                        def CategoryTheory.Presieve.uncurry {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (s : Presieve X) :
                                                                        Set ((Y : C) ร— (Y โŸถ X))

                                                                        Uncurry a presieve to one set over the sigma type.

                                                                        Equations
                                                                          Instances For
                                                                            @[simp]
                                                                            theorem CategoryTheory.Presieve.uncurry_bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (s : Presieve X) (t : โฆƒY : Cโฆ„ โ†’ (f : Y โŸถ X) โ†’ s f โ†’ Presieve Y) :
                                                                            (s.bind t).uncurry = โ‹ƒ (i : (Y : C) ร— (Y โŸถ X)), โ‹ƒ (h : i โˆˆ s.uncurry), (_root_.Sigma.map id fun (Z : C) (g : Z โŸถ i.fst) => CategoryStruct.comp g i.snd) '' (t i.snd h).uncurry
                                                                            @[simp]
                                                                            theorem CategoryTheory.Presieve.uncurry_ofArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {ฮน : Type u_1} (Y : ฮน โ†’ C) (f : (i : ฮน) โ†’ Y i โŸถ X) :
                                                                            (ofArrows Y f).uncurry = Set.range fun (i : ฮน) => โŸจY i, f iโŸฉ
                                                                            theorem CategoryTheory.Presieve.ofArrows_eq_ofArrows_uncurry {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} (f : (i : ฮน) โ†’ X i โŸถ S) :
                                                                            ofArrows X f = ofArrows (fun (i : โ†‘(ofArrows X f).uncurry) => X (ofArrows.idx โ‹ฏ)) fun (i : โ†‘(ofArrows X f).uncurry) => f (ofArrows.idx โ‹ฏ)
                                                                            structure CategoryTheory.Sieve {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] (X : C) :
                                                                            Type (max uโ‚ vโ‚)

                                                                            For an object X of a category C, a Sieve X is a set of morphisms to X which is closed under left-composition.

                                                                            Instances For
                                                                              theorem CategoryTheory.Sieve.arrows_ext {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {R S : Sieve X} :
                                                                              R.arrows = S.arrows โ†’ R = S
                                                                              theorem CategoryTheory.Sieve.ext {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {R S : Sieve X} (h : โˆ€ โฆƒY : Cโฆ„ (f : Y โŸถ X), R.arrows f โ†” S.arrows f) :
                                                                              R = S
                                                                              theorem CategoryTheory.Sieve.ext_iff {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {R S : Sieve X} :
                                                                              R = S โ†” โˆ€ โฆƒY : Cโฆ„ (f : Y โŸถ X), R.arrows f โ†” S.arrows f
                                                                              def CategoryTheory.Sieve.sup {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (๐’ฎ : Set (Sieve X)) :

                                                                              The supremum of a collection of sieves: the union of them all.

                                                                              Equations
                                                                                Instances For
                                                                                  def CategoryTheory.Sieve.inf {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (๐’ฎ : Set (Sieve X)) :

                                                                                  The infimum of a collection of sieves: the intersection of them all.

                                                                                  Equations
                                                                                    Instances For
                                                                                      def CategoryTheory.Sieve.union {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S R : Sieve X) :

                                                                                      The union of two sieves is a sieve.

                                                                                      Equations
                                                                                        Instances For
                                                                                          def CategoryTheory.Sieve.inter {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S R : Sieve X) :

                                                                                          The intersection of two sieves is a sieve.

                                                                                          Equations
                                                                                            Instances For

                                                                                              Sieves on an object X form a complete lattice. We generate this directly rather than using the Galois insertion for nicer definitional properties.

                                                                                              Equations

                                                                                                The maximal sieve always exists.

                                                                                                Equations
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Sieve.sInf_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {Ss : Set (Sieve X)} {Y : C} (f : Y โŸถ X) :
                                                                                                  (sInf Ss).arrows f โ†” โˆ€ S โˆˆ Ss, S.arrows f
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Sieve.sSup_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {Ss : Set (Sieve X)} {Y : C} (f : Y โŸถ X) :
                                                                                                  (sSup Ss).arrows f โ†” โˆƒ (S : Sieve X) (_ : S โˆˆ Ss), S.arrows f
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Sieve.inter_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {R S : Sieve X} {Y : C} (f : Y โŸถ X) :
                                                                                                  (R โŠ“ S).arrows f โ†” R.arrows f โˆง S.arrows f
                                                                                                  @[simp]
                                                                                                  theorem CategoryTheory.Sieve.union_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {R S : Sieve X} {Y : C} (f : Y โŸถ X) :
                                                                                                  (R โŠ” S).arrows f โ†” R.arrows f โˆจ S.arrows f

                                                                                                  Generate the smallest sieve containing the given set of arrows.

                                                                                                  Equations
                                                                                                    Instances For
                                                                                                      @[simp]
                                                                                                      theorem CategoryTheory.Sieve.generate_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (R : Presieve X) (Z : C) (f : Z โŸถ X) :
                                                                                                      (generate R).arrows f = โˆƒ (Y : C) (h : Z โŸถ Y) (g : Y โŸถ X), R g โˆง CategoryStruct.comp h g = f
                                                                                                      def CategoryTheory.Sieve.bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Sieve Y) :

                                                                                                      Given a presieve on X, and a sieve on each domain of an arrow in the presieve, we can bind to produce a sieve on X.

                                                                                                      Equations
                                                                                                        Instances For
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Sieve.bind_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Sieve Y) :
                                                                                                          (bind S R).arrows = S.bind fun (x : C) (x_1 : x โŸถ X) (h : S x_1) => (R h).arrows
                                                                                                          @[reducible, inline]
                                                                                                          abbrev CategoryTheory.Sieve.BindStruct {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Sieve Y) {Z : C} (h : Z โŸถ X) :
                                                                                                          Type (max uโ‚ vโ‚)

                                                                                                          Structure which contains the data and properties for a morphism h satisfying Sieve.bind S R h.

                                                                                                          Equations
                                                                                                            Instances For

                                                                                                              Show that there is a Galois insertion (generate, set_over).

                                                                                                              Equations
                                                                                                                Instances For

                                                                                                                  If the identity arrow is in a sieve, the sieve is maximal.

                                                                                                                  If an arrow set contains a split epi, it generates the maximal sieve.

                                                                                                                  @[simp]
                                                                                                                  theorem CategoryTheory.Sieve.comp_mem_iff {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y Z : C} (i : X โŸถ Y) (f : Y โŸถ Z) [IsIso i] (S : Sieve Z) :
                                                                                                                  @[reducible, inline]
                                                                                                                  abbrev CategoryTheory.Sieve.ofArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} (Y : I โ†’ C) (f : (i : I) โ†’ Y i โŸถ X) :

                                                                                                                  The sieve of X generated by family of morphisms Y i โŸถ X.

                                                                                                                  Equations
                                                                                                                    Instances For
                                                                                                                      theorem CategoryTheory.Sieve.ofArrows_mk {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} (Y : I โ†’ C) (f : (i : I) โ†’ Y i โŸถ X) (i : I) :
                                                                                                                      (ofArrows Y f).arrows (f i)
                                                                                                                      theorem CategoryTheory.Sieve.mem_ofArrows_iff {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} (Y : I โ†’ C) (f : (i : I) โ†’ Y i โŸถ X) {W : C} (g : W โŸถ X) :
                                                                                                                      (ofArrows Y f).arrows g โ†” โˆƒ (i : I) (a : W โŸถ Y i), g = CategoryStruct.comp a (f i)
                                                                                                                      theorem CategoryTheory.Sieve.ofArrows.exists {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} {Y : I โ†’ C} {f : (i : I) โ†’ Y i โŸถ X} {W : C} {g : W โŸถ X} (hg : (ofArrows Y f).arrows g) :
                                                                                                                      โˆƒ (i : I) (h : W โŸถ Y i), g = CategoryStruct.comp h (f i)
                                                                                                                      noncomputable def CategoryTheory.Sieve.ofArrows.i {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} {Y : I โ†’ C} {f : (i : I) โ†’ Y i โŸถ X} {W : C} {g : W โŸถ X} (hg : (ofArrows Y f).arrows g) :
                                                                                                                      I

                                                                                                                      When hg : Sieve.ofArrows Y f g, this is a choice of i such that g factors through f i.

                                                                                                                      Equations
                                                                                                                        Instances For
                                                                                                                          noncomputable def CategoryTheory.Sieve.ofArrows.h {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} {Y : I โ†’ C} {f : (i : I) โ†’ Y i โŸถ X} {W : C} {g : W โŸถ X} (hg : (ofArrows Y f).arrows g) :
                                                                                                                          W โŸถ Y (i hg)

                                                                                                                          When hg : Sieve.ofArrows Y f g, this is a morphism h : W โŸถ Y (i hg) such that h โ‰ซ f (i hg) = g.

                                                                                                                          Equations
                                                                                                                            Instances For
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Sieve.ofArrows.fac {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} {Y : I โ†’ C} {f : (i : I) โ†’ Y i โŸถ X} {W : C} {g : W โŸถ X} (hg : (ofArrows Y f).arrows g) :
                                                                                                                              CategoryStruct.comp (h hg) (f (i hg)) = g
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Sieve.ofArrows.fac_assoc {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} {Y : I โ†’ C} {f : (i : I) โ†’ Y i โŸถ X} {W : C} {g : W โŸถ X} (hg : (ofArrows Y f).arrows g) {Z : C} (h : X โŸถ Z) :
                                                                                                                              theorem CategoryTheory.Sieve.ofArrows_category' {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {S : C} (R : Presieve S) :
                                                                                                                              (ofArrows (fun (f : R.category) => (Functor.id C).obj f.obj.left) fun (f : R.category) => f.obj.hom) = generate R

                                                                                                                              The sieve generated by the morphisms in R.category for a presieve R is the sieve generated by R.

                                                                                                                              theorem CategoryTheory.Sieve.exists_eq_ofArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (R : Sieve X) :
                                                                                                                              โˆƒ (I : Type (max uโ‚ vโ‚)) (Y : I โ†’ C) (f : (i : I) โ†’ Y i โŸถ X), R = ofArrows Y f
                                                                                                                              @[reducible, inline]
                                                                                                                              abbrev CategoryTheory.Sieve.ofTwoArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {U V X : C} (i : U โŸถ X) (j : V โŸถ X) :

                                                                                                                              The sieve generated by two morphisms.

                                                                                                                              Equations
                                                                                                                                Instances For
                                                                                                                                  def CategoryTheory.Sieve.ofObjects {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} (Y : I โ†’ C) (X : C) :

                                                                                                                                  The sieve of X : C that is generated by a family of objects Y : I โ†’ C: it consists of morphisms to X which factor through at least one of the Y i.

                                                                                                                                  Equations
                                                                                                                                    Instances For
                                                                                                                                      theorem CategoryTheory.Sieve.mem_ofObjects_iff {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} (Y : I โ†’ C) {Z X : C} (g : Z โŸถ X) :
                                                                                                                                      (ofObjects Y X).arrows g โ†” โˆƒ (i : I), Nonempty (Z โŸถ Y i)
                                                                                                                                      theorem CategoryTheory.Sieve.ofArrows_le_ofObjects {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} (Y : I โ†’ C) {X : C} (f : (i : I) โ†’ Y i โŸถ X) :
                                                                                                                                      theorem CategoryTheory.Sieve.ofArrows_eq_ofObjects {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (hX : Limits.IsTerminal X) {I : Type u_1} (Y : I โ†’ C) (f : (i : I) โ†’ Y i โŸถ X) :
                                                                                                                                      theorem CategoryTheory.Sieve.ofObjects_mono {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : I โ†’ C} {I' : Type u_2} {X' : I' โ†’ C} {Y : C} (h : Set.range X โІ Set.range X') :
                                                                                                                                      def CategoryTheory.Sieve.pullback {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (h : Y โŸถ X) (S : Sieve X) :

                                                                                                                                      Given a morphism h : Y โŸถ X, send a sieve S on X to a sieve on Y as the inverse image of S with _ โ‰ซ h. That is, Sieve.pullback S h := (โ‰ซ h) 'โปยน S.

                                                                                                                                      Equations
                                                                                                                                        Instances For
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.Sieve.pullback_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (h : Y โŸถ X) (S : Sieve X) (xโœ : C) (sl : xโœ โŸถ Y) :
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.Sieve.pullback_inter {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} {f : Y โŸถ X} (S R : Sieve X) :
                                                                                                                                          pullback f (S โŠ“ R) = pullback f S โŠ“ pullback f R
                                                                                                                                          theorem CategoryTheory.Sieve.pullback_ofArrows_of_iso {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} {X : C} (Z : I โ†’ C) (f : (i : I) โ†’ Z i โŸถ X) {X' : C} (e : X' โ‰… X) :
                                                                                                                                          pullback e.hom (ofArrows Z f) = ofArrows Z fun (i : I) => CategoryStruct.comp (f i) e.inv
                                                                                                                                          theorem CategoryTheory.Sieve.pullback_ofObjects_eq_top {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} (Y : I โ†’ C) {X : C} {i : I} (g : X โŸถ Y i) :
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.Sieve.pullback_ofObjects {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {I : Type u_1} (X : I โ†’ C) {Y Z : C} (f : Z โŸถ Y) :
                                                                                                                                          def CategoryTheory.Sieve.pushforward {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (f : Y โŸถ X) (R : Sieve Y) :

                                                                                                                                          Push a sieve R on Y forward along an arrow f : Y โŸถ X: gf : Z โŸถ X is in the sieve if gf factors through some g : Z โŸถ Y which is in R.

                                                                                                                                          Equations
                                                                                                                                            Instances For
                                                                                                                                              @[simp]
                                                                                                                                              theorem CategoryTheory.Sieve.pushforward_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (f : Y โŸถ X) (R : Sieve Y) (xโœ : C) (gf : xโœ โŸถ X) :
                                                                                                                                              (pushforward f R).arrows gf = โˆƒ (g : xโœ โŸถ Y), CategoryStruct.comp g f = gf โˆง R.arrows g
                                                                                                                                              theorem CategoryTheory.Sieve.pushforward_union {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} {f : Y โŸถ X} (S R : Sieve Y) :
                                                                                                                                              pushforward f (S โŠ” R) = pushforward f S โŠ” pushforward f R
                                                                                                                                              theorem CategoryTheory.Sieve.pushforward_le_bind_of_mem {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Sieve Y) (f : Y โŸถ X) (h : S f) :
                                                                                                                                              theorem CategoryTheory.Sieve.le_pullback_bind {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X Y : C} (S : Presieve X) (R : โฆƒY : Cโฆ„ โ†’ โฆƒf : Y โŸถ Xโฆ„ โ†’ S f โ†’ Sieve Y) (f : Y โŸถ X) (h : S f) :
                                                                                                                                              R h โ‰ค pullback f (bind S R)

                                                                                                                                              If f is a monomorphism, the pushforward-pullback adjunction on sieves is coreflective.

                                                                                                                                              Equations
                                                                                                                                                Instances For

                                                                                                                                                  If f is a split epi, the pushforward-pullback adjunction on sieves is reflective.

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

                                                                                                                                                          The sieve generated by the image of R under F.

                                                                                                                                                          Equations
                                                                                                                                                            Instances For

                                                                                                                                                              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

                                                                                                                                                                      A sieve induces a presheaf.

                                                                                                                                                                      Equations
                                                                                                                                                                        Instances For
                                                                                                                                                                          @[simp]
                                                                                                                                                                          theorem CategoryTheory.Sieve.functor_map_coe {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Sieve X) {Xโœ Yโœ : Cแต’แต–} (f : Xโœ โŸถ Yโœ) (g : { g : Opposite.unop Xโœ โŸถ X // S.arrows g }) :
                                                                                                                                                                          โ†‘(S.functor.map f g) = CategoryStruct.comp f.unop โ†‘g

                                                                                                                                                                          If a sieve S is contained in a sieve T, then we have a morphism of presheaves on their induced presheaves.

                                                                                                                                                                          Equations
                                                                                                                                                                            Instances For
                                                                                                                                                                              @[simp]
                                                                                                                                                                              theorem CategoryTheory.Sieve.natTransOfLe_app_coe {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {S T : Sieve X} (h : S โ‰ค T) (xโœ : Cแต’แต–) (f : S.functor.obj xโœ) :
                                                                                                                                                                              โ†‘((natTransOfLe h).app xโœ f) = โ†‘f

                                                                                                                                                                              The natural inclusion from the functor induced by a sieve to the yoneda embedding.

                                                                                                                                                                              Equations
                                                                                                                                                                                Instances For
                                                                                                                                                                                  @[simp]
                                                                                                                                                                                  theorem CategoryTheory.Sieve.functorInclusion_app {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Sieve X) (xโœ : Cแต’แต–) (f : S.functor.obj xโœ) :
                                                                                                                                                                                  S.functorInclusion.app xโœ f = โ†‘f
                                                                                                                                                                                  def CategoryTheory.Sieve.toFunctor {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Sieve X) {Y : C} (f : Y โŸถ X) (hf : S.arrows f) :

                                                                                                                                                                                  Any component f : Y โŸถ X of the sieve S induces a natural transformation from yoneda.obj Y to the presheaf induced by S.

                                                                                                                                                                                  Equations
                                                                                                                                                                                    Instances For
                                                                                                                                                                                      @[simp]
                                                                                                                                                                                      theorem CategoryTheory.Sieve.toFunctor_app_coe {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Sieve X) {Y : C} (f : Y โŸถ X) (hf : S.arrows f) (Z : Cแต’แต–) (g : (yoneda.obj Y).obj Z) :
                                                                                                                                                                                      โ†‘((S.toFunctor f hf).app Z g) = CategoryStruct.comp g f

                                                                                                                                                                                      The presheaf induced by a sieve is a subobject of the yoneda embedding.

                                                                                                                                                                                      A natural transformation to a representable functor induces a sieve. This is the left inverse of functorInclusion, shown in sieveOfSubfunctor_functorInclusion.

                                                                                                                                                                                      Equations
                                                                                                                                                                                        Instances For
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem CategoryTheory.Sieve.sieveOfSubfunctor_apply {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {R : Functor Cแต’แต– (Type vโ‚)} (f : R โŸถ yoneda.obj X) (Y : C) (g : Y โŸถ X) :
                                                                                                                                                                                          (sieveOfSubfunctor f).arrows g = โˆƒ (t : R.obj (Opposite.op Y)), f.app (Opposite.op Y) t = g
                                                                                                                                                                                          @[reducible, inline]
                                                                                                                                                                                          abbrev CategoryTheory.Sieve.uliftFunctor {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Sieve X) :
                                                                                                                                                                                          Functor Cแต’แต– (Type (max w vโ‚))

                                                                                                                                                                                          A variant of Sieve.functor with universe lifting.

                                                                                                                                                                                          Equations
                                                                                                                                                                                            Instances For

                                                                                                                                                                                              A variant of Sieve.natTransOfLe with universe lifting.

                                                                                                                                                                                              Equations
                                                                                                                                                                                                Instances For
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem CategoryTheory.Sieve.uliftNatTransOfLe_app_down_coe {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} {S T : Sieve X} (h : S โ‰ค T) (xโœ : Cแต’แต–) (f : S.uliftFunctor.obj xโœ) :
                                                                                                                                                                                                  โ†‘((uliftNatTransOfLe h).app xโœ f).down = โ†‘f.down
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem CategoryTheory.Sieve.uliftFunctorInclusion_app {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {X : C} (S : Sieve X) (Xโœ : Cแต’แต–) (aโœ : CategoryTheory.uliftFunctor.{w, vโ‚}.obj (S.functor.obj Xโœ)) :
                                                                                                                                                                                                  S.uliftFunctorInclusion.app Xโœ aโœ = { down := โ†‘aโœ.down }

                                                                                                                                                                                                  A variant of Sieve.toFunctor with universe lifting.

                                                                                                                                                                                                  Equations
                                                                                                                                                                                                    Instances For

                                                                                                                                                                                                      The presheaf induced by a sieve is a subobject of the yoneda embedding.

                                                                                                                                                                                                      A variant of Sieve.sieveOfSubfunctor with universe lifting.

                                                                                                                                                                                                      Equations
                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                          theorem CategoryTheory.Sieve.ofArrows_eq_pullback_of_isPullback {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {S : C} {X : ฮน โ†’ C} (f : (i : ฮน) โ†’ X i โŸถ S) {Y : C} {g : Y โŸถ S} {P : ฮน โ†’ C} {pโ‚ : (i : ฮน) โ†’ P i โŸถ Y} {pโ‚‚ : (i : ฮน) โ†’ P i โŸถ X i} (h : โˆ€ (i : ฮน), IsPullback (pโ‚ i) (pโ‚‚ i) g (f i)) :
                                                                                                                                                                                                          ofArrows P pโ‚ = pullback g (ofArrows X f)
                                                                                                                                                                                                          theorem CategoryTheory.Presieve.bind_ofArrows_le_bindOfArrows {C : Type uโ‚} [Category.{vโ‚, uโ‚} C] {ฮน : Type u_1} {X : C} (Z : ฮน โ†’ C) (f : (i : ฮน) โ†’ Z i โŸถ X) (R : (i : ฮน) โ†’ Presieve (Z i)) :