Goal:
  
  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
  u : VSet.elt
  Hu : {VSet.In u (snodes (spath_step d e p))} + {u = z}
  IHp : forall Hu : {VSet.In u (snodes p)} + {u = z},
        sweight (split p u Hu).1 + sweight (split p u Hu).2 = sweight p
  X : x = u
  ============================
   (sweight
      (eq_rect_r
         (fun x : V.t =>
          DisjointAdd x s0 s' ->
          EdgeOf x y ->
          {VSet.In u (VSet.add x (snodes p))} + {u = z} ->
          SPath (VSet.remove u s') x u)
         (fun (_ : DisjointAdd u s0 s') (_ : EdgeOf u y)
            (_ : {VSet.In u (VSet.add u (snodes p))} + {u = z}) =>
          spath_refl (VSet.remove u s') u) X d e Hu) +
    ((eq_rec_r
        (fun x : V.t =>
         DisjointAdd x s0 s' ->
         EdgeOf x y ->
         {VSet.In u (VSet.add x (snodes p))} + {u = z} -> EdgeOf u y)
        (fun (_ : DisjointAdd u s0 s') (e : EdgeOf u y)
           (_ : {VSet.In u (VSet.add u (snodes p))} + {u = z}) => e) X d e Hu).π1 +
     sweight p) = e.π1 + sweight p)


DEBUG:Going to execute:
destruct X