let G3 be _Graph; for v being object
for V being set
for v1 being Vertex of G3
for G1 being addAdjVertexAll of G3,v,V \/ {v1} st V c= the_Vertices_of G3 & not v in the_Vertices_of G3 & not v1 in V holds
ex G2 being addAdjVertexAll of G3,v,V ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) )
let v be object ; for V being set
for v1 being Vertex of G3
for G1 being addAdjVertexAll of G3,v,V \/ {v1} st V c= the_Vertices_of G3 & not v in the_Vertices_of G3 & not v1 in V holds
ex G2 being addAdjVertexAll of G3,v,V ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) )
let V be set ; for v1 being Vertex of G3
for G1 being addAdjVertexAll of G3,v,V \/ {v1} st V c= the_Vertices_of G3 & not v in the_Vertices_of G3 & not v1 in V holds
ex G2 being addAdjVertexAll of G3,v,V ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) )
let v1 be Vertex of G3; for G1 being addAdjVertexAll of G3,v,V \/ {v1} st V c= the_Vertices_of G3 & not v in the_Vertices_of G3 & not v1 in V holds
ex G2 being addAdjVertexAll of G3,v,V ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) )
let G1 be addAdjVertexAll of G3,v,V \/ {v1}; ( V c= the_Vertices_of G3 & not v in the_Vertices_of G3 & not v1 in V implies ex G2 being addAdjVertexAll of G3,v,V ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) ) )
assume that
A1:
( V c= the_Vertices_of G3 & not v in the_Vertices_of G3 )
and
A2:
not v1 in V
; ex G2 being addAdjVertexAll of G3,v,V ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) )
set G2 = the removeEdges of G1,(G1 .edgesBetween ({v1},{v}));
A3:
V \/ {v1} c= the_Vertices_of G3
by A1, XBOOLE_1:8;
V misses {v1}
by A2, ZFMISC_1:50;
then reconsider G2 = the removeEdges of G1,(G1 .edgesBetween ({v1},{v})) as addAdjVertexAll of G3,v,V by A1, A3, Th60;
take
G2
; ex e being object st
( not e in the_Edges_of G2 & ( G1 is addEdge of G2,v,e,v1 or G1 is addEdge of G2,v1,e,v ) )
reconsider W = {v1} as Subset of (V \/ {v1}) by XBOOLE_1:7;
consider f being Function of W,(G1 .edgesBetween (W,{v})) such that
A4:
( f is one-to-one & f is onto )
and
A5:
for w being object st w in W holds
f . w Joins w,v,G1
by A1, A3, Th57;
take
f . v1
; ( not f . v1 in the_Edges_of G2 & ( G1 is addEdge of G2,v,f . v1,v1 or G1 is addEdge of G2,v1,f . v1,v ) )
v1 in {v1}
by TARSKI:def 1;
then A6:
f . v1 Joins v1,v,G1
by A5;
thus
not f . v1 in the_Edges_of G2
( G1 is addEdge of G2,v,f . v1,v1 or G1 is addEdge of G2,v1,f . v1,v )
A7:
G1 is Supergraph of G2
by GLIB_006:57;
A8:
the_Vertices_of G2 = (the_Vertices_of G3) \/ {v}
by A1, Def4;
A9:
the_Vertices_of G1 = (the_Vertices_of G3) \/ {v}
by A1, A3, Def4;
then A10:
the_Vertices_of G1 = the_Vertices_of G2
by A8;
for w being object st w in dom f holds
f . w = f . v1
by TARSKI:def 1;
then
f = (dom f) --> (f . v1)
by FUNCOP_1:11;
then
rng f c= {(f . v1)}
by FUNCOP_1:13;
then A11:
G1 .edgesBetween (W,{v}) c= {(f . v1)}
by A4, FUNCT_2:def 3;
( v1 in {v1} & v in {v} )
by TARSKI:def 1;
then
f . v1 SJoins W,{v},G1
by A6, GLIB_000:17;
then
f . v1 in G1 .edgesBetween (W,{v})
by GLIB_000:def 30;
then
{(f . v1)} c= G1 .edgesBetween (W,{v})
by ZFMISC_1:31;
then A12:
G1 .edgesBetween (W,{v}) = {(f . v1)}
by A11, XBOOLE_0:def 10;
A13:
f . v1 in the_Edges_of G1
by A6, GLIB_000:def 13;
A14:
the_Edges_of G2 = (the_Edges_of G1) \ {(f . v1)}
by A12, GLIB_000:53;
then A15:
the_Edges_of G1 = (the_Edges_of G2) \/ {(f . v1)}
by A13, ZFMISC_1:116;
f . v1 in {(f . v1)}
by TARSKI:def 1;
then A16:
not f . v1 in the_Edges_of G2
by A14, XBOOLE_0:def 5;
A17:
v1 in the_Vertices_of G1
by A9, XBOOLE_0:def 3;
v is Vertex of G1
by A1, A3, Th50;
then A18:
( v1 in the_Vertices_of G2 & v in the_Vertices_of G2 )
by A17, A10;
A19:
( G1 is Supergraph of G2 & the_Vertices_of G1 = the_Vertices_of G2 & the_Edges_of G1 = (the_Edges_of G2) \/ {(f . v1)} )
by A7, A10, A15;
per cases
( f . v1 DJoins v1,v,G1 or f . v1 DJoins v,v1,G1 )
by A6, GLIB_000:16;
suppose A20:
f . v1 DJoins v1,
v,
G1
;
( G1 is addEdge of G2,v,f . v1,v1 or G1 is addEdge of G2,v1,f . v1,v )A21:
dom (the_Source_of G1) =
the_Edges_of G1
by GLIB_000:4
.=
(the_Edges_of G2) \/ (dom ({(f . v1)} --> v1))
by A15
.=
(dom (the_Source_of G2)) \/ (dom ({(f . v1)} --> v1))
by GLIB_000:4
.=
(dom (the_Source_of G2)) \/ (dom ((f . v1) .--> v1))
by FUNCOP_1:def 9
.=
dom ((the_Source_of G2) +* ((f . v1) .--> v1))
by FUNCT_4:def 1
;
for
e being
object st
e in dom (the_Source_of G1) holds
(the_Source_of G1) . e = ((the_Source_of G2) +* ((f . v1) .--> v1)) . e
then A25:
the_Source_of G1 = (the_Source_of G2) +* ((f . v1) .--> v1)
by A21, FUNCT_1:2;
A26:
dom (the_Target_of G1) =
the_Edges_of G1
by GLIB_000:4
.=
(the_Edges_of G2) \/ (dom ({(f . v1)} --> v))
by A15
.=
(dom (the_Target_of G2)) \/ (dom ({(f . v1)} --> v))
by GLIB_000:4
.=
(dom (the_Target_of G2)) \/ (dom ((f . v1) .--> v))
by FUNCOP_1:def 9
.=
dom ((the_Target_of G2) +* ((f . v1) .--> v))
by FUNCT_4:def 1
;
for
e being
object st
e in dom (the_Target_of G1) holds
(the_Target_of G1) . e = ((the_Target_of G2) +* ((f . v1) .--> v)) . e
then
the_Target_of G1 = (the_Target_of G2) +* ((f . v1) .--> v)
by A26, FUNCT_1:2;
hence
(
G1 is
addEdge of
G2,
v,
f . v1,
v1 or
G1 is
addEdge of
G2,
v1,
f . v1,
v )
by A16, A25, A19, A18, GLIB_006:def 11;
verum end; suppose A30:
f . v1 DJoins v,
v1,
G1
;
( G1 is addEdge of G2,v,f . v1,v1 or G1 is addEdge of G2,v1,f . v1,v )A31:
dom (the_Target_of G1) =
the_Edges_of G1
by GLIB_000:4
.=
(the_Edges_of G2) \/ (dom ({(f . v1)} --> v1))
by A15
.=
(dom (the_Target_of G2)) \/ (dom ({(f . v1)} --> v1))
by GLIB_000:4
.=
(dom (the_Target_of G2)) \/ (dom ((f . v1) .--> v1))
by FUNCOP_1:def 9
.=
dom ((the_Target_of G2) +* ((f . v1) .--> v1))
by FUNCT_4:def 1
;
for
e being
object st
e in dom (the_Target_of G1) holds
(the_Target_of G1) . e = ((the_Target_of G2) +* ((f . v1) .--> v1)) . e
then A35:
the_Target_of G1 = (the_Target_of G2) +* ((f . v1) .--> v1)
by A31, FUNCT_1:2;
A36:
dom (the_Source_of G1) =
the_Edges_of G1
by GLIB_000:4
.=
(the_Edges_of G2) \/ (dom ({(f . v1)} --> v))
by A15
.=
(dom (the_Source_of G2)) \/ (dom ({(f . v1)} --> v))
by GLIB_000:4
.=
(dom (the_Source_of G2)) \/ (dom ((f . v1) .--> v))
by FUNCOP_1:def 9
.=
dom ((the_Source_of G2) +* ((f . v1) .--> v))
by FUNCT_4:def 1
;
for
e being
object st
e in dom (the_Source_of G1) holds
(the_Source_of G1) . e = ((the_Source_of G2) +* ((f . v1) .--> v)) . e
then
the_Source_of G1 = (the_Source_of G2) +* ((f . v1) .--> v)
by A36, FUNCT_1:2;
hence
(
G1 is
addEdge of
G2,
v,
f . v1,
v1 or
G1 is
addEdge of
G2,
v1,
f . v1,
v )
by A16, A35, A19, A18, GLIB_006:def 11;
verum end; end;