Fixpoint whnf_beta (t : term) : Prop :=
    match t with
    | App u v => whnf_beta u /\ (forall T t : term, u <> Abs T t)
    | _ => True
    end.

Lemma whnf_app_list : forall (args : list term) (e : env) (t : term), whnf_beta t -> (forall A M : term, t <> Abs A M) -> head_normal beta e (app_list args t).