End iso_def.
Coercion RightInv_epic : RIso_law >-> Epic_law.
(* initial *)
Section initial_def.
Variable C : Category.
Definition IsInitial (a : C) (h : forall b : C, a --> b) :=
forall (b : C) (f : a --> b), f =_S h b.
Structure > Initial : Type :=
{Initial_ob : C;
MorI : forall b : C, Initial_ob --> b;
Prf_isInitial :> IsInitial MorI}.
Definition At_most_1mor (a b : C) := forall f g : a --> b, f =_S g.

(* Specifications: *)
Lemma UniqueI : forall (i : Initial) (b : C), At_most_1mor (Initial_ob i) b.
Lemma I_unic : forall i1 i2 : Initial, Iso (Initial_ob i1) (Initial_ob i2).
End terminal_def.
Lemma Initial_dual :
forall (C : Category) (a : C) (h : forall b : C, a --> b),
IsInitial h -> IsTerminal (C:=Dual C) h.