Goal:
  
  A : Type
  B : Type
  P : B → A → A → Type
  i : list B
  i' : list B
  a : A
  l : list A
  tl : list A
  tl' : list A
  IHl : ∀ i i' : list B,
          OnOne2All P i tl tl'
          → #|i'| = #|l| → OnOne2All P (i' ++ i) (l ++ tl) (l ++ tl')
  ============================
   (OnOne2All P i tl tl'
    → #|i'| = S #|l| → OnOne2All P (i' ++ i) (a :: l ++ tl) (a :: l ++ tl'))


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

Goals:
  
  A : Type
  B : Type
  P : B → A → A → Type
  i : list B
  i' : list B
  tl : list A
  tl' : list A
  ============================
   (OnOne2All P i tl tl' → #|i'| = 0 → OnOne2All P (i' ++ i) tl tl')

  
  A : Type
  B : Type
  P : B → A → A → Type
  i : list B
  i' : list B
  a : A
  l : list A
  tl : list A
  tl' : list A
  IHl : ∀ i i' : list B,
          OnOne2All P i tl tl'
          → #|i'| = #|l| → OnOne2All P (i' ++ i) (l ++ tl) (l ++ tl')
  ============================
   (OnOne2All P i tl tl'
    → #|i'| = S #|l| → OnOne2All P (i' ++ i) (a :: l ++ tl) (a :: l ++ tl'))


DEBUG:Going to execute:
eauto
Level 0: Backtrace:

In environment
A : Type
B : Type
P : B → A → A → Type
i, i' : list B
a : A
l, tl, tl' : list A
IHl : ∀ i i' : list B,
        OnOne2All P i tl tl'
        → #|i'| = #|l| → OnOne2All P (i' ++ i) (l ++ tl) (l ++ tl')
X : OnOne2All P i tl tl'
H : #|i'| = S #|l|
Unable to unify
 "OnOne2All ?M2763 (?M2764 :: ?M2765) (?M2766 :: ?M2767) (?M2766 :: ?M2768)"
with "OnOne2All P (i' ++ i) (a :: l ++ tl) (a :: l ++ tl')".
Level 0: Backtrace:

In environment
A : Type
B : Type
P : B → A → A → Type
i, i' : list B
a : A
l, tl, tl' : list A
IHl : ∀ i i' : list B,
        OnOne2All P i tl tl'
        → #|i'| = #|l| → OnOne2All P (i' ++ i) (l ++ tl) (l ++ tl')
X : OnOne2All P i tl tl'
H : #|i'| = S #|l|
Unable to unify
 "OnOne2All ?M2763 (?M2764 :: ?M2765) (?M2766 :: ?M2767) (?M2766 :: ?M2768)"
with "OnOne2All P (i' ++ i) (a :: l ++ tl) (a :: l ++ tl')".

Goals:
  
  A : Type
  B : Type
  P : B → A → A → Type
  i : list B
  i' : list B
  tl : list A
  tl' : list A
  ============================
   (OnOne2All P i tl tl' → #|i'| = 0 → OnOne2All P (i' ++ i) tl tl')

  
  A : Type
  B : Type
  P : B → A → A → Type
  i : list B
  i' : list B
  a : A
  l : list A
  tl : list A
  tl' : list A
  IHl : ∀ i i' : list B,
          OnOne2All P i tl tl'
          → #|i'| = #|l| → OnOne2All P (i' ++ i) (l ++ tl) (l ++ tl')
  ============================
   (OnOne2All P i tl tl'
    → #|i'| = S #|l| → OnOne2All P (i' ++ i) (a :: l ++ tl) (a :: l ++ tl'))


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