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 : BinInt.Z.le (BinInt.Z.of_nat k0) (BinInt.Z.of_nat k)
  cstr : BinInt.Z.le BinNums.Z0 (BinInt.Z.of_nat k)
  cstr0 : BinInt.Z.le BinNums.Z0 (BinInt.Z.of_nat k0)
  ============================
   (g k0 a :: mapi_rec f l (S k0) = g k0 a :: mapi_rec g l (S k0))


DEBUG:Going to execute:
constr:(false)