
theorem Th37:
  for G1 being _Graph, e being set, G2 being removeEdge of G1, e
  st e in the_Edges_of G1
  holds G1 is addEdge of G2, (the_Source_of G1).e, e, (the_Target_of G1).e
proof
  let G1 be _Graph, e be set, G2 be removeEdge of G1, e;
  assume A1: e in the_Edges_of G1;
  set u = (the_Source_of G1).e, w = (the_Target_of G1).e;
  A2: G1 is Supergraph of G2 by GLIB_006:57;
  A3: the_Vertices_of G1 = the_Vertices_of G2 by GLIB_000:51;
  A4: the_Edges_of G1 = (the_Edges_of G1 \ {e}) \/ {e} by A1, ZFMISC_1:116
    .= the_Edges_of G2 \/ {e} by GLIB_000:51;
  A5: dom the_Source_of G1 = the_Edges_of G1 by FUNCT_2:def 1
    .= dom the_Source_of G2 \/ dom({e} --> u) by A4, FUNCT_2:def 1
    .= dom the_Source_of G2 \/ dom(e .--> u) by FUNCOP_1:def 9
    .= dom(the_Source_of G2 +* (e .--> u)) by FUNCT_4:def 1;
  for e0 being object st e0 in dom the_Source_of G1
    holds (the_Source_of G1).e0 = (the_Source_of G2 +* (e .--> u)).e0
  proof
    let e0 be object;
    assume A6: e0 in dom the_Source_of G1;
    per cases;
    suppose e0 = e;
      hence (the_Source_of G1).e0
        = (the_Source_of G2 +* (e .--> u)).e0 by FUNCT_4:113;
    end;
    suppose A7: e0 <> e;
      then not e0 in {e} by TARSKI:def 1;
      then e0 in the_Edges_of G1 \ {e} by A6, XBOOLE_0:def 5;
      then e0 in the_Edges_of G2 by GLIB_000:51;
      hence (the_Source_of G1).e0 = (the_Source_of G2).e0 by GLIB_000:def 32
        .= (the_Source_of G2 +* (e .--> u)).e0 by A7, FUNCT_4:83;
    end;
  end;
  then A8: the_Source_of G1 = the_Source_of G2 +* (e .--> u) by A5, FUNCT_1:2;
  A9: dom the_Target_of G1 = the_Edges_of G1 by FUNCT_2:def 1
    .= dom the_Target_of G2 \/ dom({e} --> w) by A4, FUNCT_2:def 1
    .= dom the_Target_of G2 \/ dom(e .--> w) by FUNCOP_1:def 9
    .= dom(the_Target_of G2 +* (e .--> w)) by FUNCT_4:def 1;
  for e0 being object st e0 in dom the_Target_of G1
    holds (the_Target_of G1).e0 = (the_Target_of G2 +* (e .--> w)).e0
  proof
    let e0 be object;
    assume A10: e0 in dom the_Target_of G1;
    per cases;
    suppose e0 = e;
      hence (the_Target_of G1).e0
        = (the_Target_of G2 +* (e .--> w)).e0 by FUNCT_4:113;
    end;
    suppose A11: e0 <> e;
      then not e0 in {e} by TARSKI:def 1;
      then e0 in the_Edges_of G1 \ {e} by A10, XBOOLE_0:def 5;
      then e0 in the_Edges_of G2 by GLIB_000:51;
      hence (the_Target_of G1).e0 = (the_Target_of G2).e0 by GLIB_000:def 32
        .= (the_Target_of G2 +* (e .--> w)).e0 by A11, FUNCT_4:83;
    end;
  end;
  then A12: the_Target_of G1 = the_Target_of G2 +*(e .--> w) by A9, FUNCT_1:2;
  A13: u in the_Vertices_of G2 & w in the_Vertices_of G2 by A1, A3, FUNCT_2:5;
  e in {e} by TARSKI:def 1;
  then not e in the_Edges_of G1 \ {e} by XBOOLE_0:def 5;
  then not e in the_Edges_of G2 by GLIB_000:51;
  hence thesis by A2, A3, A4, A8, A12, A13, GLIB_006:def 11;
end;
