Documentation

Mathlib.CategoryTheory.Grothendieck

The Grothendieck construction #

Given a functor F : C ⥤ Cat, the objects of Grothendieck F consist of dependent pairs (b, f), where b : C and f : F.obj c, and a morphism (b, f) ⟶ (b', f') is a pair β : b ⟶ b' in C, and φ : (F.map β).obj f ⟶ f'

Grothendieck.functor makes the Grothendieck construction into a functor from the functor category C ⥤ Cat to the over category Over C in the category of categories.

Categories such as PresheafedSpace are in fact examples of this construction, and it may be interesting to try to generalize some of the development there.

Implementation notes #

Really we should treat Cat as a 2-category, and allow F to be a 2-functor.

There is also a closely related construction starting with G : Cᵒᵖ ⥤ Cat, where morphisms consists again of β : b ⟶ b' and φ : f ⟶ (F.map (op β)).obj f'.

References #

See also CategoryTheory.Functor.Elements for the category of elements of functor F : C ⥤ Type.

The Grothendieck construction (often written as ∫ F in mathematics) for a functor F : C ⥤ Cat gives a category whose

  • base : C

    The underlying object in C

  • fiber : (F.obj self.base)

    The object in the fiber of the base object.

Instances For

    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 : (F.map self.base).obj X.fiber Y.fiber

      The morphism from the pushforward to the source fiber object to the target fiber object.

    Instances For

      The identity morphism in the Grothendieck category.

      Equations
      Instances For

        Composition of morphisms in the Grothendieck category.

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

          The forgetful functor from Grothendieck F to the source category.

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

            The Grothendieck construction is functorial: a natural transformation α : F ⟶ G induces a functor Grothendieck.map : Grothendieck F ⥤ Grothendieck G.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem CategoryTheory.Grothendieck.map_obj {C : Type u} [CategoryTheory.Category.{v, u} C] {F G : CategoryTheory.Functor C CategoryTheory.Cat} {α : F G} (X : CategoryTheory.Grothendieck F) :
              (CategoryTheory.Grothendieck.map α).obj X = { base := X.base, fiber := (α.app X.base).obj X.fiber }
              theorem CategoryTheory.Grothendieck.map_map {C : Type u} [CategoryTheory.Category.{v, u} C] {F G : CategoryTheory.Functor C CategoryTheory.Cat} {α : F G} {X Y : CategoryTheory.Grothendieck F} {f : X Y} :
              (CategoryTheory.Grothendieck.map α).map f = { base := f.base, fiber := CategoryTheory.CategoryStruct.comp ((CategoryTheory.eqToHom ).app X.fiber) ((α.app Y.base).map f.fiber) }

              Making the equality of functors into an isomorphism. Note: we should avoid equality of functors if possible, and we should prefer map_id_iso to map_id_eq whenever we can.

              Equations
              Instances For

                Making the equality of functors into an isomorphism. Note: we should avoid equality of functors if possible, and we should prefer map_comp_iso to map_comp_eq whenever we can.

                Equations
                Instances For

                  Taking the Grothendieck construction on F ⋙ asSmallFunctor, where asSmallFunctor : Cat ⥤ Cat is the functor which turns each category into a small category of a (potentiall) larger universe, is equivalent to the Grothendieck construction on F itself.

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

                    Mapping a Grothendieck construction along the whiskering of any natural transformation α : F ⟶ G with the functor asSmallFunctor : Cat ⥤ Cat is naturally isomorphic to conjugating map α with the equivalence between Grothendieck (F ⋙ asSmallFunctor) and Grothendieck F.

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

                      The Grothendieck construction as a functor from the functor category E ⥤ Cat to the over category Over E.

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

                        Auxiliary definition for grothendieckTypeToCat, to speed up elaboration.

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

                          Auxiliary definition for grothendieckTypeToCat, to speed up elaboration.

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

                            The Grothendieck construction applied to a functor to Type (thought of as a functor to Cat by realising a type as a discrete category) is the same as the 'category of elements' construction.

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

                              Applying a functor G : D ⥤ C to the base of the Grothendieck construction induces a functor Grothendieck (G ⋙ F) ⥤ Grothendieck F.

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

                                The inclusion of a fiber F.obj c of a functor F : C ⥤ Cat into its Grothendieck construction.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.Grothendieck.ι_obj {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor C CategoryTheory.Cat) (c : C) (d : (F.obj c)) :
                                  (CategoryTheory.Grothendieck.ι F c).obj d = { base := c, fiber := d }
                                  @[simp]
                                  theorem CategoryTheory.Grothendieck.ι_map {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor C CategoryTheory.Cat) (c : C) {X✝ Y✝ : (F.obj c)} (f : X✝ Y✝) :
                                  (CategoryTheory.Grothendieck.ι F c).map f = { base := CategoryTheory.CategoryStruct.id ((fun (d : (F.obj c)) => { base := c, fiber := d }) X✝).base, fiber := CategoryTheory.CategoryStruct.comp (CategoryTheory.eqToHom ) f }

                                  Every morphism f : X ⟶ Y in the base category induces a natural transformation from the fiber inclusion ι F X to the composition F.map f ⋙ ι F Y.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    def CategoryTheory.Grothendieck.functorFrom {C : Type u} [CategoryTheory.Category.{v, u} C] {F : CategoryTheory.Functor C CategoryTheory.Cat} {E : Type u_1} [CategoryTheory.Category.{u_2, u_1} E] (fib : (c : C) → CategoryTheory.Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c CategoryTheory.Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryTheory.CategoryStruct.id c) = CategoryTheory.eqToHom ) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (hom f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.whiskerLeft (F.map f) (hom g)) (CategoryTheory.eqToHom ))) :

                                    Construct a functor from Grothendieck F to another category E by providing a family of functors on the fibers of Grothendieck F, a family of natural transformations on morphisms in the base of Grothendieck F and coherence data for this family of natural transformations.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.Grothendieck.functorFrom_map {C : Type u} [CategoryTheory.Category.{v, u} C] {F : CategoryTheory.Functor C CategoryTheory.Cat} {E : Type u_1} [CategoryTheory.Category.{u_2, u_1} E] (fib : (c : C) → CategoryTheory.Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c CategoryTheory.Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryTheory.CategoryStruct.id c) = CategoryTheory.eqToHom ) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (hom f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.whiskerLeft (F.map f) (hom g)) (CategoryTheory.eqToHom ))) {X Y : CategoryTheory.Grothendieck F} (f : X Y) :
                                      (CategoryTheory.Grothendieck.functorFrom fib hom hom_id hom_comp).map f = CategoryTheory.CategoryStruct.comp ((hom f.base).app X.fiber) ((fib Y.base).map f.fiber)
                                      @[simp]
                                      theorem CategoryTheory.Grothendieck.functorFrom_obj {C : Type u} [CategoryTheory.Category.{v, u} C] {F : CategoryTheory.Functor C CategoryTheory.Cat} {E : Type u_1} [CategoryTheory.Category.{u_2, u_1} E] (fib : (c : C) → CategoryTheory.Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c CategoryTheory.Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryTheory.CategoryStruct.id c) = CategoryTheory.eqToHom ) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (hom f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.whiskerLeft (F.map f) (hom g)) (CategoryTheory.eqToHom ))) (X : CategoryTheory.Grothendieck F) :
                                      (CategoryTheory.Grothendieck.functorFrom fib hom hom_id hom_comp).obj X = (fib X.base).obj X.fiber
                                      def CategoryTheory.Grothendieck.ιCompFunctorFrom {C : Type u} [CategoryTheory.Category.{v, u} C] {F : CategoryTheory.Functor C CategoryTheory.Cat} {E : Type u_1} [CategoryTheory.Category.{u_2, u_1} E] (fib : (c : C) → CategoryTheory.Functor (↑(F.obj c)) E) (hom : {c c' : C} → (f : c c') → fib c CategoryTheory.Functor.comp (F.map f) (fib c')) (hom_id : ∀ (c : C), hom (CategoryTheory.CategoryStruct.id c) = CategoryTheory.eqToHom ) (hom_comp : ∀ (c₁ c₂ c₃ : C) (f : c₁ c₂) (g : c₂ c₃), hom (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (hom f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.whiskerLeft (F.map f) (hom g)) (CategoryTheory.eqToHom ))) (c : C) :
                                      (CategoryTheory.Grothendieck.ι F c).comp (CategoryTheory.Grothendieck.functorFrom fib (fun {c c' : C} => hom) hom_id hom_comp) fib c

                                      Grothendieck.ι F c composed with Grothendieck.functorFrom is isomorphic a functor on a fiber on F supplied as the first argument to Grothendieck.functorFrom.

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