Goal:
  
  A : Type
  a : option A
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : option_map f a = Some a0
  ============================
   (Some (a0 :: map f l0) =
    option_map (map f)
      match a with
      | Some hd => Some (hd :: l0)
      | None => None
      end)


DEBUG:Going to execute:
destruct a

Goals:
  
  A : Type
  a : A
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : option_map f (Some a) = Some a0
  ============================
   (Some (a0 :: map f l0) = option_map (map f) (Some (a :: l0)))

  
  A : Type
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : option_map f None = Some a0
  ============================
   (Some (a0 :: map f l0) = option_map (map f) None)


DEBUG:Going to execute:
simpl in *
DEBUG LTAC Evaluated term: a

Goals:
  
  A : Type
  a : A
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : Some (f a) = Some a0
  ============================
   (Some (a0 :: map f l0) = Some (f a :: map f l0))

  
  A : Type
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : None = Some a0
  ============================
   (Some (a0 :: map f l0) = None)


DEBUG:Going to execute:
congruence

Goals:
  
  A : Type
  a : A
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : Some (f a) = Some a0
  ============================
   (Some (a0 :: map f l0) = Some (f a :: map f l0))

  
  A : Type
  l : list (option A)
  f : A -> A
  l0 : list A
  IHl : map_option_out (map (option_map f) l) = Some (map f l0)
  a0 : A
  fa : None = Some a0
  ============================
   (Some (a0 :: map f l0) = None)


DEBUG:Going to execute:
<coq-core.plugins.cc::cc@0> $1