Goal:
  
  A : Type
  B : Type
  a : A
  l : list A
  f : A -> option B
  g : A -> option B
  x : list B
  Hfg : forall (x : A) (y : B), f x = Some y -> g x = Some y
  IHl : forall x : list B,
        map_option_out (map f l) = Some x ->
        map_option_out (map g l) = Some x
  b : B
  fa : f a = Some b
  ============================
   (match map_option_out (map f l) with
    | Some tl => Some (b :: tl)
    | None => None
    end = Some x ->
    match g a with
    | Some hd =>
        match map_option_out (map g l) with
        | Some tl => Some (hd :: tl)
        | None => None
        end
    | None => None
    end = Some x)


DEBUG:Going to execute:
<coq-core.plugins.ssreflect::ssrrewrite@0> $1 $2
DEBUG LTAC Evaluated term: (f a)