End disc_mor_setoid.
Definition Comp_Discr_mor (a b c : U) (f : Discr_mor a b) :=
match f in (Discr_mor d d0) return (Discr_mor d0 c -> Discr_mor d c) with
| Build_Discr_mor x =>
fun g : Discr_mor x c =>
match g in (Discr_mor d d0) return (Discr_mor d d0) with
| Build_Discr_mor x => Build_Discr_mor x
end
end.

(* Specifications: *)
Lemma Comp_Discr_congl : Congl_law Comp_Discr_mor.
Lemma Comp_Discr_congr : Congr_law Comp_Discr_mor.
Definition Comp_Discr := Build_Comp Comp_Discr_congl Comp_Discr_congr.
Lemma Assoc_Discr : Assoc_law Comp_Discr.
Definition Id_Discr (a : U) := Build_Discr_mor a.
Lemma Idl_Discr : Idl_law Comp_Discr Id_Discr.
Lemma Idr_Discr : Idr_law Comp_Discr Id_Discr.
Canonical Structure Discr := Build_Category Assoc_Discr Idl_Discr Idr_Discr.