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
    @[implicit_reducible]
    def CategoryTheory.BasedCategory.ofFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : Type u₂} [Category.{v₂, u₂} 𝒳] (p : Functor 𝒳 𝒮) :

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

    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.«term_⥤ᵇ_» :
        Lean.TrailingParserDescr

        Notation for BasedFunctor.

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

          The identity based functor.

          Instances For

            Notation for the identity functor on a based category.

            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.

              Instances For
                @[simp]
                theorem CategoryTheory.BasedFunctor.comp_toFunctor {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) (G : BasedFunctor 𝒴 𝒵) :
                def CategoryTheory.BasedFunctor.«term_⋙_» :
                Lean.TrailingParserDescr

                Notation for composition of based functors.

                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) :
                  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) :
                    α = β
                    theorem CategoryTheory.BasedNatTrans.ext_iff {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} {α β : BasedNatTrans F G} :
                    α = β α.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) :
                    def CategoryTheory.BasedNatTrans.id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :

                    The identity natural transformation is a BasedNatTrans.

                    Instances For
                      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.

                      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) :
                        @[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✝) :
                        theorem CategoryTheory.BasedNatTrans.homCategory.ext {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α β : F G) (h : α.toNatTrans = β.toNatTrans) :
                        α = β
                        theorem CategoryTheory.BasedNatTrans.homCategory.ext_iff {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} {α β : F G} :
                        α = β α.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.

                        Instances For
                          @[simp]
                          theorem CategoryTheory.BasedNatTrans.forgetful_map {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) {X✝ Y✝ : BasedFunctor 𝒳 𝒴} (α : X✝ Y✝) :
                          (forgetful 𝒳 𝒴).map α = α.toNatTrans
                          @[simp]
                          theorem CategoryTheory.BasedNatTrans.forgetful_obj {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] (𝒳 : BasedCategory 𝒮) (𝒴 : BasedCategory 𝒮) (F : BasedFunctor 𝒳 𝒴) :
                          (forgetful 𝒳 𝒴).obj F = F.toFunctor
                          def CategoryTheory.BasedNatIso.id {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) :
                          F F

                          The identity natural transformation is a based natural isomorphism.

                          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.

                            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.

                              Instances For
                                @[simp]
                                theorem CategoryTheory.BasedCategory.whiskerLeft_toNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} (F : BasedFunctor 𝒳 𝒴) {G H : BasedFunctor 𝒴 𝒵} (α : G H) :
                                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.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.BasedCategory.whiskerRight_toNatTrans {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {𝒳 : BasedCategory 𝒮} {𝒴 : BasedCategory 𝒮} {𝒵 : BasedCategory 𝒮} {F G : BasedFunctor 𝒳 𝒴} (α : F G) (H : BasedFunctor 𝒴 𝒵) :
                                  @[simp]
                                  theorem CategoryTheory.BasedCategory.comp_def {𝒮 : Type u₁} [Category.{v₁, u₁} 𝒮] {X✝ Y✝ Z✝ : BasedCategory 𝒮} (F : BasedFunctor X✝ Y✝) (G : BasedFunctor Y✝ Z✝) :
                                  @[implicit_reducible]

                                  The bicategory of based categories.

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