Section pmor_setoid_def.
Variable u t : POb.
Structure Pmor : Type :=
{Hom_l : Ob_l u --> Ob_l t; Hom_r : Ob_r u --> Ob_r t}.
Definition Equal_Pmor (f g : Pmor) :=
Hom_l f =_S Hom_l g /\ Hom_r f =_S Hom_r g.
Canonical Structure Prod_Hom : Setoid := Equal_Pmor_equiv.
Definition Prod_Hom' := SPROD (Ob_l u --> Ob_l t) (Ob_r u --> Ob_r t).
Definition Build1_Pmor :
(Ob_l u --> Ob_l t) -> (Ob_r u --> Ob_r t) -> Prod_Hom := Build_Pmor.
End pmor_setoid_def.
(* composition *)
Definition Comp_Pmor (a b c : POb) (f : Prod_Hom a b)
(g : Prod_Hom b c) := Build_Pmor (Hom_l f o Hom_l g) (Hom_r f o Hom_r g).
Definition Comp_PROD := Build_Comp Comp_Pmor_congl Comp_Pmor_congr.
Definition Id_PROD (a : POb) := Build_Pmor (Id (Ob_l a)) (Id (Ob_r a)).

Lemma Idl_PROD : Idl_law Comp_PROD Id_PROD.