Documentation

Mathlib.CategoryTheory.Sites.Descent.IsPrestack

Prestacks: descent of morphisms #

Let C be a category and F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat. Given S : C, and objects M and N in F.obj (.mk (op S)), we define a presheaf of types F.presheafHom M N on the category Over S: its sections on an object T : Over S corresponding to a morphism p : X ⟶ S are the type of morphisms p^* M ⟶ p^* N. We shall say that F satisfies the descent of morphisms for a Grothendieck topology J if these presheaves are all sheaves (typeclass F.IsPrestack J).

Terminological note #

In this file, we use the language of pseudofunctors to formalize prestacks. Similar notions could also be phrased in terms of fibered categories. In the mathematical literature, various uses of the words "prestacks" and "stacks" exists. Our definitions are consistent with Giraud's definition II 1.2.1 in Cohomologie non abélienne: a prestack is defined by the descent of morphisms condition with respect to a Grothendieck topology, and a stack by the effectiveness of the descent. However, contrary to Laumon and Moret-Bailly in Champs algébriques 3.1, we do not require that target categories are groupoids.

TODO #

References #

def CategoryTheory.Pseudofunctor.LocallyDiscreteOpToCat.pullHom {C : Type u} [Category.{v, u} C] {F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat} X₁ X₂ : C M₁ : (F.obj { as := Opposite.op X₁ }) M₂ : (F.obj { as := Opposite.op X₂ }) Y : C f₁ : Y X₁ f₂ : Y X₂ (φ : (F.map f₁.op.toLoc).obj M₁ (F.map f₂.op.toLoc).obj M₂) Y' : C (g : Y' Y) (gf₁ : Y' X₁) (gf₂ : Y' X₂) (hgf₁ : CategoryStruct.comp g f₁ = gf₁ := by cat_disch) (hgf₂ : CategoryStruct.comp g f₂ = gf₂ := by cat_disch) :
(F.map gf₁.op.toLoc).obj M₁ (F.map gf₂.op.toLoc).obj M₂

Given a pseudofunctor F from LocallyDiscrete Cᵒᵖ to Cat, objects M₁ and M₂ of F over X₁ and X₂, morphisms f₁ : Y ⟶ X₁ and f₂ : Y ⟶ X₂, this is a version of the pullback map (f₁^* M₁ ⟶ f₂^* M₂) → (g^* (f₁^* M₁) ⟶ g^* (f₂^* M₂)) by a morphism g : Y' ⟶ Y, where we actually replace g^* (f₁^* M₁) by gf₁^* M₁ where gf₁ : Y' ⟶ X₁ is a morphism such that g ≫ f₁ = gf₁ (and similarly for M₂).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem CategoryTheory.Pseudofunctor.LocallyDiscreteOpToCat.map_eq_pullHom {C : Type u} [Category.{v, u} C] {F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat} X₁ X₂ : C M₁ : (F.obj { as := Opposite.op X₁ }) M₂ : (F.obj { as := Opposite.op X₂ }) Y : C f₁ : Y X₁ f₂ : Y X₂ (φ : (F.map f₁.op.toLoc).obj M₁ (F.map f₂.op.toLoc).obj M₂) Y' : C (g : Y' Y) (gf₁ : Y' X₁) (gf₂ : Y' X₂) (hgf₁ : CategoryStruct.comp g f₁ = gf₁) (hgf₂ : CategoryStruct.comp g f₂ = gf₂) :
    (F.map g.op.toLoc).map φ = CategoryStruct.comp ((F.mapComp' f₁.op.toLoc g.op.toLoc gf₁.op.toLoc ).inv.app M₁) (CategoryStruct.comp (pullHom φ g gf₁ gf₂ hgf₁ hgf₂) ((F.mapComp' f₂.op.toLoc g.op.toLoc gf₂.op.toLoc ).hom.app M₂))
    theorem CategoryTheory.Pseudofunctor.LocallyDiscreteOpToCat.map_eq_pullHom_assoc {C : Type u} [Category.{v, u} C] {F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat} X₁ X₂ : C M₁ : (F.obj { as := Opposite.op X₁ }) M₂ : (F.obj { as := Opposite.op X₂ }) Y : C f₁ : Y X₁ f₂ : Y X₂ (φ : (F.map f₁.op.toLoc).obj M₁ (F.map f₂.op.toLoc).obj M₂) Y' : C (g : Y' Y) (gf₁ : Y' X₁) (gf₂ : Y' X₂) (hgf₁ : CategoryStruct.comp g f₁ = gf₁) (hgf₂ : CategoryStruct.comp g f₂ = gf₂) {Z : (F.obj { as := Opposite.op Y' })} (h : (F.map g.op.toLoc).obj ((F.map f₂.op.toLoc).obj M₂) Z) :
    CategoryStruct.comp ((F.map g.op.toLoc).map φ) h = CategoryStruct.comp ((F.mapComp' f₁.op.toLoc g.op.toLoc gf₁.op.toLoc ).inv.app M₁) (CategoryStruct.comp (pullHom φ g gf₁ gf₂ hgf₁ hgf₂) (CategoryStruct.comp ((F.mapComp' f₂.op.toLoc g.op.toLoc gf₂.op.toLoc ).hom.app M₂) h))
    @[simp]
    theorem CategoryTheory.Pseudofunctor.LocallyDiscreteOpToCat.pullHom_id {C : Type u} [Category.{v, u} C] {F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat} X₁ X₂ : C M₁ : (F.obj { as := Opposite.op X₁ }) M₂ : (F.obj { as := Opposite.op X₂ }) Y : C f₁ : Y X₁ f₂ : Y X₂ (φ : (F.map f₁.op.toLoc).obj M₁ (F.map f₂.op.toLoc).obj M₂) :
    pullHom φ (CategoryStruct.id Y) f₁ f₂ = φ
    @[simp]
    theorem CategoryTheory.Pseudofunctor.LocallyDiscreteOpToCat.pullHom_pullHom {C : Type u} [Category.{v, u} C] {F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat} X₁ X₂ : C M₁ : (F.obj { as := Opposite.op X₁ }) M₂ : (F.obj { as := Opposite.op X₂ }) Y : C f₁ : Y X₁ f₂ : Y X₂ (φ : (F.map f₁.op.toLoc).obj M₁ (F.map f₂.op.toLoc).obj M₂) Y' : C (g : Y' Y) (gf₁ : Y' X₁) (gf₂ : Y' X₂) Y'' : C (g' : Y'' Y') (g'f₁ : Y'' X₁) (g'f₂ : Y'' X₂) (hgf₁ : CategoryStruct.comp g f₁ = gf₁ := by cat_disch) (hgf₂ : CategoryStruct.comp g f₂ = gf₂ := by cat_disch) (hg'f₁ : CategoryStruct.comp g' gf₁ = g'f₁ := by cat_disch) (hg'f₂ : CategoryStruct.comp g' gf₂ = g'f₂ := by cat_disch) :
    pullHom (pullHom φ g gf₁ gf₂ hgf₁ hgf₂) g' g'f₁ g'f₂ hg'f₁ hg'f₂ = pullHom φ (CategoryStruct.comp g' g) g'f₁ g'f₂

    If F is a pseudofunctor from Cᵒᵖ to Cat, and M and N are objects in F.obj (.mk (op S)), this is the presheaf of morphisms from M to N: it sends an object T : Over S corresponding to a morphism p : X ⟶ S to the type of morphisms $$p^* M ⟶ p^* N$$.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem CategoryTheory.Pseudofunctor.presheafHom_map {C : Type u} [Category.{v, u} C] (F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat) {S : C} (M N : (F.obj { as := Opposite.op S })) {T₁ T₂ : (Over S)ᵒᵖ} (p : T₁ T₂) (f : (F.map (Opposite.unop T₁).hom.op.toLoc).obj M (F.map (Opposite.unop T₁).hom.op.toLoc).obj N) :
      def CategoryTheory.Pseudofunctor.overMapCompPresheafHomIso {C : Type u} [Category.{v, u} C] (F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat) {S : C} (M N : (F.obj { as := Opposite.op S })) {S' : C} (q : S' S) :
      (Over.map q).op.comp (F.presheafHom M N) F.presheafHom ((F.map q.op.toLoc).obj M) ((F.map q.op.toLoc).obj N)

      Compatiblity isomorphism of Pseudofunctor.presheafHom with "restrictions".

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        The property that a pseudofunctor F : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat satisfies the descent property for morphisms, i.e. is a prestack. (See the terminological note in the introduction of the file Sites.Descent.IsPrestack.)

        Instances

          If F is a prestack from Cᵒᵖ to Cat relatively to a Grothendieck topology J, and M and N are two objects in F.obj (.mk (op S)), this is the sheaf of morphisms from M to N: it sends an object T : Over S corresponding to a morphism p : X ⟶ S to the type of morphisms $$p^* M ⟶ p^* N$$.

          Equations
          Instances For
            @[simp]