Definition list_length_induction :
  forall P : list A -> Type,
  (forall l1 : list A,
   (forall l2 : list A, length l2 < length l1 -> P l2) -> P l1) ->
  forall l : list A, P l.

Theorem in_ex_app : forall (a : A) (l : list A), In a l -> exists l1 : list A, (exists l2 : list A, l = l1 ++ a :: l2).