Goal:
  
  G : t
  HG : acyclic_no_loop
  x : V.t
  y : V.t
  z : V.t
  e : EdgeOf x y
  p : PathOf y z
  IHp : weight p <= sweight (simplify2 p)
  ============================
   (e.π1 + weight p <=
    sweight
      ((if VSet.mem x (snodes (simplify2 p)) as b
         return
           (VSet.mem x (snodes (simplify2 p)) = b ->
            SPath (VSet.add x (nodes p)) x z)
        then
         fun Hx : VSet.mem x (snodes (simplify2 p)) = true =>
         SPath_sub
           (VSetProp.subset_add_2 (s2:=nodes p) x (reflexivity (nodes p)))
           (split (simplify2 p) x (left (VSetFact.mem_2 Hx))).2
        else
         fun Hx : VSet.mem x (snodes (simplify2 p)) = false =>
         SPath_sub
           (VSetFact.add_s_m eq_refl (y:=nodes p)
              (snodes_Subset (simplify2 p)))
           (spath_step
              (DisjointAdd_add2
                 (match VSetFact.not_mem_iff (snodes (simplify2 p)) x with
                  | conj _ x => x
                  end Hx)) e (reduce (simplify2 p)))) eq_refl))


DEBUG:Going to execute:
set (F0 := VSetFact.mem_2 (s:=snodes (simplify2 p)) (x:=x))