Goal:
  
  A : Type
  B : Type
  P : nat → B → B → Type
  i : nat
  l : list A
  l' : list A
  f : A → B
  ============================
   (OnOne2i (λ i : nat, on_Trel (P i) f) i l l'
    → OnOne2i P i (map f l) (map f l'))


DEBUG:Going to execute:
induction 1

Goals:
  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  hd' : A
  tl : list A
  p : on_Trel (P i) f hd hd'
  ============================
   (OnOne2i P i (map f (hd :: tl)) (map f (hd' :: tl)))

  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  tl : list A
  tl' : list A
  X : OnOne2i (λ i : nat, on_Trel (P i) f) (S i) tl tl'
  IHX : OnOne2i P (S i) (map f tl) (map f tl')
  ============================
   (OnOne2i P i (map f (hd :: tl)) (map f (hd :: tl')))


DEBUG:Going to execute:
simpl

Goals:
  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  hd' : A
  tl : list A
  p : on_Trel (P i) f hd hd'
  ============================
   (OnOne2i P i (f hd :: map f tl) (f hd' :: map f tl))

  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  tl : list A
  tl' : list A
  X : OnOne2i (λ i : nat, on_Trel (P i) f) (S i) tl tl'
  IHX : OnOne2i P (S i) (map f tl) (map f tl')
  ============================
   (OnOne2i P i (f hd :: map f tl) (f hd :: map f tl'))


DEBUG:Going to execute:
constructor

Goals:
  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  hd' : A
  tl : list A
  p : on_Trel (P i) f hd hd'
  ============================
   (OnOne2i P i (f hd :: map f tl) (f hd' :: map f tl))

  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  tl : list A
  tl' : list A
  X : OnOne2i (λ i : nat, on_Trel (P i) f) (S i) tl tl'
  IHX : OnOne2i P (S i) (map f tl) (map f tl')
  ============================
   (OnOne2i P i (f hd :: map f tl) (f hd :: map f tl'))


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

Goals:
  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  hd' : A
  tl : list A
  p : on_Trel (P i) f hd hd'
  ============================
   (P i (f hd) (f hd'))

  
  A : Type
  B : Type
  P : nat → B → B → Type
  f : A → B
  i : nat
  hd : A
  tl : list A
  tl' : list A
  X : OnOne2i (λ i : nat, on_Trel (P i) f) (S i) tl tl'
  IHX : OnOne2i P (S i) (map f tl) (map f tl')
  ============================
   (OnOne2i P (S i) (map f tl) (map f tl'))


DEBUG:Going to execute:
try congruence