Goal:
  
  G1 : t
  ext : EdgeSet.t
  x : VSet.elt
  e : EdgeSet.elt
  es : list EdgeSet.elt
  ih : VSet.In x (fold_right fold_fun VSet.empty es) <->
       (exists e : EdgeSet.elt,
          In e es /\ (x = e..s \/ x = e..t) /\ VSet.In x (V G1))
  _a_ : (x = e..s \/ x = e..t) /\ VSet.In x (V G1)
  ============================
   ((e = e \/ In e es) /\ (x = e..s \/ x = e..t) /\ VSet.In x (V G1))


DEBUG:Going to execute:
repeat
            match goal with
            | |- ?X1 -> ?X2 => intro
            | |- ~ _ => unfold not at 1; intro
            end