Goal:
  
  G : t
  s1 : VSet.t
  s' : VSet.t
  x0 : V.t
  y0 : V.t
  z : V.t
  p0 : SPath s1 x0 y0
  s0 : VSet.t
  s2 : VSet.t
  x : V.t
  y : V.t
  z' : V.t
  H : VSetProp.Add x s0 s2
  H0 : ~ VSet.In x s0
  e : EdgeOf x y
  p : SPath s0 y z'
  hin : VSet.Empty (VSet.inter s2 s')
  q : SPath s' z' z
  inxs' : VSet.In x s'
  H1 : VSet.In x s2 -> x = x \/ VSet.In x s0
  H2 : VSet.In x s2
  ============================
   (VSet.In x s2 /\ VSet.In x s')


DEBUG:Going to execute:
match goal with
           | H:_ /\ _ |- _ => exact H || (destruct_hyp H; use_hyps)
           | H:(_ * _)%nat |- _ => exact H || (destruct_hyp H; use_hyps)
           | H:_ |- _ => solve [ inversion H ]
           | _ => idtac
           end