Goal:
  
  elt : Type
  gt_tree_dec : forall (x : T.t) (t : M.Raw.tree elt),
                {M.Raw.gt_tree x t} + {~ M.Raw.gt_tree x t}
  x : T.t
  t : M.Raw.tree elt
  l : M.Raw.tree elt
  k : M.Raw.key
  n : elt
  r : M.Raw.tree elt
  z : Int.Z_as_Int.t
  p1 : T.lt x k
  p2 : M.Raw.gt_tree x l
  p3 : M.Raw.gt_tree x r
  ============================
   (M.Raw.gt_tree x (M.Raw.Node l k n r z))


DEBUG:Going to execute:
solve
[ inversion 1
| inversion 1; subst; auto;
   match goal with
   | H:T.lt _ _, H':T.eq _ _
     |- _ => now first [ rewrite H' in H | rewrite <- H' in H ]
   end
| intro f; apply pf; hnf in *; intros; apply f; constructor;
   assumption + reflexivity
| intro f; eapply M.Raw.Proofs.MX.lt_antirefl; idtac + etransitivity;
   eassumption +
     (eapply f; constructor; idtac + symmetry; eassumption + reflexivity) ]