Section ForallNorm.
Variable T : Type.
Variable P : T -> Prop.
(* usage rewrite ? Forall_norm *)
Definition Forall_norm := (@Forall_appP, @Forall_singletonP, @Forall_consP, @Forall_nilP).
End ForallNorm.

(* any list is empty or has a last element *)
Lemma nil_or_ex_last {T: Type} (A: list T) : A = [] \/ exists B a, A = B ++ [a].