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 beta_red_whnf : forall (e : env) (t u : term), red beta e t u -> whnf_beta t -> whnf_beta u.