Goal:
  
  A : Type
  cmp : A -> A -> comparison
  Hc : forall (c : comparison) (x y z : A),
       cmp x y = c -> cmp y z = c -> cmp x z = c
  He : forall x y : A, cmp x y = Eq -> x = y
  x : A
  y : A
  q : comparison
  q' : comparison
  q'' : comparison
  Hqs : forall c : comparison, q = c -> q' = c -> q'' = c
  e : cmp x y = Lt
  ============================
   (q' = Lt -> Lt = Lt)


DEBUG:Going to execute:
trivial; hnf; intros; (solve
            [ do
            ![ solve
             [ trivial | apply : eq_sym ; trivial ]
             | discriminate
             | contradiction
             | Ltac.split ]
            | case not_locked_false_eq_true; Ltac.assumption
            | match goal with
              | H:~ _ |- _ => solve [ case H; trivial ]
              end ])