Presieves #
A presieve on an object X of a category C is an arbitrary predicate on morphisms with codomain
X. Unlike a sieve, a presieve is not required to be closed under precomposition. Presieves are
useful for specifying generating families of arrows before passing to the sieve they generate.
This file develops the basic theory of presieves. It defines singleton presieves and presieves
Presieve.ofArrows associated to indexed families of arrows, together with binding and
pullback constructions. It also defines pullback and pushforward along a fixed morphism, the
associated Galois connection, and the category, diagram, and cocone determined by a presieve.
Finally, Presieve.uncurry realizes a presieve as a set in a sigma type.
Functorial operations induced by a functor between categories are developed in
Mathlib.CategoryTheory.Sites.Sieves.Functoriality.
Tags #
presieve, pullback
A predicate on arrows with codomain X.
Equations
- CategoryTheory.Presieve X = (⦃Y : C⦄ → (Y ⟶ X) → Prop)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
The full subcategory of the over category C/X consisting of arrows which belong to a
presieve on X.
Equations
- P.category = CategoryTheory.ObjectProperty.FullSubcategory fun (f : CategoryTheory.Over X) => P f.hom
Instances For
Construct an object of P.category.
Equations
- P.categoryMk f hf = { obj := CategoryTheory.Over.mk f, property := hf }
Instances For
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
- S.diagram = (CategoryTheory.ObjectProperty.ι fun (f : CategoryTheory.Over X) => S f.hom).comp (CategoryTheory.Over.forget X)
Instances For
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
- S.cocone = CategoryTheory.Limits.Cocone.whisker (CategoryTheory.ObjectProperty.ι fun (f : CategoryTheory.Over X) => S f.hom) (CategoryTheory.Over.forgetCocone X)
Instances For
Given a presieve S on X, and presieve R on Y for each
f : Y ⟶ X in S, produce a presieve on X:
{ g ≫ f | (f : Y ⟶ X) ∈ S, (g : Z ⟶ Y) ∈ R f }.
Equations
Instances For
Structure which contains the data and properties for a morphism h satisfying
Presieve.bind S R h.
- Y : C
the intermediate object
a morphism in the family of presieves
Ra morphism in the presieve
S- hf : S self.f
- hg : R ⋯ self.g
Instances For
If a morphism h satisfies Presieve.bind S R h, this is a choice of a structure
in BindStruct S R h.
Equations
- H.bindStruct = ⋯.some
Instances For
The singleton presieve.
- mk {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : Y ⟶ X} : singleton f f
Instances For
A presieve R has pullbacks along f if for every h in R, the pullback
with f exists.
Instances
Pullback a presieve along a fixed map, by taking the pullback in the
category.
This is not the same as the underlying presieve of Sieve.pullback, but there is a relation between
them in pullbackArrows_comm.
- mk {C : Type u₁} [Category.{v₁, u₁} C] {X Y : C} {f : Y ⟶ X} {R : Presieve X} [R.HasPullbacks f] (Z : C) (h : Z ⟶ X) (hRh : R h) : pullbackArrows f R (Limits.pullback.snd h f)
Instances For
Construct the presieve given by the family of arrows indexed by ι.
- mk {C : Type u₁} [Category.{v₁, u₁} C] {X : C} {ι : Type u_1} {Y : ι → C} {f : (i : ι) → Y i ⟶ X} (i : ι) : ofArrows Y f (f i)
Instances For
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).
Instances For
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.
- mk {C : Type u₁} [Category.{v₁, u₁} C] {ι : Type u_1} {X : C} {Y : ι → C} {f : (i : ι) → Y i ⟶ X} {R : (i : ι) → Presieve (Y i)} (i : ι) {Z : C} (g : Z ⟶ Y i) (hg : R i g) : bindOfArrows Y f R (CategoryStruct.comp g (f i))
Instances For
Compose a presieve on the right with a morphism.
Equations
- CategoryTheory.Presieve.pushforward f R fg = ∃ (g : Z ⟶ X), CategoryTheory.CategoryStruct.comp g f = fg ∧ R g
Instances For
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.