File: Mathlib/CategoryTheory/Bicategory/Adjunction.lean

full_name: CategoryTheory.Bicategory.leftZigzag
code: /-- The 2-morphism defined by the following pasting diagram:
```
a －－－－－－ ▸ a
  ＼    η      ◥   ＼
  f ＼   g  ／       ＼ f
       ◢  ／     ε      ◢
        b －－－－－－ ▸ b
```
-/
def leftZigzag (η : 𝟙 a ⟶ f ≫ g) (ε : g ≫ f ⟶ 𝟙 b) 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.id a) f ⟶
  CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.id b)

full_name: CategoryTheory.Bicategory.rightZigzag
code: /-- The 2-morphism defined by the following pasting diagram:
```
        a －－－－－－ ▸ a
       ◥  ＼     η      ◥
  g ／      ＼ f     ／ g
  ／    ε      ◢   ／
b －－－－－－ ▸ b
```
-/
def rightZigzag (η : 𝟙 a ⟶ f ≫ g) (ε : g ≫ f ⟶ 𝟙 b) 
goal: CategoryTheory.CategoryStruct.comp g (CategoryTheory.CategoryStruct.id a) ⟶
  CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.id b) g

full_name: CategoryTheory.Bicategory.rightZigzag_idempotent_of_left_triangle
code: theorem rightZigzag_idempotent_of_left_triangle
    (η : 𝟙 a ⟶ f ≫ g) (ε : g ≫ f ⟶ 𝟙 b) (h : leftZigzag η ε = (λ_ _).hom ≫ (ρ_ _).inv) :
    rightZigzag η ε ⊗≫ rightZigzag η ε = rightZigzag η ε 
goal: CategoryTheory.bicategoricalComp (CategoryTheory.Bicategory.rightZigzag η ε)
    (CategoryTheory.Bicategory.rightZigzag η ε) =
  CategoryTheory.Bicategory.rightZigzag η ε

full_name: CategoryTheory.Bicategory.Adjunction.left_triangle
code: /-- Adjunction between two 1-morphisms. -/
structure Adjunction (f : a ⟶ b) (g : b ⟶ a) where
  /-- The unit of an adjunction. -/
  unit : 𝟙 a ⟶ f ≫ g
  /-- The counit of an adjunction. -/
  counit : g ≫ f ⟶ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzag unit counit = (λ_ _).hom ≫ (ρ_ _).inv := by aesop_cat
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  right_triangle : rightZigzag unit counit = (ρ_ _).hom ≫ (λ_ _).inv := by aesop_cat
goal: CategoryTheory.Bicategory.leftZigzag self.unit self.counit =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.leftUnitor f).hom
    (CategoryTheory.Bicategory.rightUnitor f).inv

full_name: CategoryTheory.Bicategory.Adjunction
code: /-- Adjunction between two 1-morphisms. -/
structure Adjunction (f : a ⟶ b) (g : b ⟶ a) where
  /-- The unit of an adjunction. -/
  unit : 𝟙 a ⟶ f ≫ g
  /-- The counit of an adjunction. -/
  counit : g ≫ f ⟶ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzag unit counit = (λ_ _).hom ≫ (ρ_ _).inv := by aesop_cat
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  right_triangle : rightZigzag unit counit = (ρ_ _).hom ≫ (λ_ _).inv := by aesop_cat
goal: Type w

full_name: CategoryTheory.Bicategory.Adjunction.counit
code: /-- Adjunction between two 1-morphisms. -/
structure Adjunction (f : a ⟶ b) (g : b ⟶ a) where
  /-- The unit of an adjunction. -/
  unit : 𝟙 a ⟶ f ≫ g
  /-- The counit of an adjunction. -/
  counit : g ≫ f ⟶ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzag unit counit = (λ_ _).hom ≫ (ρ_ _).inv := by aesop_cat
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  right_triangle : rightZigzag unit counit = (ρ_ _).hom ≫ (λ_ _).inv := by aesop_cat
goal: CategoryTheory.CategoryStruct.comp g f ⟶ CategoryTheory.CategoryStruct.id b

full_name: CategoryTheory.Bicategory.Adjunction.right_triangle
code: /-- Adjunction between two 1-morphisms. -/
structure Adjunction (f : a ⟶ b) (g : b ⟶ a) where
  /-- The unit of an adjunction. -/
  unit : 𝟙 a ⟶ f ≫ g
  /-- The counit of an adjunction. -/
  counit : g ≫ f ⟶ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzag unit counit = (λ_ _).hom ≫ (ρ_ _).inv := by aesop_cat
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  right_triangle : rightZigzag unit counit = (ρ_ _).hom ≫ (λ_ _).inv := by aesop_cat
goal: CategoryTheory.Bicategory.rightZigzag self.unit self.counit =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.rightUnitor g).hom
    (CategoryTheory.Bicategory.leftUnitor g).inv

full_name: CategoryTheory.Bicategory.Adjunction.unit
code: /-- Adjunction between two 1-morphisms. -/
structure Adjunction (f : a ⟶ b) (g : b ⟶ a) where
  /-- The unit of an adjunction. -/
  unit : 𝟙 a ⟶ f ≫ g
  /-- The counit of an adjunction. -/
  counit : g ≫ f ⟶ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzag unit counit = (λ_ _).hom ≫ (ρ_ _).inv := by aesop_cat
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  right_triangle : rightZigzag unit counit = (ρ_ _).hom ≫ (λ_ _).inv := by aesop_cat
goal: CategoryTheory.CategoryStruct.id a ⟶ CategoryTheory.CategoryStruct.comp f g

full_name: CategoryTheory.Bicategory.«_aux_Mathlib_CategoryTheory_Bicategory_Adjunction___macroRules_CategoryTheory_Bicategory_term_⊣__1»
code: @[inherit_doc] scoped infixr:15 " ⊣ " => Bicategory.Adjunction
goal: Lean.Macro

full_name: CategoryTheory.Bicategory._aux_Mathlib_CategoryTheory_Bicategory_Adjunction___unexpand_CategoryTheory_Bicategory_Adjunction_1
code: @[inherit_doc] scoped infixr:15 " ⊣ " => Bicategory.Adjunction
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.Bicategory.Adjunction.id
code: /-- Adjunction between identities. -/
def id (a : B) : 𝟙 a ⊣ 𝟙 a 
goal: CategoryTheory.Bicategory.Adjunction (CategoryTheory.CategoryStruct.id a) (CategoryTheory.CategoryStruct.id a)

full_name: CategoryTheory.Bicategory.Adjunction.instInhabitedId
code: instance : Inhabited (Adjunction (𝟙 a) (𝟙 a)) 
goal: Inhabited
  (CategoryTheory.Bicategory.Adjunction (CategoryTheory.CategoryStruct.id a) (CategoryTheory.CategoryStruct.id a))

full_name: CategoryTheory.Bicategory.Adjunction.compUnit
code: /-- Auxiliary definition for `adjunction.comp`. -/
@[simp]
def compUnit (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) : 𝟙 a ⟶ (f₁ ≫ f₂) ≫ g₂ ≫ g₁ 
goal: CategoryTheory.CategoryStruct.id a ⟶
  CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.comp f₁ f₂)
    (CategoryTheory.CategoryStruct.comp g₂ g₁)

full_name: CategoryTheory.Bicategory.Adjunction.compCounit
code: /-- Auxiliary definition for `adjunction.comp`. -/
@[simp]
def compCounit (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) : (g₂ ≫ g₁) ≫ f₁ ≫ f₂ ⟶ 𝟙 c 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.comp g₂ g₁)
    (CategoryTheory.CategoryStruct.comp f₁ f₂) ⟶
  CategoryTheory.CategoryStruct.id c

full_name: CategoryTheory.Bicategory.Adjunction.comp_left_triangle_aux
code: theorem comp_left_triangle_aux (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) :
    leftZigzag (compUnit adj₁ adj₂) (compCounit adj₁ adj₂) = (λ_ _).hom ≫ (ρ_ _).inv 
goal: CategoryTheory.Bicategory.leftZigzag (adj₁.compUnit adj₂) (adj₁.compCounit adj₂) =
  CategoryTheory.CategoryStruct.comp
    (CategoryTheory.Bicategory.leftUnitor (CategoryTheory.CategoryStruct.comp f₁ f₂)).hom
    (CategoryTheory.Bicategory.rightUnitor (CategoryTheory.CategoryStruct.comp f₁ f₂)).inv

full_name: CategoryTheory.Bicategory.Adjunction.comp_right_triangle_aux
code: theorem comp_right_triangle_aux (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) :
    rightZigzag (compUnit adj₁ adj₂) (compCounit adj₁ adj₂) = (ρ_ _).hom ≫ (λ_ _).inv 
goal: CategoryTheory.Bicategory.rightZigzag (adj₁.compUnit adj₂) (adj₁.compCounit adj₂) =
  CategoryTheory.CategoryStruct.comp
    (CategoryTheory.Bicategory.rightUnitor (CategoryTheory.CategoryStruct.comp g₂ g₁)).hom
    (CategoryTheory.Bicategory.leftUnitor (CategoryTheory.CategoryStruct.comp g₂ g₁)).inv

full_name: CategoryTheory.Bicategory.Adjunction.comp_unit
code: /-- Composition of adjunctions. -/
@[simps]
def comp (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) : f₁ ≫ f₂ ⊣ g₂ ≫ g₁ 
goal: (adj₁.comp adj₂).unit = adj₁.compUnit adj₂

full_name: CategoryTheory.Bicategory.Adjunction.comp
code: /-- Composition of adjunctions. -/
@[simps]
def comp (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) : f₁ ≫ f₂ ⊣ g₂ ≫ g₁ 
goal: CategoryTheory.Bicategory.Adjunction (CategoryTheory.CategoryStruct.comp f₁ f₂)
  (CategoryTheory.CategoryStruct.comp g₂ g₁)

full_name: CategoryTheory.Bicategory.Adjunction.comp_counit
code: /-- Composition of adjunctions. -/
@[simps]
def comp (adj₁ : f₁ ⊣ g₁) (adj₂ : f₂ ⊣ g₂) : f₁ ≫ f₂ ⊣ g₂ ≫ g₁ 
goal: (adj₁.comp adj₂).counit = adj₁.compCounit adj₂

full_name: CategoryTheory.Bicategory.leftZigzagIso
code: /-- The isomorphism version of `leftZigzag`. -/
def leftZigzagIso (η : 𝟙 a ≅ f ≫ g) (ε : g ≫ f ≅ 𝟙 b) 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.id a) f ≅
  CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.id b)

full_name: CategoryTheory.Bicategory.rightZigzagIso
code: /-- The isomorphism version of `rightZigzag`. -/
def rightZigzagIso (η : 𝟙 a ≅ f ≫ g) (ε : g ≫ f ≅ 𝟙 b) 
goal: CategoryTheory.CategoryStruct.comp g (CategoryTheory.CategoryStruct.id a) ≅
  CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.id b) g

full_name: CategoryTheory.Bicategory.leftZigzagIso_hom
code: @[simp]
theorem leftZigzagIso_hom : (leftZigzagIso η ε).hom = leftZigzag η.hom ε.hom 
goal: (CategoryTheory.Bicategory.leftZigzagIso η ε).hom = CategoryTheory.Bicategory.leftZigzag η.hom ε.hom

full_name: CategoryTheory.Bicategory.rightZigzagIso_hom
code: @[simp]
theorem rightZigzagIso_hom : (rightZigzagIso η ε).hom = rightZigzag η.hom ε.hom 
goal: (CategoryTheory.Bicategory.rightZigzagIso η ε).hom = CategoryTheory.Bicategory.rightZigzag η.hom ε.hom

full_name: CategoryTheory.Bicategory.leftZigzagIso_inv
code: @[simp]
theorem leftZigzagIso_inv : (leftZigzagIso η ε).inv = rightZigzag ε.inv η.inv 
goal: (CategoryTheory.Bicategory.leftZigzagIso η ε).inv = CategoryTheory.Bicategory.rightZigzag ε.inv η.inv

full_name: CategoryTheory.Bicategory.rightZigzagIso_inv
code: @[simp]
theorem rightZigzagIso_inv : (rightZigzagIso η ε).inv = leftZigzag ε.inv η.inv 
goal: (CategoryTheory.Bicategory.rightZigzagIso η ε).inv = CategoryTheory.Bicategory.leftZigzag ε.inv η.inv

full_name: CategoryTheory.Bicategory.leftZigzagIso_symm
code: @[simp]
theorem leftZigzagIso_symm : (leftZigzagIso η ε).symm = rightZigzagIso ε.symm η.symm 
goal: (CategoryTheory.Bicategory.leftZigzagIso η ε).symm = CategoryTheory.Bicategory.rightZigzagIso ε.symm η.symm

full_name: CategoryTheory.Bicategory.rightZigzagIso_symm
code: @[simp]
theorem rightZigzagIso_symm : (rightZigzagIso η ε).symm = leftZigzagIso ε.symm η.symm 
goal: (CategoryTheory.Bicategory.rightZigzagIso η ε).symm = CategoryTheory.Bicategory.leftZigzagIso ε.symm η.symm

full_name: CategoryTheory.Bicategory.instIsIsoHomLeftZigzagHom
code: instance : IsIso (leftZigzag η.hom ε.hom) 
goal: CategoryTheory.IsIso (CategoryTheory.Bicategory.leftZigzag η.hom ε.hom)

full_name: CategoryTheory.Bicategory.instIsIsoHomRightZigzagHom
code: instance : IsIso (rightZigzag η.hom ε.hom) 
goal: CategoryTheory.IsIso (CategoryTheory.Bicategory.rightZigzag η.hom ε.hom)

full_name: CategoryTheory.Bicategory.right_triangle_of_left_triangle
code: theorem right_triangle_of_left_triangle (h : leftZigzag η.hom ε.hom = (λ_ f).hom ≫ (ρ_ f).inv) :
    rightZigzag η.hom ε.hom = (ρ_ g).hom ≫ (λ_ g).inv 
goal: CategoryTheory.Bicategory.rightZigzag η.hom ε.hom =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.rightUnitor g).hom
    (CategoryTheory.Bicategory.leftUnitor g).inv

full_name: CategoryTheory.Bicategory.adjointifyCounit
code: /-- An auxiliary definition for `mkOfAdjointifyCounit`. -/
def adjointifyCounit (η : 𝟙 a ≅ f ≫ g) (ε : g ≫ f ≅ 𝟙 b) : g ≫ f ≅ 𝟙 b 
goal: CategoryTheory.CategoryStruct.comp g f ≅ CategoryTheory.CategoryStruct.id b

full_name: CategoryTheory.Bicategory.adjointifyCounit_left_triangle
code: theorem adjointifyCounit_left_triangle (η : 𝟙 a ≅ f ≫ g) (ε : g ≫ f ≅ 𝟙 b) :
    leftZigzagIso η (adjointifyCounit η ε) = λ_ f ≪≫ (ρ_ f).symm 
goal: CategoryTheory.Bicategory.leftZigzagIso η (CategoryTheory.Bicategory.adjointifyCounit η ε) =
  CategoryTheory.Bicategory.leftUnitor f ≪≫ (CategoryTheory.Bicategory.rightUnitor f).symm

full_name: CategoryTheory.Bicategory.Equivalence.hom
code: /-- Adjoint equivalences between two objects. -/
structure Equivalence (a b : B) where
  /-- A 1-morphism in one direction. -/
  hom : a ⟶ b
  /-- A 1-morphism in the other direction. -/
  inv : b ⟶ a
  /-- The composition `hom ≫ inv` is isomorphic to the identity. -/
  unit : 𝟙 a ≅ hom ≫ inv
  /-- The composition `inv ≫ hom` is isomorphic to the identity. -/
  counit : inv ≫ hom ≅ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzagIso unit counit = λ_ hom ≪≫ (ρ_ hom).symm := by aesop_cat
goal: a ⟶ b

full_name: CategoryTheory.Bicategory.Equivalence.inv
code: /-- Adjoint equivalences between two objects. -/
structure Equivalence (a b : B) where
  /-- A 1-morphism in one direction. -/
  hom : a ⟶ b
  /-- A 1-morphism in the other direction. -/
  inv : b ⟶ a
  /-- The composition `hom ≫ inv` is isomorphic to the identity. -/
  unit : 𝟙 a ≅ hom ≫ inv
  /-- The composition `inv ≫ hom` is isomorphic to the identity. -/
  counit : inv ≫ hom ≅ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzagIso unit counit = λ_ hom ≪≫ (ρ_ hom).symm := by aesop_cat
goal: b ⟶ a

full_name: CategoryTheory.Bicategory.Equivalence
code: /-- Adjoint equivalences between two objects. -/
structure Equivalence (a b : B) where
  /-- A 1-morphism in one direction. -/
  hom : a ⟶ b
  /-- A 1-morphism in the other direction. -/
  inv : b ⟶ a
  /-- The composition `hom ≫ inv` is isomorphic to the identity. -/
  unit : 𝟙 a ≅ hom ≫ inv
  /-- The composition `inv ≫ hom` is isomorphic to the identity. -/
  counit : inv ≫ hom ≅ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzagIso unit counit = λ_ hom ≪≫ (ρ_ hom).symm := by aesop_cat
goal: Type (max v w)

full_name: CategoryTheory.Bicategory.Equivalence.counit
code: /-- Adjoint equivalences between two objects. -/
structure Equivalence (a b : B) where
  /-- A 1-morphism in one direction. -/
  hom : a ⟶ b
  /-- A 1-morphism in the other direction. -/
  inv : b ⟶ a
  /-- The composition `hom ≫ inv` is isomorphic to the identity. -/
  unit : 𝟙 a ≅ hom ≫ inv
  /-- The composition `inv ≫ hom` is isomorphic to the identity. -/
  counit : inv ≫ hom ≅ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzagIso unit counit = λ_ hom ≪≫ (ρ_ hom).symm := by aesop_cat
goal: CategoryTheory.CategoryStruct.comp self.inv self.hom ≅ CategoryTheory.CategoryStruct.id b

full_name: CategoryTheory.Bicategory.Equivalence.unit
code: /-- Adjoint equivalences between two objects. -/
structure Equivalence (a b : B) where
  /-- A 1-morphism in one direction. -/
  hom : a ⟶ b
  /-- A 1-morphism in the other direction. -/
  inv : b ⟶ a
  /-- The composition `hom ≫ inv` is isomorphic to the identity. -/
  unit : 𝟙 a ≅ hom ≫ inv
  /-- The composition `inv ≫ hom` is isomorphic to the identity. -/
  counit : inv ≫ hom ≅ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzagIso unit counit = λ_ hom ≪≫ (ρ_ hom).symm := by aesop_cat
goal: CategoryTheory.CategoryStruct.id a ≅ CategoryTheory.CategoryStruct.comp self.hom self.inv

full_name: CategoryTheory.Bicategory.Equivalence.left_triangle
code: /-- Adjoint equivalences between two objects. -/
structure Equivalence (a b : B) where
  /-- A 1-morphism in one direction. -/
  hom : a ⟶ b
  /-- A 1-morphism in the other direction. -/
  inv : b ⟶ a
  /-- The composition `hom ≫ inv` is isomorphic to the identity. -/
  unit : 𝟙 a ≅ hom ≫ inv
  /-- The composition `inv ≫ hom` is isomorphic to the identity. -/
  counit : inv ≫ hom ≅ 𝟙 b
  /-- The composition of the unit and the counit is equal to the identity up to unitors. -/
  left_triangle : leftZigzagIso unit counit = λ_ hom ≪≫ (ρ_ hom).symm := by aesop_cat
goal: CategoryTheory.Bicategory.leftZigzagIso self.unit self.counit =
  CategoryTheory.Bicategory.leftUnitor self.hom ≪≫ (CategoryTheory.Bicategory.rightUnitor self.hom).symm

full_name: CategoryTheory.Bicategory.«_aux_Mathlib_CategoryTheory_Bicategory_Adjunction___macroRules_CategoryTheory_Bicategory_term_≌__1»
code: @[inherit_doc] scoped infixr:10 " ≌ " => Bicategory.Equivalence
goal: Lean.Macro

full_name: CategoryTheory.Bicategory._aux_Mathlib_CategoryTheory_Bicategory_Adjunction___unexpand_CategoryTheory_Bicategory_Equivalence_1
code: @[inherit_doc] scoped infixr:10 " ≌ " => Bicategory.Equivalence
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.Bicategory.Equivalence.id
code: /-- The identity 1-morphism is an equivalence. -/
def id (a : B) : a ≌ a 
goal: CategoryTheory.Bicategory.Equivalence a a

full_name: CategoryTheory.Bicategory.Equivalence.instInhabited
code: instance : Inhabited (Equivalence a a) 
goal: Inhabited (CategoryTheory.Bicategory.Equivalence a a)

full_name: CategoryTheory.Bicategory.Equivalence.left_triangle_hom
code: theorem left_triangle_hom (e : a ≌ b) :
    leftZigzag e.unit.hom e.counit.hom = (λ_ e.hom).hom ≫ (ρ_ e.hom).inv 
goal: CategoryTheory.Bicategory.leftZigzag e.unit.hom e.counit.hom =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.leftUnitor e.hom).hom
    (CategoryTheory.Bicategory.rightUnitor e.hom).inv

full_name: CategoryTheory.Bicategory.Equivalence.right_triangle
code: theorem right_triangle (e : a ≌ b) :
    rightZigzagIso e.unit e.counit = ρ_ e.inv ≪≫ (λ_ e.inv).symm 
goal: CategoryTheory.Bicategory.rightZigzagIso e.unit e.counit =
  CategoryTheory.Bicategory.rightUnitor e.inv ≪≫ (CategoryTheory.Bicategory.leftUnitor e.inv).symm

full_name: CategoryTheory.Bicategory.Equivalence.right_triangle_hom
code: theorem right_triangle_hom (e : a ≌ b) :
    rightZigzag e.unit.hom e.counit.hom = (ρ_ e.inv).hom ≫ (λ_ e.inv).inv 
goal: CategoryTheory.Bicategory.rightZigzag e.unit.hom e.counit.hom =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.rightUnitor e.inv).hom
    (CategoryTheory.Bicategory.leftUnitor e.inv).inv

full_name: CategoryTheory.Bicategory.Equivalence.mkOfAdjointifyCounit
code: /-- Construct an adjoint equivalence from 2-isomorphisms by upgrading `ε` to a counit. -/
def mkOfAdjointifyCounit (η : 𝟙 a ≅ f ≫ g) (ε : g ≫ f ≅ 𝟙 b) : a ≌ b 
goal: CategoryTheory.Bicategory.Equivalence a b

full_name: CategoryTheory.Bicategory.RightAdjoint
code: /-- A structure giving a chosen right adjoint of a 1-morphism `left`. -/
structure RightAdjoint (left : a ⟶ b) where
  /-- The right adjoint to `left`. -/
  right : b ⟶ a
  /-- The adjunction between `left` and `right`. -/
  adj : left ⊣ right
goal: Type (max v w)

full_name: CategoryTheory.Bicategory.RightAdjoint.right
code: /-- A structure giving a chosen right adjoint of a 1-morphism `left`. -/
structure RightAdjoint (left : a ⟶ b) where
  /-- The right adjoint to `left`. -/
  right : b ⟶ a
  /-- The adjunction between `left` and `right`. -/
  adj : left ⊣ right
goal: b ⟶ a

full_name: CategoryTheory.Bicategory.RightAdjoint.adj
code: /-- A structure giving a chosen right adjoint of a 1-morphism `left`. -/
structure RightAdjoint (left : a ⟶ b) where
  /-- The right adjoint to `left`. -/
  right : b ⟶ a
  /-- The adjunction between `left` and `right`. -/
  adj : left ⊣ right
goal: CategoryTheory.Bicategory.Adjunction left self.right

full_name: CategoryTheory.Bicategory.IsLeftAdjoint.nonempty
code: /-- The existence of a right adjoint of `f`. -/
class IsLeftAdjoint (left : a ⟶ b) : Prop where mk' ::
  nonempty : Nonempty (RightAdjoint left)
goal: Nonempty (CategoryTheory.Bicategory.RightAdjoint left)

full_name: CategoryTheory.Bicategory.IsLeftAdjoint
code: /-- The existence of a right adjoint of `f`. -/
class IsLeftAdjoint (left : a ⟶ b) : Prop where mk' ::
  nonempty : Nonempty (RightAdjoint left)
goal: Prop

full_name: CategoryTheory.Bicategory.IsLeftAdjoint.mk'
code: /-- The existence of a right adjoint of `f`. -/
class IsLeftAdjoint (left : a ⟶ b) : Prop where mk' ::
  nonempty : Nonempty (RightAdjoint left)
goal: CategoryTheory.Bicategory.IsLeftAdjoint left

full_name: CategoryTheory.Bicategory.IsLeftAdjoint.mk
code: theorem IsLeftAdjoint.mk (adj : f ⊣ g) : IsLeftAdjoint f 
goal: CategoryTheory.Bicategory.IsLeftAdjoint f

full_name: CategoryTheory.Bicategory.getRightAdjoint
code: /-- Use the axiom of choice to extract a right adjoint from an `IsLeftAdjoint` instance. -/
def getRightAdjoint (f : a ⟶ b) [IsLeftAdjoint f] : RightAdjoint f 
goal: CategoryTheory.Bicategory.RightAdjoint f

full_name: CategoryTheory.Bicategory.rightAdjoint
code: /-- The right adjoint of a 1-morphism. -/
def rightAdjoint (f : a ⟶ b) [IsLeftAdjoint f] : b ⟶ a 
goal: b ⟶ a

full_name: CategoryTheory.Bicategory.Adjunction.ofIsLeftAdjoint
code: /-- Evidence that `f⁺⁺` is a right adjoint of `f`. -/
def Adjunction.ofIsLeftAdjoint (f : a ⟶ b) [IsLeftAdjoint f] : f ⊣ rightAdjoint f 
goal: CategoryTheory.Bicategory.Adjunction f (CategoryTheory.Bicategory.rightAdjoint f)

full_name: CategoryTheory.Bicategory.LeftAdjoint
code: /-- A structure giving a chosen left adjoint of a 1-morphism `right`. -/
structure LeftAdjoint (right : b ⟶ a) where
  /-- The left adjoint to `right`. -/
  left : a ⟶ b
  /-- The adjunction between `left` and `right`. -/
  adj : left ⊣ right
goal: Type (max v w)

full_name: CategoryTheory.Bicategory.LeftAdjoint.adj
code: /-- A structure giving a chosen left adjoint of a 1-morphism `right`. -/
structure LeftAdjoint (right : b ⟶ a) where
  /-- The left adjoint to `right`. -/
  left : a ⟶ b
  /-- The adjunction between `left` and `right`. -/
  adj : left ⊣ right
goal: CategoryTheory.Bicategory.Adjunction self.left right

full_name: CategoryTheory.Bicategory.LeftAdjoint.left
code: /-- A structure giving a chosen left adjoint of a 1-morphism `right`. -/
structure LeftAdjoint (right : b ⟶ a) where
  /-- The left adjoint to `right`. -/
  left : a ⟶ b
  /-- The adjunction between `left` and `right`. -/
  adj : left ⊣ right
goal: a ⟶ b

full_name: CategoryTheory.Bicategory.IsRightAdjoint
code: /-- The existence of a left adjoint of `f`. -/
class IsRightAdjoint (right : b ⟶ a) : Prop where mk' ::
  nonempty : Nonempty (LeftAdjoint right)
goal: Prop

full_name: CategoryTheory.Bicategory.IsRightAdjoint.nonempty
code: /-- The existence of a left adjoint of `f`. -/
class IsRightAdjoint (right : b ⟶ a) : Prop where mk' ::
  nonempty : Nonempty (LeftAdjoint right)
goal: Nonempty (CategoryTheory.Bicategory.LeftAdjoint right)

full_name: CategoryTheory.Bicategory.IsRightAdjoint.mk'
code: /-- The existence of a left adjoint of `f`. -/
class IsRightAdjoint (right : b ⟶ a) : Prop where mk' ::
  nonempty : Nonempty (LeftAdjoint right)
goal: CategoryTheory.Bicategory.IsRightAdjoint right

full_name: CategoryTheory.Bicategory.IsRightAdjoint.mk
code: theorem IsRightAdjoint.mk (adj : f ⊣ g) : IsRightAdjoint g 
goal: CategoryTheory.Bicategory.IsRightAdjoint g

full_name: CategoryTheory.Bicategory.getLeftAdjoint
code: /-- Use the axiom of choice to extract a left adjoint from an `IsRightAdjoint` instance. -/
def getLeftAdjoint (f : b ⟶ a) [IsRightAdjoint f] : LeftAdjoint f 
goal: CategoryTheory.Bicategory.LeftAdjoint f

full_name: CategoryTheory.Bicategory.leftAdjoint
code: /-- The left adjoint of a 1-morphism. -/
def leftAdjoint (f : b ⟶ a) [IsRightAdjoint f] : a ⟶ b 
goal: a ⟶ b

full_name: CategoryTheory.Bicategory.Adjunction.ofIsRightAdjoint
code: /-- Evidence that `f⁺` is a left adjoint of `f`. -/
def Adjunction.ofIsRightAdjoint (f : b ⟶ a) [IsRightAdjoint f] : leftAdjoint f ⊣ f 
goal: CategoryTheory.Bicategory.Adjunction (CategoryTheory.Bicategory.leftAdjoint f) f