(* Partial Binary Tree (no more than 2 sons *)
Inductive pbtree : Type :=
  | pbleaf : A -> pbtree
  | pbleft : pbtree -> pbtree
  | pbright : pbtree -> pbtree
  | pbnode : pbtree -> pbtree -> pbtree.(* Partial Binary Tree (no more than 2 sons *)
Inductive pbtree : Type :=
  | pbleaf : A -> pbtree
  | pbleft : pbtree -> pbtree
  | pbright : pbtree -> pbtree
  | pbnode : pbtree -> pbtree -> pbtree.(* Partial Binary Tree (no more than 2 sons *)
Inductive pbtree : Type :=
  | pbleaf : A -> pbtree
  | pbleft : pbtree -> pbtree
  | pbright : pbtree -> pbtree
  | pbnode : pbtree -> pbtree -> pbtree.(* Partial Binary Tree (no more than 2 sons *)
Inductive pbtree : Type :=
  | pbleaf : A -> pbtree
  | pbleft : pbtree -> pbtree
  | pbright : pbtree -> pbtree
  | pbnode : pbtree -> pbtree -> pbtree.(* Partial Binary Tree (no more than 2 sons *)
Inductive pbtree : Type :=
  | pbleaf : A -> pbtree
  | pbleft : pbtree -> pbtree
  | pbright : pbtree -> pbtree
  | pbnode : pbtree -> pbtree -> pbtree.

(* Specifications: *)
Theorem pbleaf_or_not : forall p, (exists a : _, p = pbleaf a) \/ (forall a : A, p <> pbleaf a).