Goal:
  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  Γ : list A
  Δ : list A
  H : All2_fold P Γ Δ
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|Γ| = #|Δ|
  ============================
   (All2_fold Q Γ Δ)


DEBUG:Going to execute:
induction H

Goals:
  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|[]| = #|[]|
  ============================
   (All2_fold Q [] [])

  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (All2_fold Q (d :: Γ) (d' :: Γ'))


DEBUG:Going to execute:
constructor
DEBUG LTAC Evaluated term: H

Goals:
  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|[]| = #|[]|
  ============================
   (All2_fold Q [] [])

  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (All2_fold Q (d :: Γ) (d' :: Γ'))


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

Goals:
  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (All2_fold Q Γ Γ')

  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (Q Γ Γ' d d')


DEBUG:Going to execute:
simpl

Goals:
  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (All2_fold Q Γ Γ')

  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (Q Γ Γ' d d')


DEBUG:Going to execute:
eauto

Goals:
  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (All2_fold Q Γ Γ')

  
  A : Type
  P : list A → list A → A → A → Type
  Q : list A → list A → A → A → Type
  d : A
  d' : A
  Γ : list A
  Γ' : list A
  H : All2_fold P Γ Γ'
  p : P Γ Γ' d d'
  HP : ∀ (Γ Δ : list A) (T U : A), #|Γ| = #|Δ| → P Γ Δ T U → Q Γ Δ T U
  H0 : #|d :: Γ| = #|d' :: Γ'|
  IHAll2_fold : #|Γ| = #|Γ'| → All2_fold Q Γ Γ'
  ============================
   (Q Γ Γ' d d')


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