Definition Forall_tl (A : Type) (P : A -> Prop) (a : A) (l : list A)
           (H : Forall P (a :: l)): Forall P l.

Lemma length_not_emp : forall {A B : Type} (l : list A) (z y : B), (Datatypes.length l > 0)%nat -> match l with [] => z | _ => y end = y.