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.

(* induction wrt the last element of a list *)
Lemma list_last_ind (X: Type) (P : list X -> Prop) :
P [] ->
(forall a A, P A -> P (A ++ [a])) ->
forall (A : list X), P A.