End ListFun2'.
Definition not_nil {A: Type} (l: list A): Prop := l <> nil.

(* Specifications: *)
Lemma not_nil_app_l {A: Type}: forall (l l': list A), not_nil l -> not_nil (l ++ l').
Lemma eq_nil_dec {A: Type}: forall (l: list A), {l = nil} + {not_nil l}.
Instance Proper_perm_not_nil {A: Type}: Proper (@Permutation A ==> iff) (@not_nil A).