Documentation

Mathlib.CategoryTheory.FiberedCategory.BasedCategory

The bicategory of based categories #

In this file we define the type BasedCategory 𝒮, and give it the structure of a strict bicategory. Given a category 𝒮, we define the type BasedCategory 𝒮 as the type of categories 𝒳 equipped with a functor 𝒳.p : 𝒳 ⥤ 𝒮.

We also define a type of functors between based categories 𝒳 and 𝒴, which we call BasedFunctor 𝒳 𝒴 and denote as 𝒳 ⥤ᵇ 𝒴. These are defined as functors between the underlying categories 𝒳.obj and 𝒴.obj which commute with the projections to 𝒮.

Natural transformations between based functors F G : 𝒳 ⥤ᵇ 𝒴 are given by the structure BasedNatTrans F G. These are defined as natural transformations α between the functors underlying F and G such that α.app a lifts 𝟙 S whenever 𝒳.p.obj a = S.

structure CategoryTheory.BasedCategory (𝒮 : Type u₁) [Category.{v₁, u₁} 𝒮] :
Type (max (max (max u₁ (u₂ + 1)) v₁) (v₂ + 1))

A based category over 𝒮 is a category 𝒳 together with a functor p : 𝒳 ⥤ 𝒮.

Instances For
    Equations
    def CategoryTheory.BasedCategory.ofFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : Type u₂} [Category.{v₂, u₂} 𝒳] (p : Functor 𝒳 𝒮) :

    The based category associated to a functor p : 𝒳 ⥤ 𝒮.

    Equations
    Instances For
      structure CategoryTheory.BasedFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) extends CategoryTheory.Functor 𝒳.obj 𝒴.obj :
      Type (max (max (max u₂ u₃) v₂) v₃)

      A functor between based categories is a functor between the underlying categories that commutes with the projections.

      Instances For
        def CategoryTheory.BasedFunctor.id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) :
        BasedFunctor 𝒳 𝒳

        The identity based functor.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.BasedFunctor.id_toFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) :
          (id 𝒳).toFunctor = Functor.id 𝒳.obj

          Notation for the identity functor on a based category.

          Equations
          Instances For
            def CategoryTheory.BasedFunctor.comp {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) (G : BasedFunctor 𝒴 𝒵) :
            BasedFunctor 𝒳 𝒵

            The composition of two based functors.

            Equations
            • F.comp G = { toFunctor := F.comp G.toFunctor, w := }
            Instances For
              @[simp]
              theorem CategoryTheory.BasedFunctor.comp_toFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) (G : BasedFunctor 𝒴 𝒵) :
              (F.comp G).toFunctor = F.comp G.toFunctor

              Notation for composition of based functors.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem CategoryTheory.BasedFunctor.comp_id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                F.comp (id 𝒴) = F
                @[simp]
                theorem CategoryTheory.BasedFunctor.id_comp {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                (id 𝒳).comp F = F
                @[simp]
                theorem CategoryTheory.BasedFunctor.comp_assoc {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} {𝒜 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) (G : BasedFunctor 𝒴 𝒵) (H : BasedFunctor 𝒵 𝒜) :
                (F.comp G).comp H = F.comp (G.comp H)
                @[simp]
                theorem CategoryTheory.BasedFunctor.w_obj {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) (a : 𝒳.obj) :
                𝒴.p.obj (F.obj a) = 𝒳.p.obj a
                instance CategoryTheory.BasedFunctor.instIsHomLiftObjPIdObj {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) (a : 𝒳.obj) :
                𝒴.p.IsHomLift (CategoryStruct.id (𝒳.p.obj a)) (CategoryStruct.id (F.obj a))
                instance CategoryTheory.BasedFunctor.preserves_isHomLift {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) {R S : 𝒮} {a b : 𝒳.obj} (f : R S) (φ : a b) [𝒳.p.IsHomLift f φ] :
                𝒴.p.IsHomLift f (F.map φ)

                For a based functor F : 𝒳 ⟶ 𝒴, then whenever an arrow φ in 𝒳 lifts some f in 𝒮, then F(φ) also lifts f.

                theorem CategoryTheory.BasedFunctor.isHomLift_map {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) {R S : 𝒮} {a b : 𝒳.obj} (f : R S) (φ : a b) [𝒴.p.IsHomLift f (F.map φ)] :
                𝒳.p.IsHomLift f φ

                For a based functor F : 𝒳 ⟶ 𝒴, and an arrow φ in 𝒳, then φ lifts an arrow f in 𝒮 if F(φ) does.

                theorem CategoryTheory.BasedFunctor.isHomLift_iff {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) {R S : 𝒮} {a b : 𝒳.obj} (f : R S) (φ : a b) :
                𝒴.p.IsHomLift f (F.map φ) 𝒳.p.IsHomLift f φ
                structure CategoryTheory.BasedNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F G : BasedFunctor 𝒳 𝒴) extends CategoryTheory.NatTrans F.toFunctor G.toFunctor :
                Type (max u₂ v₃)

                A BasedNatTrans between two BasedFunctors is a natural transformation α between the underlying functors, such that for all a : 𝒳, α.app a lifts 𝟙 S whenever 𝒳.p.obj a = S.

                Instances For
                  theorem CategoryTheory.BasedNatTrans.ext {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α β : BasedNatTrans F G) (h : α.toNatTrans = β.toNatTrans) :
                  α = β
                  instance CategoryTheory.BasedNatTrans.app_isHomLift {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : BasedNatTrans F G) (a : 𝒳.obj) :
                  𝒴.p.IsHomLift (CategoryStruct.id (𝒳.p.obj a)) (α.app a)
                  theorem CategoryTheory.BasedNatTrans.isHomLift {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : BasedNatTrans F G) {a : 𝒳.obj} {S : 𝒮} (ha : 𝒳.p.obj a = S) :
                  𝒴.p.IsHomLift (CategoryStruct.id S) (α.app a)
                  def CategoryTheory.BasedNatTrans.id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :

                  The identity natural transformation is a BasedNatTrans.

                  Equations
                  Instances For
                    @[simp]
                    theorem CategoryTheory.BasedNatTrans.id_toNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                    (id F).toNatTrans = NatTrans.id F.toFunctor
                    def CategoryTheory.BasedNatTrans.comp {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G H : BasedFunctor 𝒳 𝒴} (α : BasedNatTrans F G) (β : BasedNatTrans G H) :

                    Composition of BasedNatTrans, given by composition of the underlying natural transformations.

                    Equations
                    • α.comp β = { toNatTrans := α.vcomp β.toNatTrans, isHomLift' := }
                    Instances For
                      @[simp]
                      theorem CategoryTheory.BasedNatTrans.comp_toNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G H : BasedFunctor 𝒳 𝒴} (α : BasedNatTrans F G) (β : BasedNatTrans G H) :
                      (α.comp β).toNatTrans = α.vcomp β.toNatTrans
                      @[simp]
                      theorem CategoryTheory.BasedNatTrans.homCategory_id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) (F : BasedFunctor 𝒳 𝒴) :
                      @[simp]
                      theorem CategoryTheory.BasedNatTrans.homCategory_comp {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) {X✝ Y✝ Z✝ : BasedFunctor 𝒳 𝒴} (α : BasedNatTrans X✝ Y✝) (β : BasedNatTrans Y✝ Z✝) :
                      CategoryStruct.comp α β = α.comp β
                      theorem CategoryTheory.BasedNatTrans.homCategory.ext {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α β : F G) (h : α.toNatTrans = β.toNatTrans) :
                      α = β
                      def CategoryTheory.BasedNatTrans.forgetful {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) :
                      Functor (BasedFunctor 𝒳 𝒴) (Functor 𝒳.obj 𝒴.obj)

                      The forgetful functor from the category of based functors 𝒳 ⥤ᵇ 𝒴 to the category of functors of underlying categories, 𝒳.obj ⥤ 𝒴.obj.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem CategoryTheory.BasedNatTrans.forgetful_obj {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) (F : BasedFunctor 𝒳 𝒴) :
                        (forgetful 𝒳 𝒴).obj F = F.toFunctor
                        @[simp]
                        theorem CategoryTheory.BasedNatTrans.forgetful_map {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) {X✝ Y✝ : BasedFunctor 𝒳 𝒴} (α : X✝ Y✝) :
                        (forgetful 𝒳 𝒴).map α = α.toNatTrans
                        instance CategoryTheory.BasedNatTrans.instIsIsoFunctorObjOfBasedFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : F G) [IsIso α] :
                        IsIso α.toNatTrans
                        def CategoryTheory.BasedNatIso.id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                        F F

                        The identity natural transformation is a based natural isomorphism.

                        Equations
                        Instances For
                          @[simp]
                          theorem CategoryTheory.BasedNatIso.id_hom {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                          @[simp]
                          theorem CategoryTheory.BasedNatIso.id_inv {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                          def CategoryTheory.BasedNatIso.mkNatIso {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : F.toFunctor G.toFunctor) (isHomLift' : ∀ (a : 𝒳.obj), 𝒴.p.IsHomLift (CategoryStruct.id (𝒳.p.obj a)) (α.hom.app a)) :
                          F G

                          The inverse of a based natural transformation whose underlying natural transformation is an isomorphism.

                          Equations
                          • CategoryTheory.BasedNatIso.mkNatIso α isHomLift' = { hom := { toNatTrans := α.hom, isHomLift' := }, inv := { toNatTrans := α.inv, isHomLift' := }, hom_inv_id := , inv_hom_id := }
                          Instances For
                            theorem CategoryTheory.BasedNatIso.isIso_of_toNatTrans_isIso {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : F G) [IsIso α.toNatTrans] :
                            def CategoryTheory.BasedCategory.whiskerLeft {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) {G H : BasedFunctor 𝒴 𝒵} (α : G H) :
                            F.comp G F.comp H

                            Left-whiskering in the bicategory BasedCategory is given by whiskering the underlying functors and natural transformations.

                            Equations
                            Instances For
                              @[simp]
                              theorem CategoryTheory.BasedCategory.whiskerLeft_toNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) {G H : BasedFunctor 𝒴 𝒵} (α : G H) :
                              (whiskerLeft F α).toNatTrans = CategoryTheory.whiskerLeft F.toFunctor α.toNatTrans
                              def CategoryTheory.BasedCategory.whiskerRight {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : F G) (H : BasedFunctor 𝒴 𝒵) :
                              F.comp H G.comp H

                              Right-whiskering in the bicategory BasedCategory is given by whiskering the underlying functors and natural transformations.

                              Equations
                              Instances For
                                @[simp]
                                theorem CategoryTheory.BasedCategory.whiskerRight_toNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : F G) (H : BasedFunctor 𝒴 𝒵) :
                                (whiskerRight α H).toNatTrans = CategoryTheory.whiskerRight α.toNatTrans H.toFunctor
                                @[simp]
                                theorem CategoryTheory.BasedCategory.instCategory_comp {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {X✝ Y✝ Z✝ : BasedCategory 𝒮} (F : BasedFunctor X✝ Y✝) (G : BasedFunctor Y✝ Z✝) :
                                CategoryStruct.comp F G = F.comp G

                                The bicategory of based categories.

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

                                The bicategory structure on BasedCategory.{v₂, u₂} 𝒮 is strict.