(* Rmq: on utilise idCAT, qui de'finit Id_CAT sans parler
    de Functor_Setoid. Evitant ainsi l'inconsistance des
    univers *)

 Definition Adj1_law1 :=
   forall c : C, eta (G c) o FMor G (eps c) =_S Id (G c).Definition Adj1_law2 :=
   forall d : D, FMor F (eta d) o eps (F d) =_S Id (F d).Structure Adj1 : Type := 
   {A_eta : NT (Id_CAT D) (F o_F G);
    A_eps : NT (G o_F F) (Id_CAT C);
    Prf_Adj1_law1 : Adj1_law1 A_eta A_eps;
    Prf_Adj1_law2 : Adj1_law2 A_eta A_eps}.Structure Adj1 : Type := 
   {A_eta : NT (Id_CAT D) (F o_F G);
    A_eps : NT (G o_F F) (Id_CAT C);
    Prf_Adj1_law1 : Adj1_law1 A_eta A_eps;
    Prf_Adj1_law2 : Adj1_law2 A_eta A_eps}.Structure Adj1 : Type := 
   {A_eta : NT (Id_CAT D) (F o_F G);
    A_eps : NT (G o_F F) (Id_CAT C);
    Prf_Adj1_law1 : Adj1_law1 A_eta A_eps;
    Prf_Adj1_law2 : Adj1_law2 A_eta A_eps}.Structure Adj1 : Type := 
   {A_eta : NT (Id_CAT D) (F o_F G);
    A_eps : NT (G o_F F) (Id_CAT C);
    Prf_Adj1_law1 : Adj1_law1 A_eta A_eps;
    Prf_Adj1_law2 : Adj1_law2 A_eta A_eps}.Structure Adj1 : Type := 
   {A_eta : NT (Id_CAT D) (F o_F G);
    A_eps : NT (G o_F F) (Id_CAT C);
    Prf_Adj1_law1 : Adj1_law1 A_eta A_eps;
    Prf_Adj1_law2 : Adj1_law2 A_eta A_eps}.(* *)

Definition Unit_tau (d : D) := UA_mor (Unit ad d).

(* Specifications: *)
Lemma Unit_nt_law : NT_law (F:=Id_CAT D) (G:=F o_F G) Unit_tau.