Goal:
  
  A : Type
  B : Type
  R : A → B → Prop
  a : A
  l : list A
  H : ∀ (x : A) (y : B), R x y
  IHl : ∀ l' : list B, #|l| = #|l'| → Forall2 R l l'
  b : B
  l0 : list B
  e : S #|l| = #|b :: l0|
  ============================
   (Forall2 R (a :: l) (b :: l0))


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

Goals:
  
  A : Type
  B : Type
  R : A → B → Prop
  H : ∀ (x : A) (y : B), R x y
  e : 0 = #|[]|
  ============================
   (Forall2 R [] [])

  
  A : Type
  B : Type
  R : A → B → Prop
  a : A
  l : list A
  H : ∀ (x : A) (y : B), R x y
  IHl : ∀ l' : list B, #|l| = #|l'| → Forall2 R l l'
  b : B
  l0 : list B
  e : S #|l| = #|b :: l0|
  ============================
   (Forall2 R (a :: l) (b :: l0))


DEBUG:Going to execute:
constructor
DEBUG LTAC Evaluated term: e
Level 0: Backtrace:

Not a discriminable equality.
Level 0: Backtrace:

Not a discriminable equality.

Goals:
  
  A : Type
  B : Type
  R : A → B → Prop
  H : ∀ (x : A) (y : B), R x y
  e : 0 = #|[]|
  ============================
   (Forall2 R [] [])

  
  A : Type
  B : Type
  R : A → B → Prop
  a : A
  l : list A
  H : ∀ (x : A) (y : B), R x y
  IHl : ∀ l' : list B, #|l| = #|l'| → Forall2 R l l'
  b : B
  l0 : list B
  e : S #|l| = #|b :: l0|
  ============================
   (Forall2 R (a :: l) (b :: l0))


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