Goal:
  
  A : Type
  a : A
  l : list (option A)
  l' : list A
  IHl : forall l' : list A, map_option_out l = Some l' -> #|l| = #|l'|
  ============================
   (match map_option_out l with
    | Some tl => Some (a :: tl)
    | None => None
    end = Some l' -> S #|l| = #|l'|)


DEBUG:Going to execute:
destruct map_option_out eqn:Heq

Goals:
  
  A : Type
  a : A
  l : list (option A)
  l' : list A
  l0 : list A
  Heq : map_option_out l = Some l0
  IHl : forall l' : list A, Some l0 = Some l' -> #|l| = #|l'|
  ============================
   (Some (a :: l0) = Some l' -> S #|l| = #|l'|)

  
  A : Type
  a : A
  l : list (option A)
  l' : list A
  Heq : map_option_out l = None
  IHl : forall l' : list A, None = Some l' -> #|l| = #|l'|
  ============================
   (None = Some l' -> S #|l| = #|l'|)


DEBUG:Going to execute:
try discriminate
DEBUG LTAC Evaluated term: map_option_out