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
           | |- well_founded _ => auto with *
           | |- ?T => match type of T with
                      | Prop => auto
                      end
           end