reserve GS for GraphStruct;
reserve G,G1,G2,G3 for _Graph;
reserve e,x,x1,x2,y,y1,y2,E,V,X,Y for set;
reserve n,n1,n2 for Nat;
reserve v,v1,v2 for Vertex of G;

theorem
  for G being _Graph, v,w being object st v <> w
  holds G.edgesDBetween({v},{w}) misses G.edgesDBetween({w},{v}) &
    G.edgesBetween({v},{w})
      = G.edgesDBetween({v},{w}) \/ G.edgesDBetween({w},{v})
proof
  let G be _Graph, v,w be object;
  assume A1: v <> w;
  G.edgesDBetween({v},{w}) /\ G.edgesDBetween({w},{v}) = {}
  proof
    assume G.edgesDBetween({v},{w}) /\ G.edgesDBetween({w},{v}) <> {};
    then consider e being object such that
      A2: e in G.edgesDBetween({v},{w}) /\ G.edgesDBetween({w},{v})
      by XBOOLE_0:def 1;
    e in G.edgesDBetween({v},{w}) & e in G.edgesDBetween({w},{v})
      by A2, XBOOLE_0:def 4;
    then e DSJoins {v},{w},G & e DSJoins {w},{v},G by Def31;
    then (the_Source_of G).e in {v} & (the_Source_of G).e in {w};
    then (the_Source_of G).e = v & (the_Source_of G).e = w by TARSKI:def 1;
    hence contradiction by A1;
  end;
  hence G.edgesDBetween({v},{w}) misses G.edgesDBetween({w},{v})
    by XBOOLE_0:def 7;
  for e being object holds e in G.edgesBetween({v},{w}) iff
    e in G.edgesDBetween({v},{w}) or e in G.edgesDBetween({w},{v})
  proof
    let e be object;
    hereby
      assume e in G.edgesBetween({v},{w});
      then e SJoins {v},{w},G by Def30;
      then e DSJoins {v},{w},G or e DSJoins {w},{v},G;
      hence e in G.edgesDBetween({v},{w}) or e in G.edgesDBetween({w},{v})
        by Def31;
    end;
    assume e in G.edgesDBetween({v},{w}) or e in G.edgesDBetween({w},{v});
    then e DSJoins {v},{w},G or e DSJoins {w},{v},G by Def31;
    then e SJoins {v},{w},G;
    hence e in G.edgesBetween({v},{w}) by Def30;
  end;
  hence thesis by XBOOLE_0:def 3;
end;
