Goal:
  
  elt : Type
  bst_dec : forall t : M.Raw.tree elt, {M.Raw.bst t} + {~ M.Raw.bst 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
  b : M.Raw.bst l
  pf : ~ M.Raw.bst r
  s := lt_tree_dec k l : {M.Raw.lt_tree k l} + {~ M.Raw.lt_tree k l}
  s0 := gt_tree_dec k r : {M.Raw.gt_tree k r} + {~ M.Raw.gt_tree k r}
  ============================
   (~ M.Raw.bst (M.Raw.Node l k n r z))


DEBUG:Going to execute:
solve [ constructor; assumption | inversion 1; subst; auto ]