let G1 be non _trivial simple _Graph; :: thesis: for v being Vertex of G1
for G2 being removeVertex of G1,v holds G1 is addAdjVertexAll of G2,v,v .allNeighbors()

let v be Vertex of G1; :: thesis: for G2 being removeVertex of G1,v holds G1 is addAdjVertexAll of G2,v,v .allNeighbors()
let G2 be removeVertex of G1,v; :: thesis: G1 is addAdjVertexAll of G2,v,v .allNeighbors()
A1: G1 is Supergraph of G2 by GLIB_006:57;
A2: the_Vertices_of G2 = (the_Vertices_of G1) \ {v} by GLIB_000:47;
A3: the_Edges_of G2 = G1 .edgesBetween ((the_Vertices_of G1) \ {v}) by GLIB_000:47
.= (G1 .edgesBetween (the_Vertices_of G1)) \ (v .edgesInOut()) by GLIB_000:107
.= (the_Edges_of G1) \ (v .edgesInOut()) by GLIB_000:34 ;
v in {v} by TARSKI:def 1;
then A4: not v in the_Vertices_of G2 by A2, XBOOLE_0:def 5;
for x being object st x in v .allNeighbors() holds
x in the_Vertices_of G2
proof
let x be object ; :: thesis: ( x in v .allNeighbors() implies x in the_Vertices_of G2 )
assume A5: x in v .allNeighbors() ; :: thesis: x in the_Vertices_of G2
x <> v
proof
assume x = v ; :: thesis: contradiction
then consider e being object such that
A6: e Joins v,v,G1 by A5, GLIB_000:71;
thus contradiction by A6, GLIB_000:18; :: thesis: verum
end;
then not x in {v} by TARSKI:def 1;
hence x in the_Vertices_of G2 by A2, A5, XBOOLE_0:def 5; :: thesis: verum
end;
then A7: v .allNeighbors() c= the_Vertices_of G2 by TARSKI:def 3;
now :: thesis: ( the_Vertices_of G1 = (the_Vertices_of G2) \/ {v} & ( for e being object holds
( not e Joins v,v,G1 & ( for v1 being object holds
( ( not v1 in v .allNeighbors() implies not e Joins v1,v,G1 ) & ( for v2 being object st v1 <> v & v2 <> v & e DJoins v1,v2,G1 holds
e DJoins v1,v2,G2 ) ) ) ) ) & ex E being set st
( card (v .allNeighbors()) = card E & E misses the_Edges_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ E & ( for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) ) ) )
thus the_Vertices_of G1 = (the_Vertices_of G2) \/ {v} by A2, ZFMISC_1:116; :: thesis: ( ( for e being object holds
( not e Joins v,v,G1 & ( for v1 being object holds
( ( not v1 in v .allNeighbors() implies not e Joins v1,v,G1 ) & ( for v2 being object st v1 <> v & v2 <> v & e DJoins v1,v2,G1 holds
e DJoins v1,v2,G2 ) ) ) ) ) & ex E being set st
( card (v .allNeighbors()) = card E & E misses the_Edges_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ E & ( for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) ) ) )

hereby :: thesis: ex E being set st
( card (v .allNeighbors()) = card E & E misses the_Edges_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ E & ( for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) ) )
let e be object ; :: thesis: ( not e Joins v,v,G1 & ( for v1 being object holds
( ( not v1 in v .allNeighbors() implies not e Joins v1,v,G1 ) & ( for v2 being object st v1 <> v & v2 <> v & e DJoins v1,v2,G1 holds
e DJoins v1,v2,G2 ) ) ) )

thus not e Joins v,v,G1 by GLIB_000:18; :: thesis: for v1 being object holds
( ( not v1 in v .allNeighbors() implies not e Joins v1,v,G1 ) & ( for v2 being object st v1 <> v & v2 <> v & e DJoins v1,v2,G1 holds
e DJoins v1,v2,G2 ) )

let v1 be object ; :: thesis: ( ( not v1 in v .allNeighbors() implies not e Joins v1,v,G1 ) & ( for v2 being object st v1 <> v & v2 <> v & e DJoins v1,v2,G1 holds
e DJoins v1,v2,G2 ) )

hereby :: thesis: for v2 being object st v1 <> v & v2 <> v & e DJoins v1,v2,G1 holds
e DJoins v1,v2,G2
end;
let v2 be object ; :: thesis: ( v1 <> v & v2 <> v & e DJoins v1,v2,G1 implies e DJoins v1,v2,G2 )
assume A9: ( v1 <> v & v2 <> v & e DJoins v1,v2,G1 ) ; :: thesis: e DJoins v1,v2,G2
thus e DJoins v1,v2,G2 :: thesis: verum
end;
reconsider E = v .edgesInOut() as set ;
take E = E; :: thesis: ( card (v .allNeighbors()) = card E & E misses the_Edges_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ E & ( for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) ) )

card E = v .degree() by GLIB_000:19;
hence card (v .allNeighbors()) = card E by GLIB_000:111; :: thesis: ( E misses the_Edges_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ E & ( for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) ) )

E /\ (the_Edges_of G2) = {}
proof end;
hence E misses the_Edges_of G2 by XBOOLE_0:def 7; :: thesis: ( the_Edges_of G1 = (the_Edges_of G2) \/ E & ( for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) ) )

A13: (the_Edges_of G2) \/ E c= the_Edges_of G1 by XBOOLE_1:8;
for e being object st e in the_Edges_of G1 holds
e in (the_Edges_of G2) \/ E
proof end;
then the_Edges_of G1 c= (the_Edges_of G2) \/ E by TARSKI:def 3;
hence the_Edges_of G1 = (the_Edges_of G2) \/ E by A13, XBOOLE_0:def 10; :: thesis: for v1 being object st v1 in v .allNeighbors() holds
ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) )

let v1 be object ; :: thesis: ( v1 in v .allNeighbors() implies ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) ) )

assume A15: v1 in v .allNeighbors() ; :: thesis: ex e1 being object st
( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) )

then consider e1 being object such that
A16: e1 Joins v,v1,G1 by GLIB_000:71;
take e1 = e1; :: thesis: ( e1 in E & e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) )

( v1 in the_Vertices_of G1 & e1 is set ) by A15, TARSKI:1;
hence e1 in E by A16, GLIB_000:64; :: thesis: ( e1 Joins v1,v,G1 & ( for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2 ) )

thus A17: e1 Joins v1,v,G1 by A16, GLIB_000:14; :: thesis: for e2 being object st e2 Joins v1,v,G1 holds
e1 = e2

let e2 be object ; :: thesis: ( e2 Joins v1,v,G1 implies e1 = e2 )
assume e2 Joins v1,v,G1 ; :: thesis: e1 = e2
hence e1 = e2 by A17, GLIB_000:def 20; :: thesis: verum
end;
hence G1 is addAdjVertexAll of G2,v,v .allNeighbors() by A1, A4, A7, GLIB_007:def 4; :: thesis: verum