Goal:
  
  A : Type
  H : ReflectEq A
  a1 : A
  l1 : list A
  a2 : A
  l2 : list A
  prefix : list A
  l1' : list A
  l2' : list A
  Heq : split_prefix l1 l2 = (prefix, l1', l2')
  Hind : ∀ l : list A,
           is_prefix l l1
           → is_prefix l l2 → is_prefix l (fst (fst (split_prefix l1 l2)))
  Heq0 : (a1 == a2) = true
  l : list A
  _x_ : list A
  pr1 : is_prefix _x_ l1
  eqa : a1 = a2
  pr2 : is_prefix _x_ l2
  _a_ : list A
  _b_ : list A
  _b1_ : list A
  ============================
   (l1' = _b_
    → l2' = _b1_
      → is_prefix _x_ (fst (fst (_a_, _b_, _b1_))) → is_prefix _x_ _a_)


DEBUG:Going to execute:
trivial; hnf; intros; (solve
            [ do
            ![ solve
             [ trivial | apply : eq_sym ; trivial ]
             | discriminate
             | contradiction
             | Ltac.split ]
            | case not_locked_false_eq_true; Ltac.assumption
            | match goal with
              | H:¬ _ |- _ => solve [ case H; trivial ]
              end ])