Goal:
  
  A : Type
  B : Type
  C : Type
  P : A → B → Prop
  Q : B → C → Prop
  l'' : list C
  x : A
  y : B
  l : list A
  l' : list B
  H : P x y
  H0 : Forall2 P l l'
  IHForall2 : ∀ l'' : list C,
                Forall2 Q l' l''
                → Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) l l' l''
  ============================
   (Forall2 Q (y :: l') l''
    → Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) 
        (x :: l) (y :: l') l'')


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

Goals:
  
  A : Type
  B : Type
  C : Type
  P : A → B → Prop
  Q : B → C → Prop
  l'' : list C
  HQ : Forall2 Q [] l''
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) [] [] l'')

  
  A : Type
  B : Type
  C : Type
  P : A → B → Prop
  Q : B → C → Prop
  l'' : list C
  x : A
  y : B
  l : list A
  l' : list B
  H : P x y
  H0 : Forall2 P l l'
  IHForall2 : ∀ l'' : list C,
                Forall2 Q l' l''
                → Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) l l' l''
  HQ : Forall2 Q (y :: l') l''
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) (x :: l) (y :: l') l'')


DEBUG:Going to execute:
inv ltac:(HQ)

Goals:
  
  A : Type
  B : Type
  C : Type
  P : A → B → Prop
  Q : B → C → Prop
  l'' : list C
  HQ : Forall2 Q [] l''
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) [] [] l'')

  
  A : Type
  B : Type
  C : Type
  P : A → B → Prop
  Q : B → C → Prop
  l'' : list C
  x : A
  y : B
  l : list A
  l' : list B
  H : P x y
  H0 : Forall2 P l l'
  IHForall2 : ∀ l'' : list C,
                Forall2 Q l' l''
                → Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) l l' l''
  HQ : Forall2 Q (y :: l') l''
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) (x :: l) (y :: l') l'')


DEBUG:Going to execute:
fun H => inversion_clear H