Goal:
  
  G : t
  HI : invariants
  s0 : VSet.t
  s' : VSet.t
  x : V.t
  y : V.t
  z : V.t
  d : DisjointAdd x s0 s'
  x0 : Z
  i : EdgeSet.In (x, x0, y) (E G)
  p : SPath s0 y z
  H : VSet.In x (V G)
  IHp : VSet.In y (V G) -> VSet.In z (V G)
  H0 : VSet.In (x, x0, y)..s (V G)
  H1 : VSet.In (x, x0, y)..t (V G)
  ============================
   (VSet.In y (V G))


DEBUG:Going to execute:
fun H =>
             match type of H with
             | _ /\ _ => exact H || destruct_hyp H
             | (_ * _)%nat => exact H || destruct_hyp H
             | _ => try (solve [ inversion H ])
             end