Definition obuildf :
  forall l : list (btree A),
  l <> nil -> ordered (sum_order f) l -> {t : btree A | build l t}.(* a function to buid tree from a cover list merging smaller trees *)
Definition buildf :
  forall l : list (btree A), l <> nil -> {t : btree A | build l t}.

(* Specifications: *)
Theorem build_correct : forall (l : list (btree A)) (t : btree A), l <> nil -> build l t -> cover_min _ f l t.