intros t; elim t; simpl in |- *; auto.
intros a a0 [H| H]; [ rewrite H | case H ]; auto.
intros b H b0 H0 a H1; case in_app_or with (1 := H1); auto.
Qed.
(* The property for a tree to have distinct leaves  *)
Definition distinct_leaves (t : btree) : Prop :=
forall t0 t1 t2 : btree,
inb (node t1 t2) t -> inb t0 t1 -> inb t0 t2 -> False.

(* Specifications: *)
(* A leaf tree has distinct leaves  *)
Theorem distinct_leaves_leaf : forall a : A, distinct_leaves (leaf a).
Proof using.