Canonical Structure Discr_mor_setoid := Build_Setoid Equal_Discr_mor_equiv.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.

Lemma Comp_Discr_congl : Congl_law Comp_Discr_mor.