red in |- *; intros.
generalize H.
elim H0.
simple induction 1.
simple destruct 1.
simple induction 1; simpl in |- *; intros.
inversion_clear H4.
elim H6 with T M; auto with arith pts.
simple destruct 1.
simpl in |- *.
do 5 intro.
elim (delta_reduce n e1); intros.
elim H5.
elim b with (lift (S n) d).
apply delta_intro with T; auto with arith pts.
red in |- *; red in |- *; intros.
inversion_clear H5.
inversion_clear H6.
inversion_clear H6.
red in |- *; red in |- *; intros.
inversion_clear H5; inversion_clear H6.
red in |- *; red in |- *; intros.
generalize H2.
inversion_clear H5; inversion_clear H6.
intros.
generalize H4.
inversion_clear H5; simpl in |- *; intros.
inversion_clear H5.
generalize H7.
inversion_clear H6.
inversion_clear H5.
simpl in |- *; intros.
inversion_clear H5.
elim H9 with T0 M0; auto with arith pts.
inversion_clear H5.
simpl in |- *.
elim (delta_reduce n e0); intros.
auto with arith pts.
elim b with (lift (S n) d).
apply delta_intro with T0; auto with arith pts.
inversion H5.
elim H8 with M0 M; auto with arith pts.
inversion H5.
elim H8 with T M0; auto with arith pts.
red in |- *; red in |- *; intros.
generalize H4.
inversion_clear H5; inversion_clear H6; simpl in |- *; intros.
inversion_clear H5.
elim H7 with T M; auto with arith pts.
red in |- *; red in |- *; intros.
inversion_clear H5; inversion_clear H6.
red in |- *; red in |- *; intros.
inversion_clear H5; inversion_clear H6.
red in |- *; red in |- *; intros.
generalize H1.
inversion_clear H2.
inversion_clear H3; simpl in |- *; intros.
inversion_clear H2.
elim H4 with T M; auto with arith pts.
inversion_clear H3.
simpl in |- *.
elim (delta_reduce n e); intros.
auto with arith pts.
elim b with (lift (S n) d).
apply delta_intro with T; auto with arith pts.
intros.
apply H4.
apply bd_red_whnf with x; auto with arith pts.
Qed.

Lemma whnf_bd_app_list :
forall (args : list term) (e : env) (t : term),
whnf_bd e t ->
(forall A M : term, t <> Abs A M) ->
head_normal beta_delta e (app_list args t).