Goal:
    G : t  s : VSet.t  x : V.t  y : V.t  p : SPath s x y
  ============================
   (forall u : VSet.elt,
    {VSet.In u (snodes p)} + {u = y} ->
    SPath (VSet.remove u s) x u × SPath s u y)


DEBUG:Going to execute:
induction p

Goals:
    G : t  s0 : VSet.t  x : V.t
  ============================
   (forall u : VSet.elt,
    {VSet.In u (snodes (spath_refl s0 x))} + {u = x} ->
    SPath (VSet.remove u s0) x u × SPath s0 u x)

  
  G : t
  s0 : VSet.t
  s' : VSet.t
  x : V.t
  y : V.t
  z : V.t
  d : DisjointAdd x s0 s'
  e : EdgeOf x y
  p : SPath s0 y z
  IHp : forall u : VSet.elt,
        {VSet.In u (snodes p)} + {u = z} ->
        SPath (VSet.remove u s0) y u × SPath s0 u z
  ============================
   (forall u : VSet.elt,
    {VSet.In u (snodes (spath_step d e p))} + {u = z} ->
    SPath (VSet.remove u s') x u × SPath s' u z)


DEBUG:Going to execute:
intros u Hu
DEBUG LTAC Evaluated term: p

Goals:
  
  G : t
  s0 : VSet.t
  x : V.t
  u : VSet.elt
  Hu : {VSet.In u (snodes (spath_refl s0 x))} + {u = x}
  ============================
   (SPath (VSet.remove u s0) x u × SPath s0 u x)

  
  G : t
  s0 : VSet.t
  s' : VSet.t
  x : V.t
  y : V.t
  z : V.t
  d : DisjointAdd x s0 s'
  e : EdgeOf x y
  p : SPath s0 y z
  IHp : forall u : VSet.elt,
        {VSet.In u (snodes p)} + {u = z} ->
        SPath (VSet.remove u s0) y u × SPath s0 u z
  u : VSet.elt
  Hu : {VSet.In u (snodes (spath_step d e p))} + {u = z}
  ============================
   (SPath (VSet.remove u s') x u × SPath s' u z)


DEBUG:Going to execute:
cbn in *