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
  da : DisjointAdd x s0 s2
  e : EdgeOf x y
  p : SPath s0 y z'
  hin : Disjoint s2 s'
  q : SPath s' z' z
  ============================
   (VSetProp.Add x (VSet.union s0 s') (VSet.union s2 s') /\
    ~ VSet.In x (VSet.union s0 s'))


DEBUG:Going to execute:
match goal with
           | H:?X
             |- _ =>
                 match goal with
                 | H':?Y
                   |- _ =>
                       match H with
                       | H' => fail 2
                       | _ => unify X Y; clear H' || clear H
                       end
                 end
           end