Goal:
  
  A : Type
  B : Type
  f : nat → A → B
  g : nat → A → B
  a : A
  l : list A
  k : nat
  Hl : ∀ (k' : nat) (x : A), k' < k + S #|l| → f k' x = g k' x
  IHl : ∀ k : nat,
          (∀ (k' : nat) (x : A), k' < k + #|l| → f k' x = g k' x)
          → ∀ k0 : nat, k0 ≤ k → mapi_rec f l k0 = mapi_rec g l k0
  k0 : nat
  H : k0 ≤ k
  ============================
   (f k0 a :: mapi_rec f l (S k0) = g k0 a :: mapi_rec g l (S k0))


DEBUG:Going to execute:
erewrite Hl

Goals:
  
  A : Type
  B : Type
  f : nat → A → B
  g : nat → A → B
  a : A
  l : list A
  k : nat
  Hl : ∀ (k' : nat) (x : A), k' < k + S #|l| → f k' x = g k' x
  IHl : ∀ k : nat,
          (∀ (k' : nat) (x : A), k' < k + #|l| → f k' x = g k' x)
          → ∀ k0 : nat, k0 ≤ k → mapi_rec f l k0 = mapi_rec g l k0
  k0 : nat
  H : k0 ≤ k
  ============================
   (g k0 a :: mapi_rec f l (S k0) = g k0 a :: mapi_rec g l (S k0))

  
  A : Type
  B : Type
  f : nat → A → B
  g : nat → A → B
  a : A
  l : list A
  k : nat
  Hl : ∀ (k' : nat) (x : A), k' < k + S #|l| → f k' x = g k' x
  IHl : ∀ k : nat,
          (∀ (k' : nat) (x : A), k' < k + #|l| → f k' x = g k' x)
          → ∀ k0 : nat, k0 ≤ k → mapi_rec f l k0 = mapi_rec g l k0
  k0 : nat
  H : k0 ≤ k
  ============================
   (k0 < k + S #|l|)


DEBUG:Going to execute:
try lia
DEBUG LTAC Evaluated term: Hl
DEBUG LTAC Evaluated term: Hl
DEBUG LTAC Evaluated term: Hl