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''
  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:
inversion_clear H
Level 1: evaluation returns
inversion_clear H
where
H := HQ
of type
intropattern of type tacvalue


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

  
  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''
  y0 : C
  l'0 : list C
  H1 : Q y y0
  H2 : Forall2 Q l' l'0
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) 
      (x :: l) (y :: l') (y0 :: l'0))


DEBUG:Going to execute:
constructor
Level 1: evaluation returns
inversion_clear H
where
H := HQ
of type
intropattern of type tacvalue


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

  
  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''
  y0 : C
  l'0 : list C
  H1 : Q y y0
  H2 : Forall2 Q l' l'0
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) 
      (x :: l) (y :: l') (y0 :: l'0))


DEBUG:Going to execute:
<coq-core.plugins.ltac::constructor@0>

Goals:
  
  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''
  y0 : C
  l'0 : list C
  H1 : Q y y0
  H2 : Forall2 Q l' l'0
  ============================
   (P x y ∧ Q y y0)

  
  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''
  y0 : C
  l'0 : list C
  H1 : Q y y0
  H2 : Forall2 Q l' l'0
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) l l' l'0)


DEBUG:Going to execute:
eauto

Goals:
  
  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''
  y0 : C
  l'0 : list C
  H1 : Q y y0
  H2 : Forall2 Q l' l'0
  ============================
   (P x y ∧ Q y y0)

  
  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''
  y0 : C
  l'0 : list C
  H1 : Q y y0
  H2 : Forall2 Q l' l'0
  ============================
   (Forall3 (λ (x : A) (y : B) (z : C), P x y ∧ Q y z) l l' l'0)


DEBUG:Going to execute:
<coq-core.plugins.ltac::eauto@0> $1 $2 $3