Goal:
  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  Hp : ∀ i : nat, i < #|l| → p (f i)
  ============================
   (is_true (forallb p (unfold #|l| f)))


DEBUG:Going to execute:
induction #|l| in *

Goals:
  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  Hp : ∀ i : nat, i < 0 → p (f i)
  ============================
   (is_true (forallb p (unfold 0 f)))

  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  n : nat
  Hp : ∀ i : nat, i < S n → p (f i)
  IHn : (∀ i : nat, i < n → p (f i)) → forallb p (unfold n f)
  ============================
   (is_true (forallb p (unfold (S n) f)))


DEBUG:Going to execute:
simpl
DEBUG LTAC Evaluated term: #|l|

Goals:
  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  Hp : ∀ i : nat, i < 0 → p (f i)
  ============================
   (is_true true)

  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  n : nat
  Hp : ∀ i : nat, i < S n → p (f i)
  IHn : (∀ i : nat, i < n → p (f i)) → forallb p (unfold n f)
  ============================
   (is_true (forallb p (unfold n f ++ [f n])))


DEBUG:Going to execute:
auto

Goals:
  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  Hp : ∀ i : nat, i < 0 → p (f i)
  ============================
   (is_true true)

  
  A : Type
  B : Type
  p : B → bool
  f : nat → B
  l : list A
  n : nat
  Hp : ∀ i : nat, i < S n → p (f i)
  IHn : (∀ i : nat, i < n → p (f i)) → forallb p (unfold n f)
  ============================
   (is_true (forallb p (unfold n f ++ [f n])))


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