Goal:
    A : Type  P : A → A → Prop  l : list A  l' : list A  r : A  r' : A
  ============================
   (Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r')


DEBUG:Going to execute:
induction l in l', r |- *

Goals:
    A : Type  P : A → A → Prop  l' : list A  r : A  r' : A
  ============================
   (Forall2 P ([] ++ [r]) (l' ++ [r']) → Forall2 P [] l' ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  ============================
   (Forall2 P ((a :: l) ++ [r]) (l' ++ [r']) → Forall2 P (a :: l) l' ∧ P r r')


DEBUG:Going to execute:
simpl
DEBUG LTAC Evaluated term: l

Goals:
    A : Type  P : A → A → Prop  l' : list A  r : A  r' : A
  ============================
   (Forall2 P [r] (l' ++ [r']) → Forall2 P [] l' ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  ============================
   (Forall2 P (a :: l ++ [r]) (l' ++ [r']) → Forall2 P (a :: l) l' ∧ P r r')


DEBUG:Going to execute:
intros

Goals:
  
  A : Type
  P : A → A → Prop
  l' : list A
  r : A
  r' : A
  H : Forall2 P [r] (l' ++ [r'])
  ============================
   (Forall2 P [] l' ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) (l' ++ [r'])
  ============================
   (Forall2 P (a :: l) l' ∧ P r r')


DEBUG:Going to execute:
destruct l'

Goals:
    A : Type  P : A → A → Prop  r : A  r' : A  H : Forall2 P [r] ([] ++ [r'])
  ============================
   (Forall2 P [] [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l' : list A
  r : A
  r' : A
  H : Forall2 P [r] ((a :: l') ++ [r'])
  ============================
   (Forall2 P [] (a :: l') ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) ([] ++ [r'])
  ============================
   (Forall2 P (a :: l) [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  a0 : A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) ((a0 :: l') ++ [r'])
  ============================
   (Forall2 P (a :: l) (a0 :: l') ∧ P r r')


DEBUG:Going to execute:
simpl in *
DEBUG LTAC Evaluated term: l'
DEBUG LTAC Evaluated term: l'

Goals:
    A : Type  P : A → A → Prop  r : A  r' : A  H : Forall2 P [r] [r']
  ============================
   (Forall2 P [] [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l' : list A
  r : A
  r' : A
  H : Forall2 P [r] (a :: l' ++ [r'])
  ============================
   (Forall2 P [] (a :: l') ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) [r']
  ============================
   (Forall2 P (a :: l) [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  a0 : A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) (a0 :: l' ++ [r'])
  ============================
   (Forall2 P (a :: l) (a0 :: l') ∧ P r r')


DEBUG:Going to execute:
inversion H

Goals:
  
  A : Type
  P : A → A → Prop
  r : A
  r' : A
  H : Forall2 P [r] [r']
  x : A
  y : A
  l : list A
  l' : list A
  H3 : P r r'
  H5 : Forall2 P [] []
  H0 : x = r
  H1 : l = []
  H2 : y = r'
  H4 : l' = []
  ============================
   (Forall2 P [] [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l' : list A
  r : A
  r' : A
  H : Forall2 P [r] (a :: l' ++ [r'])
  x : A
  y : A
  l : list A
  l'0 : list A
  H3 : P r a
  H5 : Forall2 P [] (l' ++ [r'])
  H0 : x = r
  H1 : l = []
  H2 : y = a
  H4 : l'0 = l' ++ [r']
  ============================
   (Forall2 P [] (a :: l') ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) [r']
  x : A
  y : A
  l0 : list A
  l' : list A
  H3 : P a r'
  H5 : Forall2 P (l ++ [r]) []
  H0 : x = a
  H1 : l0 = l ++ [r]
  H2 : y = r'
  H4 : l' = []
  ============================
   (Forall2 P (a :: l) [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  a0 : A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) (a0 :: l' ++ [r'])
  x : A
  y : A
  l0 : list A
  l'0 : list A
  H3 : P a a0
  H5 : Forall2 P (l ++ [r]) (l' ++ [r'])
  H0 : x = a
  H1 : l0 = l ++ [r]
  H2 : y = a0
  H4 : l'0 = l' ++ [r']
  ============================
   (Forall2 P (a :: l) (a0 :: l') ∧ P r r')


DEBUG:Going to execute:
subst

Goals:
  
  A : Type
  P : A → A → Prop
  r : A
  r' : A
  H : Forall2 P [r] [r']
  x : A
  y : A
  l : list A
  l' : list A
  H3 : P r r'
  H5 : Forall2 P [] []
  H0 : x = r
  H1 : l = []
  H2 : y = r'
  H4 : l' = []
  ============================
   (Forall2 P [] [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l' : list A
  r : A
  r' : A
  H : Forall2 P [r] (a :: l' ++ [r'])
  x : A
  y : A
  l : list A
  l'0 : list A
  H3 : P r a
  H5 : Forall2 P [] (l' ++ [r'])
  H0 : x = r
  H1 : l = []
  H2 : y = a
  H4 : l'0 = l' ++ [r']
  ============================
   (Forall2 P [] (a :: l') ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) [r']
  x : A
  y : A
  l0 : list A
  l' : list A
  H3 : P a r'
  H5 : Forall2 P (l ++ [r]) []
  H0 : x = a
  H1 : l0 = l ++ [r]
  H2 : y = r'
  H4 : l' = []
  ============================
   (Forall2 P (a :: l) [] ∧ P r r')

  
  A : Type
  P : A → A → Prop
  a : A
  l : list A
  a0 : A
  l' : list A
  r : A
  r' : A
  IHl : ∀ (l' : list A) (r : A),
          Forall2 P (l ++ [r]) (l' ++ [r']) → Forall2 P l l' ∧ P r r'
  H : Forall2 P (a :: l ++ [r]) (a0 :: l' ++ [r'])
  x : A
  y : A
  l0 : list A
  l'0 : list A
  H3 : P a a0
  H5 : Forall2 P (l ++ [r]) (l' ++ [r'])
  H0 : x = a
  H1 : l0 = l ++ [r]
  H2 : y = a0
  H4 : l'0 = l' ++ [r']
  ============================
   (Forall2 P (a :: l) (a0 :: l') ∧ P r r')


DEBUG:Going to execute:
<coq-core.plugins.ltac::subst@1>