Section coua_laws.
Variable co_diese : forall a' : A, (F a' --> b) -> (a' --> a).
Definition CoUA_eq (a' : A) (f : F a' --> b) (g : a' --> a) :=
FMor F g o u =_S f.
Definition CoUA_law1 :=
forall (a' : A) (f : F a' --> b), CoUA_eq f (co_diese f).
Definition CoUA_law2 :=
forall (a' : A) (f : F a' --> b) (g : a' --> a),
CoUA_eq f g -> g =_S co_diese f.
End coua_laws.
Structure IsCoUA : Type :=
{CoUA_diese : forall a' : A, (F a' --> b) -> (a' --> a);
Prf_isCoUA_law1 : CoUA_law1 CoUA_diese;
Prf_isCoUA_law2 : CoUA_law2 CoUA_diese}.
Variable t : IsCoUA.
(* f=g => f# = g# *)
End iscoua_def.
Structure > CoUA : Type :=
{CoUA_ob : A; CoUA_mor : F CoUA_ob --> b; Prf_IsCoUA :> IsCoUA CoUA_mor}.
(*** rewrite rules ***)

Lemma CoUA_diag1 :
forall (u : CoUA) (a' : A) (f : F a' --> b),
f =_S FMor F (CoUA_diese u f) o CoUA_mor u.