Documentation

Mathlib.CategoryTheory.Bicategory.Grothendieck

The Grothendieck construction #

Given a category 𝒮 and any pseudofunctor F from 𝒮ᵒᵖ to Cat, we associate to it a category ∫ F, equipped with a functor ∫ F ⥤ 𝒮.

The category ∫ F is defined as follows:

The projection functor ∫ F ⥤ 𝒮 is then given by projecting to the first factors, i.e.

References #

[Vistoli2008] "Notes on Grothendieck Topologies, Fibered Categories and Descent Theory" by Angelo Vistoli

The type of objects in the fibered category associated to a presheaf valued in types.

  • base : 𝒮

    The underlying object in the base category.

  • fiber : (F.obj { as := Opposite.op self.base })

    The object in the fiber of the base object.

Instances For
    theorem CategoryTheory.Pseudofunctor.Grothendieck.ext {𝒮 : Type u₁} {inst✝ : Category.{v₁, u₁} 𝒮} {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} {x y : F.Grothendieck} (base : x.base = y.base) (fiber : HEq x.fiber y.fiber) :
    x = y

    Notation for the Grothendieck category associated to a pseudofunctor F.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      structure CategoryTheory.Pseudofunctor.Grothendieck.Hom {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} (X Y : F.Grothendieck) :
      Type (max v₁ v₂)

      A morphism in the Grothendieck category F : C ⥤ Cat consists of base : X.base ⟶ Y.base and f.fiber : (F.map base).obj X.fiber ⟶ Y.fiber.

      • base : X.base Y.base

        The morphism between base objects.

      • fiber : X.fiber (F.map self.base.op.toLoc).obj Y.fiber

        The morphism in the fiber over the domain.

      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        @[simp]
        theorem CategoryTheory.Pseudofunctor.Grothendieck.categoryStruct_comp_base {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} {x✝ x✝¹ Z : F.Grothendieck} (f : x✝ x✝¹) (g : x✝¹ Z) :
        (CategoryStruct.comp f g).base = CategoryStruct.comp f.base g.base
        @[simp]
        theorem CategoryTheory.Pseudofunctor.Grothendieck.categoryStruct_id_fiber {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} (X : F.Grothendieck) :
        (CategoryStruct.id X).fiber = (F.mapId { as := Opposite.op X.base }).inv.app X.fiber
        @[simp]
        theorem CategoryTheory.Pseudofunctor.Grothendieck.categoryStruct_comp_fiber {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} {x✝ x✝¹ Z : F.Grothendieck} (f : x✝ x✝¹) (g : x✝¹ Z) :
        (CategoryStruct.comp f g).fiber = CategoryStruct.comp f.fiber (CategoryStruct.comp ((F.map f.base.op.toLoc).map g.fiber) ((F.mapComp g.base.op.toLoc f.base.op.toLoc).inv.app Z.fiber))
        @[simp]
        theorem CategoryTheory.Pseudofunctor.Grothendieck.categoryStruct_Hom {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} (X Y : F.Grothendieck) :
        (X Y) = X.Hom Y
        theorem CategoryTheory.Pseudofunctor.Grothendieck.Hom.ext {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} {a b : F.Grothendieck} (f g : a b) (hfg₁ : f.base = g.base) (hfg₂ : f.fiber = CategoryStruct.comp g.fiber (eqToHom )) :
        f = g
        theorem CategoryTheory.Pseudofunctor.Grothendieck.Hom.ext_iff {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} {a b : F.Grothendieck} (f g : a b) :
        f = g ∃ (hfg : f.base = g.base), f.fiber = CategoryStruct.comp g.fiber (eqToHom )
        theorem CategoryTheory.Pseudofunctor.Grothendieck.Hom.congr {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat} {a b : F.Grothendieck} {f g : a b} (h : f = g) :
        f.fiber = CategoryStruct.comp g.fiber (eqToHom )

        The projection ∫ F ⥤ 𝒮 given by projecting both objects and homs to the first factor.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Pseudofunctor.Grothendieck.forget_map {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat) {X✝ Y✝ : F.Grothendieck} (f : X✝ Y✝) :
          (forget F).map f = f.base
          @[simp]
          theorem CategoryTheory.Pseudofunctor.Grothendieck.forget_obj {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (F : Pseudofunctor (LocallyDiscrete 𝒮ᵒᵖ) Cat) (X : F.Grothendieck) :
          (forget F).obj X = X.base