
theorem
  for G2 being _Graph, v being Vertex of G2, e being object
  for G1 being addEdge of G2,v,e,v for v1 being Vertex of G1
  st not e in the_Edges_of G2 & v1 = v holds
    v1.edgesIn() = v.edgesIn() \/ {e} & v1.inDegree() = v.inDegree() +` 1 &
    v1.edgesOut() = v.edgesOut() \/ {e} & v1.outDegree() = v.outDegree() +` 1 &
    v1.edgesInOut() = v.edgesInOut() \/ {e} & v1.degree() = v.degree() +` 2
proof
  let G2 be _Graph, v be Vertex of G2, e be object;
  let G1 be addEdge of G2,v,e,v, v1 be Vertex of G1;
  assume A1: not e in the_Edges_of G2 & v1 = v;
  A2: G2 is Subgraph of G1 by GLIB_006:57;
  now
    let f be object;
    thus f in v1.edgesIn() implies f in v.edgesIn() \/ {e}
    proof
      assume f in v1.edgesIn();
      then consider x being set such that
        A3: f DJoins x,v1,G1 by GLIB_000:57;
      per cases by A3, GLIB_006:71;
      suppose A4: f DJoins x,v1,G2;
        f is set by TARSKI:1;
        then f in v.edgesIn() by A1, A4, GLIB_000:57;
        hence thesis by XBOOLE_0:def 3;
      end;
      suppose A5: not f in the_Edges_of G2;
        f Joins x,v1,G1 by A3, GLIB_000:16;
        then f = e by A1, A5, GLIB_006:106;
        then f in {e} by TARSKI:def 1;
        hence thesis by XBOOLE_0:def 3;
      end;
    end;
    assume f in v.edgesIn() \/ {e};
    then per cases by XBOOLE_0:def 3;
    suppose f in v.edgesIn();
      hence f in v1.edgesIn() by A1, A2, GLIB_000:78, TARSKI:def 3;
    end;
    suppose f in {e};
      then f = e & f is set by TARSKI:def 1;
      hence f in v1.edgesIn() by A1, GLIB_000:57, GLIB_006:105;
    end;
  end;
  hence A6: v1.edgesIn() = v.edgesIn() \/ {e} by TARSKI:2;
  not e in v.edgesIn() by A1;
  then A7: v.edgesIn() misses {e} by ZFMISC_1:50;
  thus A8: v1.inDegree() = card v.edgesIn() +` card {e} by A6, A7, CARD_2:35
    .= v.inDegree() +` 1 by CARD_1:30;
  now
    let f be object;
    thus f in v1.edgesOut() implies f in v.edgesOut() \/ {e}
    proof
      assume f in v1.edgesOut();
      then consider x being set such that
        A9: f DJoins v1,x,G1 by GLIB_000:59;
      per cases by A9, GLIB_006:71;
      suppose A10: f DJoins v1,x,G2;
        f is set by TARSKI:1;
        then f in v.edgesOut() by A1, A10, GLIB_000:59;
        hence thesis by XBOOLE_0:def 3;
      end;
      suppose A11: not f in the_Edges_of G2;
        f Joins x,v1,G1 by A9, GLIB_000:16;
        then f = e by A1, A11, GLIB_006:106;
        then f in {e} by TARSKI:def 1;
        hence thesis by XBOOLE_0:def 3;
      end;
    end;
    assume f in v.edgesOut() \/ {e};
    then per cases by XBOOLE_0:def 3;
    suppose f in v.edgesOut();
      hence f in v1.edgesOut() by A1, A2, GLIB_000:78, TARSKI:def 3;
    end;
    suppose f in {e};
      then f = e & f is set by TARSKI:def 1;
      hence f in v1.edgesOut() by A1, GLIB_000:59, GLIB_006:105;
    end;
  end;
  hence A12: v1.edgesOut() = v.edgesOut() \/ {e} by TARSKI:2;
  not e in v.edgesOut() by A1;
  then A13: v.edgesOut() misses {e} by ZFMISC_1:50;
  thus A14: v1.outDegree() = card v.edgesOut() +` card {e} by A12, A13
, CARD_2:35
    .= v.outDegree() +` 1 by CARD_1:30;
  thus v1.edgesInOut() = v.edgesInOut() \/ {e} by A6, A12, XBOOLE_1:5;
  thus v1.degree()
     = ((v.inDegree() +` 1) +` v.outDegree() +` 1) by A8, A14, CARD_2:19
    .= (v.inDegree() +` v.outDegree()) +` 1 +` 1 by CARD_2:19
    .= v.degree() +` (1 +` 1) by CARD_2:19
    .= v.degree() +` 2;
end;
