open import Cat.Bi.Base
open import Cat.Prelude

import Cat.Reasoning as Cr



Let $\mathbf{B}$ be a bicategory, $A, B : \mathbf{B}$ be objects, and $f : A \to B$ and $g : B \to A$ be 1-cells. Generalising the situation where $f$ and $g$ are functors, we say they are adjoints if there exist 2-cells $\eta : \mathrm{id}_{} \to gf$ and $\varepsilon : fg \to \mathrm{id}_{}$ (the unit and counit respectively), satisfying the equations

and

called the triangle identities (because of their shape) or zigzag identities (because it sounds cool).

  record _⊣_ {a b : B.Ob} (f : a B.↦ b) (g : b B.↦ a) : Type ℓ′ where
field
η : B.id B.⇒ (g B.⊗ f)
ε : (f B.⊗ g) B.⇒ B.id

zig : B.Hom.id ≡ B.λ← f B.∘ (ε B.◀ f) B.∘ B.α← f g f B.∘ (f B.▶ η) B.∘ B.ρ→ f
zag : B.Hom.id ≡ B.ρ← g B.∘ (g B.▶ ε) B.∘ B.α→ g f g B.∘ (η B.◀ g) B.∘ B.λ→ g


Working in a fully weak bicategory means the triangle identities, rather than simply expressing a compatibility relation between $\eta$ and $\varepsilon$ as is the case for adjoint functors, instead exhibit a complicated compatibility relation between $\eta$, $\varepsilon$, and the structural isomorphisms (the unitors and associator) of the ambient bicategory.

We have taken pains to draw the triangle identities as triangles, but counting the morphisms involved you’ll find that they really want to be commutative pentagons instead (which we draw in this website as commutative altars):