Fixpoint wf_btree_over t :=
match t with BNode keys children =>
(length keys = 2 * d + 1)%nat /\
(children = [] \/ length children = S (length keys) /\ Forall wf_btree_aux children)
end.

Lemma wf_or_iff : forall keys children,
(wf_btree_aux (BNode keys children) \/ wf_btree_over (BNode keys children)) <->
((d <= length keys <= 2 * d \/ length keys = 2 * d + 1)%nat /\
(children = [] \/ keys <> [] /\ length children = S (length keys) /\
Forall wf_btree_aux children)).