Goal:
  
  A : Type
  B : Type
  f : A → B
  a : A
  l : list A
  IHl : ∀ l0 : list B,
          (fix aux (l : list A) (acc : list B) {struct l} : list B :=
             match l with
             | [] => acc
             | x :: l1 => aux l1 (f x :: acc)
             end) l l0 = List.rev (map f l) ++ l0
  l0 : list B
  ============================
   (List.rev (map f l) ++ f a :: l0 = List.rev (map f l) ++ [f a] ++ l0)


DEBUG:Going to execute:
solve
[ trivial
with eq_true
| reflexivity
| symmetry; trivial
| contradiction
| congruence ]