Goal:
    A : Type  P : A → bool  l : list A  x : A
  ============================
   (fold_right (λ (y : A) (x : bool), P y && x) (P x) (List.rev l) =
    P x && forallb P (List.rev l))


DEBUG:Going to execute:
induction (List.rev l)
DEBUG LTAC Evaluated term: forallb_app
DEBUG LTAC Evaluated term: forallb_app
DEBUG LTAC Evaluated term: fold_left_rev_right
DEBUG LTAC Evaluated term: fold_left_rev_right
DEBUG LTAC Evaluated term: forallb_rev
DEBUG LTAC Evaluated term: forallb_rev

Goals:
    A : Type  P : A → bool  l : list A  x : A
  ============================
   (fold_right (λ (y : A) (x : bool), P y && x) (P x) [] =
    P x && forallb P [])

  
  A : Type
  P : A → bool
  l : list A
  x : A
  a : A
  l0 : list A
  IHl0 : fold_right (λ (y : A) (x : bool), P y && x) (P x) l0 =
         P x && forallb P l0
  ============================
   (fold_right (λ (y : A) (x : bool), P y && x) (P x) (a :: l0) =
    P x && forallb P (a :: l0))


DEBUG:Going to execute:
cbn
DEBUG LTAC Evaluated term: (List.rev l)