Goal:
    A : Type  B : Type  P : B → Prop  f : A → B  l : list A
  ============================
   (Forall P (map f l) → Forall (λ x : A, P (f x)) l)


DEBUG:Going to execute:
induction l

Goals:
    A : Type  B : Type  P : B → Prop  f : A → B
  ============================
   (Forall P (map f []) → Forall (λ x : A, P (f x)) [])

  
  A : Type
  B : Type
  P : B → Prop
  f : A → B
  a : A
  l : list A
  IHl : Forall P (map f l) → Forall (λ x : A, P (f x)) l
  ============================
   (Forall P (map f (a :: l)) → Forall (λ x : A, P (f x)) (a :: l))


DEBUG:Going to execute:
intros Hf
DEBUG LTAC Evaluated term: l

Goals:
    A : Type  B : Type  P : B → Prop  f : A → B  Hf : Forall P (map f [])
  ============================
   (Forall (λ x : A, P (f x)) [])

  
  A : Type
  B : Type
  P : B → Prop
  f : A → B
  a : A
  l : list A
  IHl : Forall P (map f l) → Forall (λ x : A, P (f x)) l
  Hf : Forall P (map f (a :: l))
  ============================
   (Forall (λ x : A, P (f x)) (a :: l))


DEBUG:Going to execute:
inv Hf

Goals:
    A : Type  B : Type  P : B → Prop  f : A → B  Hf : Forall P (map f [])
  ============================
   (Forall (λ x : A, P (f x)) [])

  
  A : Type
  B : Type
  P : B → Prop
  f : A → B
  a : A
  l : list A
  IHl : Forall P (map f l) → Forall (λ x : A, P (f x)) l
  Hf : Forall P (map f (a :: l))
  ============================
   (Forall (λ x : A, P (f x)) (a :: l))


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

Goals:
    A : Type  B : Type  P : B → Prop  f : A → B  Hf : Forall P (map f [])
  ============================
   (Forall (λ x : A, P (f x)) [])

  
  A : Type
  B : Type
  P : B → Prop
  f : A → B
  a : A
  l : list A
  IHl : Forall P (map f l) → Forall (λ x : A, P (f x)) l
  Hf : Forall P (map f (a :: l))
  ============================
   (Forall (λ x : A, P (f x)) (a :: l))


DEBUG:Going to execute:
inversion_clear H

Goals:
    A : Type  B : Type  P : B → Prop  f : A → B
  ============================
   (Forall (λ x : A, P (f x)) [])

  
  A : Type
  B : Type
  P : B → Prop
  f : A → B
  a : A
  l : list A
  IHl : Forall P (map f l) → Forall (λ x : A, P (f x)) l
  H : P (f a)
  H0 : Forall P (map f l)
  ============================
   (Forall (λ x : A, P (f x)) (a :: l))


DEBUG:Going to execute:
try constructor
Level 1: evaluation returns
inversion_clear H
where
H := Hf
of type
ident of type tacvalue

Level 1: evaluation returns
inversion_clear H
where
H := Hf
of type
ident of type tacvalue