let G2 be _Graph; :: thesis: for V being Subset of (the_Vertices_of G2)
for G1 being addLoops of G2,V
for v1 being Vertex of G1
for v2 being Vertex of G2 st v1 = v2 & v1 in V holds
ex e being object st
( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )

let V be Subset of (the_Vertices_of G2); :: thesis: for G1 being addLoops of G2,V
for v1 being Vertex of G1
for v2 being Vertex of G2 st v1 = v2 & v1 in V holds
ex e being object st
( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )

let G1 be addLoops of G2,V; :: thesis: for v1 being Vertex of G1
for v2 being Vertex of G2 st v1 = v2 & v1 in V holds
ex e being object st
( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )

let v1 be Vertex of G1; :: thesis: for v2 being Vertex of G2 st v1 = v2 & v1 in V holds
ex e being object st
( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )

let v2 be Vertex of G2; :: thesis: ( v1 = v2 & v1 in V implies ex e being object st
( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} ) )

assume A1: ( v1 = v2 & v1 in V ) ; :: thesis: ex e being object st
( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )

consider E being set , f being one-to-one Function such that
A2: ( E misses the_Edges_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ E ) and
A3: ( dom f = E & rng f = V & the_Source_of G1 = (the_Source_of G2) +* f ) and
A4: the_Target_of G1 = (the_Target_of G2) +* f by Def5;
consider e being object such that
A5: ( e in dom f & f . e = v1 ) by A1, A3, FUNCT_1:def 3;
take e ; :: thesis: ( e DJoins v1,v1,G1 & not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )
A6: e in the_Edges_of G1 by A2, A3, A5, XBOOLE_0:def 3;
A7: (the_Source_of G1) . e = v1 by A3, A5, FUNCT_4:13;
(the_Target_of G1) . e = v1 by A4, A5, FUNCT_4:13;
hence A8: e DJoins v1,v1,G1 by A6, A7, GLIB_000:def 14; :: thesis: ( not e in the_Edges_of G2 & v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )
thus not e in the_Edges_of G2 :: thesis: ( v1 .edgesIn() = (v2 .edgesIn()) \/ {e} & v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )
proof end;
now :: thesis: for x being object holds
( ( x in v1 .edgesIn() implies x in (v2 .edgesIn()) \/ {e} ) & ( x in (v2 .edgesIn()) \/ {e} implies x in v1 .edgesIn() ) )
let x be object ; :: thesis: ( ( x in v1 .edgesIn() implies x in (v2 .edgesIn()) \/ {e} ) & ( x in (v2 .edgesIn()) \/ {e} implies b1 in v1 .edgesIn() ) )
hereby :: thesis: ( x in (v2 .edgesIn()) \/ {e} implies b1 in v1 .edgesIn() ) end;
assume x in (v2 .edgesIn()) \/ {e} ; :: thesis: b1 in v1 .edgesIn()
per cases then ( x in v2 .edgesIn() or x in {e} ) by XBOOLE_0:def 3;
end;
end;
hence A14: v1 .edgesIn() = (v2 .edgesIn()) \/ {e} by TARSKI:2; :: thesis: ( v1 .edgesOut() = (v2 .edgesOut()) \/ {e} & v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} )
now :: thesis: for x being object holds
( ( x in v1 .edgesOut() implies x in (v2 .edgesOut()) \/ {e} ) & ( x in (v2 .edgesOut()) \/ {e} implies x in v1 .edgesOut() ) )
let x be object ; :: thesis: ( ( x in v1 .edgesOut() implies x in (v2 .edgesOut()) \/ {e} ) & ( x in (v2 .edgesOut()) \/ {e} implies b1 in v1 .edgesOut() ) )
hereby :: thesis: ( x in (v2 .edgesOut()) \/ {e} implies b1 in v1 .edgesOut() ) end;
assume x in (v2 .edgesOut()) \/ {e} ; :: thesis: b1 in v1 .edgesOut()
per cases then ( x in v2 .edgesOut() or x in {e} ) by XBOOLE_0:def 3;
end;
end;
hence A20: v1 .edgesOut() = (v2 .edgesOut()) \/ {e} by TARSKI:2; :: thesis: v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e}
thus v1 .edgesInOut() = (v2 .edgesInOut()) \/ {e} by A14, A20, XBOOLE_1:5; :: thesis: verum