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 H with
           | H' => fail 2
           | _ => unify X Y; clear H' || clear H
           end
Level 4: Backtrace:

In environment
G : t
s1, s' : VSet.t
x0, y0, z : V.t
p0 : SPath s1 x0 y0
s0, s2 : VSet.t
x, y, 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
Unable to unify "EdgeOf x y" with "SPath s0 y z'".
Level 4: Backtrace:

In environment
G : t
s1, s' : VSet.t
x0, y0, z : V.t
p0 : SPath s1 x0 y0
s0, s2 : VSet.t
x, y, 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
Unable to unify "EdgeOf x y" with "SPath s0 y z'".
Level 4: Backtrace:

In environment
G : t
s1, s' : VSet.t
x0, y0, z : V.t
p0 : SPath s1 x0 y0
s0, s2 : VSet.t
x, y, 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
Unable to unify "EdgeOf x y" with "SPath s0 y z'".
Level 4: Backtrace:

In environment
G : t
s1, s' : VSet.t
x0, y0, z : V.t
p0 : SPath s1 x0 y0
s0, s2 : VSet.t
x, y, 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
Unable to unify "EdgeOf x y" with "SPath s0 y z'".
Level 3: Backtrace:

In environment
G : t
s1, s' : VSet.t
x0, y0, z : V.t
p0 : SPath s1 x0 y0
s0, s2 : VSet.t
x, y, 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
Unable to unify "EdgeOf x y" with "SPath s0 y z'".