Goal:
  
  B : Type
  C : Type
  A : B → Type
  D : B → C → Type
  l : list B
  l' : list C
  a : All A l
  all : All2
          (λ (x : B) (y : C),
             ?P x × (λ (x0 : B) (y0 : C), A x0 → D x0 y0) x y) l l'
  ============================
   (All2 D l l')


DEBUG:Going to execute:
fun => <coq-core.plugins.ltac::eassumption@0>