Goal:
  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  ============================
   (alli p n l = alli (λ i : nat, p (n + i)) 0 l)


DEBUG:Going to execute:
induction l in n, p |- *

Goals:
  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  ============================
   (alli p n [] = alli (λ i : nat, p (n + i)) 0 [])

  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  a : A
  l0 : list A
  IHl0 : ∀ (p : nat → A → bool) (n : nat),
           alli p n l0 = alli (λ i : nat, p (n + i)) 0 l0
  ============================
   (alli p n (a :: l0) = alli (λ i : nat, p (n + i)) 0 (a :: l0))


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

Goals:
  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  ============================
   (true = true)

  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  a : A
  l0 : list A
  IHl0 : ∀ (p : nat → A → bool) (n : nat),
           alli p n l0 = alli (λ i : nat, p (n + i)) 0 l0
  ============================
   (p n a && alli p (S n) l0 =
    p (n + 0) a && alli (λ i : nat, p (n + i)) 1 l0)


DEBUG:Going to execute:
auto

Goals:
  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  ============================
   (true = true)

  
  A : Type
  p : nat → A → bool
  q : nat → A → bool
  l : list A
  l' : list A
  n : nat
  a : A
  l0 : list A
  IHl0 : ∀ (p : nat → A → bool) (n : nat),
           alli p n l0 = alli (λ i : nat, p (n + i)) 0 l0
  ============================
   (p n a && alli p (S n) l0 =
    p (n + 0) a && alli (λ i : nat, p (n + i)) 1 l0)


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