SubClass Adj := NatIso (FunSET2_r F) (FunSET2_l G).Definition Build_Adj : Adj := Build_NatIso phi_iso.(* Left Adjunction *)

Structure LeftAdj (C D : Category) (G : Functor C D) : Type := 
  {Adjoint : Functor D C; Adj_l :> Adj Adjoint G}.(* Left Adjunction *)

Structure LeftAdj (C D : Category) (G : Functor C D) : Type := 
  {Adjoint : Functor D C; Adj_l :> Adj Adjoint G}.(* Left Adjunction *)

Structure LeftAdj (C D : Category) (G : Functor C D) : Type := 
  {Adjoint : Functor D C; Adj_l :> Adj Adjoint G}.(* Right Adjunction *)

Structure RightAdj (C D : Category) (F : Functor D C) : Type := 
  {CoAdjoint : Functor C D; Adj_r :> Adj F CoAdjoint}.(* Right Adjunction *)

Structure RightAdj (C D : Category) (F : Functor D C) : Type := 
  {CoAdjoint : Functor C D; Adj_r :> Adj F CoAdjoint}.(* Right Adjunction *)

Structure RightAdj (C D : Category) (F : Functor D C) : Type := 
  {CoAdjoint : Functor C D; Adj_r :> Adj F CoAdjoint}.

(* Specifications: *)
Lemma Adj_eq1 : ApAphi ad ((FMor F h o f) o k) =_S (h o ApAphi ad f) o FMor G k.
Lemma Adj_eq2 : ApAphi_inv ad ((h o g) o FMor G k) =_S (FMor F h o ApAphi_inv ad g) o k.
Lemma Adj_eq3 : ApAphi ad (f o k) =_S ApAphi ad f o FMor G k.
Lemma Adj_eq4 : ApAphi ad (FMor F h o f) =_S h o ApAphi ad f.
Lemma Adj_eq5 : ApAphi_inv ad (g o FMor G k) =_S ApAphi_inv ad g o k.
Lemma Adj_eq6 : ApAphi_inv ad (h o g) =_S FMor F h o ApAphi_inv ad g.