Definition StrictCompSpec {A} (eq lt: A -> A -> Prop)
                          (cmp: A -> A -> comparison) :=
  StrictOrder lt /\ forall x y, CompSpec eq lt x y (cmp x y).Definition CompSpec' {A} (cmp: A -> A -> comparison) :=
   StrictCompSpec (@Logic.eq A) (fun x y => Lt = cmp x y) cmp.Ltac do_comp cspec x y := destruct (CompSpec2Type (proj2 cspec x y)).

Lemma comp_trans: forall {A} (cmp: A -> A -> comparison) (cspec: CompSpec' cmp), forall x y z, Lt = cmp x y -> Lt = cmp y z -> Lt = cmp x z.