File: Mathlib/CategoryTheory/FiberedCategory/BasedCategory.lean

full_name: CategoryTheory.BasedCategory
code: /-- A based category over `𝒮` is a category `𝒳` together with a functor `p : 𝒳 ⥤ 𝒮`. -/
@[nolint checkUnivs]
structure BasedCategory (𝒮 : Type u₁) [Category.{v₁} 𝒮] where
  /-- The type of objects in a `BasedCategory`-/
  obj : Type u₂
  /-- The underlying category of a `BasedCategory`. -/
  category : Category.{v₂} obj := by infer_instance
  /-- The functor to the base. -/
  p : obj ⥤ 𝒮
goal: Type (max (max (max u₁ (u₂ + 1)) v₁) (v₂ + 1))

full_name: CategoryTheory.BasedCategory.p
code: /-- A based category over `𝒮` is a category `𝒳` together with a functor `p : 𝒳 ⥤ 𝒮`. -/
@[nolint checkUnivs]
structure BasedCategory (𝒮 : Type u₁) [Category.{v₁} 𝒮] where
  /-- The type of objects in a `BasedCategory`-/
  obj : Type u₂
  /-- The underlying category of a `BasedCategory`. -/
  category : Category.{v₂} obj := by infer_instance
  /-- The functor to the base. -/
  p : obj ⥤ 𝒮
goal: CategoryTheory.Functor self.obj 𝒮

full_name: CategoryTheory.BasedCategory.category
code: /-- A based category over `𝒮` is a category `𝒳` together with a functor `p : 𝒳 ⥤ 𝒮`. -/
@[nolint checkUnivs]
structure BasedCategory (𝒮 : Type u₁) [Category.{v₁} 𝒮] where
  /-- The type of objects in a `BasedCategory`-/
  obj : Type u₂
  /-- The underlying category of a `BasedCategory`. -/
  category : Category.{v₂} obj := by infer_instance
  /-- The functor to the base. -/
  p : obj ⥤ 𝒮
goal: CategoryTheory.Category.{v₂, u₂} self.obj

full_name: CategoryTheory.BasedCategory.obj
code: /-- A based category over `𝒮` is a category `𝒳` together with a functor `p : 𝒳 ⥤ 𝒮`. -/
@[nolint checkUnivs]
structure BasedCategory (𝒮 : Type u₁) [Category.{v₁} 𝒮] where
  /-- The type of objects in a `BasedCategory`-/
  obj : Type u₂
  /-- The underlying category of a `BasedCategory`. -/
  category : Category.{v₂} obj := by infer_instance
  /-- The functor to the base. -/
  p : obj ⥤ 𝒮
goal: Type u₂

full_name: CategoryTheory.instCategoryObj
code: instance (𝒳 : BasedCategory.{v₂, u₂} 𝒮) : Category 𝒳.obj 
goal: CategoryTheory.Category.{v₂, u₂} 𝒳.obj

full_name: CategoryTheory.BasedCategory.ofFunctor
code: /-- The based category associated to a functor `p : 𝒳 ⥤ 𝒮`. -/
def BasedCategory.ofFunctor {𝒳 : Type u₂} [Category.{v₂} 𝒳] (p : 𝒳 ⥤ 𝒮) : BasedCategory 𝒮 
goal: CategoryTheory.BasedCategory 𝒮

full_name: CategoryTheory.BasedFunctor
code: /-- A functor between based categories is a functor between the underlying categories that commutes
with the projections. -/
structure BasedFunctor (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) extends
    𝒳.obj ⥤ 𝒴.obj where
  w : toFunctor ⋙ 𝒴.p = 𝒳.p := by aesop_cat
goal: Type (max (max (max u₂ u₃) v₂) v₃)

full_name: CategoryTheory.BasedFunctor.w
code: /-- A functor between based categories is a functor between the underlying categories that commutes
with the projections. -/
structure BasedFunctor (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) extends
    𝒳.obj ⥤ 𝒴.obj where
  w : toFunctor ⋙ 𝒴.p = 𝒳.p := by aesop_cat
goal: self.comp 𝒴.p = 𝒳.p

full_name: CategoryTheory._aux_Mathlib_CategoryTheory_FiberedCategory_BasedCategory___unexpand_CategoryTheory_BasedFunctor_1
code: /-- Notation for `BasedFunctor`. -/
scoped infixr:26 " ⥤ᵇ " => BasedFunctor
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.«_aux_Mathlib_CategoryTheory_FiberedCategory_BasedCategory___macroRules_CategoryTheory_term_⥤ᵇ__1»
code: /-- Notation for `BasedFunctor`. -/
scoped infixr:26 " ⥤ᵇ " => BasedFunctor
goal: Lean.Macro

full_name: CategoryTheory.BasedFunctor.id
code: /-- The identity based functor. -/
@[simps]
def id (𝒳 : BasedCategory.{v₂, u₂} 𝒮) : 𝒳 ⥤ᵇ 𝒳 
goal: CategoryTheory.BasedFunctor 𝒳 𝒳

full_name: CategoryTheory.BasedFunctor.id_toFunctor
code: /-- The identity based functor. -/
@[simps]
def id (𝒳 : BasedCategory.{v₂, u₂} 𝒮) : 𝒳 ⥤ᵇ 𝒳 
goal: (CategoryTheory.BasedFunctor.id 𝒳).toFunctor = CategoryTheory.Functor.id 𝒳.obj

full_name: CategoryTheory.BasedFunctor.«_aux_Mathlib_CategoryTheory_FiberedCategory_BasedCategory___macroRules_CategoryTheory_BasedFunctor_term𝟭_1»
code: /-- Notation for the identity functor on a based category. -/
scoped notation "𝟭" => BasedFunctor.id
goal: Lean.Macro

full_name: CategoryTheory.BasedFunctor._aux_Mathlib_CategoryTheory_FiberedCategory_BasedCategory___unexpand_CategoryTheory_BasedFunctor_id_1
code: /-- Notation for the identity functor on a based category. -/
scoped notation "𝟭" => BasedFunctor.id
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.BasedFunctor.comp_toFunctor
code: /-- The composition of two based functors. -/
@[simps]
def comp {𝒵 : BasedCategory.{v₄, u₄} 𝒮} (F : 𝒳 ⥤ᵇ 𝒴) (G : 𝒴 ⥤ᵇ 𝒵) : 𝒳 ⥤ᵇ 𝒵 
goal: (F.comp G).toFunctor = F.comp G.toFunctor

full_name: CategoryTheory.BasedFunctor.comp
code: /-- The composition of two based functors. -/
@[simps]
def comp {𝒵 : BasedCategory.{v₄, u₄} 𝒮} (F : 𝒳 ⥤ᵇ 𝒴) (G : 𝒴 ⥤ᵇ 𝒵) : 𝒳 ⥤ᵇ 𝒵 
goal: CategoryTheory.BasedFunctor 𝒳 𝒵

full_name: CategoryTheory.BasedFunctor._aux_Mathlib_CategoryTheory_FiberedCategory_BasedCategory___unexpand_CategoryTheory_BasedFunctor_comp_1
code: /-- Notation for composition of based functors. -/
scoped infixr:80 " ⋙ " => BasedFunctor.comp
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.BasedFunctor.«_aux_Mathlib_CategoryTheory_FiberedCategory_BasedCategory___macroRules_CategoryTheory_BasedFunctor_term_⋙__1»
code: /-- Notation for composition of based functors. -/
scoped infixr:80 " ⋙ " => BasedFunctor.comp
goal: Lean.Macro

full_name: CategoryTheory.BasedFunctor.comp_id
code: @[simp]
lemma comp_id (F : 𝒳 ⥤ᵇ 𝒴) :  F ⋙ 𝟭 𝒴 = F 
goal: F.comp (CategoryTheory.BasedFunctor.id 𝒴) = F

full_name: CategoryTheory.BasedFunctor.id_comp
code: @[simp]
lemma id_comp (F : 𝒳 ⥤ᵇ 𝒴) : 𝟭 𝒳 ⋙ F = F 
goal: (CategoryTheory.BasedFunctor.id 𝒳).comp F = F

full_name: CategoryTheory.BasedFunctor.comp_assoc
code: @[simp]
lemma comp_assoc {𝒵 : BasedCategory.{v₄, u₄} 𝒮} {𝒜 : BasedCategory.{v₅, u₅} 𝒮} (F : 𝒳 ⥤ᵇ 𝒴)
    (G : 𝒴 ⥤ᵇ 𝒵) (H : 𝒵 ⥤ᵇ 𝒜) : (F ⋙ G) ⋙ H = F ⋙ (G ⋙ H) 
goal: (F.comp G).comp H = F.comp (G.comp H)

full_name: CategoryTheory.BasedFunctor.w_obj
code: @[simp]
lemma w_obj (F : 𝒳 ⥤ᵇ 𝒴) (a : 𝒳.obj) : 𝒴.p.obj (F.obj a) = 𝒳.p.obj a 
goal: 𝒴.p.obj (F.obj a) = 𝒳.p.obj a

full_name: CategoryTheory.BasedFunctor.instIsHomLiftObjPIdObj
code: instance (F : 𝒳 ⥤ᵇ 𝒴) (a : 𝒳.obj) : IsHomLift 𝒴.p (𝟙 (𝒳.p.obj a)) (𝟙 (F.obj a)) 
goal: 𝒴.p.IsHomLift (CategoryTheory.CategoryStruct.id (𝒳.p.obj a)) (CategoryTheory.CategoryStruct.id (F.obj a))

full_name: CategoryTheory.BasedFunctor.preserves_isHomLift
code: /-- For a based functor `F : 𝒳 ⟶ 𝒴`, then whenever an arrow `φ` in `𝒳` lifts some `f` in `𝒮`,
then `F(φ)` also lifts `f`. -/
instance preserves_isHomLift [IsHomLift 𝒳.p f φ] : IsHomLift 𝒴.p f (F.map φ) 
goal: 𝒴.p.IsHomLift f (F.map φ)

full_name: CategoryTheory.BasedFunctor.isHomLift_map
code: /-- For a based functor `F : 𝒳 ⟶ 𝒴`, and an arrow `φ` in `𝒳`, then `φ` lifts an arrow `f` in `𝒮`
if `F(φ)` does. -/
lemma isHomLift_map [IsHomLift 𝒴.p f (F.map φ)] : IsHomLift 𝒳.p f φ 
goal: 𝒳.p.IsHomLift f φ

full_name: CategoryTheory.BasedFunctor.isHomLift_iff
code: lemma isHomLift_iff : IsHomLift 𝒴.p f (F.map φ) ↔ IsHomLift 𝒳.p f φ 
goal: 𝒴.p.IsHomLift f (F.map φ) ↔ 𝒳.p.IsHomLift f φ

full_name: CategoryTheory.BasedNatTrans.isHomLift'
code: /-- A `BasedNatTrans` between two `BasedFunctor`s is a natural transformation `α` between the
underlying functors, such that for all `a : 𝒳`, `α.app a` lifts `𝟙 S` whenever `𝒳.p.obj a = S`. -/
structure BasedNatTrans {𝒳 : BasedCategory.{v₂, u₂} 𝒮} {𝒴 : BasedCategory.{v₃, u₃} 𝒮}
    (F G : 𝒳 ⥤ᵇ 𝒴) extends CategoryTheory.NatTrans F.toFunctor G.toFunctor where
  isHomLift' : ∀ (a : 𝒳.obj), IsHomLift 𝒴.p (𝟙 (𝒳.p.obj a)) (toNatTrans.app a) := by aesop_cat
goal: 𝒴.p.IsHomLift (CategoryTheory.CategoryStruct.id (𝒳.p.obj a)) (self.app a)

full_name: CategoryTheory.BasedNatTrans
code: /-- A `BasedNatTrans` between two `BasedFunctor`s is a natural transformation `α` between the
underlying functors, such that for all `a : 𝒳`, `α.app a` lifts `𝟙 S` whenever `𝒳.p.obj a = S`. -/
structure BasedNatTrans {𝒳 : BasedCategory.{v₂, u₂} 𝒮} {𝒴 : BasedCategory.{v₃, u₃} 𝒮}
    (F G : 𝒳 ⥤ᵇ 𝒴) extends CategoryTheory.NatTrans F.toFunctor G.toFunctor where
  isHomLift' : ∀ (a : 𝒳.obj), IsHomLift 𝒴.p (𝟙 (𝒳.p.obj a)) (toNatTrans.app a) := by aesop_cat
goal: Type (max u₂ v₃)

full_name: CategoryTheory.BasedNatTrans.ext
code: @[ext]
lemma ext (β : BasedNatTrans F G) (h : α.toNatTrans = β.toNatTrans) : α = β 
goal: α = β

full_name: CategoryTheory.BasedNatTrans.app_isHomLift
code: instance app_isHomLift (a : 𝒳.obj) : IsHomLift 𝒴.p (𝟙 (𝒳.p.obj a)) (α.toNatTrans.app a) 
goal: 𝒴.p.IsHomLift (CategoryTheory.CategoryStruct.id (𝒳.p.obj a)) (α.app a)

full_name: CategoryTheory.BasedNatTrans.isHomLift
code: lemma isHomLift {a : 𝒳.obj} {S : 𝒮} (ha : 𝒳.p.obj a = S) :
    IsHomLift 𝒴.p (𝟙 S) (α.toNatTrans.app a) 
goal: 𝒴.p.IsHomLift (CategoryTheory.CategoryStruct.id S) (α.app a)

full_name: CategoryTheory.BasedNatTrans.id
code: /-- The identity natural transformation is a `BasedNatTrans`. -/
@[simps]
def id (F : 𝒳 ⥤ᵇ 𝒴) : BasedNatTrans F F 
goal: CategoryTheory.BasedNatTrans F F

full_name: CategoryTheory.BasedNatTrans.id_toNatTrans
code: /-- The identity natural transformation is a `BasedNatTrans`. -/
@[simps]
def id (F : 𝒳 ⥤ᵇ 𝒴) : BasedNatTrans F F 
goal: (CategoryTheory.BasedNatTrans.id F).toNatTrans = CategoryTheory.NatTrans.id F.toFunctor

full_name: CategoryTheory.BasedNatTrans.comp_toNatTrans
code: /-- Composition of `BasedNatTrans`, given by composition of the underlying natural
transformations. -/
@[simps]
def comp {F G H : 𝒳 ⥤ᵇ 𝒴} (α : BasedNatTrans F G) (β : BasedNatTrans G H) : BasedNatTrans F H 
goal: (α.comp β).toNatTrans = α.vcomp β.toNatTrans

full_name: CategoryTheory.BasedNatTrans.comp
code: /-- Composition of `BasedNatTrans`, given by composition of the underlying natural
transformations. -/
@[simps]
def comp {F G H : 𝒳 ⥤ᵇ 𝒴} (α : BasedNatTrans F G) (β : BasedNatTrans G H) : BasedNatTrans F H 
goal: CategoryTheory.BasedNatTrans F H

full_name: CategoryTheory.BasedNatTrans.homCategory_comp
code: @[simps]
instance homCategory (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) :
    Category (𝒳 ⥤ᵇ 𝒴) 
goal: ∀ {X Y Z : CategoryTheory.BasedFunctor 𝒳 𝒴} (α : CategoryTheory.BasedNatTrans X Y)
  (β : CategoryTheory.BasedNatTrans Y Z), CategoryTheory.CategoryStruct.comp α β = α.comp β

full_name: CategoryTheory.BasedNatTrans.homCategory
code: @[simps]
instance homCategory (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) :
    Category (𝒳 ⥤ᵇ 𝒴) 
goal: CategoryTheory.Category.{max u₂ v₃, max (max (max u₂ v₂) u₃) v₃} (CategoryTheory.BasedFunctor 𝒳 𝒴)

full_name: CategoryTheory.BasedNatTrans.homCategory_id
code: @[simps]
instance homCategory (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) :
    Category (𝒳 ⥤ᵇ 𝒴) 
goal: CategoryTheory.CategoryStruct.id F = CategoryTheory.BasedNatTrans.id F

full_name: CategoryTheory.BasedNatTrans.homCategory.ext
code: @[ext]
lemma homCategory.ext {F G : 𝒳 ⥤ᵇ 𝒴} (α β : F ⟶ G) (h : α.toNatTrans = β.toNatTrans) : α = β 
goal: α = β

full_name: CategoryTheory.BasedNatTrans.forgetful_map
code: /-- The forgetful functor from the category of based functors `𝒳 ⥤ᵇ 𝒴` to the category of
functors of underlying categories, `𝒳.obj ⥤ 𝒴.obj`. -/
@[simps]
def forgetful (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) :
    (𝒳 ⥤ᵇ 𝒴) ⥤ (𝒳.obj ⥤ 𝒴.obj) 
goal: ∀ {X Y : CategoryTheory.BasedFunctor 𝒳 𝒴} (α : X ⟶ Y), (CategoryTheory.BasedNatTrans.forgetful 𝒳 𝒴).map α = α.toNatTrans

full_name: CategoryTheory.BasedNatTrans.forgetful
code: /-- The forgetful functor from the category of based functors `𝒳 ⥤ᵇ 𝒴` to the category of
functors of underlying categories, `𝒳.obj ⥤ 𝒴.obj`. -/
@[simps]
def forgetful (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) :
    (𝒳 ⥤ᵇ 𝒴) ⥤ (𝒳.obj ⥤ 𝒴.obj) 
goal: CategoryTheory.Functor (CategoryTheory.BasedFunctor 𝒳 𝒴) (CategoryTheory.Functor 𝒳.obj 𝒴.obj)

full_name: CategoryTheory.BasedNatTrans.forgetful_obj
code: /-- The forgetful functor from the category of based functors `𝒳 ⥤ᵇ 𝒴` to the category of
functors of underlying categories, `𝒳.obj ⥤ 𝒴.obj`. -/
@[simps]
def forgetful (𝒳 : BasedCategory.{v₂, u₂} 𝒮) (𝒴 : BasedCategory.{v₃, u₃} 𝒮) :
    (𝒳 ⥤ᵇ 𝒴) ⥤ (𝒳.obj ⥤ 𝒴.obj) 
goal: (CategoryTheory.BasedNatTrans.forgetful 𝒳 𝒴).obj F = F.toFunctor

full_name: CategoryTheory.BasedNatTrans.instReflectsIsomorphismsBasedFunctorFunctorObjForgetful
code: instance : (forgetful 𝒳 𝒴).ReflectsIsomorphisms 
goal: (CategoryTheory.BasedNatTrans.forgetful 𝒳 𝒴).ReflectsIsomorphisms

full_name: CategoryTheory.BasedNatTrans.instIsIsoFunctorObjOfBasedFunctor
code: instance {F G : 𝒳 ⥤ᵇ 𝒴} (α : F ⟶ G) [IsIso α] : IsIso (X := F.toFunctor) α.toNatTrans 
goal: CategoryTheory.IsIso α.toNatTrans

full_name: CategoryTheory.BasedNatIso.id_inv
code: /-- The identity natural transformation is a based natural isomorphism. -/
@[simps]
def id (F : 𝒳 ⥤ᵇ 𝒴) : F ≅ F 
goal: (CategoryTheory.BasedNatIso.id F).inv = CategoryTheory.CategoryStruct.id F

full_name: CategoryTheory.BasedNatIso.id
code: /-- The identity natural transformation is a based natural isomorphism. -/
@[simps]
def id (F : 𝒳 ⥤ᵇ 𝒴) : F ≅ F 
goal: F ≅ F

full_name: CategoryTheory.BasedNatIso.id_hom
code: /-- The identity natural transformation is a based natural isomorphism. -/
@[simps]
def id (F : 𝒳 ⥤ᵇ 𝒴) : F ≅ F 
goal: (CategoryTheory.BasedNatIso.id F).hom = CategoryTheory.CategoryStruct.id F

full_name: CategoryTheory.BasedNatIso.mkNatIso
code: /-- The inverse of a based natural transformation whose underlying natural tranformation is an
isomorphism. -/
def mkNatIso (α : F.toFunctor ≅ G.toFunctor)
    (isHomLift' : ∀ a : 𝒳.obj, IsHomLift 𝒴.p (𝟙 (𝒳.p.obj a)) (α.hom.app a)) : F ≅ G 
goal: F ≅ G

full_name: CategoryTheory.BasedNatIso.isIso_of_toNatTrans_isIso
code: lemma isIso_of_toNatTrans_isIso (α : F ⟶ G) [IsIso (X := F.toFunctor) α.toNatTrans] : IsIso α 
goal: CategoryTheory.IsIso α

full_name: CategoryTheory.BasedCategory.whiskerLeft_toNatTrans
code: /-- Left-whiskering in the bicategory `BasedCategory` is given by whiskering the underlying functors
and natural transformations. -/
@[simps]
def whiskerLeft {𝒵 : BasedCategory.{v₄, u₄} 𝒮} (F : 𝒳 ⥤ᵇ 𝒴) {G H : 𝒴 ⥤ᵇ 𝒵} (α : G ⟶ H) :
    F ⋙ G ⟶ F ⋙ H 
goal: (CategoryTheory.BasedCategory.whiskerLeft F α).toNatTrans = CategoryTheory.whiskerLeft F.toFunctor α.toNatTrans

full_name: CategoryTheory.BasedCategory.whiskerLeft
code: /-- Left-whiskering in the bicategory `BasedCategory` is given by whiskering the underlying functors
and natural transformations. -/
@[simps]
def whiskerLeft {𝒵 : BasedCategory.{v₄, u₄} 𝒮} (F : 𝒳 ⥤ᵇ 𝒴) {G H : 𝒴 ⥤ᵇ 𝒵} (α : G ⟶ H) :
    F ⋙ G ⟶ F ⋙ H 
goal: F.comp G ⟶ F.comp H

full_name: CategoryTheory.BasedCategory.whiskerRight
code: /-- Right-whiskering in the bicategory `BasedCategory` is given by whiskering the underlying
functors and natural transformations. -/
@[simps]
def whiskerRight {𝒵 : BasedCategory.{v₄, u₄} 𝒮} {F G : 𝒳 ⥤ᵇ 𝒴} (α : F ⟶ G) (H : 𝒴 ⥤ᵇ 𝒵) :
    F ⋙ H ⟶ G ⋙ H 
goal: F.comp H ⟶ G.comp H

full_name: CategoryTheory.BasedCategory.whiskerRight_toNatTrans
code: /-- Right-whiskering in the bicategory `BasedCategory` is given by whiskering the underlying
functors and natural transformations. -/
@[simps]
def whiskerRight {𝒵 : BasedCategory.{v₄, u₄} 𝒮} {F G : 𝒳 ⥤ᵇ 𝒴} (α : F ⟶ G) (H : 𝒴 ⥤ᵇ 𝒵) :
    F ⋙ H ⟶ G ⋙ H 
goal: (CategoryTheory.BasedCategory.whiskerRight α H).toNatTrans = CategoryTheory.whiskerRight α.toNatTrans H.toFunctor

full_name: CategoryTheory.BasedCategory.instCategory
code: /-- The category of based categories. -/
@[simps]
instance : Category (BasedCategory.{v₂, u₂} 𝒮) 
goal: CategoryTheory.Category.{max u₂ v₂, max (max (max (u₂ + 1) (v₂ + 1)) u₁) v₁} (CategoryTheory.BasedCategory 𝒮)

full_name: CategoryTheory.BasedCategory.instCategory_id
code: /-- The category of based categories. -/
@[simps]
instance : Category (BasedCategory.{v₂, u₂} 𝒮) 
goal: CategoryTheory.CategoryStruct.id 𝒳 = CategoryTheory.BasedFunctor.id 𝒳

full_name: CategoryTheory.BasedCategory.instCategory_comp
code: /-- The category of based categories. -/
@[simps]
instance : Category (BasedCategory.{v₂, u₂} 𝒮) 
goal: ∀ {X Y Z : CategoryTheory.BasedCategory 𝒮} (F : CategoryTheory.BasedFunctor X Y) (G : CategoryTheory.BasedFunctor Y Z),
  CategoryTheory.CategoryStruct.comp F G = F.comp G

full_name: CategoryTheory.BasedCategory.bicategory
code: /-- The bicategory of based categories. -/
instance bicategory : Bicategory (BasedCategory.{v₂, u₂} 𝒮) 
goal: CategoryTheory.Bicategory (CategoryTheory.BasedCategory 𝒮)

full_name: CategoryTheory.BasedCategory.instStrict
code: /-- The bicategory structure on `BasedCategory.{v₂, u₂} 𝒮` is strict. -/
instance : Bicategory.Strict (BasedCategory.{v₂, u₂} 𝒮) 
goal: CategoryTheory.Bicategory.Strict (CategoryTheory.BasedCategory 𝒮)