Section BD_Whnf.
Fixpoint whnf_bd (e : env) (t : term) {struct t} : Prop :=
match t with
| Ref n =>
match delta_reduce n e with
| inleft _ => False
| _ => True
end
| App u v => whnf_bd e u /\ (forall T t : term, u <> Abs T t)
| _ => True
end.
Hint Unfold whnf_bd: pts.

Lemma bd_red_whnf :
forall (e : env) (t u : term),
red beta_delta e t u -> whnf_bd e t -> whnf_bd e u.