Goal:
  
  G : t
  z : V.t
  fuel : nat
  IHfuel : forall (s : VSet.t) (x : V.t),
           VSet.cardinal s = fuel ->
           lsp00 fuel s x z =
           (if VSet.mem x s
            then
             fold_left max
               (map
                  (fun '(n, y) =>
                   (Some n +
                    lsp00 (VSet.cardinal (VSet.remove x s)) 
                      (VSet.remove x s) y z)%nbar) 
                  (succs x))
               (if is_left (V.eq_dec x z) then Some 0 else None)
            else if is_left (V.eq_dec x z) then Some 0 else None)
  s : VSet.t
  x : V.t
  H : VSet.cardinal s = Datatypes.S fuel
  ============================
   ((fun b : bool =>
     VSet.mem x s = b ->
     (if b
      then
       fold_left max
         (map
            (fun '(n, y) => (Some n + lsp00 fuel (VSet.remove x s) y z)%nbar)
            (succs x)) (if is_left (V.eq_dec x z) then Some 0 else None)
      else if is_left (V.eq_dec x z) then Some 0 else None) =
     (if b
      then
       fold_left max
         (map
            (fun '(n, y) =>
             (Some n +
              lsp00 (VSet.cardinal (VSet.remove x s)) (VSet.remove x s) y z)%nbar)
            (succs x)) (if is_left (V.eq_dec x z) then Some 0 else None)
      else if is_left (V.eq_dec x z) then Some 0 else None)) 
      (VSet.mem x s))


DEBUG:Going to execute:
case x
DEBUG LTAC Evaluated term: (VSet.mem x s)