Goal:
  
  A : Type
  B : Type
  P : B → A → A → Prop
  P' : B → A → A → Prop
  h : ∀ (b : B) (x y : A), P b x y → P b y x → P' b x y
  l : list B
  l' : list A
  l'' : list A
  hl : Forall3 P l l' l''
  hl' : Forall3 P l l'' l'
  ============================
   (Forall3 P' l l' l'')


DEBUG:Going to execute:
induction hl in hl' |- *

Goals:
  
  A : Type
  B : Type
  P : B → A → A → Prop
  P' : B → A → A → Prop
  h : ∀ (b : B) (x y : A), P b x y → P b y x → P' b x y
  hl' : Forall3 P [] [] []
  ============================
   (Forall3 P' [] [] [])

  
  A : Type
  B : Type
  P : B → A → A → Prop
  P' : B → A → A → Prop
  h : ∀ (b : B) (x y : A), P b x y → P b y x → P' b x y
  x : B
  y : A
  z : A
  l : list B
  l' : list A
  l'' : list A
  H : P x y z
  hl : Forall3 P l l' l''
  hl' : Forall3 P (x :: l) (z :: l'') (y :: l')
  IHhl : Forall3 P l l'' l' → Forall3 P' l l' l''
  ============================
   (Forall3 P' (x :: l) (y :: l') (z :: l''))


DEBUG:Going to execute:
inv hl'
DEBUG LTAC Evaluated term: hl

Goals:
  
  A : Type
  B : Type
  P : B → A → A → Prop
  P' : B → A → A → Prop
  h : ∀ (b : B) (x y : A), P b x y → P b y x → P' b x y
  hl' : Forall3 P [] [] []
  ============================
   (Forall3 P' [] [] [])

  
  A : Type
  B : Type
  P : B → A → A → Prop
  P' : B → A → A → Prop
  h : ∀ (b : B) (x y : A), P b x y → P b y x → P' b x y
  x : B
  y : A
  z : A
  l : list B
  l' : list A
  l'' : list A
  H : P x y z
  hl : Forall3 P l l' l''
  hl' : Forall3 P (x :: l) (z :: l'') (y :: l')
  IHhl : Forall3 P l l'' l' → Forall3 P' l l' l''
  ============================
   (Forall3 P' (x :: l) (y :: l') (z :: l''))


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