(* Predicate for Partial Trees with Different Leaves *)
Definition distinct_pbleaves (t : pbtree) : Prop :=
  forall t0 t1 t2 : pbtree,
  inpb (pbnode t1 t2) t -> inpb t0 t1 -> inpb t0 t2 -> False.

(* Specifications: *)
Theorem distinct_pbleaves_Leaf : forall a : A, distinct_pbleaves (pbleaf a).
Theorem distinct_pbleaves_l : forall t1 t2 : pbtree, distinct_pbleaves (pbnode t1 t2) -> distinct_pbleaves t1.
Theorem distinct_pbleaves_r : forall t1 t2 : pbtree, distinct_pbleaves (pbnode t1 t2) -> distinct_pbleaves t2.
Theorem distinct_pbleaves_pl : forall t1 : pbtree, distinct_pbleaves (pbleft t1) -> distinct_pbleaves t1.
Theorem distinct_pbleaves_pr : forall t1 : pbtree, distinct_pbleaves (pbright t1) -> distinct_pbleaves t1.
Theorem distinct_pbleaves_pbleaf : forall a : A, distinct_pbleaves (pbleaf a).
Theorem distinct_pbleaves_pbleft : forall t, distinct_pbleaves t -> distinct_pbleaves (pbleft t).
Theorem distinct_pbleaves_pbright : forall t, distinct_pbleaves t -> distinct_pbleaves (pbright t).