Goal:
  
  A : Type
  B : Type
  P : nat → A → B → Type
  l0 : list A
  l0' : list A
  l1 : list B
  l1' : list B
  H : All2i_len P l0' l1'
  ============================
   (All2i_len (λ n : nat, P (n + #|l0'|)) l0 l1
    → All2i_len P (l0 ++ l0') (l1 ++ l1'))


DEBUG:Going to execute:
induction 1

Goals:
  
  A : Type
  B : Type
  P : nat → A → B → Type
  l0' : list A
  l1' : list B
  H : All2i_len P l0' l1'
  ============================
   (All2i_len P ([] ++ l0') ([] ++ l1'))

  
  A : Type
  B : Type
  P : nat → A → B → Type
  l0' : list A
  l1' : list B
  H : All2i_len P l0' l1'
  x : A
  y : B
  l : list A
  l' : list B
  r : P (#|l| + #|l0'|) x y
  X : All2i_len (λ n : nat, P (n + #|l0'|)) l l'
  IHX : All2i_len P (l ++ l0') (l' ++ l1')
  ============================
   (All2i_len P ((x :: l) ++ l0') ((y :: l') ++ l1'))


DEBUG:Going to execute:
simpl