Goal:
  
  ============================
   (∀ (A B : Type) (R : nat → A → B → Type) (n : nat) 
      (l0 : list A) (l : list B) (a b : All2i R n l0 l) 
      (e : NoConfusionHom_All2i A B R n l0 l a b),
      (λ (A0 B0 : Type) (R0 : nat → A0 → B0 → Type) 
         (n0 : nat) (l1 : list A0) (l2 : list B0) 
         (a0 b0 : All2i R0 n0 l1 l2) (H : a0 = b0),
         noConfusionHom_All2i_obligation_2 A0 B0 R0 n0 l1 l2 a0 b0 H) A B R n
        l0 l a b
        ((λ (A0 B0 : Type) (R0 : nat → A0 → B0 → Type) 
            (n0 : nat) (l1 : list A0) (l2 : list B0) 
            (a0 b0 : All2i R0 n0 l1 l2) (H : NoConfusionHom_All2i A0 B0 R0 n0
                                               l1 l2 a0 b0),
            noConfusionHom_All2i_obligation_1 A0 B0 R0 n0 l1 l2 a0 b0 H) A B
           R n l0 l a b e) = e)


DEBUG:Going to execute:
simpl; intros;
            match goal with
            | H:_ = _ |- _ = _ => try solve_noconf_hom_inv_equiv
            | H:_ = _ |- _ => try solve_noconf_prf
            | |- _ = _ => try solve_noconf_hom_inv
            end