Proof using.
intros t l1 l2 H H0; split.
apply cover_permutation with (2 := H0); auto.
inversion H; auto.
intros t2 H1.
assert (cover l1 t2).
inversion H; auto.
apply cover_permutation with (2 := permutation_sym _ _ _ H0); auto.
inversion H; auto.
Qed.

(* For all covers, there is a minimum tree *)
Theorem cover_min_ex :
forall l : list (btree A), l <> nil -> exists t : btree A, cover_min l t.