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


DEBUG:Going to execute:
induction l in i, i' |- *

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'| = #|[]| → 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'| = #|a :: l|
      → OnOne2All P (i' ++ i) ((a :: l) ++ tl) ((a :: l) ++ tl'))


DEBUG:Going to execute:
simpl
DEBUG LTAC Evaluated term: l

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:
try constructor