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
  ============================
   (DisjointAdd x (VSet.union s0 s') (VSet.union s2 s'))


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