Goal:
  
  A : Type
  B : Type
  P : list A → list A → A → A → B → Type
  b : B
  ls1 : list B
  ============================
   (∀ ls2 ls3 : list A,
      b :: ls1 ≠ [] ∨ #|ls2| = #|ls3|
      → All
          (λ z : B,
             All2_fold (λ (l1 l2 : list A) (x y : A), P l1 l2 x y z) ls2 ls3)
          (b :: ls1)
        → All2_fold
            (λ (l1 l2 : list A) (x y : A), All (P l1 l2 x y) (b :: ls1)) ls2
            ls3)


DEBUG:Going to execute:
move  =>ls2 ls3 _