intros l t H; unfold all_cover in |- *; apply cover_all_cover_aux; auto.
Qed.
(* Covers are decidable *)
Definition cover_dec :
(forall a b : A, {a = b} + {a <> b}) ->
forall l t, {cover l t} + {~ cover l t}.
intros H l t; case (In_dec (btree_dec _ H) t (all_cover l)).
intros H1; left; apply all_cover_cover; auto.
intros H1; right; Contradict H1; apply cover_all_cover; auto.
Defined.

(* Specifications: *)
(* All the leaves of the tree gives a cover to the tree. *)
Theorem cover_all_leaves :
forall t : btree A, cover (map (fun x : A => leaf x) (all_leaves t)) t.