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


DEBUG:Going to execute:
induction l

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

  
  A : Type
  B : Type
  P : B → Type
  f : A → B
  a : A
  l : list A
  IHl : All P (map f l) → All (λ x : A, P (f x)) l
  ============================
   (All P (map f (a :: l)) → All (λ 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 → Type  f : A → B  Hf : All P (map f [])
  ============================
   (All (λ x : A, P (f x)) [])

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


DEBUG:Going to execute:
inv Hf

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

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


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

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

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


DEBUG:Going to execute:
inversion_clear H

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

  
  A : Type
  B : Type
  P : B → Type
  f : A → B
  a : A
  l : list A
  IHl : All P (map f l) → All (λ x : A, P (f x)) l
  X : P (f a)
  X0 : All P (map f l)
  ============================
   (All (λ 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