Section Adjunction.
Context {C D : Category} (F : C –≻ D) (G : D –≻ C).
(** This is the definition of adjunctions taken as them main definition in this development.  Functor F : C -> D is the left adjoint to functor G : D -> C if there is a natural transformation η : (Functor_id C) -> (G ∘ F) and for any arrow f : c -> (G _o d) there is a unique arrow f̂f^: (F _o c) d such that the following diagram commutes:  # <pre>  f c —————————–> (G _o d) |               ↗ |             / η_c |           /  G _a  f^ |         / ↓       / (G _o (F _o c))  </pre> # *)
Record Adjunct : Type :=
{
adj_unit : ((Functor_id C) –≻ (G ∘ F))%nattrans;
adj_morph_ex {c : C} {d : D} (f : (c –≻ (G _o d)%object)%morphism) :
((F _o c)%object –≻ d)%morphism;
adj_morph_com {c : C} {d : D} (f : (c –≻ (G _o d))%morphism%object) :
f = ((G _a (adj_morph_ex f)) ∘ (Trans adj_unit c))%morphism;
adj_morph_unique {c : C} {d : D} (f : (c –≻ (G _o d))%object%morphism)
(g h : ((F _o c) –≻ d)%morphism%object) :
f = ((G _a g) ∘ (Trans adj_unit c))%morphism →
f = ((G _a h) ∘ (Trans adj_unit c))%morphism →
g = h
}.
Arguments adj_unit : clear implicits.
Arguments adj_morph_ex _ {_ _} _.
Arguments adj_morph_com _ {_ _} _.
Arguments adj_morph_unique _ {_ _} _ _ _ _ _.

Theorem Adjunct_eq_simplify (adj adj' : Adjunct) :
adj_unit adj = @adj_unit adj' →
@adj_morph_ex adj = @adj_morph_ex adj' → adj = adj'.