Goal:
  
  A : Type
  B : Type
  f : nat → A → B
  x : A
  l : list A
  IHl : ∀ n k : nat,
          k ≤ n
          → List.rev (mapi_rec f l (n - k)) =
            mapi_rec (λ (k0 : nat) (x : A), f (Nat.pred #|l| + n - k0) x)
              (List.rev l) k
  n : nat
  k : nat
  H : k ≤ n
  ============================
   (f (#|l| + (n - k)) x :: List.rev (mapi_rec f l (n - k)) =
    f (Nat.pred #|l ++ [x]| + n - k) x
    :: mapi_rec (λ (k : nat) (x0 : A), f (Nat.pred #|l ++ [x]| + n - k) x0)
         (List.rev l) (S k))


DEBUG:Going to execute:
<coq-core.plugins.ssreflect::ssrrewrite@0> $1 $2

Goals:
  
  A : Type
  B : Type
  f : nat → A → B
  x : A
  l : list A
  IHl : ∀ n k : nat,
          k ≤ n
          → List.rev (mapi_rec f l (n - k)) =
            mapi_rec (λ (k0 : nat) (x : A), f (Nat.pred #|l| + n - k0) x)
              (List.rev l) k
  n : nat
  k : nat
  H : k ≤ n
  ============================
   (k ≤ n)

  
  A : Type
  B : Type
  f : nat → A → B
  x : A
  l : list A
  IHl : ∀ n k : nat,
          k ≤ n
          → List.rev (mapi_rec f l (n - k)) =
            mapi_rec (λ (k0 : nat) (x : A), f (Nat.pred #|l| + n - k0) x)
              (List.rev l) k
  n : nat
  k : nat
  H : k ≤ n
  ============================
   (f (#|l| + (n - k)) x
    :: mapi_rec (λ (k : nat) (x : A), f (Nat.pred #|l| + n - k) x)
         (List.rev l) k =
    f (Nat.pred #|l ++ [x]| + n - k) x
    :: mapi_rec (λ (k : nat) (x0 : A), f (Nat.pred #|l ++ [x]| + n - k) x0)
         (List.rev l) (S k))


DEBUG:Going to execute:
auto
DEBUG LTAC Evaluated term: IHl
DEBUG LTAC Evaluated term: IHl

Goals:
  
  A : Type
  B : Type
  f : nat → A → B
  x : A
  l : list A
  IHl : ∀ n k : nat,
          k ≤ n
          → List.rev (mapi_rec f l (n - k)) =
            mapi_rec (λ (k0 : nat) (x : A), f (Nat.pred #|l| + n - k0) x)
              (List.rev l) k
  n : nat
  k : nat
  H : k ≤ n
  ============================
   (k ≤ n)

  
  A : Type
  B : Type
  f : nat → A → B
  x : A
  l : list A
  IHl : ∀ n k : nat,
          k ≤ n
          → List.rev (mapi_rec f l (n - k)) =
            mapi_rec (λ (k0 : nat) (x : A), f (Nat.pred #|l| + n - k0) x)
              (List.rev l) k
  n : nat
  k : nat
  H : k ≤ n
  ============================
   (f (#|l| + (n - k)) x
    :: mapi_rec (λ (k : nat) (x : A), f (Nat.pred #|l| + n - k) x)
         (List.rev l) k =
    f (Nat.pred #|l ++ [x]| + n - k) x
    :: mapi_rec (λ (k : nat) (x0 : A), f (Nat.pred #|l ++ [x]| + n - k) x0)
         (List.rev l) (S k))


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

File "./theories/MCList.v", line 490, characters 10-20:
Warning: Notation app_length is deprecated since 8.20.
Use length_app instead.
[deprecated-syntactic-definition-since-8.20,deprecated-since-8.20,deprecated-syntactic-definition,deprecated,default]