Goal:
  
  A : Type
  B : Type
  C : Type
  n : nat
  l : list A
  l' : list B
  f : A → B → C
  P : nat → A → C → Type
  ============================
   (All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) n l l'
    → All2i P n l (map2 f l l'))


DEBUG:Going to execute:
induction 1

Goals:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  ============================
   (All2i P n [] (map2 f [] []))

  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (All2i P n (x :: l) (map2 f (x :: l) (y :: r)))


DEBUG:Going to execute:
cbn

Goals:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  ============================
   (All2i P n [] [])

  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (All2i P n (x :: l) (f x y :: map2 f l r))


DEBUG:Going to execute:
constructor

Goals:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  ============================
   (All2i P n [] [])

  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (All2i P n (x :: l) (f x y :: map2 f l r))


DEBUG:Going to execute:
<coq-core.plugins.ltac::constructor@0>

Goals:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (P n x (f x y))

  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (All2i P (S n) l (map2 f l r))


DEBUG:Going to execute:
auto

Goals:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (P n x (f x y))

  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  P : nat → A → C → Type
  n : nat
  x : A
  y : B
  l : list A
  r : list B
  r0 : P n x (f x y)
  X : All2i (λ (n : nat) (x : A) (y : B), P n x (f x y)) (S n) l r
  IHX : All2i P (S n) l (map2 f l r)
  ============================
   (All2i P (S n) l (map2 f l r))


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