Goal:
  
  A : Type
  B : Type
  P : nat → A → Type
  l : list A
  f : nat → A → B
  g : nat → A → B
  n : nat
  ============================
   (Alli P n l
    → (∀ (n : nat) (x : A), P n x → f n x = g n x)
      → mapi_rec f l n = mapi_rec g l n)


DEBUG:Going to execute:
induction 1

Goals:
  
  A : Type
  B : Type
  P : nat → A → Type
  f : nat → A → B
  g : nat → A → B
  n : nat
  ============================
   ((∀ (n : nat) (x : A), P n x → f n x = g n x)
    → mapi_rec f [] n = mapi_rec g [] n)

  
  A : Type
  B : Type
  P : nat → A → Type
  f : nat → A → B
  g : nat → A → B
  n : nat
  hd : A
  tl : list A
  p : P n hd
  X : Alli P (S n) tl
  IHX : (∀ (n : nat) (x : A), P n x → f n x = g n x)
        → mapi_rec f tl (S n) = mapi_rec g tl (S n)
  ============================
   ((∀ (n : nat) (x : A), P n x → f n x = g n x)
    → mapi_rec f (hd :: tl) n = mapi_rec g (hd :: tl) n)


DEBUG:Going to execute:
simpl

Goals:
  
  A : Type
  B : Type
  P : nat → A → Type
  f : nat → A → B
  g : nat → A → B
  n : nat
  ============================
   ((∀ (n : nat) (x : A), P n x → f n x = g n x) → [] = [])

  
  A : Type
  B : Type
  P : nat → A → Type
  f : nat → A → B
  g : nat → A → B
  n : nat
  hd : A
  tl : list A
  p : P n hd
  X : Alli P (S n) tl
  IHX : (∀ (n : nat) (x : A), P n x → f n x = g n x)
        → mapi_rec f tl (S n) = mapi_rec g tl (S n)
  ============================
   ((∀ (n : nat) (x : A), P n x → f n x = g n x)
    → f n hd :: mapi_rec f tl (S n) = g n hd :: mapi_rec g tl (S n))


DEBUG:Going to execute:
trivial

Goals:
  
  A : Type
  B : Type
  P : nat → A → Type
  f : nat → A → B
  g : nat → A → B
  n : nat
  ============================
   ((∀ (n : nat) (x : A), P n x → f n x = g n x) → [] = [])

  
  A : Type
  B : Type
  P : nat → A → Type
  f : nat → A → B
  g : nat → A → B
  n : nat
  hd : A
  tl : list A
  p : P n hd
  X : Alli P (S n) tl
  IHX : (∀ (n : nat) (x : A), P n x → f n x = g n x)
        → mapi_rec f tl (S n) = mapi_rec g tl (S n)
  ============================
   ((∀ (n : nat) (x : A), P n x → f n x = g n x)
    → f n hd :: mapi_rec f tl (S n) = g n hd :: mapi_rec g tl (S n))


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