Proof using.
intros t1 t2 l1 l2 H1; generalize t2 l2; elim H1; clear t1 t2 l1 l2 H1;
simpl in |- *; auto.
intros t t2 l2 H; apply cover_cons_l; auto.
intros l1 l2 t1 t2 t3 H H0 H1 t0 l0 H2.
apply cover_node with (l2 := l2 ++ l0) (t1 := t1) (t2 := t2); auto.
apply permutation_trans with ((t1 :: t2 :: l2) ++ l0); auto.
Qed.

(* Specifications: *)
(* A cover gives a direct account of the number of the tree *)
Theorem cover_number_of_nodes :
forall t l,
cover l t ->
number_of_nodes t =
fold_left (fun x y => x + number_of_nodes y) l 0 + pred (length l).