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
  ============================
   (e.π1 +
    sweight
      (split p u
         (sumbool_rec
            (fun _ : {VSet.In u (VSet.add x (snodes p))} + {u = z} =>
             {VSet.In u (snodes p)} + {u = z})
            (fun Hu : VSet.In u (VSet.add x (snodes p)) =>
             left (VSetFact.add_3 X Hu)) (fun Hu : u = z => right Hu) Hu)).1 +
    sweight
      (SPath_sub (DisjointAdd_Subset d)
         (split p u
            (sumbool_rec
               (fun _ : {VSet.In u (VSet.add x (snodes p))} + {u = z} =>
                {VSet.In u (snodes p)} + {u = z})
               (fun Hu : VSet.In u (VSet.add x (snodes p)) =>
                left (VSetFact.add_3 X Hu)) (fun Hu : u = z => right Hu) Hu)).2) =
    e.π1 + sweight p)


DEBUG:Going to execute:
<coq-core.plugins.ssreflect::ssrrewrite@0> $1 $2