Goal:
  
  A : Type
  B : Type
  A' : Type
  B' : Type
  R : A' → B' → Prop
  f : A → A'
  g : B → B'
  a : A
  l : list A
  l' : list B
  IHl : ∀ l' : list B,
          Forall2 R (map f l) (map g l')
          → Forall2 (λ (x : A) (y : B), R (f x) (g y)) l l'
  ============================
   (Forall2 R (map f (a :: l)) (map g l')
    → Forall2 (λ (x : A) (y : B), R (f x) (g y)) (a :: l) l')


DEBUG:Going to execute:
destruct l'

Goals:
  
  A : Type
  B : Type
  A' : Type
  B' : Type
  R : A' → B' → Prop
  f : A → A'
  g : B → B'
  a : A
  l : list A
  IHl : ∀ l' : list B,
          Forall2 R (map f l) (map g l')
          → Forall2 (λ (x : A) (y : B), R (f x) (g y)) l l'
  ============================
   (Forall2 R (map f (a :: l)) (map g [])
    → Forall2 (λ (x : A) (y : B), R (f x) (g y)) (a :: l) [])

  
  A : Type
  B : Type
  A' : Type
  B' : Type
  R : A' → B' → Prop
  f : A → A'
  g : B → B'
  a : A
  l : list A
  b : B
  l' : list B
  IHl : ∀ l' : list B,
          Forall2 R (map f l) (map g l')
          → Forall2 (λ (x : A) (y : B), R (f x) (g y)) l l'
  ============================
   (Forall2 R (map f (a :: l)) (map g (b :: l'))
    → Forall2 (λ (x : A) (y : B), R (f x) (g y)) (a :: l) (b :: l'))


DEBUG:Going to execute:
inversion 1
DEBUG LTAC Evaluated term: l'