glib_007.miz
begin
reserve G,G2 for
_Graph,
V,E for
set,
v for
object;
definition
let G, E;
::
GLIB_007:def1
mode
reverseEdgeDirections of G,E ->
_Graph means
:
Def1: (
the_Vertices_of it )
= (
the_Vertices_of G) & (
the_Edges_of it )
= (
the_Edges_of G) & (
the_Source_of it )
= ((
the_Source_of G)
+* ((
the_Target_of G)
| E)) & (
the_Target_of it )
= ((
the_Target_of G)
+* ((
the_Source_of G)
| E)) if E
c= (
the_Edges_of G)
otherwise it
== G;
existence
proof
hereby
assume E
c= (
the_Edges_of G);
set V = (
the_Vertices_of G);
set E1 = (
the_Edges_of G);
set S = ((
the_Source_of G)
+* ((
the_Target_of G)
| E));
reconsider S as
Function of E1, V;
set T = ((
the_Target_of G)
+* ((
the_Source_of G)
| E));
reconsider T as
Function of E1, V;
set G1 = (
createGraph (V,E1,S,T));
take G1;
thus (
the_Vertices_of G1)
= (
the_Vertices_of G) & (
the_Edges_of G1)
= (
the_Edges_of G) & (
the_Source_of G1)
= ((
the_Source_of G)
+* ((
the_Target_of G)
| E)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* ((
the_Source_of G)
| E)) by
GLIB_000: 6;
end;
assume not E
c= (
the_Edges_of G);
take G;
thus thesis;
end;
consistency ;
end
definition
let G;
mode
reverseEdgeDirections of G is
reverseEdgeDirections of G, (
the_Edges_of G);
end
theorem ::
GLIB_007:1
for G, E holds for G1,G2 be
reverseEdgeDirections of G, E holds G1
== G2
proof
let G, E;
let G1,G2 be
reverseEdgeDirections of G, E;
per cases ;
suppose
A1: E
c= (
the_Edges_of G);
A2: (
the_Vertices_of G1)
= (
the_Vertices_of G) & (
the_Edges_of G1)
= (
the_Edges_of G) & (
the_Source_of G1)
= ((
the_Source_of G)
+* ((
the_Target_of G)
| E)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* ((
the_Source_of G)
| E)) by
A1,
Def1;
(
the_Vertices_of G2)
= (
the_Vertices_of G) & (
the_Edges_of G2)
= (
the_Edges_of G) & (
the_Source_of G2)
= ((
the_Source_of G)
+* ((
the_Target_of G)
| E)) & (
the_Target_of G2)
= ((
the_Target_of G)
+* ((
the_Source_of G)
| E)) by
A1,
Def1;
hence thesis by
A2,
GLIB_000:def 34;
end;
suppose not E
c= (
the_Edges_of G);
then G1
== G & G2
== G by
Def1;
hence thesis by
GLIB_000: 85;
end;
end;
theorem ::
GLIB_007:2
Th2: for G, G2, E holds for G1 be
reverseEdgeDirections of G, E st G1
== G2 holds G2 is
reverseEdgeDirections of G, E
proof
let G, G2, E;
let G1 be
reverseEdgeDirections of G, E;
assume
A1: G1
== G2;
per cases ;
suppose
A2: E
c= (
the_Edges_of G);
then (
the_Vertices_of G1)
= (
the_Vertices_of G) & (
the_Edges_of G1)
= (
the_Edges_of G) & (
the_Source_of G1)
= ((
the_Source_of G)
+* ((
the_Target_of G)
| E)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* ((
the_Source_of G)
| E)) by
Def1;
then (
the_Vertices_of G2)
= (
the_Vertices_of G) & (
the_Edges_of G2)
= (
the_Edges_of G) & (
the_Source_of G2)
= ((
the_Source_of G)
+* ((
the_Target_of G)
| E)) & (
the_Target_of G2)
= ((
the_Target_of G)
+* ((
the_Source_of G)
| E)) by
A1,
GLIB_000:def 34;
hence thesis by
A2,
Def1;
end;
suppose
A3: not E
c= (
the_Edges_of G);
then G
== G1 by
Def1;
then G
== G2 by
A1,
GLIB_000: 85;
hence thesis by
A3,
Def1;
end;
end;
theorem ::
GLIB_007:3
Th3: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds G2 is
reverseEdgeDirections of G1, E
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
per cases ;
suppose
A1: E
c= (
the_Edges_of G2);
then
A2: (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((
the_Target_of G2)
| E)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((
the_Source_of G2)
| E)) by
Def1;
set S1 = (
the_Source_of G1);
set S2 = (
the_Source_of G2);
set T1 = (
the_Target_of G1);
set T2 = (
the_Target_of G2);
A3: (
dom S1)
= (
the_Edges_of G1) & (
dom T1)
= (
the_Edges_of G1) & (
dom S2)
= (
the_Edges_of G2) & (
dom T2)
= (
the_Edges_of G2) by
FUNCT_2:def 1;
A4: (
dom (S2
| E))
= E by
A3,
A1,
RELAT_1: 62;
A5: (
dom (T2
| E))
= E by
A3,
A1,
RELAT_1: 62;
A6: S2
= (S2
+* (S2
| E)) by
FUNCT_4: 75
.= ((S2
+* (T2
| E))
+* (S2
| E)) by
A4,
A5,
FUNCT_4: 74
.= (S1
+* (T1
| E)) by
A2,
A4;
T2
= (T2
+* (T2
| E)) by
FUNCT_4: 75
.= ((T2
+* (S2
| E))
+* (T2
| E)) by
A4,
A5,
FUNCT_4: 74
.= (T1
+* (S1
| E)) by
A2,
A5;
hence thesis by
A1,
A2,
A6,
Def1;
end;
suppose
A7: not E
c= (
the_Edges_of G2);
then
A8: G1
== G2 by
Def1;
then (
the_Edges_of G1)
= (
the_Edges_of G2) by
GLIB_000:def 34;
hence thesis by
A7,
A8,
Def1;
end;
end;
theorem ::
GLIB_007:4
Th4: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
per cases ;
suppose E
c= (
the_Edges_of G2);
hence thesis by
Def1;
end;
suppose not E
c= (
the_Edges_of G2);
then G1
== G2 by
Def1;
hence thesis by
GLIB_000:def 34;
end;
end;
theorem ::
GLIB_007:5
Th5: for G2 holds for G1 be
reverseEdgeDirections of G2 holds G2 is
reverseEdgeDirections of G1
proof
let G2;
let G1 be
reverseEdgeDirections of G2;
(
the_Edges_of G1)
= (
the_Edges_of G2) by
Th4;
hence thesis by
Th3;
end;
theorem ::
GLIB_007:6
Th6: for G2 be
_trivial
_Graph, E be
set, G1 be
_Graph holds G1
== G2 iff G1 is
reverseEdgeDirections of G2, E
proof
let G2 be
_trivial
_Graph, E be
set, G1 be
_Graph;
per cases ;
suppose
A1: E
c= (
the_Edges_of G2);
consider v be
Vertex of G2 such that (
the_Vertices_of G2)
=
{v} and
A2: (
the_Source_of G2)
= ((
the_Edges_of G2)
--> v) & (
the_Target_of G2)
= ((
the_Edges_of G2)
--> v) by
GLIB_006: 21;
A3: ((
the_Source_of G2)
+* ((
the_Target_of G2)
| E))
= ((
the_Edges_of G2)
--> v) by
A2,
FUNCT_4: 75;
hereby
assume G1
== G2;
then (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2) & (
the_Source_of G1)
= (
the_Source_of G2) & (
the_Target_of G1)
= (
the_Target_of G2) by
GLIB_000:def 34;
hence G1 is
reverseEdgeDirections of G2, E by
A1,
A2,
A3,
Def1;
end;
assume G1 is
reverseEdgeDirections of G2, E;
then (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((
the_Target_of G2)
| E)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((
the_Source_of G2)
| E)) by
A1,
Def1;
hence G1
== G2 by
A2,
A3,
GLIB_000:def 34;
end;
suppose not E
c= (
the_Edges_of G2);
hence thesis by
Def1;
end;
end;
Lm1: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v1,e,v2 be
object st E
c= (
the_Edges_of G2) & e
in E holds (e
DJoins (v1,v2,G2) implies e
DJoins (v2,v1,G1))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1,e,v2 be
object;
assume
A1: E
c= (
the_Edges_of G2) & e
in E;
set S1 = (
the_Source_of G1);
set T1 = (
the_Target_of G1);
set S2 = (
the_Source_of G2);
set T2 = (
the_Target_of G2);
assume e
DJoins (v1,v2,G2);
then
A2: e
in (
the_Edges_of G2) & (S2
. e)
= v1 & (T2
. e)
= v2 by
GLIB_000:def 14;
E
c= (
dom S2) & E
c= (
dom T2) by
A1,
FUNCT_2:def 1;
then
A3: e
in (
dom (S2
| E)) & e
in (
dom (T2
| E)) by
A1,
RELAT_1: 62;
A4: (S1
. e)
= ((S2
+* (T2
| E))
. e) by
A1,
Def1
.= ((T2
| E)
. e) by
A3,
FUNCT_4: 13
.= v2 by
A2,
A3,
FUNCT_1: 47;
A5: (T1
. e)
= ((T2
+* (S2
| E))
. e) by
A1,
Def1
.= ((S2
| E)
. e) by
A3,
FUNCT_4: 13
.= v1 by
A2,
A3,
FUNCT_1: 47;
e
in (
the_Edges_of G1) by
A2,
Th4;
hence thesis by
A4,
A5,
GLIB_000:def 14;
end;
theorem ::
GLIB_007:7
Th7: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v1,e,v2 be
object st E
c= (
the_Edges_of G2) & e
in E holds (e
DJoins (v1,v2,G2) iff e
DJoins (v2,v1,G1))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1,e,v2 be
object;
assume
A1: E
c= (
the_Edges_of G2) & e
in E;
hence e
DJoins (v1,v2,G2) implies e
DJoins (v2,v1,G1) by
Lm1;
reconsider G3 = G2 as
reverseEdgeDirections of G1, E by
Th3;
E
c= (
the_Edges_of G1) by
Th4,
A1;
then e
DJoins (v2,v1,G1) implies e
DJoins (v1,v2,G3) by
A1,
Lm1;
hence thesis;
end;
Lm2: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v1,e,v2 be
object st E
c= (
the_Edges_of G2) & not e
in E holds (e
DJoins (v1,v2,G2) implies e
DJoins (v1,v2,G1))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1,e,v2 be
object;
assume
A1: E
c= (
the_Edges_of G2) & not e
in E;
set S1 = (
the_Source_of G1);
set T1 = (
the_Target_of G1);
set S2 = (
the_Source_of G2);
set T2 = (
the_Target_of G2);
assume e
DJoins (v1,v2,G2);
then
A2: e
in (
the_Edges_of G2) & (S2
. e)
= v1 & (T2
. e)
= v2 by
GLIB_000:def 14;
A3: not e
in (
dom (S2
| E)) & not e
in (
dom (T2
| E)) by
A1;
A4: (S1
. e)
= ((S2
+* (T2
| E))
. e) by
A1,
Def1
.= v1 by
A2,
A3,
FUNCT_4: 11;
A5: (T1
. e)
= ((T2
+* (S2
| E))
. e) by
A1,
Def1
.= v2 by
A2,
A3,
FUNCT_4: 11;
e
in (
the_Edges_of G1) by
A2,
Th4;
hence thesis by
A4,
A5,
GLIB_000:def 14;
end;
theorem ::
GLIB_007:8
Th8: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v1,e,v2 be
object st E
c= (
the_Edges_of G2) & not e
in E holds (e
DJoins (v1,v2,G2) iff e
DJoins (v1,v2,G1))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1,e,v2 be
object;
assume
A1: E
c= (
the_Edges_of G2) & not e
in E;
hence e
DJoins (v1,v2,G2) implies e
DJoins (v1,v2,G1) by
Lm2;
reconsider G3 = G2 as
reverseEdgeDirections of G1, E by
Th3;
E
c= (
the_Edges_of G1) by
Th4,
A1;
then e
DJoins (v1,v2,G1) implies e
DJoins (v1,v2,G3) by
A1,
Lm2;
hence thesis;
end;
Lm3: for G2, E holds for G1 be
reverseEdgeDirections of G2, E st E
c= (
the_Edges_of G2) holds for v1,e,v2 be
object holds (e
Joins (v1,v2,G2) implies e
Joins (v1,v2,G1))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
assume
A1: E
c= (
the_Edges_of G2);
let v1,e,v2 be
object;
assume
A2: e
Joins (v1,v2,G2);
per cases ;
suppose
A3: e
in E;
then
A4: e
in (
the_Edges_of G2) by
A1;
then e
in (
dom (
the_Source_of G2)) & e
in (
dom (
the_Target_of G2)) by
FUNCT_2:def 1;
then
A5: e
in (
dom ((
the_Source_of G2)
| E)) & e
in (
dom ((
the_Target_of G2)
| E)) by
A3,
RELAT_1: 57;
A6: ((
the_Source_of G1)
. e)
= (((
the_Source_of G2)
+* ((
the_Target_of G2)
| E))
. e) by
A1,
Def1
.= (((
the_Target_of G2)
| E)
. e) by
A5,
FUNCT_4: 13
.= ((
the_Target_of G2)
. e) by
A3,
FUNCT_1: 49;
A7: ((
the_Target_of G1)
. e)
= (((
the_Target_of G2)
+* ((
the_Source_of G2)
| E))
. e) by
A1,
Def1
.= (((
the_Source_of G2)
| E)
. e) by
A5,
FUNCT_4: 13
.= ((
the_Source_of G2)
. e) by
A3,
FUNCT_1: 49;
A8: e
in (
the_Edges_of G1) by
A4,
Th4;
per cases by
A2,
GLIB_000:def 13;
suppose ((
the_Source_of G2)
. e)
= v1 & ((
the_Target_of G2)
. e)
= v2;
hence e
Joins (v1,v2,G1) by
A6,
A7,
A8,
GLIB_000:def 13;
end;
suppose ((
the_Source_of G2)
. e)
= v2 & ((
the_Target_of G2)
. e)
= v1;
hence e
Joins (v1,v2,G1) by
A6,
A7,
A8,
GLIB_000:def 13;
end;
end;
suppose
A9: not e
in E;
then
A10: not e
in (
dom ((
the_Target_of G2)
| E));
A11: ((
the_Source_of G1)
. e)
= (((
the_Source_of G2)
+* ((
the_Target_of G2)
| E))
. e) by
A1,
Def1
.= ((
the_Source_of G2)
. e) by
A10,
FUNCT_4: 11;
A12: not e
in (
dom ((
the_Source_of G2)
| E)) by
A9;
A13: ((
the_Target_of G1)
. e)
= (((
the_Target_of G2)
+* ((
the_Source_of G2)
| E))
. e) by
A1,
Def1
.= ((
the_Target_of G2)
. e) by
A12,
FUNCT_4: 11;
e
in (
the_Edges_of G2) by
A2,
GLIB_000:def 13;
then
A14: e
in (
the_Edges_of G1) by
Th4;
per cases by
A2,
GLIB_000:def 13;
suppose ((
the_Source_of G2)
. e)
= v1 & ((
the_Target_of G2)
. e)
= v2;
hence e
Joins (v1,v2,G1) by
A11,
A13,
A14,
GLIB_000:def 13;
end;
suppose ((
the_Source_of G2)
. e)
= v2 & ((
the_Target_of G2)
. e)
= v1;
hence e
Joins (v1,v2,G1) by
A11,
A13,
A14,
GLIB_000:def 13;
end;
end;
end;
theorem ::
GLIB_007:9
Th9: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v1,e,v2 be
object holds (e
Joins (v1,v2,G2) iff e
Joins (v1,v2,G1))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
per cases ;
suppose
A1: E
c= (
the_Edges_of G2);
let v1,e,v2 be
object;
thus e
Joins (v1,v2,G2) implies e
Joins (v1,v2,G1) by
A1,
Lm3;
reconsider G3 = G2 as
reverseEdgeDirections of G1, E by
Th3;
assume
A2: e
Joins (v1,v2,G1);
E
c= (
the_Edges_of G1) by
A1,
Def1;
then e
Joins (v1,v2,G3) by
A2,
Lm3;
hence thesis;
end;
suppose not (E
c= (
the_Edges_of G2));
then G1
== G2 by
Def1;
hence thesis by
GLIB_000: 88;
end;
end;
theorem ::
GLIB_007:10
Th10: for G2, E, v holds for G1 be
reverseEdgeDirections of G2, E holds v is
Vertex of G1 iff v is
Vertex of G2 by
Th4;
theorem ::
GLIB_007:11
Th11: for G2, E, V holds for G1 be
reverseEdgeDirections of G2, E holds (G1
.edgesBetween V)
= (G2
.edgesBetween V)
proof
let G2, E, V;
let G1 be
reverseEdgeDirections of G2, E;
for e be
object holds e
in (G1
.edgesBetween V) iff e
in (G2
.edgesBetween V)
proof
let e be
object;
set x1 = ((
the_Source_of G1)
. e), y1 = ((
the_Target_of G1)
. e);
set x2 = ((
the_Source_of G2)
. e), y2 = ((
the_Target_of G2)
. e);
hereby
assume
A1: e
in (G1
.edgesBetween V);
then e
Joins (x1,y1,G1) by
GLIB_000:def 13;
then e
Joins (x1,y1,G2) by
Th9;
then e
in (
the_Edges_of G2) & ((x1
= x2 & y1
= y2) or (x1
= y2 & y1
= x2)) by
GLIB_000:def 13;
then e
in (
the_Edges_of G2) & x2
in V & y2
in V by
A1,
GLIB_000: 31;
hence e
in (G2
.edgesBetween V) by
GLIB_000: 31;
end;
assume
A2: e
in (G2
.edgesBetween V);
then e
Joins (x2,y2,G2) by
GLIB_000:def 13;
then e
Joins (x2,y2,G1) by
Th9;
then e
in (
the_Edges_of G1) & ((x1
= x2 & y1
= y2) or (x1
= y2 & y1
= x2)) by
GLIB_000:def 13;
then e
in (
the_Edges_of G1) & x1
in V & y1
in V by
A2,
GLIB_000: 31;
hence e
in (G1
.edgesBetween V) by
GLIB_000: 31;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:12
Th12: for G2, E, V holds for G1 be
reverseEdgeDirections of G2, E holds (G1
.edgesInOut V)
= (G2
.edgesInOut V)
proof
let G2, E, V;
let G1 be
reverseEdgeDirections of G2, E;
for e be
object holds e
in (G1
.edgesInOut V) iff e
in (G2
.edgesInOut V)
proof
let e be
object;
set x1 = ((
the_Source_of G1)
. e), y1 = ((
the_Target_of G1)
. e);
set x2 = ((
the_Source_of G2)
. e), y2 = ((
the_Target_of G2)
. e);
hereby
assume
A1: e
in (G1
.edgesInOut V);
then e
Joins (x1,y1,G1) by
GLIB_000:def 13;
then e
Joins (x1,y1,G2) by
Th9;
then e
in (
the_Edges_of G2) & ((x1
= x2 & y1
= y2) or (x1
= y2 & y1
= x2)) by
GLIB_000:def 13;
then e
in (
the_Edges_of G2) & (x2
in V or y2
in V) by
A1,
GLIB_000: 28;
hence e
in (G2
.edgesInOut V) by
GLIB_000: 28;
end;
assume
A2: e
in (G2
.edgesInOut V);
then e
Joins (x2,y2,G2) by
GLIB_000:def 13;
then e
Joins (x2,y2,G1) by
Th9;
then e
in (
the_Edges_of G1) & ((x1
= x2 & y1
= y2) or (x1
= y2 & y1
= x2)) by
GLIB_000:def 13;
then e
in (
the_Edges_of G1) & (x1
in V or y1
in V) by
A2,
GLIB_000: 28;
hence e
in (G1
.edgesInOut V) by
GLIB_000: 28;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:13
Th13: for G2, E, V holds for G1 be
reverseEdgeDirections of G2, E holds for v1 be
Vertex of G1, v2 be
Vertex of G2 st v1
= v2 holds (v1
.edgesInOut() )
= (v2
.edgesInOut() )
proof
let G2, E, V;
let G1 be
reverseEdgeDirections of G2, E;
let v1 be
Vertex of G1, v2 be
Vertex of G2;
assume
A1: v1
= v2;
thus (v1
.edgesInOut() )
= (G1
.edgesInOut
{v1}) by
GLIB_000:def 40
.= (G2
.edgesInOut
{v2}) by
A1,
Th12
.= (v2
.edgesInOut() ) by
GLIB_000:def 40;
end;
theorem ::
GLIB_007:14
Th14: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, W2 be
Walk of G2 holds W2 is
Walk of G1
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let W2 be
Walk of G2;
per cases ;
suppose E
c= (
the_Edges_of G2);
W2 is
FinSequence of ((
the_Vertices_of G1)
\/ (
the_Edges_of G2)) by
Th4;
then
A1: W2 is
FinSequence of ((
the_Vertices_of G1)
\/ (
the_Edges_of G1)) by
Th4;
(W2
. 1)
in (
the_Vertices_of G2) by
GLIB_001:def 3;
then
A2: (W2
. 1)
in (
the_Vertices_of G1) by
Th4;
for n be
odd
Element of
NAT st n
< (
len W2) holds (W2
. (n
+ 1))
Joins ((W2
. n),(W2
. (n
+ 2)),G1) by
Th9,
GLIB_001:def 3;
hence thesis by
A1,
A2,
GLIB_001:def 3;
end;
suppose not (E
c= (
the_Edges_of G2));
then G1
== G2 by
Def1;
hence thesis by
GLIB_001: 179;
end;
end;
theorem ::
GLIB_007:15
Th15: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, W1 be
Walk of G1 holds W1 is
Walk of G2
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let W1 be
Walk of G1;
reconsider G3 = G2 as
reverseEdgeDirections of G1, E by
Th3;
W1 is
Walk of G3 by
Th14;
hence thesis;
end;
theorem ::
GLIB_007:16
Th16: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds for W2 be
Walk of G2, W1 be
Walk of G1 st E
c= (
the_Edges_of G2) & W1
= W2 & (W2
.edges() )
c= E holds (W1 is
directed iff (W2
.reverse() ) is
directed)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let W2 be
Walk of G2, W1 be
Walk of G1;
assume that
A1: E
c= (
the_Edges_of G2) and
A2: W1
= W2 and
A3: (W2
.edges() )
c= E;
A4: for n be
odd
Element of
NAT st n
< (
len W2) holds (W2
. (n
+ 1))
in E by
A3,
GLIB_001: 100,
TARSKI:def 3;
hereby
assume W1 is
directed;
then
A5: for m be
odd
Element of
NAT st m
< (
len W1) holds (W1
. (m
+ 1))
DJoins ((W1
. m),(W1
. (m
+ 2)),G1) by
GLIB_001: 122;
for n be
odd
Element of
NAT st n
< (
len (W2
.reverse() )) holds ((W2
.reverse() )
. (n
+ 1))
DJoins (((W2
.reverse() )
. n),((W2
.reverse() )
. (n
+ 2)),G2)
proof
let n be
odd
Element of
NAT ;
assume
A6: n
< (
len (W2
.reverse() ));
A7: (n
+ 2)
<= (
len (W2
.reverse() )) by
A6,
GLIB_001: 1;
A8: 1
<= n by
ABIAN: 12;
A10: (1
+
0 )
<= ((n
+ 1)
+ 1) by
XREAL_1: 6;
A11: (n
+ 1)
<= (
len (W2
.reverse() )) by
A6,
NAT_1: 13;
((n
+ 2)
- (n
+ 1))
<= ((
len (W2
.reverse() ))
- (n
+ 1)) by
A7,
XREAL_1: 9;
then ((n
+ 2)
- (n
+ 1))
<= ((
len W2)
- (n
+ 1)) by
GLIB_001: 21;
then
reconsider m = (((
len W2)
- n)
- 1) as
Element of
NAT by
INT_1: 3;
reconsider m as
odd
Element of
NAT ;
n
in (
dom (W2
.reverse() )) & (n
+ 1)
in (
dom (W2
.reverse() )) & (n
+ 2)
in (
dom (W2
.reverse() )) by
A6,
A7,
A8,
XREAL_1: 6,
A10,
A11,
FINSEQ_3: 25;
then
a12: ((W2
.reverse() )
. n)
= (W2
. (((
len W2)
- n)
+ 1)) & (((
len W2)
- n)
+ 1)
in (
dom W2) & ((W2
.reverse() )
. (n
+ 1))
= (W2
. (((
len W2)
- (n
+ 1))
+ 1)) & ((W2
.reverse() )
. (n
+ 2))
= (W2
. (((
len W2)
- (n
+ 2))
+ 1)) by
GLIB_001: 25;
then (m
+ 2)
<= (
len W1) by
FINSEQ_3: 25,
A2;
then
A13: m
< (
len W1) by
GLIB_001: 1;
then
A14: (W1
. (m
+ 1))
in E by
A2,
A4;
(W1
. (m
+ 1))
DJoins ((W1
. m),(W1
. (m
+ 2)),G1) by
A5,
A13;
hence thesis by
A1,
A2,
a12,
A14,
Th7;
end;
hence (W2
.reverse() ) is
directed by
GLIB_001: 122;
end;
assume (W2
.reverse() ) is
directed;
then
A15: for m be
odd
Element of
NAT st m
< (
len (W2
.reverse() )) holds ((W2
.reverse() )
. (m
+ 1))
DJoins (((W2
.reverse() )
. m),((W2
.reverse() )
. (m
+ 2)),G2) by
GLIB_001: 122;
for n be
odd
Element of
NAT st n
< (
len W1) holds (W1
. (n
+ 1))
DJoins ((W1
. n),(W1
. (n
+ 2)),G1)
proof
let n be
odd
Element of
NAT ;
assume
A16: n
< (
len W1);
then
A17: n
< (
len W2) by
A2;
A18: (n
+ 2)
<= (
len W2) by
A16,
A2,
GLIB_001: 1;
A19: 1
<= n by
ABIAN: 12;
A21: (1
+
0 )
<= ((n
+ 1)
+ 1) by
XREAL_1: 6;
A22: (n
+ 1)
<= (
len W2) by
NAT_1: 13,
A2,
A16;
((n
+ 2)
- (n
+ 1))
<= ((
len W2)
- (n
+ 1)) by
A18,
XREAL_1: 9;
then
reconsider m = (((
len W2)
- n)
- 1) as
Element of
NAT by
INT_1: 3;
reconsider m as
odd
Element of
NAT ;
n
in (
dom W2) & (n
+ 1)
in (
dom W2) & (n
+ 2)
in (
dom W2) by
A2,
A16,
A18,
A19,
XREAL_1: 6,
A21,
A22,
FINSEQ_3: 25;
then
a23: (W2
. n)
= ((W2
.reverse() )
. (((
len W2)
- n)
+ 1)) & (((
len W2)
- n)
+ 1)
in (
dom (W2
.reverse() )) & (W2
. (n
+ 1))
= ((W2
.reverse() )
. (((
len W2)
- (n
+ 1))
+ 1)) & (W2
. (n
+ 2))
= ((W2
.reverse() )
. (((
len W2)
- (n
+ 2))
+ 1)) by
GLIB_001: 24;
then
A23: (W1
. n)
= ((W2
.reverse() )
. (m
+ 2)) & (m
+ 2)
in (
dom (W2
.reverse() )) & (W1
. (n
+ 1))
= ((W2
.reverse() )
. (m
+ 1)) & (W1
. (n
+ 2))
= ((W2
.reverse() )
. m) by
A2;
(m
+ 2)
<= (
len (W2
.reverse() )) by
a23,
FINSEQ_3: 25;
then
A24: m
< (
len (W2
.reverse() )) by
GLIB_001: 1;
A25: (W1
. (n
+ 1))
in E by
A17,
A2,
A4;
(W1
. (n
+ 1))
DJoins ((W1
. (n
+ 2)),(W1
. n),G2) by
A23,
A15,
A24;
hence (W1
. (n
+ 1))
DJoins ((W1
. n),(W1
. (n
+ 2)),G1) by
A1,
A25,
Th7;
end;
hence thesis by
GLIB_001: 122;
end;
theorem ::
GLIB_007:17
for G2 holds for G1 be
reverseEdgeDirections of G2 holds for W2 be
Walk of G2, W1 be
Walk of G1 st W1
= W2 holds (W1 is
directed iff (W2
.reverse() ) is
directed)
proof
let G2;
let G1 be
reverseEdgeDirections of G2;
let W2 be
Walk of G2, W1 be
Walk of G1;
assume
A1: W1
= W2;
(W2
.edges() )
c= (
the_Edges_of G2);
hence thesis by
A1,
Th16;
end;
Lm4: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds for W2 be
Walk of G2, W1 be
Walk of G1 st W1
= W2 holds (W1 is
chordal implies W2 is
chordal)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let W2 be
Walk of G2, W1 be
Walk of G1;
assume
A1: W1
= W2;
assume W1 is
chordal;
then
consider m,n be
odd
Nat such that
A2: (m
+ 2)
< n & n
<= (
len W1) & (W1
. m)
<> (W1
. n) and
A3: ex e be
object st e
Joins ((W1
. m),(W1
. n),G1) and
A4: for f be
object st f
in (W1
.edges() ) holds not f
Joins ((W1
. m),(W1
. n),G1) by
CHORD:def 10;
ex k,l be
odd
Nat st (k
+ 2)
< l & l
<= (
len W2) & (W2
. k)
<> (W2
. l) & (ex e be
object st e
Joins ((W2
. k),(W2
. l),G2)) & for f be
object st f
in (W2
.edges() ) holds not f
Joins ((W2
. k),(W2
. l),G2)
proof
take m, n;
thus (m
+ 2)
< n & n
<= (
len W2) & (W2
. m)
<> (W2
. n) by
A1,
A2;
thus ex e be
object st e
Joins ((W2
. m),(W2
. n),G2) by
A1,
A3,
Th9;
let f be
object;
assume f
in (W2
.edges() );
then f
in (W1
.edges() ) by
A1,
GLIB_001: 110;
hence not f
Joins ((W2
. m),(W2
. n),G2) by
A1,
Th9,
A4;
end;
hence thesis by
CHORD:def 10;
end;
theorem ::
GLIB_007:18
Th18: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds for W2 be
Walk of G2, W1 be
Walk of G1 st W1
= W2 holds (W1 is
chordal iff W2 is
chordal)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let W2 be
Walk of G2, W1 be
Walk of G1;
assume
A1: W1
= W2;
hence W1 is
chordal implies W2 is
chordal by
Lm4;
assume
A2: W2 is
chordal;
reconsider G3 = G2 as
reverseEdgeDirections of G1, E by
Th3;
reconsider W3 = W2 as
Walk of G3;
W3 is
chordal by
A2;
hence W1 is
chordal by
A1,
Lm4;
end;
theorem ::
GLIB_007:19
Th19: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v1,v2 be
object holds (ex W1 be
Walk of G1 st W1
is_Walk_from (v1,v2)) iff (ex W2 be
Walk of G2 st W2
is_Walk_from (v1,v2))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1,v2 be
object;
hereby
given W1 be
Walk of G1 such that
A1: W1
is_Walk_from (v1,v2);
reconsider W2 = W1 as
Walk of G2 by
Th15;
take W2;
thus W2
is_Walk_from (v1,v2) by
A1,
GLIB_001: 19;
end;
given W2 be
Walk of G2 such that
A2: W2
is_Walk_from (v1,v2);
reconsider W1 = W2 as
Walk of G1 by
Th14;
take W1;
thus thesis by
A2,
GLIB_001: 19;
end;
theorem ::
GLIB_007:20
Th20: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds for v1 be
Vertex of G1, v2 be
Vertex of G2 st v1
= v2 holds (G1
.reachableFrom v1)
= (G2
.reachableFrom v2)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1 be
Vertex of G1, v2 be
Vertex of G2;
assume
A1: v1
= v2;
for v be
object holds v
in (G1
.reachableFrom v1) iff v
in (G2
.reachableFrom v2)
proof
let v be
object;
hereby
assume v
in (G1
.reachableFrom v1);
then ex W be
Walk of G1 st W
is_Walk_from (v1,v) by
GLIB_002:def 5;
then ex W be
Walk of G2 st W
is_Walk_from (v2,v) by
A1,
Th19;
hence v
in (G2
.reachableFrom v2) by
GLIB_002:def 5;
end;
assume v
in (G2
.reachableFrom v2);
then ex W be
Walk of G2 st W
is_Walk_from (v2,v) by
GLIB_002:def 5;
then ex W be
Walk of G1 st W
is_Walk_from (v1,v) by
A1,
Th19;
hence v
in (G1
.reachableFrom v1) by
GLIB_002:def 5;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:21
Th21: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds (G1
.componentSet() )
= (G2
.componentSet() ) & (G1
.numComponents() )
= (G2
.numComponents() )
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
for V be
object holds V
in (G1
.componentSet() ) iff V
in (G2
.componentSet() )
proof
let V be
object;
hereby
assume V
in (G1
.componentSet() );
then
consider v be
Vertex of G1 such that
A1: V
= (G1
.reachableFrom v) by
GLIB_002:def 8;
reconsider w = v as
Vertex of G2 by
Th10;
V
= (G2
.reachableFrom w) by
A1,
Th20;
hence V
in (G2
.componentSet() ) by
GLIB_002:def 8;
end;
assume V
in (G2
.componentSet() );
then
consider v be
Vertex of G2 such that
A2: V
= (G2
.reachableFrom v) by
GLIB_002:def 8;
reconsider w = v as
Vertex of G1 by
Th10;
V
= (G1
.reachableFrom w) by
A2,
Th20;
hence V
in (G1
.componentSet() ) by
GLIB_002:def 8;
end;
hence
A3: (G1
.componentSet() )
= (G2
.componentSet() ) by
TARSKI: 2;
thus (G1
.numComponents() )
= (
card (G2
.componentSet() )) by
A3,
GLIB_002:def 9
.= (G2
.numComponents() ) by
GLIB_002:def 9;
end;
registration
let G be
_trivial
_Graph, E be
set;
cluster ->
_trivial for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
A1: (
the_Vertices_of G1)
= (
the_Vertices_of G) by
Th4;
(
card (
the_Vertices_of G))
= 1 by
GLIB_000:def 19;
hence thesis by
A1,
GLIB_000:def 19;
end;
end
registration
let G be non
_trivial
_Graph, E be
set;
cluster -> non
_trivial for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
_trivial;
then G2 is
_trivial;
hence contradiction;
end;
end
theorem ::
GLIB_007:22
Th22: for G2, E holds for G1 be
reverseEdgeDirections of G2, E, v be
set holds for G3 be
removeVertex of G1, v, G4 be
removeVertex of G2, v holds G4 is
reverseEdgeDirections of G3, (E
\ (G1
.edgesInOut
{v}))
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v be
set;
let G3 be
removeVertex of G1, v, G4 be
removeVertex of G2, v;
per cases ;
suppose
A1: E
c= (
the_Edges_of G2);
then
A2: (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((
the_Target_of G2)
| E)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((
the_Source_of G2)
| E)) by
Def1;
then
A4: (G1
.edgesBetween ((
the_Vertices_of G1)
\
{v}))
= (G2
.edgesBetween ((
the_Vertices_of G2)
\
{v})) by
Th11;
per cases ;
suppose
A5: not v
in (
the_Vertices_of G2);
then ((
the_Vertices_of G1)
\
{v})
= (
the_Vertices_of G1) & ((
the_Vertices_of G2)
\
{v})
= (
the_Vertices_of G2) by
A2,
ZFMISC_1: 57;
then
A6: G1
== G3 & G2
== G4 by
GLIB_000: 94;
(
{v}
/\ (
the_Vertices_of G1))
=
{} by
XBOOLE_0:def 7,
A2,
A5,
ZFMISC_1: 50;
then
a7: (G1
.edgesInOut
{v})
=
{} by
GLIB_006: 18;
G3 is
reverseEdgeDirections of G2, E by
A6,
Th2;
then G2 is
reverseEdgeDirections of G3, E by
Th3;
hence thesis by
A6,
a7,
Th2;
end;
suppose
A8: v
in (
the_Vertices_of G2);
then
A9: v
in (
the_Vertices_of G1) by
A2;
per cases ;
suppose
A10: G2 is non
_trivial;
then
A11: (
the_Vertices_of G4)
= ((
the_Vertices_of G2)
\
{v}) & (
the_Edges_of G4)
= (G2
.edgesBetween ((
the_Vertices_of G2)
\
{v})) by
A8,
GLIB_000: 47;
A12: (
the_Vertices_of G3)
= ((
the_Vertices_of G1)
\
{v}) & (
the_Edges_of G3)
= (G1
.edgesBetween ((
the_Vertices_of G1)
\
{v})) by
A2,
A8,
GLIB_000: 47,
A10;
then
A13: (
the_Vertices_of G4)
= (
the_Vertices_of G3) & (
the_Edges_of G4)
= (
the_Edges_of G3) by
A11,
A2,
A4;
A14: (
dom (
the_Source_of G4))
= (
the_Edges_of G4) & (
dom (
the_Target_of G4))
= (
the_Edges_of G4) by
GLIB_000: 4;
for e be
object holds e
in (E
\ (G1
.edgesInOut
{v})) implies e
in (
the_Edges_of G3)
proof
let e be
object;
assume e
in (E
\ (G1
.edgesInOut
{v}));
then
A15: e
in E & not e
in (G1
.edgesInOut
{v}) by
XBOOLE_0:def 5;
then
A16: e
in (
the_Edges_of G1) by
A1,
A2;
A17: not ((
the_Source_of G1)
. e)
in
{v} & not ((
the_Target_of G1)
. e)
in
{v} by
A15,
A1,
A2,
GLIB_000: 28;
e
Joins (((
the_Source_of G1)
. e),((
the_Target_of G1)
. e),G1) by
A1,
A2,
A15,
GLIB_000:def 13;
then ((
the_Source_of G1)
. e)
in (
the_Vertices_of G1) & ((
the_Target_of G1)
. e)
in (
the_Vertices_of G1) by
GLIB_000: 13;
then ((
the_Source_of G1)
. e)
in ((
the_Vertices_of G1)
\
{v}) & ((
the_Target_of G1)
. e)
in ((
the_Vertices_of G1)
\
{v}) by
A17,
XBOOLE_0:def 5;
hence thesis by
A12,
A16,
GLIB_000: 31;
end;
then
A18: (E
\ (G1
.edgesInOut
{v}))
c= (
the_Edges_of G3) by
TARSKI:def 3;
A19: for e be
object holds e
in (
the_Edges_of G4) implies not e
in (G1
.edgesInOut
{v})
proof
let e be
object;
assume e
in (
the_Edges_of G4);
then
A20: e
in (
the_Edges_of G3) by
A13;
assume e
in (G1
.edgesInOut
{v});
then e
in (
the_Edges_of G1) & (((
the_Source_of G1)
. e)
in
{v} or ((
the_Target_of G1)
. e)
in
{v}) by
GLIB_000: 28;
then
A21: ((
the_Source_of G3)
. e)
in
{v} or ((
the_Target_of G3)
. e)
in
{v} by
A20,
GLIB_000:def 32;
e
Joins (((
the_Source_of G3)
. e),((
the_Target_of G3)
. e),G3) by
A20,
GLIB_000:def 13;
then ((
the_Source_of G3)
. e)
in (
the_Vertices_of G3) & ((
the_Target_of G3)
. e)
in (
the_Vertices_of G3) by
GLIB_000: 13;
hence contradiction by
A21,
A12,
XBOOLE_0:def 5;
end;
set S = ((
the_Source_of G3)
+* ((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v}))));
A22: (
dom ((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v}))))
= ((
dom (
the_Target_of G3))
/\ (E
\ (G1
.edgesInOut
{v}))) by
RELAT_1: 61
.= ((
the_Edges_of G3)
/\ (E
\ (G1
.edgesInOut
{v}))) by
GLIB_000: 4;
A23: (
dom S)
= ((
dom (
the_Source_of G3))
\/ (
dom ((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v}))))) by
FUNCT_4:def 1
.= ((
the_Edges_of G3)
\/ (
dom ((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v}))))) by
GLIB_000: 4
.= (
dom (
the_Source_of G4)) by
A13,
A14,
A22,
XBOOLE_1: 22;
set T = ((
the_Target_of G3)
+* ((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v}))));
A24: (
dom ((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v}))))
= ((
dom (
the_Source_of G3))
/\ (E
\ (G1
.edgesInOut
{v}))) by
RELAT_1: 61
.= ((
the_Edges_of G3)
/\ (E
\ (G1
.edgesInOut
{v}))) by
GLIB_000: 4;
A25: (
dom T)
= ((
dom (
the_Target_of G3))
\/ (
dom ((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v}))))) by
FUNCT_4:def 1
.= ((
the_Edges_of G3)
\/ (
dom ((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v}))))) by
GLIB_000: 4
.= (
dom (
the_Target_of G4)) by
A13,
A14,
A24,
XBOOLE_1: 22;
for e be
object st e
in (
dom (
the_Source_of G4)) holds ((
the_Source_of G4)
. e)
= (S
. e)
proof
let e be
object;
assume e
in (
dom (
the_Source_of G4));
then
A26: e
in (
the_Edges_of G4);
per cases ;
suppose
A27: e
in (E
\ (G1
.edgesInOut
{v}));
then
A28: e
in E;
A29: e
in (
the_Edges_of G3) by
A27,
A18;
A30: e
in (
dom ((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v})))) by
A27,
A18,
A22,
XBOOLE_0:def 4;
e
in (
the_Edges_of G2) by
A26;
then e
in (
dom (
the_Source_of G2)) by
GLIB_000: 4;
then e
in ((
dom (
the_Source_of G2))
/\ E) by
A28,
XBOOLE_0:def 4;
then
A31: e
in (
dom ((
the_Source_of G2)
| E)) by
RELAT_1: 61;
thus (S
. e)
= (((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v})))
. e) by
A30,
FUNCT_4: 13
.= ((
the_Target_of G3)
. e) by
A27,
FUNCT_1: 49
.= ((
the_Target_of G1)
. e) by
A29,
GLIB_000:def 32
.= (((
the_Source_of G2)
| E)
. e) by
A2,
A31,
FUNCT_4: 13
.= ((
the_Source_of G2)
. e) by
A28,
FUNCT_1: 49
.= ((
the_Source_of G4)
. e) by
A26,
GLIB_000:def 32;
end;
suppose
A32: not e
in (E
\ (G1
.edgesInOut
{v}));
not e
in (G1
.edgesInOut
{v}) by
A26,
A19;
then
A33: not e
in (
dom ((
the_Target_of G2)
| E)) by
A32,
XBOOLE_0:def 5;
A34: not e
in (
dom ((
the_Target_of G3)
| (E
\ (G1
.edgesInOut
{v})))) by
A32;
thus (S
. e)
= ((
the_Source_of G3)
. e) by
A34,
FUNCT_4: 11
.= ((
the_Source_of G1)
. e) by
A13,
A26,
GLIB_000:def 32
.= ((
the_Source_of G2)
. e) by
A2,
A33,
FUNCT_4: 11
.= ((
the_Source_of G4)
. e) by
A26,
GLIB_000:def 32;
end;
end;
then
A35: (
the_Source_of G4)
= S by
A23,
FUNCT_1: 2;
for e be
object st e
in (
dom (
the_Target_of G4)) holds ((
the_Target_of G4)
. e)
= (T
. e)
proof
let e be
object;
assume e
in (
dom (
the_Target_of G4));
then
A36: e
in (
the_Edges_of G4);
per cases ;
suppose
A37: e
in (E
\ (G1
.edgesInOut
{v}));
then
A38: e
in E;
A39: e
in (
the_Edges_of G3) by
A37,
A18;
A40: e
in (
dom ((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v})))) by
A37,
A18,
A24,
XBOOLE_0:def 4;
e
in (
the_Edges_of G2) by
A36;
then e
in (
dom (
the_Target_of G2)) by
GLIB_000: 4;
then e
in ((
dom (
the_Target_of G2))
/\ E) by
A38,
XBOOLE_0:def 4;
then
A41: e
in (
dom ((
the_Target_of G2)
| E)) by
RELAT_1: 61;
thus (T
. e)
= (((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v})))
. e) by
A40,
FUNCT_4: 13
.= ((
the_Source_of G3)
. e) by
A37,
FUNCT_1: 49
.= ((
the_Source_of G1)
. e) by
A39,
GLIB_000:def 32
.= (((
the_Target_of G2)
| E)
. e) by
A2,
A41,
FUNCT_4: 13
.= ((
the_Target_of G2)
. e) by
A38,
FUNCT_1: 49
.= ((
the_Target_of G4)
. e) by
A36,
GLIB_000:def 32;
end;
suppose
A42: not e
in (E
\ (G1
.edgesInOut
{v}));
not e
in (G1
.edgesInOut
{v}) by
A36,
A19;
then
A43: not e
in (
dom ((
the_Source_of G2)
| E)) by
A42,
XBOOLE_0:def 5;
not e
in (
dom ((
the_Source_of G3)
| (E
\ (G1
.edgesInOut
{v})))) by
A42;
hence (T
. e)
= ((
the_Target_of G3)
. e) by
FUNCT_4: 11
.= ((
the_Target_of G1)
. e) by
A13,
A36,
GLIB_000:def 32
.= ((
the_Target_of G2)
. e) by
A2,
A43,
FUNCT_4: 11
.= ((
the_Target_of G4)
. e) by
A36,
GLIB_000:def 32;
end;
end;
then (
the_Target_of G4)
= T by
A25,
FUNCT_1: 2;
hence thesis by
A13,
A18,
A35,
Def1;
end;
suppose
A45: G2 is
_trivial;
then
consider v1 be
Vertex of G1 such that
A47: (
the_Vertices_of G1)
=
{v1} by
GLIB_000: 22;
v
= v1 by
A9,
A47,
TARSKI:def 1;
then ((
the_Vertices_of G1)
\
{v}) is
empty & ((
the_Vertices_of G2)
\
{v}) is
empty by
XBOOLE_1: 37,
A2,
A47;
then
A48: G1
== G3 & G2
== G4 by
GLIB_000:def 37;
G3 is
reverseEdgeDirections of G2, E by
A48,
Th2;
then G3
== G2 by
A45,
Th6;
hence thesis by
Th6,
A45,
A48,
GLIB_000: 85;
end;
end;
end;
suppose
A50: not E
c= (
the_Edges_of G2);
then
A51: G1
== G2 by
Def1;
then
A52: ((
the_Vertices_of G1)
\
{v})
= ((
the_Vertices_of G2)
\
{v}) by
GLIB_000:def 34;
then
A53: (G1
.edgesBetween ((
the_Vertices_of G1)
\
{v}))
= (G2
.edgesBetween ((
the_Vertices_of G2)
\
{v})) by
A51,
GLIB_000: 90;
A54: not (E
\ (G1
.edgesInOut
{v}))
c= (
the_Edges_of G3)
proof
assume (E
\ (G1
.edgesInOut
{v}))
c= (
the_Edges_of G3);
then (E
\ (G1
.edgesInOut
{v}))
c= (
the_Edges_of G1) by
XBOOLE_1: 1;
then ((E
\ (G1
.edgesInOut
{v}))
\/ (G1
.edgesInOut
{v}))
c= (
the_Edges_of G1) by
XBOOLE_1: 8;
then
A55: (E
\/ (G1
.edgesInOut
{v}))
c= (
the_Edges_of G1) by
XBOOLE_1: 39;
not E
c= (
the_Edges_of G1) by
A50,
A51,
GLIB_000:def 34;
hence contradiction by
A55,
XBOOLE_1: 11;
end;
G4 is
removeVertex of G1, v by
A51,
A52,
A53,
GLIB_000: 95;
then G3
== G4 by
GLIB_000: 93;
hence thesis by
A54,
Def1;
end;
end;
Lm5: for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds for v1 be
Vertex of G1, v2 be
Vertex of G2 st v1
= v2 holds (v1 is
isolated implies v2 is
isolated) & (v1 is
endvertex implies v2 is
endvertex) & (v1 is
cut-vertex implies v2 is
cut-vertex)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1 be
Vertex of G1, v2 be
Vertex of G2;
assume
A1: v1
= v2;
hereby
assume v1 is
isolated;
then (v1
.edgesInOut() )
=
{} by
GLIB_000:def 49;
then (v2
.edgesInOut() )
=
{} by
A1,
Th13;
hence v2 is
isolated by
GLIB_000:def 49;
end;
hereby
assume v1 is
endvertex;
then
consider e be
object such that
A2: (v1
.edgesInOut() )
=
{e} & not e
Joins (v1,v1,G1) by
GLIB_000:def 51;
A3: not e
Joins (v2,v2,G2) by
A1,
A2,
Th9;
(v2
.edgesInOut() )
=
{e} by
A1,
A2,
Th13;
hence v2 is
endvertex by
A3,
GLIB_000:def 51;
end;
assume
A4: v1 is
cut-vertex;
for G4 be
removeVertex of G2, v2 holds (G2
.numComponents() )
in (G4
.numComponents() )
proof
let G4 be
removeVertex of G2, v2;
set G3 = the
removeVertex of G1, v1;
G4 is
reverseEdgeDirections of G3, (E
\ (G1
.edgesInOut
{v2})) by
A1,
Th22;
then
A5: (G4
.numComponents() )
= (G3
.numComponents() ) by
Th21;
(G1
.numComponents() )
in (G3
.numComponents() ) by
A4,
GLIB_002:def 10;
hence thesis by
A5,
Th21;
end;
hence v2 is
cut-vertex by
GLIB_002:def 10;
end;
theorem ::
GLIB_007:23
for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds for v1 be
Vertex of G1, v2 be
Vertex of G2 st v1
= v2 holds (v1 is
isolated iff v2 is
isolated) & (v1 is
endvertex iff v2 is
endvertex) & (v1 is
cut-vertex iff v2 is
cut-vertex)
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
let v1 be
Vertex of G1, v2 be
Vertex of G2;
assume
A1: v1
= v2;
G2 is
reverseEdgeDirections of G1, E by
Th3;
hence thesis by
A1,
Lm5;
end;
theorem ::
GLIB_007:24
for G2, E holds for G1 be
reverseEdgeDirections of G2, E holds (G1
.order() )
= (G2
.order() ) & (G1
.size() )
= (G2
.size() )
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
A1: (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2) by
Th4;
thus (G1
.order() )
= (
card (
the_Vertices_of G1)) by
GLIB_000:def 24
.= (G2
.order() ) by
A1,
GLIB_000:def 24;
thus (G1
.size() )
= (
card (
the_Edges_of G1)) by
GLIB_000:def 25
.= (G2
.size() ) by
A1,
GLIB_000:def 25;
end;
theorem ::
GLIB_007:25
Th25: for G2, E holds for G1 be
reverseEdgeDirections of G2, E st E
c= (
the_Edges_of G2) & G2 is
non-Dmulti & for e1,e2,v1,v2 be
object st e1
Joins (v1,v2,G2) & e2
Joins (v1,v2,G2) holds (e1
in E & e2
in E) or ( not e1
in E & not e2
in E) holds G1 is
non-Dmulti
proof
let G2, E;
let G1 be
reverseEdgeDirections of G2, E;
assume that
A1: E
c= (
the_Edges_of G2) and
A2: G2 is
non-Dmulti and
A3: for e1,e2,v1,v2 be
object st e1
Joins (v1,v2,G2) & e2
Joins (v1,v2,G2) holds (e1
in E & e2
in E) or ( not e1
in E & not e2
in E);
for e1,e2,v1,v2 be
object holds e1
DJoins (v1,v2,G1) & e2
DJoins (v1,v2,G1) implies e1
= e2
proof
let e1,e2,v1,v2 be
object;
assume
A4: e1
DJoins (v1,v2,G1) & e2
DJoins (v1,v2,G1);
then e1
Joins (v1,v2,G1) & e2
Joins (v1,v2,G1) by
GLIB_000: 16;
then e1
Joins (v1,v2,G2) & e2
Joins (v1,v2,G2) by
Th9;
per cases by
A3;
suppose e1
in E & e2
in E;
then e1
DJoins (v2,v1,G2) & e2
DJoins (v2,v1,G2) by
A1,
A4,
Th7;
hence thesis by
A2,
GLIB_000:def 21;
end;
suppose ( not e1
in E & not e2
in E);
then e1
DJoins (v1,v2,G2) & e2
DJoins (v1,v2,G2) by
A1,
A4,
Th8;
hence thesis by
A2,
GLIB_000:def 21;
end;
end;
hence thesis by
GLIB_000:def 21;
end;
registration
let G be
non-Dmulti
_Graph;
cluster ->
non-Dmulti for
reverseEdgeDirections of G;
coherence
proof
let G1 be
reverseEdgeDirections of G;
set E = (
the_Edges_of G);
for e1,e2,v1,v2 be
object st e1
Joins (v1,v2,G) & e2
Joins (v1,v2,G) holds (e1
in E & e2
in E) or ( not e1
in E & not e2
in E) by
GLIB_000:def 13;
hence thesis by
Th25;
end;
end
registration
let G be non
non-Dmulti
_Graph;
cluster -> non
non-Dmulti for
reverseEdgeDirections of G;
coherence
proof
let G1 be
reverseEdgeDirections of G;
reconsider G2 = G as
reverseEdgeDirections of G1 by
Th5;
assume G1 is
non-Dmulti;
then G2 is
non-Dmulti;
hence contradiction;
end;
end
registration
let G be
non-multi
_Graph, E be
set;
cluster ->
non-multi for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
for e1,e2,v1,v2 be
object holds e1
Joins (v1,v2,G1) & e2
Joins (v1,v2,G1) implies e1
= e2
proof
let e1,e2,v1,v2 be
object;
assume e1
Joins (v1,v2,G1) & e2
Joins (v1,v2,G1);
then e1
Joins (v1,v2,G) & e2
Joins (v1,v2,G) by
Th9;
hence thesis by
GLIB_000:def 20;
end;
hence thesis by
GLIB_000:def 20;
end;
end
registration
let G be non
non-multi
_Graph, E be
set;
cluster -> non
non-multi for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
non-multi;
then G2 is
non-multi;
hence contradiction;
end;
end
registration
let G be
loopless
_Graph, E be
set;
cluster ->
loopless for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
for v be
object holds not ex e be
object st e
Joins (v,v,G1) by
Th9,
GLIB_000: 18;
hence thesis by
GLIB_000: 18;
end;
end
registration
let G be non
loopless
_Graph, E be
set;
cluster -> non
loopless for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
loopless;
then G2 is
loopless;
hence contradiction;
end;
end
registration
let G be
connected
_Graph, E be
set;
cluster ->
connected for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
for v1,v2 be
Vertex of G1 holds ex W1 be
Walk of G1 st W1
is_Walk_from (v1,v2)
proof
let v1,v2 be
Vertex of G1;
reconsider w1 = v1, w2 = v2 as
Vertex of G by
Th10;
ex W be
Walk of G st W
is_Walk_from (w1,w2) by
GLIB_002:def 1;
hence thesis by
Th19;
end;
hence thesis by
GLIB_002:def 1;
end;
end
registration
let G be non
connected
_Graph, E be
set;
cluster -> non
connected for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
connected;
then G2 is
connected;
hence contradiction;
end;
end
registration
let G be
acyclic
_Graph, E be
set;
cluster ->
acyclic for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
not ex W1 be
Walk of G1 st W1 is
Cycle-like
proof
given W1 be
Walk of G1 such that
A1: W1 is
Cycle-like;
reconsider W = W1 as
Walk of G by
Th15;
W is
Cycle-like by
A1,
GLIB_006: 24;
hence contradiction by
GLIB_002:def 2;
end;
hence thesis by
GLIB_002:def 2;
end;
end
registration
let G be non
acyclic
_Graph, E be
set;
cluster -> non
acyclic for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
acyclic;
then G2 is
acyclic;
hence contradiction;
end;
end
registration
let G be
complete
_Graph, E be
set;
cluster ->
complete for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
for v1,v2 be
Vertex of G1 st v1
<> v2 holds (v1,v2)
are_adjacent
proof
let v1,v2 be
Vertex of G1;
assume
A1: v1
<> v2;
reconsider u1 = v1, u2 = v2 as
Vertex of G by
Th10;
consider e be
object such that
A2: e
Joins (u1,u2,G) by
A1,
CHORD:def 6,
CHORD:def 3;
thus thesis by
CHORD:def 3,
A2,
Th9;
end;
hence thesis by
CHORD:def 6;
end;
end
registration
let G be non
complete
_Graph, E be
set;
cluster -> non
complete for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
complete;
then G2 is
complete;
hence contradiction;
end;
end
registration
let G be
chordal
_Graph, E be
set;
cluster ->
chordal for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
for W1 be
Walk of G1 st (W1
.length() )
> 3 & W1 is
Cycle-like holds W1 is
chordal
proof
let W1 be
Walk of G1;
reconsider W = W1 as
Walk of G by
Th15;
assume (W1
.length() )
> 3 & W1 is
Cycle-like;
then (W
.length() )
> 3 & W is
Cycle-like by
GLIB_006: 24,
GLIB_001: 114;
then W is
chordal by
CHORD:def 11;
hence thesis by
Th18;
end;
hence thesis by
CHORD:def 11;
end;
end
registration
let G be
_finite
_Graph, E be
set;
cluster ->
_finite for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
(
the_Vertices_of G1)
= (
the_Vertices_of G) & (
the_Edges_of G1)
= (
the_Edges_of G) by
Th4;
hence thesis by
GLIB_000:def 17;
end;
end
registration
let G be non
_finite
_Graph, E be
set;
cluster -> non
_finite for
reverseEdgeDirections of G, E;
coherence
proof
let G1 be
reverseEdgeDirections of G, E;
reconsider G2 = G as
reverseEdgeDirections of G1, E by
Th3;
assume G1 is
_finite;
then G2 is
_finite;
hence contradiction;
end;
end
theorem ::
GLIB_007:26
Th26: for G2 holds for G1 be
reverseEdgeDirections of G2 holds (
the_Source_of G1)
= (
the_Target_of G2) & (
the_Target_of G1)
= (
the_Source_of G2)
proof
let G2;
let G1 be
reverseEdgeDirections of G2;
A1: (
dom (
the_Target_of G2))
= (
the_Edges_of G2) & (
dom (
the_Source_of G2))
= (
the_Edges_of G2) by
FUNCT_2:def 1;
thus (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((
the_Target_of G2)
| (
the_Edges_of G2))) by
Def1
.= (
the_Target_of G2) by
A1,
FUNCT_4: 19;
thus (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((
the_Source_of G2)
| (
the_Edges_of G2))) by
Def1
.= (
the_Source_of G2) by
A1,
FUNCT_4: 19;
end;
theorem ::
GLIB_007:27
for G2 holds for G1 be
reverseEdgeDirections of G2 holds for v1,e,v2 be
object holds (e
DJoins (v1,v2,G2) iff e
DJoins (v2,v1,G1))
proof
let G2;
let G1 be
reverseEdgeDirections of G2;
let v1,e,v2 be
object;
hereby
assume e
DJoins (v1,v2,G2);
then e
in (
the_Edges_of G2) & ((
the_Source_of G2)
. e)
= v1 & ((
the_Target_of G2)
. e)
= v2 by
GLIB_000:def 14;
then e
in (
the_Edges_of G1) & ((
the_Target_of G1)
. e)
= v1 & ((
the_Source_of G1)
. e)
= v2 by
Th26,
Def1;
hence e
DJoins (v2,v1,G1) by
GLIB_000:def 14;
end;
assume e
DJoins (v2,v1,G1);
then e
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e)
= v2 & ((
the_Target_of G1)
. e)
= v1 by
GLIB_000:def 14;
then e
in (
the_Edges_of G2) & ((
the_Target_of G2)
. e)
= v2 & ((
the_Source_of G2)
. e)
= v1 by
Th26,
Def1;
hence e
DJoins (v1,v2,G2) by
GLIB_000:def 14;
end;
begin
Lm6: for X,Y be
set holds (X
/\ (Y
--> X))
=
{}
proof
let X,Y be
set;
assume (X
/\ (Y
--> X))
<>
{} ;
then
consider Z be
object such that
A1: Z
in (X
/\ (Y
--> X)) by
XBOOLE_0:def 1;
reconsider Z as
set by
TARSKI: 1;
consider y,x be
object such that
A2: y
in Y & x
in
{X} & Z
=
[y, x] by
ZFMISC_1:def 2,
A1;
x
= X by
A2,
TARSKI:def 1;
then Z
=
{
{y, X},
{y}} by
A2,
TARSKI:def 5;
then
A3:
{y, X}
in Z by
TARSKI:def 2;
X
in
{y, X} & Z
in X by
A1,
XBOOLE_0:def 4,
TARSKI:def 2;
hence contradiction by
A3,
XREGULAR: 7;
end;
Lm7: for X,Y be
set, x be
object st (X
/\ Y)
=
{} & x
in X holds not x
in Y by
XBOOLE_0:def 4;
definition
let G, v, V;
::
GLIB_007:def2
mode
addAdjVertexToAll of G,v,V ->
Supergraph of G means
:
Def2: (
the_Vertices_of it )
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of it )
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of it )
= ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Target_of it )
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) if V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G)
otherwise it
== G;
existence
proof
hereby
assume
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
set V1 = ((
the_Vertices_of G)
\/
{v});
reconsider V1 as non
empty
set;
set E1 = ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G)));
set S1 = ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v));
A2: (
dom S1)
= ((
dom (
the_Source_of G))
\/ (
dom ((V
--> (
the_Edges_of G))
--> v))) by
FUNCT_4:def 1
.= ((
the_Edges_of G)
\/ (
dom ((V
--> (
the_Edges_of G))
--> v))) by
FUNCT_2:def 1
.= E1;
A3: ((
rng (
the_Source_of G))
\/ (
rng ((V
--> (
the_Edges_of G))
--> v)))
c= V1 by
XBOOLE_1: 13;
(
rng S1)
c= ((
rng (
the_Source_of G))
\/ (
rng ((V
--> (
the_Edges_of G))
--> v))) by
FUNCT_4: 17;
then
reconsider S1 as
Function of E1, V1 by
A2,
FUNCT_2: 2,
A3,
XBOOLE_1: 1;
set T1 = ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)})));
A4: (
dom T1)
= ((
dom (
the_Target_of G))
\/ (
dom (
pr1 (V,
{(
the_Edges_of G)})))) by
FUNCT_4:def 1
.= ((
the_Edges_of G)
\/ (
dom (
pr1 (V,
{(
the_Edges_of G)})))) by
FUNCT_2:def 1
.= ((
the_Edges_of G)
\/
[:V,
{(
the_Edges_of G)}:]) by
FUNCT_3:def 4
.= E1 by
FUNCOP_1:def 2;
(
rng (
pr1 (V,
{(
the_Edges_of G)})))
c= (
the_Vertices_of G) by
A1,
XBOOLE_1: 1;
then ((
rng (
the_Target_of G))
\/ (
rng (
pr1 (V,
{(
the_Edges_of G)}))))
c= (
the_Vertices_of G) by
XBOOLE_1: 8;
then
A5: ((
rng (
the_Target_of G))
\/ (
rng (
pr1 (V,
{(
the_Edges_of G)}))))
c= V1 by
XBOOLE_1: 10;
(
rng T1)
c= ((
rng (
the_Target_of G))
\/ (
rng (
pr1 (V,
{(
the_Edges_of G)})))) by
FUNCT_4: 17;
then
reconsider T1 as
Function of E1, V1 by
A4,
FUNCT_2: 2,
A5,
XBOOLE_1: 1;
set G1 = (
createGraph (V1,E1,S1,T1));
(
the_Vertices_of G)
c= V1 & (
the_Edges_of G)
c= E1 by
XBOOLE_1: 7;
then
A6: (
the_Vertices_of G)
c= (
the_Vertices_of G1) & (
the_Edges_of G)
c= (
the_Edges_of G1) by
GLIB_000: 6;
for e be
set st e
in (
the_Edges_of G) holds ((
the_Source_of G)
. e)
= ((
the_Source_of G1)
. e) & ((
the_Target_of G)
. e)
= ((
the_Target_of G1)
. e)
proof
let e be
set;
assume
A7: e
in (
the_Edges_of G);
then e
in (
dom (
the_Source_of G)) by
FUNCT_2:def 1;
then
A8: e
in ((
dom (
the_Source_of G))
\/ (
dom ((V
--> (
the_Edges_of G))
--> v))) by
XBOOLE_1: 7,
TARSKI:def 3;
a9: ((
the_Edges_of G)
/\ (V
--> (
the_Edges_of G)))
=
{} by
Lm6;
then
A9: not e
in (V
--> (
the_Edges_of G)) by
A7,
Lm7;
not e
in (
dom ((V
--> (
the_Edges_of G))
--> v)) by
A7,
Lm7,
a9;
then
A10: (S1
. e)
= ((
the_Source_of G)
. e) by
A8,
FUNCT_4:def 1;
e
in (
dom (
the_Target_of G)) by
A7,
FUNCT_2:def 1;
then
A11: e
in ((
dom (
the_Target_of G))
\/ (
dom (
pr1 (V,
{(
the_Edges_of G)})))) by
XBOOLE_1: 7,
TARSKI:def 3;
not e
in
[:V,
{(
the_Edges_of G)}:] by
A9,
FUNCOP_1:def 2;
then not e
in (
dom (
pr1 (V,
{(
the_Edges_of G)})));
then (T1
. e)
= ((
the_Target_of G)
. e) by
A11,
FUNCT_4:def 1;
hence thesis by
A10,
GLIB_000: 6;
end;
then
reconsider G1 as
Supergraph of G by
A6,
GLIB_006:def 9;
take G1;
thus (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G1)
= ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) by
GLIB_000: 6;
end;
assume not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
reconsider G1 = G as
Supergraph of G by
GLIB_006: 61;
take G1;
thus thesis;
end;
consistency ;
end
definition
let G, v, V;
::
GLIB_007:def3
mode
addAdjVertexFromAll of G,v,V ->
Supergraph of G means
:
Def3: (
the_Vertices_of it )
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of it )
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of it )
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of it )
= ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) if V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G)
otherwise it
== G;
existence
proof
hereby
assume
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
set V1 = ((
the_Vertices_of G)
\/
{v});
reconsider V1 as non
empty
set;
set E1 = ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G)));
set T1 = ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v));
A2: (
dom T1)
= ((
dom (
the_Target_of G))
\/ (
dom ((V
--> (
the_Edges_of G))
--> v))) by
FUNCT_4:def 1
.= ((
the_Edges_of G)
\/ (
dom ((V
--> (
the_Edges_of G))
--> v))) by
FUNCT_2:def 1
.= E1;
A3: ((
rng (
the_Target_of G))
\/ (
rng ((V
--> (
the_Edges_of G))
--> v)))
c= V1 by
XBOOLE_1: 13;
(
rng T1)
c= ((
rng (
the_Target_of G))
\/ (
rng ((V
--> (
the_Edges_of G))
--> v))) by
FUNCT_4: 17;
then
reconsider T1 as
Function of E1, V1 by
A2,
FUNCT_2: 2,
A3,
XBOOLE_1: 1;
set S1 = ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)})));
A4: (
dom S1)
= ((
dom (
the_Source_of G))
\/ (
dom (
pr1 (V,
{(
the_Edges_of G)})))) by
FUNCT_4:def 1
.= ((
the_Edges_of G)
\/ (
dom (
pr1 (V,
{(
the_Edges_of G)})))) by
FUNCT_2:def 1
.= ((
the_Edges_of G)
\/
[:V,
{(
the_Edges_of G)}:]) by
FUNCT_3:def 4
.= E1 by
FUNCOP_1:def 2;
(
rng (
pr1 (V,
{(
the_Edges_of G)})))
c= (
the_Vertices_of G) by
A1,
XBOOLE_1: 1;
then ((
rng (
the_Source_of G))
\/ (
rng (
pr1 (V,
{(
the_Edges_of G)}))))
c= (
the_Vertices_of G) by
XBOOLE_1: 8;
then
A5: ((
rng (
the_Source_of G))
\/ (
rng (
pr1 (V,
{(
the_Edges_of G)}))))
c= V1 by
XBOOLE_1: 10;
(
rng S1)
c= ((
rng (
the_Source_of G))
\/ (
rng (
pr1 (V,
{(
the_Edges_of G)})))) by
FUNCT_4: 17;
then
reconsider S1 as
Function of E1, V1 by
A4,
FUNCT_2: 2,
A5,
XBOOLE_1: 1;
set G1 = (
createGraph (V1,E1,S1,T1));
(
the_Vertices_of G)
c= V1 & (
the_Edges_of G)
c= E1 by
XBOOLE_1: 7;
then
A6: (
the_Vertices_of G)
c= (
the_Vertices_of G1) & (
the_Edges_of G)
c= (
the_Edges_of G1) by
GLIB_000: 6;
for e be
set st e
in (
the_Edges_of G) holds ((
the_Source_of G)
. e)
= ((
the_Source_of G1)
. e) & ((
the_Target_of G)
. e)
= ((
the_Target_of G1)
. e)
proof
let e be
set;
assume
A7: e
in (
the_Edges_of G);
then e
in (
dom (
the_Target_of G)) by
FUNCT_2:def 1;
then
A8: e
in ((
dom (
the_Target_of G))
\/ (
dom ((V
--> (
the_Edges_of G))
--> v))) by
XBOOLE_1: 7,
TARSKI:def 3;
a9: ((
the_Edges_of G)
/\ (V
--> (
the_Edges_of G)))
=
{} by
Lm6;
then
A9: not e
in (V
--> (
the_Edges_of G)) by
A7,
Lm7;
not e
in (
dom ((V
--> (
the_Edges_of G))
--> v)) by
A7,
Lm7,
a9;
then
A10: (T1
. e)
= ((
the_Target_of G)
. e) by
A8,
FUNCT_4:def 1;
e
in (
dom (
the_Source_of G)) by
A7,
FUNCT_2:def 1;
then
A11: e
in ((
dom (
the_Source_of G))
\/ (
dom (
pr1 (V,
{(
the_Edges_of G)})))) by
XBOOLE_1: 7,
TARSKI:def 3;
not e
in
[:V,
{(
the_Edges_of G)}:] by
A9,
FUNCOP_1:def 2;
then not e
in (
dom (
pr1 (V,
{(
the_Edges_of G)})));
then (S1
. e)
= ((
the_Source_of G)
. e) by
A11,
FUNCT_4:def 1;
hence thesis by
A10,
GLIB_000: 6;
end;
then
reconsider G1 as
Supergraph of G by
GLIB_006:def 9,
A6;
take G1;
thus (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G1)
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of G1)
= ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) by
GLIB_000: 6;
end;
assume not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
reconsider G1 = G as
Supergraph of G by
GLIB_006: 61;
take G1;
thus thesis;
end;
consistency ;
end
definition
let G, v;
mode
addAdjVertexToAll of G,v is
addAdjVertexToAll of G, v, (
the_Vertices_of G);
correctness ;
mode
addAdjVertexFromAll of G,v is
addAdjVertexFromAll of G, v, (
the_Vertices_of G);
correctness ;
end
theorem ::
GLIB_007:28
for G, v, V holds for G1,G2 be
addAdjVertexToAll of G, v, V holds G1
== G2
proof
let G, v, V;
let G1,G2 be
addAdjVertexToAll of G, v, V;
per cases ;
suppose V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G1)
= ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G2)
= ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Target_of G2)
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) by
Def2;
hence thesis by
GLIB_000:def 34;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 & G
== G2 by
Def2;
hence thesis by
GLIB_000: 85;
end;
end;
theorem ::
GLIB_007:29
for G, v, V holds for G1,G2 be
addAdjVertexFromAll of G, v, V holds G1
== G2
proof
let G, v, V;
let G1,G2 be
addAdjVertexFromAll of G, v, V;
per cases ;
suppose V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G1)
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of G1)
= ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G2)
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of G2)
= ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) by
Def3;
hence thesis by
GLIB_000:def 34;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 & G
== G2 by
Def3;
hence thesis by
GLIB_000: 85;
end;
end;
theorem ::
GLIB_007:30
for G, G2, v, V holds for G1 be
addAdjVertexToAll of G, v, V st G1
== G2 holds G2 is
addAdjVertexToAll of G, v, V
proof
let G, G2, v, V;
let G1 be
addAdjVertexToAll of G, v, V;
assume
A1: G1
== G2;
per cases ;
suppose
A2: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G1)
= ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) by
Def2;
then
A3: (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G2)
= ((
the_Source_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) & (
the_Target_of G2)
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) by
A1,
GLIB_000:def 34;
G2 is
Supergraph of G1 by
A1,
GLIB_006: 59;
then G2 is
Supergraph of G by
GLIB_006: 62;
hence thesis by
A2,
A3,
Def2;
end;
suppose
A4: not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 by
Def2;
then
A5: G
== G2 by
A1,
GLIB_000: 85;
then G2 is
Supergraph of G by
GLIB_006: 59;
hence thesis by
A4,
A5,
Def2;
end;
end;
theorem ::
GLIB_007:31
for G, G2, v, V holds for G1 be
addAdjVertexFromAll of G, v, V st G1
== G2 holds G2 is
addAdjVertexFromAll of G, v, V
proof
let G, G2, v, V;
let G1 be
addAdjVertexFromAll of G, v, V;
assume
A1: G1
== G2;
per cases ;
suppose
A2: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G1)
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of G1)
= ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) by
Def3;
then
A3: (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) & (
the_Source_of G2)
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of G2)
= ((
the_Target_of G)
+* ((V
--> (
the_Edges_of G))
--> v)) by
A1,
GLIB_000:def 34;
G2 is
Supergraph of G1 by
A1,
GLIB_006: 59;
then G2 is
Supergraph of G by
GLIB_006: 62;
hence thesis by
A2,
A3,
Def3;
end;
suppose
A4: not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 by
Def3;
then
A5: G
== G2 by
A1,
GLIB_000: 85;
then G2 is
Supergraph of G by
GLIB_006: 59;
hence thesis by
A4,
A5,
Def3;
end;
end;
theorem ::
GLIB_007:32
Th32: for G, v, V holds for G1 be
addAdjVertexToAll of G, v, V holds for G2 be
addAdjVertexFromAll of G, v, V holds (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= (
the_Edges_of G2)
proof
let G, v, V;
let G1 be
addAdjVertexToAll of G, v, V;
let G2 be
addAdjVertexFromAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ (V
--> (
the_Edges_of G))) by
Def2;
hence thesis by
A1,
Def3;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 & G
== G2 by
Def2,
Def3;
then G1
== G2 by
GLIB_000: 85;
hence thesis by
GLIB_000:def 34;
end;
end;
theorem ::
GLIB_007:33
Th33: for G2, v, V holds for G1 be
addAdjVertexToAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.edgesOutOf
{v})
= (V
--> (
the_Edges_of G2))
proof
let G2, v, V;
let G1 be
addAdjVertexToAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) by
Def2;
for e be
object holds e
in (G1
.edgesOutOf
{v}) iff e
in (V
--> (
the_Edges_of G2))
proof
let e be
object;
reconsider e1 = e as
set by
TARSKI: 1;
hereby
assume e
in (G1
.edgesOutOf
{v});
then
A3: e1
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
in
{v} by
GLIB_000:def 27;
not e
in (
the_Edges_of G2)
proof
assume
A4: e
in (
the_Edges_of G2);
then ((
the_Source_of G2)
. e1)
= ((
the_Source_of G1)
. e1) by
GLIB_006:def 9
.= v by
A3,
TARSKI:def 1;
hence contradiction by
A1,
A4,
FUNCT_2: 5;
end;
hence e
in (V
--> (
the_Edges_of G2)) by
A2,
A3,
XBOOLE_0:def 3;
end;
assume
A5: e
in (V
--> (
the_Edges_of G2));
then e
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
then ((
the_Source_of G1)
. e)
= (((V
--> (
the_Edges_of G2))
--> v)
. e) by
A2,
FUNCT_4: 13
.= v by
A5,
FUNCOP_1: 7;
then
A6: ((
the_Source_of G1)
. e)
in
{v} by
TARSKI:def 1;
e
in (
the_Edges_of G1) by
A5,
A2,
XBOOLE_0:def 3;
hence thesis by
A6,
GLIB_000:def 27;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:34
Th34: for G2, v, V holds for G1 be
addAdjVertexFromAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.edgesInto
{v})
= (V
--> (
the_Edges_of G2))
proof
let G2, v, V;
let G1 be
addAdjVertexFromAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) by
Def3;
for e be
object holds e
in (G1
.edgesInto
{v}) iff e
in (V
--> (
the_Edges_of G2))
proof
let e be
object;
reconsider e1 = e as
set by
TARSKI: 1;
hereby
assume e
in (G1
.edgesInto
{v});
then
A3: e1
in (
the_Edges_of G1) & ((
the_Target_of G1)
. e1)
in
{v} by
GLIB_000:def 26;
then
A4: ((
the_Target_of G1)
. e)
= v by
TARSKI:def 1;
not e
in (
the_Edges_of G2)
proof
assume
A5: e
in (
the_Edges_of G2);
then ((
the_Target_of G2)
. e1)
= v by
A4,
GLIB_006:def 9;
hence contradiction by
A1,
A5,
FUNCT_2: 5;
end;
hence e
in (V
--> (
the_Edges_of G2)) by
A2,
A3,
XBOOLE_0:def 3;
end;
assume
A6: e
in (V
--> (
the_Edges_of G2));
then e
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
then ((
the_Target_of G1)
. e)
= (((V
--> (
the_Edges_of G2))
--> v)
. e) by
A2,
FUNCT_4: 13
.= v by
A6,
FUNCOP_1: 7;
then
A7: ((
the_Target_of G1)
. e)
in
{v} by
TARSKI:def 1;
e
in (
the_Edges_of G1) by
A6,
A2,
XBOOLE_0:def 3;
hence thesis by
A7,
GLIB_000:def 26;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:35
Th35: for G, v, V holds for G1 be
addAdjVertexToAll of G, v, V holds for G2 be
addAdjVertexFromAll of G, v, V st V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G) holds G2 is
reverseEdgeDirections of G1, (G1
.edgesOutOf
{v}) & G1 is
reverseEdgeDirections of G2, (G2
.edgesInto
{v})
proof
let G, v, V;
let G1 be
addAdjVertexToAll of G, v, V;
let G2 be
addAdjVertexFromAll of G, v, V;
set E = (V
--> (
the_Edges_of G));
assume
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then
A2: (G1
.edgesOutOf
{v})
= E & (G2
.edgesInto
{v})
= E by
Th33,
Th34;
A3: (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) & (
the_Source_of G1)
= ((
the_Source_of G)
+* (E
--> v)) & (
the_Target_of G1)
= ((
the_Target_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) by
A1,
Def2;
A4: (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ E) & (
the_Source_of G2)
= ((
the_Source_of G)
+* (
pr1 (V,
{(
the_Edges_of G)}))) & (
the_Target_of G2)
= ((
the_Target_of G)
+* (E
--> v)) by
A1,
Def3;
A5: (
dom (E
--> v))
= E;
A6: (
dom (
pr1 (V,
{(
the_Edges_of G)})))
=
[:V,
{(
the_Edges_of G)}:] by
FUNCT_3:def 4
.= E by
FUNCOP_1:def 2;
A9: (
the_Source_of G2)
= ((
the_Source_of G1)
+* ((
pr1 (V,
{(
the_Edges_of G)}))
| E)) by
A3,
A4,
A5,
A6,
FUNCT_4: 74
.= ((
the_Source_of G1)
+* ((
the_Target_of G1)
| E)) by
A6,
A3;
A11: (
the_Target_of G2)
= ((
the_Target_of G1)
+* ((E
--> v)
| E)) by
A3,
A4,
A5,
A6,
FUNCT_4: 74
.= ((
the_Target_of G1)
+* ((
the_Source_of G1)
| E)) by
A5,
A3;
A13: (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((E
--> v)
| E)) by
A3,
A4,
A5,
A6,
FUNCT_4: 74
.= ((
the_Source_of G2)
+* ((
the_Target_of G2)
| E)) by
A5,
A4;
A15: (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((
pr1 (V,
{(
the_Edges_of G)}))
| E)) by
A3,
A4,
A5,
A6,
FUNCT_4: 74
.= ((
the_Target_of G2)
+* ((
the_Source_of G2)
| E)) by
A6,
A4;
thus G2 is
reverseEdgeDirections of G1, (G1
.edgesOutOf
{v}) by
A2,
A3,
A4,
A9,
A11,
Def1;
thus thesis by
A2,
A3,
A4,
A13,
A15,
Def1;
end;
theorem ::
GLIB_007:36
for G, v, V holds for G1 be
addAdjVertexToAll of G, v, V holds for G2 be
addAdjVertexFromAll of G, v, V holds for v1,e,v2 be
object holds (e
Joins (v1,v2,G1) iff e
Joins (v1,v2,G2))
proof
let G, v, V;
let G1 be
addAdjVertexToAll of G, v, V;
let G2 be
addAdjVertexFromAll of G, v, V;
per cases ;
suppose V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then G2 is
reverseEdgeDirections of G1, (G1
.edgesOutOf
{v}) by
Th35;
hence thesis by
Th9;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 & G
== G2 by
Def2,
Def3;
then G1
== G2 by
GLIB_000: 85;
hence thesis by
GLIB_000: 88;
end;
end;
theorem ::
GLIB_007:37
for G, v, V holds for G1 be
addAdjVertexToAll of G, v, V holds for G2 be
addAdjVertexFromAll of G, v, V, w be
object holds (w is
Vertex of G1 iff w is
Vertex of G2) by
Th32;
theorem ::
GLIB_007:38
Th38: for G2, v, V holds for G1 be
addAdjVertexToAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds for e1,u be
object holds not e1
DJoins (u,v,G1) & ( not u
in V implies not e1
DJoins (v,u,G1)) & for e2 be
object holds e1
DJoins (v,u,G1) & e2
DJoins (v,u,G1) implies e1
= e2
proof
let G2, v, V;
let G1 be
addAdjVertexToAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* (
pr1 (V,
{(
the_Edges_of G2)}))) by
Def2;
let e1,u be
object;
thus not e1
DJoins (u,v,G1)
proof
assume e1
DJoins (u,v,G1);
then
A3: e1
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
= u & ((
the_Target_of G1)
. e1)
= v by
GLIB_000:def 14;
not e1
in (
the_Edges_of G2)
proof
reconsider e3 = e1 as
set by
TARSKI: 1;
assume
A4: e1
in (
the_Edges_of G2);
then ((
the_Target_of G2)
. e3)
= v by
A3,
GLIB_006:def 9;
hence contradiction by
A1,
A4,
FUNCT_2: 5;
end;
then e1
in (V
--> (
the_Edges_of G2)) by
A2,
A3,
XBOOLE_0:def 3;
then
A5: e1
in
[:V,
{(
the_Edges_of G2)}:];
then
A6: e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) by
FUNCT_3:def 4;
consider x1,y1 be
object such that
A7: x1
in V & y1
in
{(
the_Edges_of G2)} and
A8: e1
=
[x1, y1] by
A5,
ZFMISC_1:def 2;
v
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e1) by
A6,
A2,
A3,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x1,y1)) by
A8,
BINOP_1:def 1
.= x1 by
A7,
FUNCT_3:def 4;
hence contradiction by
A1,
A7;
end;
thus not u
in V implies not e1
DJoins (v,u,G1)
proof
assume
A9: not u
in V;
assume e1
DJoins (v,u,G1);
then
A10: e1
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
= v & ((
the_Target_of G1)
. e1)
= u by
GLIB_000:def 14;
not e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)})))
proof
assume
A11: e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)})));
then
consider x,y be
object such that
A12: x
in V & y
in
{(
the_Edges_of G2)} & e1
=
[x, y] by
ZFMISC_1:def 2;
u
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e1) by
A2,
A10,
A11,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x,y)) by
A12,
BINOP_1:def 1
.= x by
A12,
FUNCT_3:def 4;
hence contradiction by
A9,
A12;
end;
then not e1
in
[:V,
{(
the_Edges_of G2)}:] by
FUNCT_3:def 4;
then
A13: not e1
in (V
--> (
the_Edges_of G2));
then not e1
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
then
A14: ((
the_Source_of G1)
. e1)
= ((
the_Source_of G2)
. e1) by
A2,
FUNCT_4: 11;
e1
in (
the_Edges_of G2) by
A2,
A10,
A13,
XBOOLE_0:def 3;
hence contradiction by
A14,
A10,
A1,
FUNCT_2: 5;
end;
let e2 be
object;
assume e1
DJoins (v,u,G1) & e2
DJoins (v,u,G1);
then
A15: e1
in (
the_Edges_of G1) & e2
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
= v & ((
the_Source_of G1)
. e2)
= v & ((
the_Target_of G1)
. e1)
= u & ((
the_Target_of G1)
. e2)
= u by
GLIB_000:def 14;
not e1
in (
the_Edges_of G2) & not e2
in (
the_Edges_of G2)
proof
assume e1
in (
the_Edges_of G2) or e2
in (
the_Edges_of G2);
per cases ;
suppose
A16: e1
in (
the_Edges_of G2);
reconsider e3 = e1 as
set by
TARSKI: 1;
((
the_Source_of G2)
. e3)
= v by
A15,
A16,
GLIB_006:def 9;
hence contradiction by
A1,
A16,
FUNCT_2: 5;
end;
suppose
A17: e2
in (
the_Edges_of G2);
reconsider e3 = e2 as
set by
TARSKI: 1;
((
the_Source_of G2)
. e3)
= v by
A15,
A17,
GLIB_006:def 9;
hence contradiction by
A1,
A17,
FUNCT_2: 5;
end;
end;
then e1
in (V
--> (
the_Edges_of G2)) & e2
in (V
--> (
the_Edges_of G2)) by
A2,
A15,
XBOOLE_0:def 3;
then
A18: e1
in
[:V,
{(
the_Edges_of G2)}:] & e2
in
[:V,
{(
the_Edges_of G2)}:];
then
A19: e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) & e2
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) by
FUNCT_3:def 4;
consider x1,y1 be
object such that
A20: x1
in V & y1
in
{(
the_Edges_of G2)} and
A21: e1
=
[x1, y1] by
A18,
ZFMISC_1:def 2;
consider x2,y2 be
object such that
A22: x2
in V & y2
in
{(
the_Edges_of G2)} and
A23: e2
=
[x2, y2] by
A18,
ZFMISC_1:def 2;
A24: u
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e1) by
A2,
A15,
A19,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x1,y1)) by
A21,
BINOP_1:def 1
.= x1 by
A20,
FUNCT_3:def 4;
A25: u
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e2) by
A2,
A15,
A19,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x2,y2)) by
A23,
BINOP_1:def 1
.= x2 by
A22,
FUNCT_3:def 4;
y1
= (
the_Edges_of G2) & y2
= (
the_Edges_of G2) by
A20,
A22,
TARSKI:def 1;
hence thesis by
A21,
A23,
A24,
A25;
end;
theorem ::
GLIB_007:39
Th39: for G2, v, V holds for G1 be
addAdjVertexFromAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds for e1,u be
object holds not e1
DJoins (v,u,G1) & ( not u
in V implies not e1
DJoins (u,v,G1)) & for e2 be
object holds e1
DJoins (u,v,G1) & e2
DJoins (u,v,G1) implies e1
= e2
proof
let G2, v, V;
let G1 be
addAdjVertexFromAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* (
pr1 (V,
{(
the_Edges_of G2)}))) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) by
Def3;
let e1,u be
object;
thus not e1
DJoins (v,u,G1)
proof
assume e1
DJoins (v,u,G1);
then
A3: e1
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
= v & ((
the_Target_of G1)
. e1)
= u by
GLIB_000:def 14;
not e1
in (
the_Edges_of G2)
proof
reconsider e3 = e1 as
set by
TARSKI: 1;
assume
A4: e1
in (
the_Edges_of G2);
then ((
the_Source_of G2)
. e3)
= v by
A3,
GLIB_006:def 9;
hence contradiction by
A1,
A4,
FUNCT_2: 5;
end;
then e1
in (V
--> (
the_Edges_of G2)) by
A2,
A3,
XBOOLE_0:def 3;
then
A5: e1
in
[:V,
{(
the_Edges_of G2)}:];
then
A6: e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) by
FUNCT_3:def 4;
consider x1,y1 be
object such that
A7: x1
in V & y1
in
{(
the_Edges_of G2)} and
A8: e1
=
[x1, y1] by
A5,
ZFMISC_1:def 2;
v
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e1) by
A2,
A3,
A6,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x1,y1)) by
A8,
BINOP_1:def 1
.= x1 by
A7,
FUNCT_3:def 4;
hence contradiction by
A1,
A7;
end;
thus not u
in V implies not e1
DJoins (u,v,G1)
proof
assume
A9: not u
in V;
assume e1
DJoins (u,v,G1);
then
A10: e1
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
= u & ((
the_Target_of G1)
. e1)
= v by
GLIB_000:def 14;
not e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)})))
proof
assume
A11: e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)})));
then
consider x,y be
object such that
A12: x
in V & y
in
{(
the_Edges_of G2)} & e1
=
[x, y] by
ZFMISC_1:def 2;
u
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e1) by
A2,
A10,
A11,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x,y)) by
A12,
BINOP_1:def 1
.= x by
A12,
FUNCT_3:def 4;
hence contradiction by
A9,
A12;
end;
then not e1
in
[:V,
{(
the_Edges_of G2)}:] by
FUNCT_3:def 4;
then
A13: not e1
in (V
--> (
the_Edges_of G2));
then not e1
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
then
A14: ((
the_Target_of G1)
. e1)
= ((
the_Target_of G2)
. e1) by
A2,
FUNCT_4: 11;
e1
in (
the_Edges_of G2) by
A2,
A10,
A13,
XBOOLE_0:def 3;
hence contradiction by
A14,
A10,
A1,
FUNCT_2: 5;
end;
let e2 be
object;
assume e1
DJoins (u,v,G1) & e2
DJoins (u,v,G1);
then
A15: e1
in (
the_Edges_of G1) & e2
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e1)
= u & ((
the_Source_of G1)
. e2)
= u & ((
the_Target_of G1)
. e1)
= v & ((
the_Target_of G1)
. e2)
= v by
GLIB_000:def 14;
not e1
in (
the_Edges_of G2) & not e2
in (
the_Edges_of G2)
proof
assume e1
in (
the_Edges_of G2) or e2
in (
the_Edges_of G2);
per cases ;
suppose
A16: e1
in (
the_Edges_of G2);
reconsider e3 = e1 as
set by
TARSKI: 1;
((
the_Target_of G2)
. e3)
= v by
A15,
A16,
GLIB_006:def 9;
hence contradiction by
A1,
A16,
FUNCT_2: 5;
end;
suppose
A17: e2
in (
the_Edges_of G2);
reconsider e3 = e2 as
set by
TARSKI: 1;
((
the_Target_of G2)
. e3)
= v by
A15,
A17,
GLIB_006:def 9;
hence contradiction by
A1,
A17,
FUNCT_2: 5;
end;
end;
then e1
in (V
--> (
the_Edges_of G2)) & e2
in (V
--> (
the_Edges_of G2)) by
A2,
A15,
XBOOLE_0:def 3;
then
A18: e1
in
[:V,
{(
the_Edges_of G2)}:] & e2
in
[:V,
{(
the_Edges_of G2)}:];
then
A19: e1
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) & e2
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) by
FUNCT_3:def 4;
consider x1,y1 be
object such that
A20: x1
in V & y1
in
{(
the_Edges_of G2)} and
A21: e1
=
[x1, y1] by
A18,
ZFMISC_1:def 2;
consider x2,y2 be
object such that
A22: x2
in V & y2
in
{(
the_Edges_of G2)} and
A23: e2
=
[x2, y2] by
A18,
ZFMISC_1:def 2;
A24: u
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e1) by
A2,
A15,
A19,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x1,y1)) by
A21,
BINOP_1:def 1
.= x1 by
A20,
FUNCT_3:def 4;
A25: u
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e2) by
A2,
A15,
A19,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (x2,y2)) by
A23,
BINOP_1:def 1
.= x2 by
A22,
FUNCT_3:def 4;
y1
= (
the_Edges_of G2) & y2
= (
the_Edges_of G2) by
A20,
A22,
TARSKI:def 1;
hence thesis by
A21,
A23,
A24,
A25;
end;
theorem ::
GLIB_007:40
Th40: for G2, v, V holds for G1 be
addAdjVertexToAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds for e,v1,v2 be
object st v1
<> v holds e
DJoins (v1,v2,G1) implies e
DJoins (v1,v2,G2)
proof
let G2, v, V;
let G1 be
addAdjVertexToAll of G2, v, V;
assume V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A1: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) by
Def2;
let e,v1,v2 be
object;
assume
A2: v1
<> v;
assume
A3: e
DJoins (v1,v2,G1);
then
A4: e
in (
the_Edges_of G1) by
GLIB_000:def 14;
A5: e
in (
the_Edges_of G2)
proof
assume not e
in (
the_Edges_of G2);
then
A6: e
in (V
--> (
the_Edges_of G2)) by
A1,
A4,
XBOOLE_0:def 3;
then e
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
then ((
the_Source_of G1)
. e)
= (((V
--> (
the_Edges_of G2))
--> v)
. e) by
A1,
FUNCT_4: 13
.= v by
A6,
FUNCOP_1: 7;
hence contradiction by
A2,
A3,
GLIB_000:def 14;
end;
reconsider e1 = e as
set by
TARSKI: 1;
((
the_Source_of G1)
. e1)
= ((
the_Source_of G2)
. e1) & ((
the_Target_of G1)
. e1)
= ((
the_Target_of G2)
. e1) by
A5,
GLIB_006:def 9;
then v1
= ((
the_Source_of G2)
. e1) & v2
= ((
the_Target_of G2)
. e1) by
A3,
GLIB_000:def 14;
hence thesis by
A5,
GLIB_000:def 14;
end;
theorem ::
GLIB_007:41
Th41: for G2, v, V holds for G1 be
addAdjVertexFromAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds for e,v1,v2 be
object st v2
<> v holds e
DJoins (v1,v2,G1) implies e
DJoins (v1,v2,G2)
proof
let G2, v, V;
let G1 be
addAdjVertexFromAll of G2, v, V;
assume V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A1: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) by
Def3;
let e,v1,v2 be
object;
assume
A2: v2
<> v;
assume
A3: e
DJoins (v1,v2,G1);
then
A4: e
in (
the_Edges_of G1) by
GLIB_000:def 14;
A5: e
in (
the_Edges_of G2)
proof
assume not e
in (
the_Edges_of G2);
then
A6: e
in (V
--> (
the_Edges_of G2)) by
A1,
A4,
XBOOLE_0:def 3;
then e
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
then ((
the_Target_of G1)
. e)
= (((V
--> (
the_Edges_of G2))
--> v)
. e) by
A1,
FUNCT_4: 13
.= v by
A6,
FUNCOP_1: 7;
hence contradiction by
A2,
A3,
GLIB_000:def 14;
end;
reconsider e1 = e as
set by
TARSKI: 1;
((
the_Source_of G1)
. e1)
= ((
the_Source_of G2)
. e1) & ((
the_Target_of G1)
. e1)
= ((
the_Target_of G2)
. e1) by
A5,
GLIB_006:def 9;
then v1
= ((
the_Source_of G2)
. e1) & v2
= ((
the_Target_of G2)
. e1) by
A3,
GLIB_000:def 14;
hence thesis by
A5,
GLIB_000:def 14;
end;
theorem ::
GLIB_007:42
Th42: for G2, v, V holds for G1 be
addAdjVertexToAll of G2, v, V, v1 be
object st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & v1
in V holds
[v1, (
the_Edges_of G2)]
DJoins (v,v1,G1)
proof
let G2, v, V;
let G1 be
addAdjVertexToAll of G2, v, V, v1 be
object;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & v1
in V;
then
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* (
pr1 (V,
{(
the_Edges_of G2)}))) by
Def2;
set e =
[v1, (
the_Edges_of G2)];
A3: (
the_Edges_of G2)
in
{(
the_Edges_of G2)} by
TARSKI:def 1;
then
A4: e
in
[:V,
{(
the_Edges_of G2)}:] by
A1,
ZFMISC_1:def 2;
then
A5: e
in (V
--> (
the_Edges_of G2)) by
FUNCOP_1:def 2;
then
A6: e
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
A7: e
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) by
A4,
FUNCT_3:def 4;
A8: e
in (
the_Edges_of G1) by
A2,
A5,
XBOOLE_0:def 3;
A9: ((
the_Source_of G1)
. e)
= (((V
--> (
the_Edges_of G2))
--> v)
. e) by
A2,
A6,
FUNCT_4: 13
.= v by
A5,
FUNCOP_1: 7;
((
the_Target_of G1)
. e)
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e) by
A2,
A7,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (v1,(
the_Edges_of G2))) by
BINOP_1:def 1
.= v1 by
A1,
A3,
FUNCT_3:def 4;
hence thesis by
A8,
A9,
GLIB_000:def 14;
end;
theorem ::
GLIB_007:43
Th43: for G2, v, V holds for G1 be
addAdjVertexFromAll of G2, v, V, v1 be
object st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & v1
in V holds
[v1, (
the_Edges_of G2)]
DJoins (v1,v,G1)
proof
let G2, v, V;
let G1 be
addAdjVertexFromAll of G2, v, V, v1 be
object;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & v1
in V;
then
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (V
--> (
the_Edges_of G2))) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* (
pr1 (V,
{(
the_Edges_of G2)}))) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((V
--> (
the_Edges_of G2))
--> v)) by
Def3;
set e =
[v1, (
the_Edges_of G2)];
A3: (
the_Edges_of G2)
in
{(
the_Edges_of G2)} by
TARSKI:def 1;
then
A4: e
in
[:V,
{(
the_Edges_of G2)}:] by
A1,
ZFMISC_1:def 2;
then
A5: e
in (V
--> (
the_Edges_of G2)) by
FUNCOP_1:def 2;
then
A6: e
in (
dom ((V
--> (
the_Edges_of G2))
--> v));
A7: e
in (
dom (
pr1 (V,
{(
the_Edges_of G2)}))) by
A4,
FUNCT_3:def 4;
A8: e
in (
the_Edges_of G1) by
A2,
A5,
XBOOLE_0:def 3;
A9: ((
the_Target_of G1)
. e)
= (((V
--> (
the_Edges_of G2))
--> v)
. e) by
A2,
A6,
FUNCT_4: 13
.= v by
A5,
FUNCOP_1: 7;
((
the_Source_of G1)
. e)
= ((
pr1 (V,
{(
the_Edges_of G2)}))
. e) by
A2,
A7,
FUNCT_4: 13
.= ((
pr1 (V,
{(
the_Edges_of G2)}))
. (v1,(
the_Edges_of G2))) by
BINOP_1:def 1
.= v1 by
A1,
A3,
FUNCT_3:def 4;
hence thesis by
A8,
A9,
GLIB_000:def 14;
end;
theorem ::
GLIB_007:44
for G, v, V holds for G1 be
addAdjVertexToAll of G, v, V holds for G2 be
addAdjVertexFromAll of G, v, V holds for W1 be
Walk of G1 holds W1 is
Walk of G2
proof
let G, v, V;
let G1 be
addAdjVertexToAll of G, v, V;
let G2 be
addAdjVertexFromAll of G, v, V;
let W1 be
Walk of G1;
per cases ;
suppose V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then G2 is
reverseEdgeDirections of G1, (G1
.edgesOutOf
{v}) by
Th35;
hence thesis by
Th14;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G & G2
== G by
Def2,
Def3;
hence thesis by
GLIB_000: 85,
GLIB_001: 179;
end;
end;
theorem ::
GLIB_007:45
for G, v, V holds for G1 be
addAdjVertexToAll of G, v, V holds for G2 be
addAdjVertexFromAll of G, v, V holds for W2 be
Walk of G2 holds W2 is
Walk of G1
proof
let G, v, V;
let G1 be
addAdjVertexToAll of G, v, V;
let G2 be
addAdjVertexFromAll of G, v, V;
let W2 be
Walk of G2;
per cases ;
suppose V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then G1 is
reverseEdgeDirections of G2, (G2
.edgesInto
{v}) by
Th35;
hence thesis by
Th14;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G & G2
== G by
Def2,
Def3;
hence thesis by
GLIB_000: 85,
GLIB_001: 179;
end;
end;
Lm8: for V, E holds (
card V)
= (
card (V
--> E))
proof
let V, E;
thus (
card V)
= (
card
[:V,
{E}:]) by
CARD_1: 69
.= (
card (V
--> E)) by
FUNCOP_1:def 2;
end;
Lm9: for G2, v, V holds for G1 be
addAdjVertexToAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (for e be
object holds not e
Joins (v,v,G1) & for v1 be
object holds ( not v1
in V implies not e
Joins (v1,v,G1)) & for v2 be
object st (v1
<> v & v2
<> v) & e
DJoins (v1,v2,G1) holds e
DJoins (v1,v2,G2)) & ex E be
set st (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) & for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2
proof
let G2, v, V;
let G1 be
addAdjVertexToAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
hereby
let e be
object;
not e
DJoins (v,v,G1) by
A1,
Th38;
hence not e
Joins (v,v,G1) by
GLIB_000: 16;
let v1 be
object;
thus not v1
in V implies not e
Joins (v1,v,G1)
proof
assume
A2: not v1
in V;
assume e
Joins (v1,v,G1);
then e
DJoins (v1,v,G1) or e
DJoins (v,v1,G1) by
GLIB_000: 16;
hence contradiction by
A1,
A2,
Th38;
end;
let v2 be
object;
assume
A3: v1
<> v & v2
<> v & e
DJoins (v1,v2,G1);
thus e
DJoins (v1,v2,G2) by
A1,
A3,
Th40;
end;
set E = (V
--> (
the_Edges_of G2));
take E;
thus (
card V)
= (
card E) by
Lm8;
((
the_Edges_of G2)
/\ E)
=
{} by
Lm6;
hence E
misses (
the_Edges_of G2) by
XBOOLE_0:def 7;
thus (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) by
A1,
Def2;
let v1 be
object;
assume
A4: v1
in V;
set e1 =
[v1, (
the_Edges_of G2)];
take e1;
(
the_Edges_of G2)
in
{(
the_Edges_of G2)} by
TARSKI:def 1;
then e1
in
[:V,
{(
the_Edges_of G2)}:] by
A4,
ZFMISC_1:def 2;
hence e1
in E by
FUNCOP_1:def 2;
A5: e1
DJoins (v,v1,G1) by
A1,
A4,
Th42;
hence e1
Joins (v1,v,G1) by
GLIB_000: 16;
let e2 be
object;
assume
A6: e2
Joins (v1,v,G1);
not e2
DJoins (v1,v,G1) by
A1,
Th38;
then e2
DJoins (v,v1,G1) by
A6,
GLIB_000: 16;
hence e1
= e2 by
A1,
A5,
Th38;
end;
Lm10: for G2, v, V holds for G1 be
addAdjVertexFromAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (for e be
object holds not e
Joins (v,v,G1) & for v1 be
object holds ( not v1
in V implies not e
Joins (v1,v,G1)) & for v2 be
object st (v1
<> v & v2
<> v) & e
DJoins (v1,v2,G1) holds e
DJoins (v1,v2,G2)) & ex E be
set st (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) & for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2
proof
let G2, v, V;
let G1 be
addAdjVertexFromAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
hereby
let e be
object;
not e
DJoins (v,v,G1) by
A1,
Th39;
hence not e
Joins (v,v,G1) by
GLIB_000: 16;
let v1 be
object;
thus not v1
in V implies not e
Joins (v1,v,G1)
proof
assume
A2: not v1
in V;
assume e
Joins (v1,v,G1);
then e
DJoins (v1,v,G1) or e
DJoins (v,v1,G1) by
GLIB_000: 16;
hence contradiction by
A1,
A2,
Th39;
end;
let v2 be
object;
assume
A3: v1
<> v & v2
<> v & e
DJoins (v1,v2,G1);
thus e
DJoins (v1,v2,G2) by
A1,
A3,
Th41;
end;
set E = (V
--> (
the_Edges_of G2));
take E;
thus (
card V)
= (
card E) by
Lm8;
((
the_Edges_of G2)
/\ E)
=
{} by
Lm6;
hence E
misses (
the_Edges_of G2) by
XBOOLE_0:def 7;
thus (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) by
A1,
Def3;
let v1 be
object;
assume
A4: v1
in V;
set e1 =
[v1, (
the_Edges_of G2)];
take e1;
(
the_Edges_of G2)
in
{(
the_Edges_of G2)} by
TARSKI:def 1;
then e1
in
[:V,
{(
the_Edges_of G2)}:] by
A4,
ZFMISC_1:def 2;
hence e1
in E by
FUNCOP_1:def 2;
A5: e1
DJoins (v1,v,G1) by
A1,
A4,
Th43;
hence e1
Joins (v1,v,G1) by
GLIB_000: 16;
let e2 be
object;
assume
A6: e2
Joins (v1,v,G1);
not e2
DJoins (v,v1,G1) by
A1,
Th39;
then e2
DJoins (v1,v,G1) by
A6,
GLIB_000: 16;
hence e1
= e2 by
A1,
A5,
Th39;
end;
definition
let G, v, V;
::
GLIB_007:def4
mode
addAdjVertexAll of G,v,V ->
Supergraph of G means
:
Def4: (
the_Vertices_of it )
= ((
the_Vertices_of G)
\/
{v}) & (for e be
object holds not e
Joins (v,v,it ) & for v1 be
object holds ( not v1
in V implies not e
Joins (v1,v,it )) & for v2 be
object st (v1
<> v & v2
<> v) & e
DJoins (v1,v2,it ) holds e
DJoins (v1,v2,G)) & ex E be
set st (
card V)
= (
card E) & E
misses (
the_Edges_of G) & (
the_Edges_of it )
= ((
the_Edges_of G)
\/ E) & for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,it ) & for e2 be
object st e2
Joins (v1,v,it ) holds e1
= e2 if V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G)
otherwise it
== G;
existence
proof
hereby
assume
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
reconsider G1 = the
addAdjVertexToAll of G, v, V as
Supergraph of G;
take G1;
thus (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) by
A1,
Def2;
thus (for e be
object holds not e
Joins (v,v,G1) & for v1 be
object holds ( not v1
in V implies not e
Joins (v1,v,G1)) & for v2 be
object st (v1
<> v & v2
<> v) & e
DJoins (v1,v2,G1) holds e
DJoins (v1,v2,G)) & ex E be
set st (
card V)
= (
card E) & E
misses (
the_Edges_of G) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) & for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Lm9;
end;
assume not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
reconsider G1 = G as
Supergraph of G by
GLIB_006: 61;
take G1;
thus thesis;
end;
consistency ;
end
definition
let G, v;
mode
addAdjVertexAll of G,v is
addAdjVertexAll of G, v, (
the_Vertices_of G);
correctness ;
let V;
:: original:
addAdjVertexToAll
redefine
mode
addAdjVertexToAll of G,v,V ->
addAdjVertexAll of G, v, V ;
coherence
proof
let G1 be
addAdjVertexToAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then
A2: (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) by
Def2;
(for e be
object holds not e
Joins (v,v,G1) & for v1 be
object holds ( not v1
in V implies not e
Joins (v1,v,G1)) & for v2 be
object st (v1
<> v & v2
<> v) & e
DJoins (v1,v2,G1) holds e
DJoins (v1,v2,G)) & ex E be
set st (
card V)
= (
card E) & E
misses (
the_Edges_of G) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) & for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Lm9;
hence thesis by
A1,
A2,
Def4;
end;
suppose
A3: not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def2;
hence thesis by
A3,
Def4;
end;
end;
:: original:
addAdjVertexFromAll
redefine
mode
addAdjVertexFromAll of G,v,V ->
addAdjVertexAll of G, v, V ;
coherence
proof
let G1 be
addAdjVertexFromAll of G, v, V;
per cases ;
suppose
A4: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then
A5: (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) by
Def3;
(for e be
object holds not e
Joins (v,v,G1) & for v1 be
object holds ( not v1
in V implies not e
Joins (v1,v,G1)) & for v2 be
object st (v1
<> v & v2
<> v) & e
DJoins (v1,v2,G1) holds e
DJoins (v1,v2,G)) & ex E be
set st (
card V)
= (
card E) & E
misses (
the_Edges_of G) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) & for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A4,
Lm10;
hence thesis by
A4,
A5,
Def4;
end;
suppose
A6: not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def3;
hence thesis by
A6,
Def4;
end;
end;
end
theorem ::
GLIB_007:46
Th46: for G2, v holds for G1 be
addAdjVertexAll of G2, v,
{} holds (
the_Edges_of G2)
= (
the_Edges_of G1)
proof
let G2, v;
let G1 be
addAdjVertexAll of G2, v,
{} ;
per cases ;
suppose
{}
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
consider E be
set such that
A1: (
card
{} )
= (
card E) & E
misses (
the_Edges_of G2) and
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and for v1 be
object st v1
in
{} holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
Def4;
E
=
{} by
A1;
hence thesis by
A2;
end;
suppose not (
{}
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2));
then G2
== G1 by
Def4;
hence (
the_Edges_of G2)
= (
the_Edges_of G1) by
GLIB_000:def 34;
end;
end;
Lm11: for G2, v holds for G1 be
addAdjVertexAll of G2, v,
{} st (
the_Edges_of G2)
=
{} holds (
the_Edges_of G1)
=
{} by
Th46;
theorem ::
GLIB_007:47
Th47: for G2, v holds for V be non
empty
set, G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (
the_Edges_of G1)
<>
{}
proof
let G2, v;
let V be non
empty
set, G1 be
addAdjVertexAll of G2, v, V;
assume V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
consider E be
set such that
A1: (
card V)
= (
card E) & E
misses (
the_Edges_of G2) and
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
Def4;
E is non
empty by
A1;
then
consider e be
object such that
A3: e
in E by
XBOOLE_0:def 1;
thus thesis by
A2,
A3;
end;
theorem ::
GLIB_007:48
for G, G2, v, V holds for G1 be
addAdjVertexAll of G, v, V st G1
== G2 holds G2 is
addAdjVertexAll of G, v, V
proof
let G, G2, v, V;
let G1 be
addAdjVertexAll of G, v, V;
assume
A1: G1
== G2;
per cases ;
suppose
A2: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then
consider E be
set such that
A3: (
card V)
= (
card E) & E
misses (
the_Edges_of G) and
A4: (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) and
A5: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
Def4;
A6:
now
(
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) by
A2,
Def4;
hence (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) by
A1,
GLIB_000:def 34;
hereby
let e be
object;
not e
Joins (v,v,G1) by
A2,
Def4;
hence not e
Joins (v,v,G2) by
A1,
GLIB_000: 88;
let v1 be
object;
hereby
assume not v1
in V;
then not e
Joins (v1,v,G1) by
A2,
Def4;
hence not e
Joins (v1,v,G2) by
A1,
GLIB_000: 88;
end;
let v2 be
object;
assume that
A7: v1
<> v & v2
<> v and
A8: e
DJoins (v1,v2,G2);
e
DJoins (v1,v2,G1) by
A8,
A1,
GLIB_000: 88;
hence e
DJoins (v1,v2,G) by
A2,
A7,
Def4;
end;
take E;
thus (
card V)
= (
card E) & E
misses (
the_Edges_of G) by
A3;
thus (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ E) by
A4,
A1,
GLIB_000:def 34;
let v1 be
object;
assume v1
in V;
then
consider e1 be
object such that
A9: e1
in E & e1
Joins (v1,v,G1) and
A10: for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A5;
take e1;
thus e1
in E & e1
Joins (v1,v,G2) by
A1,
A9,
GLIB_000: 88;
let e2 be
object;
assume e2
Joins (v1,v,G2);
then e2
Joins (v1,v,G1) by
A1,
GLIB_000: 88;
hence e1
= e2 by
A10;
end;
G2 is
Supergraph of G1 by
A1,
GLIB_006: 59;
then G2 is
Supergraph of G by
GLIB_006: 62;
hence thesis by
A2,
A6,
Def4;
end;
suppose
A11: not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G
== G1 by
Def4;
then
A12: G
== G2 by
A1,
GLIB_000: 85;
then G2 is
Supergraph of G by
GLIB_006: 59;
hence thesis by
A11,
A12,
Def4;
end;
end;
theorem ::
GLIB_007:49
Th49: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V, v1,e,v2 be
object st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & v1
<> v & v2
<> v & e
Joins (v1,v2,G1) holds e
Joins (v1,v2,G2)
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let v1,e,v2 be
object;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: v1
<> v & v2
<> v and
A3: e
Joins (v1,v2,G1);
per cases by
A3,
GLIB_000: 16;
suppose e
DJoins (v1,v2,G1);
then e
DJoins (v1,v2,G2) by
A1,
A2,
Def4;
hence thesis by
GLIB_000: 16;
end;
suppose e
DJoins (v2,v1,G1);
then e
DJoins (v2,v1,G2) by
A1,
A2,
Def4;
hence thesis by
GLIB_000: 16;
end;
end;
theorem ::
GLIB_007:50
Th50: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds v is
Vertex of G1
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A1: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
Def4;
v
in
{v} by
TARSKI:def 1;
hence thesis by
A1,
XBOOLE_0:def 3;
end;
theorem ::
GLIB_007:51
Th51: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V holds for E be
set, v1,e,v2 be
object st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) & E
misses (
the_Edges_of G2) & e
Joins (v1,v2,G1) & not e
in (
the_Edges_of G2) holds e
in E & ((v1
= v & v2
in V) or (v2
= v & v1
in V))
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let E be
set, v1,e,v2 be
object;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) & E
misses (
the_Edges_of G2) and
A3: e
Joins (v1,v2,G1) & not e
in (
the_Edges_of G2);
consider E2 be
set such that (
card V)
= (
card E2) and
A4: E2
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E2) and
A5: for w be
object st w
in V holds ex e1 be
object st e1
in E2 & e1
Joins (w,v,G1) & for e2 be
object st e2
Joins (w,v,G1) holds e1
= e2 by
A1,
Def4;
A6: E
= E2 by
A2,
A4,
XBOOLE_1: 71;
per cases ;
suppose v1
= v & v2
= v;
hence thesis by
A1,
A3,
Def4;
end;
suppose
A7: v1
= v & v2
<> v;
per cases ;
suppose
A8: v2
in V;
then
consider e1 be
object such that
A9: e1
in E2 & e1
Joins (v2,v,G1) and
A10: for e2 be
object st e2
Joins (v2,v,G1) holds e1
= e2 by
A5;
thus e
in E by
A9,
A6,
A3,
A7,
A10,
GLIB_000: 14;
thus thesis by
A7,
A8;
end;
suppose not v2
in V;
then not e
Joins (v2,v,G1) by
A1,
Def4;
hence thesis by
A3,
A7,
GLIB_000: 14;
end;
end;
suppose
A11: v1
<> v & v2
= v;
per cases ;
suppose
A12: v1
in V;
then
consider e1 be
object such that
A13: e1
in E2 & e1
Joins (v1,v,G1) and
A14: for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A5;
thus e
in E by
A13,
A6,
A3,
A11,
A14;
thus thesis by
A11,
A12;
end;
suppose not v1
in V;
hence thesis by
A3,
A11,
A1,
Def4;
end;
end;
suppose
A15: v1
<> v & v2
<> v;
e
DJoins (v1,v2,G1) or e
DJoins (v2,v1,G1) by
A3,
GLIB_000: 16;
then e
DJoins (v1,v2,G2) or e
DJoins (v2,v1,G2) by
A1,
A15,
Def4;
hence thesis by
A3,
GLIB_000:def 14;
end;
end;
theorem ::
GLIB_007:52
Th52: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V, E be
set st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) & E
misses (
the_Edges_of G2) holds ex f,g be
Function of E, (V
\/
{v}) st (
the_Source_of G1)
= ((
the_Source_of G2)
+* f) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* g) & for e be
object st e
in E holds e
DJoins ((f
. e),(g
. e),G1) & ((f
. e)
= v iff (g
. e)
<> v)
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let E be
set;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) & E
misses (
the_Edges_of G2);
consider E1 be
set such that
A3: (
card V)
= (
card E1) & E1
misses (
the_Edges_of G2) and
A4: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E1) and for v1 be
object st v1
in V holds ex e1 be
object st e1
in E1 & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
A5: (E1
/\ (
the_Edges_of G2))
=
{} by
A3,
XBOOLE_0:def 7;
A6: E
= E1 by
A2,
A3,
A4,
XBOOLE_1: 71;
defpred
P[
object,
object] means ex v2 be
object st $1
DJoins ($2,v2,G1);
A7: for e be
object st e
in E holds ex v1 be
object st v1
in (V
\/
{v}) &
P[e, v1]
proof
let e be
object;
set x = ((
the_Source_of G1)
. e), y = ((
the_Target_of G1)
. e);
assume
A8: e
in E;
then
A9: not e
in (
the_Edges_of G2) by
A5,
A6,
Lm7;
take x;
A10: e
in (
the_Edges_of G1) by
A8,
A4,
A6,
XBOOLE_0:def 3;
then e
Joins (x,y,G1) by
GLIB_000:def 13;
then x
= v or x
in V by
A1,
A3,
A4,
A9,
Th51;
then x
in
{v} or x
in V by
TARSKI:def 1;
hence x
in (V
\/
{v}) by
XBOOLE_0:def 3;
take y;
thus e
DJoins (x,y,G1) by
A10,
GLIB_000:def 14;
end;
consider f be
Function of E, (V
\/
{v}) such that
A11: for e be
object st e
in E holds
P[e, (f
. e)] from
FUNCT_2:sch 1(
A7);
defpred
Q[
object,
object] means $1
DJoins ((f
. $1),$2,G1);
A12: for e be
object st e
in E holds ex v2 be
object st v2
in (V
\/
{v}) &
Q[e, v2]
proof
let e be
object;
assume
A13: e
in E;
then
consider v2 be
object such that
A14: e
DJoins ((f
. e),v2,G1) by
A11;
take v2;
A15: not e
in (
the_Edges_of G2) by
A5,
A6,
A13,
Lm7;
e
Joins ((f
. e),v2,G1) by
A14,
GLIB_000: 16;
then v2
= v or v2
in V by
A1,
A3,
A4,
A15,
Th51;
then v2
in
{v} or v2
in V by
TARSKI:def 1;
hence v2
in (V
\/
{v}) by
XBOOLE_0:def 3;
thus thesis by
A14;
end;
consider g be
Function of E, (V
\/
{v}) such that
A16: for e be
object st e
in E holds
Q[e, (g
. e)] from
FUNCT_2:sch 1(
A12);
take f, g;
A17: (
dom ((
the_Source_of G2)
+* f))
= ((
dom (
the_Source_of G2))
\/ (
dom f)) by
FUNCT_4:def 1
.= ((
the_Edges_of G2)
\/ (
dom f)) by
GLIB_000: 4
.= ((
the_Edges_of G2)
\/ E) by
FUNCT_2:def 1
.= (
dom (
the_Source_of G1)) by
A2,
GLIB_000: 4;
for e be
object st e
in (
dom (
the_Source_of G1)) holds ((
the_Source_of G1)
. e)
= (((
the_Source_of G2)
+* f)
. e)
proof
let e be
object;
assume e
in (
dom (
the_Source_of G1));
per cases by
A2,
XBOOLE_0:def 3;
suppose
A18: e
in (
the_Edges_of G2);
then not e
in (
dom f) by
A5,
A6,
Lm7;
then (((
the_Source_of G2)
+* f)
. e)
= ((
the_Source_of G2)
. e) by
FUNCT_4: 11
.= ((
the_Source_of G1)
. e) by
A18,
GLIB_006:def 9;
hence thesis;
end;
suppose
A19: e
in E;
then e
in (
dom f) by
FUNCT_2:def 1;
then
A20: (((
the_Source_of G2)
+* f)
. e)
= (f
. e) by
FUNCT_4: 13;
e
DJoins ((f
. e),(g
. e),G1) by
A16,
A19;
hence thesis by
A20,
GLIB_000:def 14;
end;
end;
hence (
the_Source_of G1)
= ((
the_Source_of G2)
+* f) by
A17,
FUNCT_1: 2;
A21: (
dom ((
the_Target_of G2)
+* g))
= ((
dom (
the_Target_of G2))
\/ (
dom g)) by
FUNCT_4:def 1
.= ((
the_Edges_of G2)
\/ (
dom g)) by
GLIB_000: 4
.= ((
the_Edges_of G2)
\/ E) by
FUNCT_2:def 1
.= (
dom (
the_Target_of G1)) by
A2,
GLIB_000: 4;
for e be
object st e
in (
dom (
the_Target_of G1)) holds ((
the_Target_of G1)
. e)
= (((
the_Target_of G2)
+* g)
. e)
proof
let e be
object;
assume e
in (
dom (
the_Target_of G1));
per cases by
A2,
XBOOLE_0:def 3;
suppose
A22: e
in (
the_Edges_of G2);
then not e
in (
dom g) by
A5,
A6,
Lm7;
then (((
the_Target_of G2)
+* g)
. e)
= ((
the_Target_of G2)
. e) by
FUNCT_4: 11
.= ((
the_Target_of G1)
. e) by
A22,
GLIB_006:def 9;
hence thesis;
end;
suppose
A23: e
in E;
then e
in (
dom g) by
FUNCT_2:def 1;
then
A24: (((
the_Target_of G2)
+* g)
. e)
= (g
. e) by
FUNCT_4: 13;
e
DJoins ((f
. e),(g
. e),G1) by
A16,
A23;
hence thesis by
A24,
GLIB_000:def 14;
end;
end;
hence (
the_Target_of G1)
= ((
the_Target_of G2)
+* g) by
A21,
FUNCT_1: 2;
let e be
object;
assume
A25: e
in E;
hence
A26: e
DJoins ((f
. e),(g
. e),G1) by
A16;
then
A27: e
Joins ((f
. e),(g
. e),G1) by
GLIB_000: 16;
thus (f
. e)
= v implies (g
. e)
<> v by
A1,
A27,
Def4;
assume
A28: (g
. e)
<> v;
assume (f
. e)
<> v;
then e
DJoins ((f
. e),(g
. e),G2) by
A1,
A26,
A28,
Def4;
then e
in (
the_Edges_of G2) by
GLIB_000:def 14;
hence contradiction by
A25,
A5,
A6,
Lm7;
end;
theorem ::
GLIB_007:53
Th53: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (
the_Edges_of G2)
= (G1
.edgesBetween (
the_Vertices_of G2))
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
set B = (G1
.edgesBetween (
the_Vertices_of G2));
for e be
object holds e
in (
the_Edges_of G2) iff e
in B
proof
let e be
object;
hereby
assume
A2: e
in (
the_Edges_of G2);
then ((
the_Source_of G2)
. e)
in (
the_Vertices_of G2) & ((
the_Target_of G2)
. e)
in (
the_Vertices_of G2) by
FUNCT_2: 5;
then
A3: ((
the_Source_of G1)
. e)
in (
the_Vertices_of G2) & ((
the_Target_of G1)
. e)
in (
the_Vertices_of G2) by
A2,
GLIB_006:def 9;
(
the_Edges_of G2)
c= (
the_Edges_of G1) by
GLIB_006:def 9;
hence e
in B by
A3,
GLIB_000: 31,
A2;
end;
set x = ((
the_Source_of G1)
. e), y = ((
the_Target_of G1)
. e);
assume e
in B;
then
A4: e
in (
the_Edges_of G1) & x
in (
the_Vertices_of G2) & y
in (
the_Vertices_of G2) by
GLIB_000: 31;
then e
Joins (x,y,G1) by
GLIB_000:def 13;
then e
Joins (x,y,G2) by
A1,
A4,
Th49;
hence thesis by
GLIB_000:def 13;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:54
for G2 be
_Graph, v,V be
set, G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds G2 is
removeVertex of G1, v
proof
let G2 be
_Graph, v,V be
set;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
A2: G2 is
Subgraph of G1 by
GLIB_006: 57;
set V1 = ((
the_Vertices_of G1)
\
{v});
(
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
then
A3: (
the_Vertices_of G2)
= V1 by
A1,
ZFMISC_1: 117;
then
reconsider V1 as non
empty
Subset of (
the_Vertices_of G1);
(
the_Edges_of G2)
= (G1
.edgesBetween V1) by
A1,
A3,
Th53;
hence thesis by
A2,
A3,
GLIB_000:def 37;
end;
theorem ::
GLIB_007:55
Th55: for G2, v holds for G1 be
addAdjVertexAll of G2, v,
{} holds G1 is
addVertex of G2, v
proof
let G2, v;
let G1 be
addAdjVertexAll of G2, v,
{} ;
per cases ;
suppose
{}
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A1: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
Def4;
A2: (
the_Edges_of G1)
= (
the_Edges_of G2) by
Th46;
then
A3: (
dom (
the_Source_of G1))
= (
the_Edges_of G2) & (
dom (
the_Target_of G1))
= (
the_Edges_of G2) by
GLIB_000: 4;
A4: (
the_Source_of G1)
= ((
the_Source_of G1)
| (
the_Edges_of G2)) by
A3
.= (
the_Source_of G2) by
GLIB_006: 69;
(
the_Target_of G1)
= ((
the_Target_of G1)
| (
the_Edges_of G2)) by
A3
.= (
the_Target_of G2) by
GLIB_006: 69;
hence thesis by
A1,
A2,
A4,
GLIB_006:def 10;
end;
suppose
A5: not (
{}
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2));
then
A6:
{v}
c= (
the_Vertices_of G2) by
XBOOLE_1: 2,
ZFMISC_1: 31;
G1
== G2 by
A5,
Def4;
hence thesis by
A6,
GLIB_006: 79;
end;
end;
theorem ::
GLIB_007:56
for G2, v holds for v1 be
object, G1 be
addAdjVertexAll of G2, v,
{v1} st v1
in (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds ex e be
object st not e
in (
the_Edges_of G2) & (G1 is
addAdjVertex of G2, v, e, v1 or G1 is
addAdjVertex of G2, v1, e, v)
proof
let G2, v;
let v1 be
object, G1 be
addAdjVertexAll of G2, v,
{v1};
assume
A1: v1
in (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2:
{v1}
c= (
the_Vertices_of G2) by
ZFMISC_1: 31;
then
A3: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
consider E be
set such that
A4: (
card
{v1})
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A5: for v2 be
object st v2
in
{v1} holds ex e1 be
object st e1
in E & e1
Joins (v2,v,G1) & for e2 be
object st e2
Joins (v2,v,G1) holds e1
= e2 by
A1,
A2,
Def4;
v1
in
{v1} by
TARSKI:def 1;
then
consider e1 be
object such that
A6: e1
in E & e1
Joins (v1,v,G1) and for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A5;
take e1;
(E
/\ (
the_Edges_of G2))
=
{} by
A4,
XBOOLE_0:def 7;
hence
A7: not e1
in (
the_Edges_of G2) by
A6,
Lm7;
consider e be
object such that
A8: E
=
{e} by
A4,
CARD_1: 29;
A9: E
=
{e1} by
A6,
A8,
TARSKI:def 1;
then
A10: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/
{e1}) by
A4;
consider f,g be
Function of E, (
{v1}
\/
{v}) such that
A11: (
the_Source_of G1)
= ((
the_Source_of G2)
+* f) and
A12: (
the_Target_of G1)
= ((
the_Target_of G2)
+* g) and
A13: for e be
object st e
in E holds e
DJoins ((f
. e),(g
. e),G1) & ((f
. e)
= v iff (g
. e)
<> v) by
A1,
A2,
A4,
Th52;
reconsider f, g as
Function of
{e1},
{v1, v} by
A9,
ENUMSET1: 1;
A14: e1
DJoins ((f
. e1),(g
. e1),G1) by
A6,
A13;
per cases by
A6,
GLIB_000: 16;
suppose e1
DJoins (v1,v,G1);
then ((
the_Source_of G1)
. e1)
= v1 & ((
the_Target_of G1)
. e1)
= v by
GLIB_000:def 14;
then
A15: v1
= (f
. e1) & v
= (g
. e1) by
A14,
GLIB_000:def 14;
for z be
object st z
in (
dom f) holds (f
. z)
= v1 by
A15,
TARSKI:def 1;
then f
= ((
dom f)
--> v1) by
FUNCOP_1: 11;
then f
= (
{e1}
--> v1) by
FUNCT_2:def 1;
then
A16: (
the_Source_of G1)
= ((
the_Source_of G2)
+* (e1
.--> v1)) by
A11,
FUNCOP_1:def 9;
for z be
object st z
in (
dom g) holds (g
. z)
= v by
A15,
TARSKI:def 1;
then g
= ((
dom g)
--> v) by
FUNCOP_1: 11;
then g
= (
{e1}
--> v) by
FUNCT_2:def 1;
then g
= (e1
.--> v) by
FUNCOP_1:def 9;
hence thesis by
A1,
A7,
A3,
A10,
A16,
GLIB_006:def 12,
A12;
end;
suppose e1
DJoins (v,v1,G1);
then ((
the_Source_of G1)
. e1)
= v & ((
the_Target_of G1)
. e1)
= v1 by
GLIB_000:def 14;
then
A17: v
= (f
. e1) & v1
= (g
. e1) by
A14,
GLIB_000:def 14;
for z be
object st z
in (
dom f) holds (f
. z)
= v by
A17,
TARSKI:def 1;
then f
= ((
dom f)
--> v) by
FUNCOP_1: 11;
then f
= (
{e1}
--> v) by
FUNCT_2:def 1;
then
A18: (
the_Source_of G1)
= ((
the_Source_of G2)
+* (e1
.--> v)) by
A11,
FUNCOP_1:def 9;
for z be
object st z
in (
dom g) holds (g
. z)
= v1 by
A17,
TARSKI:def 1;
then g
= ((
dom g)
--> v1) by
FUNCOP_1: 11;
then g
= (
{e1}
--> v1) by
FUNCT_2:def 1;
then g
= (e1
.--> v1) by
FUNCOP_1:def 9;
hence thesis by
A1,
A7,
A3,
A10,
A18,
GLIB_006:def 12,
A12;
end;
end;
Lm12: for G2, v, V holds for W be
Subset of V, G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.edgesBetween (W,
{v}))
=
{} implies W
=
{}
proof
let G2, v, V;
let W be
Subset of V, G1 be
addAdjVertexAll of G2, v, V;
assume V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
consider E be
set such that (
card V)
= (
card E) and E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A1: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
Def4;
assume
A2: (G1
.edgesBetween (W,
{v}))
=
{} ;
assume
A3: W
<>
{} ;
set w = the
Element of W;
w
in W by
A3;
then
consider e be
object such that
A4: e
in E & e
Joins (w,v,G1) and for e2 be
object st e2
Joins (w,v,G1) holds e
= e2 by
A1;
v
in
{v} by
TARSKI:def 1;
then e
SJoins (W,
{v},G1) by
A3,
A4,
GLIB_000: 17;
hence contradiction by
A2,
GLIB_000:def 30;
end;
theorem ::
GLIB_007:57
Th57: for G2, v, V holds for W be
Subset of V, G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds ex f be
Function of W, (G1
.edgesBetween (W,
{v})) st f is
one-to-one
onto & for w be
object st w
in W holds (f
. w)
Joins (w,v,G1)
proof
let G2, v, V;
let W be
Subset of V, G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
consider E be
set such that (
card V)
= (
card E) and E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A2: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
Def4;
defpred
P[
object,
object] means $2
Joins ($1,v,G1);
A3: for w be
object st w
in W holds ex e be
object st e
in (G1
.edgesBetween (W,
{v})) &
P[w, e]
proof
let w be
object;
assume
A4: w
in W;
then
consider e be
object such that
A5: e
in E & e
Joins (w,v,G1) and for e2 be
object st e2
Joins (w,v,G1) holds e
= e2 by
A2;
take e;
v
in
{v} by
TARSKI:def 1;
then e
SJoins (W,
{v},G1) by
A4,
A5,
GLIB_000: 17;
hence e
in (G1
.edgesBetween (W,
{v})) by
GLIB_000:def 30;
thus thesis by
A5;
end;
consider f be
Function of W, (G1
.edgesBetween (W,
{v})) such that
A6: for w be
object st w
in W holds
P[w, (f
. w)] from
FUNCT_2:sch 1(
A3);
take f;
A7: (G1
.edgesBetween (W,
{v}))
=
{} implies W
=
{} by
A1,
Lm12;
for w1,w2 be
object st w1
in W & w2
in W & (f
. w1)
= (f
. w2) holds w1
= w2
proof
let w1,w2 be
object;
assume that
A8: w1
in W & w2
in W and
A9: (f
. w1)
= (f
. w2);
(f
. w1)
Joins (w1,v,G1) & (f
. w2)
Joins (w2,v,G1) by
A6,
A8;
per cases by
A9,
GLIB_000: 15;
suppose w1
= w2 & v
= v;
hence thesis;
end;
suppose w1
= v & v
= w2;
hence thesis;
end;
end;
hence f is
one-to-one by
A7,
FUNCT_2: 19;
for e be
object holds e
in (G1
.edgesBetween (W,
{v})) implies e
in (
rng f)
proof
let e be
object;
assume
A11: e
in (G1
.edgesBetween (W,
{v}));
then
A12: e
SJoins (W,
{v},G1) by
GLIB_000:def 30;
consider w be
object such that
A13: w
in W & e
Joins (w,v,G1) by
A12,
GLIB_006: 17;
consider e1 be
object such that e1
in E & e1
Joins (w,v,G1) and
A14: for e2 be
object st e2
Joins (w,v,G1) holds e1
= e2 by
A2,
A13;
e1
= e & e1
= (f
. w) by
A13,
A14,
A6;
hence e
in (
rng f) by
A13,
FUNCT_2: 4,
A11;
end;
then (G1
.edgesBetween (W,
{v}))
c= (
rng f) by
TARSKI:def 3;
hence f is
onto by
XBOOLE_0:def 10,
FUNCT_2:def 3;
thus thesis by
A6;
end;
theorem ::
GLIB_007:58
Th58: for G2, v, V, E holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) holds E
= (G1
.edgesBetween (V,
{v}))
proof
let G2, v, V, E;
let G1 be
addAdjVertexAll of G2, v, V;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E);
consider E1 be
set such that
A3: (
card V)
= (
card E1) & E1
misses (
the_Edges_of G2) and
A4: (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E1) and
A5: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E1 & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
A6: E
= E1 by
A2,
A3,
A4,
XBOOLE_1: 71;
A7: (E
/\ (
the_Edges_of G2))
=
{} by
A2,
XBOOLE_0:def 7;
for e be
object holds e
in E iff e
in (G1
.edgesBetween (V,
{v}))
proof
let e be
object;
set x = ((
the_Source_of G1)
. e), y = ((
the_Target_of G1)
. e);
hereby
assume
A8: e
in E;
then e
in (
the_Edges_of G1) by
A2,
XBOOLE_0:def 3;
then
A9: e
Joins (x,y,G1) by
GLIB_000:def 13;
not e
in (
the_Edges_of G2) by
A7,
A8,
Lm7;
per cases by
A1,
A2,
A9,
Th51;
suppose x
= v & y
in V;
then x
in
{v} & y
in V by
TARSKI:def 1;
then e
SJoins (V,
{v},G1) by
A9,
GLIB_000: 17;
hence e
in (G1
.edgesBetween (V,
{v})) by
GLIB_000:def 30;
end;
suppose y
= v & x
in V;
then y
in
{v} & x
in V by
TARSKI:def 1;
then e
SJoins (V,
{v},G1) by
A9,
GLIB_000: 17;
hence e
in (G1
.edgesBetween (V,
{v})) by
GLIB_000:def 30;
end;
end;
assume e
in (G1
.edgesBetween (V,
{v}));
then
A10: e
SJoins (V,
{v},G1) by
GLIB_000:def 30;
then
A11: e
in (
the_Edges_of G1) by
GLIB_000:def 15;
per cases by
A10,
GLIB_000:def 15;
suppose
A12: x
in V & y
in
{v};
then
consider e1 be
object such that
A13: e1
in E1 & e1
Joins (x,v,G1) and
A14: for e2 be
object st e2
Joins (x,v,G1) holds e1
= e2 by
A5;
y
= v by
A12,
TARSKI:def 1;
then e
Joins (x,v,G1) by
A11,
GLIB_000:def 13;
hence e
in E by
A6,
A13,
A14;
end;
suppose
A15: x
in
{v} & y
in V;
then
consider e1 be
object such that
A16: e1
in E1 & e1
Joins (y,v,G1) and
A17: for e2 be
object st e2
Joins (y,v,G1) holds e1
= e2 by
A5;
x
= v by
A15,
TARSKI:def 1;
then e
Joins (y,v,G1) by
A11,
GLIB_000:def 13;
hence e
in E by
A6,
A16,
A17;
end;
end;
hence thesis by
TARSKI: 2;
end;
theorem ::
GLIB_007:59
for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.edgesBetween (V,
{v}))
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ (G1
.edgesBetween (V,
{v})))
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
((G1
.edgesBetween (V,
{v}))
/\ (
the_Edges_of G2))
=
{}
proof
assume
A2: ((G1
.edgesBetween (V,
{v}))
/\ (
the_Edges_of G2))
<>
{} ;
set e = the
Element of ((G1
.edgesBetween (V,
{v}))
/\ (
the_Edges_of G2));
A3: e
in ((G1
.edgesBetween (V,
{v}))
/\ (
the_Edges_of G2)) by
A2;
e
in (G1
.edgesBetween (V,
{v})) by
XBOOLE_0:def 4,
A2;
then e
SJoins (V,
{v},G1) by
GLIB_000:def 30;
then
consider w be
object such that
A4: w
in V & e
Joins (w,v,G1) by
GLIB_006: 17;
e
in (
the_Edges_of G2) by
A3,
XBOOLE_0:def 4;
then e
Joins (w,v,G2) by
A4,
GLIB_006: 72;
hence contradiction by
A1,
GLIB_000: 13;
end;
hence (G1
.edgesBetween (V,
{v}))
misses (
the_Edges_of G2) by
XBOOLE_0:def 7;
A5: (
the_Edges_of G2)
c= (
the_Edges_of G1) by
GLIB_006:def 9;
A6: ((
the_Edges_of G2)
\/ (G1
.edgesBetween (V,
{v})))
c= (
the_Edges_of G1) by
A5,
XBOOLE_1: 8;
for e be
object holds e
in (
the_Edges_of G1) implies e
in ((
the_Edges_of G2)
\/ (G1
.edgesBetween (V,
{v})))
proof
let e be
object;
set v1 = ((
the_Source_of G1)
. e), v2 = ((
the_Target_of G1)
. e);
assume e
in (
the_Edges_of G1);
then
A7: e
Joins (v1,v2,G1) by
GLIB_000:def 13;
e
in (
the_Edges_of G2) or e
in (G1
.edgesBetween (V,
{v}))
proof
assume
A8: not e
in (
the_Edges_of G2);
consider E be
set such that
A9: (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
per cases by
A1,
A9,
A7,
A8,
Th51;
suppose v1
= v & v2
in V;
then v1
in
{v} & v2
in V by
TARSKI:def 1;
then e
SJoins (V,
{v},G1) by
A7,
GLIB_000: 17;
hence thesis by
GLIB_000:def 30;
end;
suppose v2
= v & v1
in V;
then v2
in
{v} & v1
in V by
TARSKI:def 1;
then e
SJoins (V,
{v},G1) by
A7,
GLIB_000: 17;
hence thesis by
GLIB_000:def 30;
end;
end;
hence thesis by
XBOOLE_0:def 3;
end;
then (
the_Edges_of G1)
c= ((
the_Edges_of G2)
\/ (G1
.edgesBetween (V,
{v}))) by
TARSKI:def 3;
hence thesis by
A6,
XBOOLE_0:def 10;
end;
theorem ::
GLIB_007:60
Th60: for G3 be
_Graph, v be
object, V1,V2 be
set holds for G1 be
addAdjVertexAll of G3, v, (V1
\/ V2) holds for G2 be
removeEdges of G1, (G1
.edgesBetween (V2,
{v})) st (V1
\/ V2)
c= (
the_Vertices_of G3) & not v
in (
the_Vertices_of G3) & V1
misses V2 holds G2 is
addAdjVertexAll of G3, v, V1
proof
let G3 be
_Graph, v be
object, V1,V2 be
set;
let G1 be
addAdjVertexAll of G3, v, (V1
\/ V2);
let G2 be
removeEdges of G1, (G1
.edgesBetween (V2,
{v}));
assume that
A1: (V1
\/ V2)
c= (
the_Vertices_of G3) & not v
in (
the_Vertices_of G3) and
A2: V1
misses V2;
A3: G1 is
Supergraph of G2 by
GLIB_006: 57;
V1
c= (V1
\/ V2) by
XBOOLE_1: 7;
then
A4: V1
c= (
the_Vertices_of G3) & not v
in (
the_Vertices_of G3) by
A1,
XBOOLE_1: 1;
consider E be
set such that
A5: (
card (V1
\/ V2))
= (
card E) & E
misses (
the_Edges_of G3) and
A6: (
the_Edges_of G1)
= ((
the_Edges_of G3)
\/ E) and
A7: for v1 be
object st v1
in (V1
\/ V2) holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
reconsider F = (E
\ (G1
.edgesBetween (V2,
{v}))) as
set;
E
= (G1
.edgesBetween ((V1
\/ V2),
{v})) by
A1,
A5,
A6,
Th58;
then E
= ((G1
.edgesBetween (V1,
{v}))
\/ (G1
.edgesBetween (V2,
{v}))) by
GLIB_006: 20;
then
A9: F
= (G1
.edgesBetween (V1,
{v})) by
XBOOLE_1: 88,
A2,
GLIB_006: 19;
for e be
object st e
in (
the_Edges_of G3) holds e
in ((
the_Edges_of G3)
\ (G1
.edgesBetween (V2,
{v})))
proof
let e be
object;
assume
A10: e
in (
the_Edges_of G3);
not e
in (G1
.edgesBetween (V2,
{v}))
proof
assume e
in (G1
.edgesBetween (V2,
{v}));
then e
SJoins (V2,
{v},G1) by
GLIB_000:def 30;
then
consider w be
object such that
A11: w
in V2 & e
Joins (w,v,G1) by
GLIB_006: 17;
w
in (V1
\/ V2) by
A11,
XBOOLE_1: 7,
TARSKI:def 3;
then
consider e1 be
object such that
A12: e1
in E & e1
Joins (w,v,G1) and
A13: for e2 be
object st e2
Joins (w,v,G1) holds e1
= e2 by
A7;
A14: (E
/\ (
the_Edges_of G3))
=
{} by
A5,
XBOOLE_0:def 7;
e1
= e by
A11,
A13;
hence contradiction by
A10,
A12,
A14,
Lm7;
end;
hence thesis by
A10,
XBOOLE_0:def 5;
end;
then (
the_Edges_of G3)
c= ((
the_Edges_of G3)
\ (G1
.edgesBetween (V2,
{v}))) by
TARSKI:def 3;
then
A15: ((
the_Edges_of G3)
\ (G1
.edgesBetween (V2,
{v})))
= (
the_Edges_of G3) by
XBOOLE_0:def 10;
A16: (
the_Edges_of G2)
= ((
the_Edges_of G1)
\ (G1
.edgesBetween (V2,
{v}))) by
GLIB_000: 53
.= ((
the_Edges_of G3)
\/ F) by
A6,
A15,
XBOOLE_1: 42;
A17:
now
(
the_Vertices_of G1)
= ((
the_Vertices_of G3)
\/
{v}) by
A1,
Def4;
hence (
the_Vertices_of G2)
= ((
the_Vertices_of G3)
\/
{v}) by
GLIB_000: 53;
hereby
let e be
object;
A18: v is
set by
TARSKI: 1;
thus not e
Joins (v,v,G2)
proof
assume e
Joins (v,v,G2);
then e
Joins (v,v,G1) by
A3,
A18,
GLIB_006: 70;
hence contradiction by
A1,
Def4;
end;
let v1 be
object;
A19: v1 is
set by
TARSKI: 1;
thus not v1
in V1 implies not e
Joins (v1,v,G2)
proof
assume
A20: not v1
in V1;
assume
A21: e
Joins (v1,v,G2);
then
A22: e
Joins (v1,v,G1) by
A3,
A18,
A19,
GLIB_006: 70;
then v1
in (V1
\/ V2) by
A1,
Def4;
then
A23: v1
in V2 by
A20,
XBOOLE_0:def 3;
v
in
{v} by
TARSKI:def 1;
then e
SJoins (V2,
{v},G1) by
A22,
A23,
GLIB_000: 17;
then
A24: e
in (G1
.edgesBetween (V2,
{v})) by
GLIB_000:def 30;
(
the_Edges_of G2)
= ((
the_Edges_of G1)
\ (G1
.edgesBetween (V2,
{v}))) by
GLIB_000: 53;
then not e
in (
the_Edges_of G2) by
A24,
XBOOLE_0:def 5;
hence contradiction by
A21,
GLIB_000:def 13;
end;
let v2 be
object;
A25: v2 is
set by
TARSKI: 1;
assume
A26: v1
<> v & v2
<> v;
assume e
DJoins (v1,v2,G2);
then e
DJoins (v1,v2,G1) by
A3,
A19,
A25,
GLIB_006: 70;
hence e
DJoins (v1,v2,G3) by
A1,
A26,
Def4;
end;
take F;
reconsider W = V1 as
Subset of (V1
\/ V2) by
XBOOLE_1: 7;
consider f be
Function of W, (G1
.edgesBetween (W,
{v})) such that
A27: f is
one-to-one
onto and for w be
object st w
in W holds (f
. w)
Joins (w,v,G1) by
A1,
Th57;
A28: (
dom f)
= W
proof
per cases ;
suppose (G1
.edgesBetween (W,
{v}))
<>
{} ;
hence thesis by
FUNCT_2:def 1;
end;
suppose
A29: (G1
.edgesBetween (W,
{v}))
=
{} ;
then (
dom f)
=
{} ;
hence thesis by
A29,
A1,
Lm12;
end;
end;
(
rng f)
= (G1
.edgesBetween (W,
{v})) by
A27,
FUNCT_2:def 3;
hence (
card V1)
= (
card F) by
A9,
CARD_1: 5,
A27,
A28,
WELLORD2:def 4;
thus F
misses (
the_Edges_of G3) by
A5,
XBOOLE_1: 63;
thus (
the_Edges_of G2)
= ((
the_Edges_of G3)
\/ F) by
A16;
let v1 be
object;
assume
A30: v1
in V1;
then v1
in (V1
\/ V2) by
XBOOLE_0:def 3;
then
consider e1 be
object such that
A31: e1
in E & e1
Joins (v1,v,G1) and
A32: for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A7;
take e1;
v
in
{v} by
TARSKI:def 1;
then e1
SJoins (V1,
{v},G1) by
A30,
A31,
GLIB_000: 17;
hence e1
in F by
A9,
GLIB_000:def 30;
then
A33: e1
in (
the_Edges_of G2) by
A16,
XBOOLE_0:def 3;
thus e1
Joins (v1,v,G2)
proof
reconsider e3 = e1 as
set by
TARSKI: 1;
A34: (((
the_Source_of G1)
. e1)
= v1 & ((
the_Target_of G1)
. e1)
= v) or (((
the_Source_of G1)
. e1)
= v & ((
the_Target_of G1)
. e1)
= v1) by
A31,
GLIB_000:def 13;
((
the_Source_of G1)
. e3)
= ((
the_Source_of G2)
. e3) & ((
the_Target_of G1)
. e3)
= ((
the_Target_of G2)
. e3) by
A33,
GLIB_000:def 32;
hence e1
Joins (v1,v,G2) by
A33,
GLIB_000:def 13,
A34;
end;
let e2 be
object;
assume
A35: e2
Joins (v1,v,G2);
v1 is
set & v is
set by
TARSKI: 1;
hence e1
= e2 by
A32,
A35,
GLIB_000: 72;
end;
G2 is
Supergraph of G3
proof
A36: (
the_Vertices_of G3)
c= (
the_Vertices_of G2) by
A17,
XBOOLE_1: 7;
A37: (
the_Edges_of G3)
c= (
the_Edges_of G2) by
A16,
XBOOLE_1: 7;
now
let e be
set;
assume
A38: e
in (
the_Edges_of G3);
then
A39: e
in (
the_Edges_of G2) by
A37;
thus ((
the_Source_of G3)
. e)
= ((
the_Source_of G1)
. e) by
A38,
GLIB_006:def 9
.= ((
the_Source_of G2)
. e) by
A39,
GLIB_000:def 32;
thus ((
the_Target_of G3)
. e)
= ((
the_Target_of G1)
. e) by
A38,
GLIB_006:def 9
.= ((
the_Target_of G2)
. e) by
A39,
GLIB_000:def 32;
end;
hence thesis by
A36,
A37,
GLIB_006:def 9;
end;
hence thesis by
A4,
A17,
Def4;
end;
theorem ::
GLIB_007:61
for G3 be
_Graph, v be
object, V be
set, v1 be
Vertex of G3 holds for G1 be
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 be
addAdjVertexAll of G3, v, V, e be
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)
proof
let G3 be
_Graph, v be
object, V be
set, v1 be
Vertex of G3;
let G1 be
addAdjVertexAll of G3, v, (V
\/
{v1});
assume that
A1: V
c= (
the_Vertices_of G3) & not v
in (
the_Vertices_of G3) and
A2: not v1
in 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 as
addAdjVertexAll of G3, v, V by
A1,
A3,
Th60;
take G2;
reconsider W =
{v1} as
Subset of (V
\/
{v1}) by
XBOOLE_1: 7;
consider f be
Function of W, (G1
.edgesBetween (W,
{v})) such that
A4: f is
one-to-one
onto and
A5: for w be
object st w
in W holds (f
. w)
Joins (w,v,G1) by
A1,
A3,
Th57;
take (f
. v1);
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)
proof
v1
in
{v1} & v
in
{v} by
TARSKI:def 1;
then (f
. v1)
SJoins (
{v1},
{v},G1) by
A6,
GLIB_000: 17;
then (f
. v1)
in (G1
.edgesBetween (
{v1},
{v})) by
GLIB_000:def 30;
then not (f
. v1)
in ((
the_Edges_of G1)
\ (G1
.edgesBetween (
{v1},
{v}))) by
XBOOLE_0:def 5;
hence thesis by
GLIB_000: 53;
end;
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 be
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 by
A6,
GLIB_000: 16;
suppose
A20: (f
. v1)
DJoins (v1,v,G1);
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 be
object st e
in (
dom (
the_Source_of G1)) holds ((
the_Source_of G1)
. e)
= (((
the_Source_of G2)
+* ((f
. v1)
.--> v1))
. e)
proof
let e be
object;
assume e
in (
dom (
the_Source_of G1));
per cases by
A15,
XBOOLE_0:def 3;
suppose
A22: e
in (
the_Edges_of G2);
then not e
in
{(f
. v1)} by
A14,
XBOOLE_0:def 5;
then
A23: e
<> (f
. v1) by
TARSKI:def 1;
reconsider e1 = e as
set by
TARSKI: 1;
thus ((
the_Source_of G1)
. e)
= ((
the_Source_of G2)
. e1) by
A22,
GLIB_000:def 32
.= (((
the_Source_of G2)
+* ((f
. v1)
.--> v1))
. e) by
A23,
FUNCT_4: 83;
end;
suppose e
in
{(f
. v1)};
then
A24: e
= (f
. v1) by
TARSKI:def 1;
hence ((
the_Source_of G1)
. e)
= v1 by
A20,
GLIB_000:def 14
.= (((
the_Source_of G2)
+* ((f
. v1)
.--> v1))
. e) by
A24,
FUNCT_4: 113;
end;
end;
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 be
object st e
in (
dom (
the_Target_of G1)) holds ((
the_Target_of G1)
. e)
= (((
the_Target_of G2)
+* ((f
. v1)
.--> v))
. e)
proof
let e be
object;
assume e
in (
dom (
the_Target_of G1));
per cases by
A15,
XBOOLE_0:def 3;
suppose
A27: e
in (
the_Edges_of G2);
then not e
in
{(f
. v1)} by
A14,
XBOOLE_0:def 5;
then
A28: e
<> (f
. v1) by
TARSKI:def 1;
reconsider e1 = e as
set by
TARSKI: 1;
thus ((
the_Target_of G1)
. e)
= ((
the_Target_of G2)
. e1) by
A27,
GLIB_000:def 32
.= (((
the_Target_of G2)
+* ((f
. v1)
.--> v))
. e) by
A28,
FUNCT_4: 83;
end;
suppose e
in
{(f
. v1)};
then
A29: e
= (f
. v1) by
TARSKI:def 1;
hence ((
the_Target_of G1)
. e)
= v by
A20,
GLIB_000:def 14
.= (((
the_Target_of G2)
+* ((f
. v1)
.--> v))
. e) by
A29,
FUNCT_4: 113;
end;
end;
then (
the_Target_of G1)
= ((
the_Target_of G2)
+* ((f
. v1)
.--> v)) by
A26,
FUNCT_1: 2;
hence thesis by
A16,
A25,
A19,
A18,
GLIB_006:def 11;
end;
suppose
A30: (f
. v1)
DJoins (v,v1,G1);
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 be
object st e
in (
dom (
the_Target_of G1)) holds ((
the_Target_of G1)
. e)
= (((
the_Target_of G2)
+* ((f
. v1)
.--> v1))
. e)
proof
let e be
object;
assume e
in (
dom (
the_Target_of G1));
per cases by
A15,
XBOOLE_0:def 3;
suppose
A32: e
in (
the_Edges_of G2);
then not e
in
{(f
. v1)} by
A14,
XBOOLE_0:def 5;
then
A33: e
<> (f
. v1) by
TARSKI:def 1;
reconsider e1 = e as
set by
TARSKI: 1;
thus ((
the_Target_of G1)
. e)
= ((
the_Target_of G2)
. e1) by
A32,
GLIB_000:def 32
.= (((
the_Target_of G2)
+* ((f
. v1)
.--> v1))
. e) by
A33,
FUNCT_4: 83;
end;
suppose e
in
{(f
. v1)};
then
A34: e
= (f
. v1) by
TARSKI:def 1;
hence ((
the_Target_of G1)
. e)
= v1 by
A30,
GLIB_000:def 14
.= (((
the_Target_of G2)
+* ((f
. v1)
.--> v1))
. e) by
A34,
FUNCT_4: 113;
end;
end;
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 be
object st e
in (
dom (
the_Source_of G1)) holds ((
the_Source_of G1)
. e)
= (((
the_Source_of G2)
+* ((f
. v1)
.--> v))
. e)
proof
let e be
object;
assume e
in (
dom (
the_Source_of G1));
per cases by
A15,
XBOOLE_0:def 3;
suppose
A37: e
in (
the_Edges_of G2);
then not e
in
{(f
. v1)} by
A14,
XBOOLE_0:def 5;
then
A38: e
<> (f
. v1) by
TARSKI:def 1;
reconsider e1 = e as
set by
TARSKI: 1;
thus ((
the_Source_of G1)
. e)
= ((
the_Source_of G2)
. e1) by
A37,
GLIB_000:def 32
.= (((
the_Source_of G2)
+* ((f
. v1)
.--> v))
. e) by
A38,
FUNCT_4: 83;
end;
suppose e
in
{(f
. v1)};
then
A39: e
= (f
. v1) by
TARSKI:def 1;
hence ((
the_Source_of G1)
. e)
= v by
A30,
GLIB_000:def 14
.= (((
the_Source_of G2)
+* ((f
. v1)
.--> v))
. e) by
A39,
FUNCT_4: 113;
end;
end;
then (
the_Source_of G1)
= ((
the_Source_of G2)
+* ((f
. v1)
.--> v)) by
A36,
FUNCT_1: 2;
hence thesis by
A16,
A35,
A19,
A18,
GLIB_006:def 11;
end;
end;
theorem ::
GLIB_007:62
for G3 be
_Graph, v be
object, V be
set, v1 be
Vertex of G3 holds for e be
object, G2 be
addAdjVertexAll of G3, v, V st V
c= (
the_Vertices_of G3) & not v
in (
the_Vertices_of G3) & not v1
in V & not e
in (
the_Edges_of G2) holds for G1 be
_Graph st G1 is
addEdge of G2, v1, e, v or G1 is
addEdge of G2, v, e, v1 holds G1 is
addAdjVertexAll of G3, v, (V
\/
{v1})
proof
let G3 be
_Graph, v be
object, V be
set, v1 be
Vertex of G3, e be
object;
let G2 be
addAdjVertexAll of G3, v, V;
assume that
A1: V
c= (
the_Vertices_of G3) & not v
in (
the_Vertices_of G3) and
A2: not v1
in V & not e
in (
the_Edges_of G2);
consider E be
set such that
A3: (
card V)
= (
card E) & E
misses (
the_Edges_of G3) & (
the_Edges_of G2)
= ((
the_Edges_of G3)
\/ E) and
A4: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G2) & for e2 be
object st e2
Joins (v1,v,G2) holds e1
= e2 by
A1,
Def4;
consider f be
Function such that
A5: f is
one-to-one & (
dom f)
= E & (
rng f)
= V by
WELLORD2:def 4,
A3,
CARD_1: 5;
set f1 = (f
+* (e
.--> v1));
reconsider E1 = (E
\/
{e}), V1 = (V
\/
{v1}) as
set;
A6: (
dom f1)
= ((
dom f)
\/ (
dom (e
.--> v1))) by
FUNCT_4:def 1
.= ((
dom f)
\/ (
dom (
{e}
--> v1))) by
FUNCOP_1:def 9
.= E1 by
A5;
e is
set & v1 is
set by
TARSKI: 1;
then
A7: (
rng (e
.--> v1))
=
{v1} by
FUNCOP_1: 88;
then
A8: ((
rng f)
\/ (
rng (e
.--> v1)))
= (V
\/
{v1}) by
A5;
((
rng f)
/\ (
rng (e
.--> v1)))
=
{}
proof
assume
A9: ((
rng f)
/\ (
rng (e
.--> v1)))
<>
{} ;
set x = the
Element of ((
rng f)
/\ (
rng (e
.--> v1)));
x
in V & x
in
{v1} by
XBOOLE_0:def 4,
A5,
A7,
A9;
hence contradiction by
A2,
TARSKI:def 1;
end;
then
A10: f1 is
one-to-one by
A5,
XBOOLE_0:def 7,
FUNCT_4: 92;
for w be
object holds w
in ((
rng f)
\/ (
rng (e
.--> v1))) implies w
in (
rng f1)
proof
let w be
object;
assume w
in ((
rng f)
\/ (
rng (e
.--> v1)));
per cases by
XBOOLE_0:def 3;
suppose w
in (
rng f);
then
consider x be
object such that
A11: x
in (
dom f) & w
= (f
. x) by
FUNCT_1:def 3;
x
in E by
A5,
A11;
then x
<> e by
A2,
A3,
XBOOLE_0:def 3;
then
A13: (f1
. x)
= w by
A11,
FUNCT_4: 83;
x
in E1 by
A5,
A11,
XBOOLE_0:def 3;
hence w
in (
rng f1) by
A6,
A13,
FUNCT_1:def 3;
end;
suppose w
in (
rng (e
.--> v1));
hence thesis by
FUNCT_4: 18,
TARSKI:def 3;
end;
end;
then
A14: ((
rng f)
\/ (
rng (e
.--> v1)))
c= (
rng f1) by
TARSKI:def 3;
(
rng f1)
c= ((
rng f)
\/ (
rng (e
.--> v1))) by
FUNCT_4: 17;
then (
rng f1)
= ((
rng f)
\/ (
rng (e
.--> v1))) by
A14,
XBOOLE_0:def 10;
then
A15: (
card E1)
= (
card V1) by
A8,
A10,
A6,
WELLORD2:def 4,
CARD_1: 5;
A16: ((
the_Edges_of G2)
/\
{e})
=
{} by
A2,
ZFMISC_1: 50,
XBOOLE_0:def 7;
(
the_Edges_of G3)
c= (
the_Edges_of G2) by
GLIB_006:def 9;
then ((
the_Edges_of G3)
/\
{e})
c= ((
the_Edges_of G2)
/\
{e}) by
XBOOLE_1: 26;
then
A17: ((
the_Edges_of G3)
/\
{e})
=
{} by
A16;
((
the_Edges_of G3)
/\ E1)
= ((
the_Edges_of G3)
/\
{e}) by
XBOOLE_1: 78,
A3;
then
A18: E1
misses (
the_Edges_of G3) by
A17,
XBOOLE_0:def 7;
A19: ((
the_Edges_of G3)
\/ E1)
= ((
the_Edges_of G2)
\/
{e}) by
A3,
XBOOLE_1: 4;
v is
Vertex of G2 & v1 is
Vertex of G3 by
A1,
Th50;
then
A20: v
in (
the_Vertices_of G2) & v1 is
Vertex of G2 by
GLIB_006: 68;
A21: V1
c= (
the_Vertices_of G3) by
A1,
XBOOLE_1: 8;
let G1 be
_Graph;
assume G1 is
addEdge of G2, v1, e, v or G1 is
addEdge of G2, v, e, v1;
per cases ;
suppose
A22: G1 is
addEdge of G2, v1, e, v;
then
A23: (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/
{e}) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* (e
.--> v1)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* (e
.--> v)) by
A20,
A2,
GLIB_006:def 11;
A24: G1 is
Supergraph of G3 by
A22,
GLIB_006: 62;
now
thus (
the_Vertices_of G1)
= ((
the_Vertices_of G3)
\/
{v}) by
A23,
A1,
Def4;
hereby
let e3 be
object;
thus not e3
Joins (v,v,G1)
proof
assume
A25: e3
Joins (v,v,G1);
per cases by
A22,
GLIB_006: 72;
suppose e3
Joins (v,v,G2);
hence contradiction by
A1,
Def4;
end;
suppose not e3
in (
the_Edges_of G2);
then v1
= v by
A2,
A20,
A22,
A25,
GLIB_006: 107;
hence contradiction by
A1;
end;
end;
let v3 be
object;
thus not v3
in V1 implies not e3
Joins (v3,v,G1)
proof
assume not v3
in V1;
then
A26: not v3
in V & not v3
in
{v1} by
XBOOLE_0:def 3;
assume
A27: e3
Joins (v3,v,G1);
per cases by
A22,
GLIB_006: 72;
suppose e3
Joins (v3,v,G2);
hence contradiction by
A1,
A26,
Def4;
end;
suppose not e3
in (
the_Edges_of G2);
per cases by
A2,
A20,
A22,
A27,
GLIB_006: 107;
suppose v3
= v1 & v
= v;
hence contradiction by
A26,
TARSKI:def 1;
end;
suppose v3
= v & v
= v1;
hence contradiction by
A1;
end;
end;
end;
let v2 be
object;
assume
A28: v3
<> v & v2
<> v & e3
DJoins (v3,v2,G1);
per cases by
A24,
GLIB_006: 71;
suppose e3
DJoins (v3,v2,G3);
hence e3
DJoins (v3,v2,G3);
end;
suppose not e3
in (
the_Edges_of G3);
per cases by
A22,
A28,
GLIB_006: 71;
suppose e3
DJoins (v3,v2,G2);
hence e3
DJoins (v3,v2,G3) by
A28,
A1,
Def4;
end;
suppose
A29: not e3
in (
the_Edges_of G2);
e3
Joins (v3,v2,G1) by
A28,
GLIB_000: 16;
then (v3
= v1 & v2
= v) or (v3
= v & v2
= v1) by
A2,
A20,
A22,
A29,
GLIB_006: 107;
hence e3
DJoins (v3,v2,G3) by
A28;
end;
end;
end;
take E1;
thus (
card V1)
= (
card E1) by
A15;
thus E1
misses (
the_Edges_of G3) by
A18;
thus (
the_Edges_of G1)
= ((
the_Edges_of G3)
\/ E1) by
A19,
A23;
let v3 be
object;
assume
A30: v3
in V1;
thus ex e1 be
object st e1
in E1 & e1
Joins (v3,v,G1) & for e2 be
object st e2
Joins (v3,v,G1) holds e1
= e2
proof
per cases by
A30,
XBOOLE_0:def 3;
suppose
A31: v3
in V;
then
consider e1 be
object such that
A32: e1
in E & e1
Joins (v3,v,G2) and
A33: for e2 be
object st e2
Joins (v3,v,G2) holds e1
= e2 by
A4;
take e1;
thus e1
in E1 by
A32,
XBOOLE_0:def 3;
v3 is
set & v is
set by
TARSKI: 1;
hence e1
Joins (v3,v,G1) by
A22,
A32,
GLIB_006: 70;
let e2 be
object;
assume
A34: e2
Joins (v3,v,G1);
per cases by
A22,
GLIB_006: 72;
suppose e2
Joins (v3,v,G2);
hence e1
= e2 by
A33;
end;
suppose not e2
in (
the_Edges_of G2);
per cases by
A2,
A20,
A22,
A34,
GLIB_006: 107;
suppose v3
= v1 & v
= v;
hence thesis by
A2,
A31;
end;
suppose v3
= v & v
= v1;
hence thesis by
A1;
end;
end;
end;
suppose v3
in
{v1};
then
A35: v3
= v1 by
TARSKI:def 1;
take e;
e
in
{e} by
TARSKI:def 1;
hence e
in E1 by
XBOOLE_0:def 3;
e
DJoins (v1,v,G1) by
A2,
A20,
A22,
GLIB_006: 105;
hence e
Joins (v3,v,G1) by
A35,
GLIB_000: 16;
let e2 be
object;
assume
A36: e2
Joins (v3,v,G1);
per cases by
A22,
GLIB_006: 72,
A35;
suppose e2
Joins (v1,v,G2);
hence thesis by
A2,
A1,
Def4;
end;
suppose not e2
in (
the_Edges_of G2);
hence e
= e2 by
A2,
A20,
A22,
A36,
GLIB_006: 106;
end;
end;
end;
end;
hence thesis by
A24,
A21,
A1,
Def4;
end;
suppose
A37: G1 is
addEdge of G2, v, e, v1;
then
A38: (
the_Vertices_of G1)
= (
the_Vertices_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/
{e}) & (
the_Source_of G1)
= ((
the_Source_of G2)
+* (e
.--> v)) & (
the_Target_of G1)
= ((
the_Target_of G2)
+* (e
.--> v1)) by
A20,
A2,
GLIB_006:def 11;
A39: G1 is
Supergraph of G3 by
A37,
GLIB_006: 62;
now
thus (
the_Vertices_of G1)
= ((
the_Vertices_of G3)
\/
{v}) by
A1,
A38,
Def4;
hereby
let e3 be
object;
thus not e3
Joins (v,v,G1)
proof
assume
A40: e3
Joins (v,v,G1);
per cases by
A37,
GLIB_006: 72;
suppose e3
Joins (v,v,G2);
hence contradiction by
A1,
Def4;
end;
suppose not e3
in (
the_Edges_of G2);
then v1
= v by
A2,
A20,
A37,
A40,
GLIB_006: 107;
hence contradiction by
A1;
end;
end;
let v3 be
object;
thus not v3
in V1 implies not e3
Joins (v3,v,G1)
proof
assume not v3
in V1;
then
A41: not v3
in V & not v3
in
{v1} by
XBOOLE_0:def 3;
assume
A42: e3
Joins (v3,v,G1);
per cases by
A37,
GLIB_006: 72;
suppose e3
Joins (v3,v,G2);
hence contradiction by
A1,
A41,
Def4;
end;
suppose not e3
in (
the_Edges_of G2);
per cases by
A2,
A20,
A37,
A42,
GLIB_006: 107;
suppose v3
= v & v
= v1;
hence contradiction by
A1;
end;
suppose v3
= v1 & v
= v;
hence contradiction by
A41,
TARSKI:def 1;
end;
end;
end;
let v2 be
object;
assume
A43: v3
<> v & v2
<> v & e3
DJoins (v3,v2,G1);
per cases by
A39,
GLIB_006: 71;
suppose e3
DJoins (v3,v2,G3);
hence e3
DJoins (v3,v2,G3);
end;
suppose not e3
in (
the_Edges_of G3);
per cases by
A37,
A43,
GLIB_006: 71;
suppose e3
DJoins (v3,v2,G2);
hence e3
DJoins (v3,v2,G3) by
A43,
A1,
Def4;
end;
suppose
A44: not e3
in (
the_Edges_of G2);
e3
Joins (v3,v2,G1) by
A43,
GLIB_000: 16;
then (v3
= v & v2
= v1) or (v3
= v1 & v2
= v) by
A2,
A20,
A37,
A44,
GLIB_006: 107;
hence e3
DJoins (v3,v2,G3) by
A43;
end;
end;
end;
take E1;
thus (
card V1)
= (
card E1) by
A15;
thus E1
misses (
the_Edges_of G3) by
A18;
thus (
the_Edges_of G1)
= ((
the_Edges_of G3)
\/ E1) by
A19,
A38;
let v3 be
object;
assume
A45: v3
in V1;
thus ex e1 be
object st e1
in E1 & e1
Joins (v3,v,G1) & for e2 be
object st e2
Joins (v3,v,G1) holds e1
= e2
proof
per cases by
A45,
XBOOLE_0:def 3;
suppose
A46: v3
in V;
then
consider e1 be
object such that
A47: e1
in E & e1
Joins (v3,v,G2) and
A48: for e2 be
object st e2
Joins (v3,v,G2) holds e1
= e2 by
A4;
take e1;
thus e1
in E1 by
A47,
XBOOLE_0:def 3;
v3 is
set & v is
set by
TARSKI: 1;
hence e1
Joins (v3,v,G1) by
A37,
A47,
GLIB_006: 70;
let e2 be
object;
assume
A49: e2
Joins (v3,v,G1);
per cases by
A37,
GLIB_006: 72;
suppose e2
Joins (v3,v,G2);
hence e1
= e2 by
A48;
end;
suppose not e2
in (
the_Edges_of G2);
per cases by
A2,
A20,
A37,
A49,
GLIB_006: 107;
suppose v3
= v & v
= v1;
hence thesis by
A1;
end;
suppose v3
= v1 & v
= v;
hence thesis by
A2,
A46;
end;
end;
end;
suppose v3
in
{v1};
then
A50: v3
= v1 by
TARSKI:def 1;
take e;
e
in
{e} by
TARSKI:def 1;
hence e
in E1 by
XBOOLE_0:def 3;
e
DJoins (v,v1,G1) by
A2,
A20,
A37,
GLIB_006: 105;
hence e
Joins (v3,v,G1) by
A50,
GLIB_000: 16;
let e2 be
object;
assume
A51: e2
Joins (v3,v,G1);
per cases by
A50,
A37,
GLIB_006: 72;
suppose e2
Joins (v1,v,G2);
hence thesis by
A2,
A1,
Def4;
end;
suppose not e2
in (
the_Edges_of G2);
hence e
= e2 by
A2,
A20,
A37,
A51,
GLIB_006: 106;
end;
end;
end;
end;
hence thesis by
A39,
A21,
A1,
Def4;
end;
end;
Lm13: for k be
odd
Element of
NAT st 1
< k holds (k
- 2) is
odd
Element of
NAT
proof
let k be
odd
Element of
NAT ;
assume
A1: 1
< k;
consider i be
Nat such that
A2: k
= ((2
* i)
+ 1) by
ABIAN: 9;
0
<> i by
A1,
A2;
then
reconsider j = (i
- 1) as
Nat by
CHORD: 1;
(k
- 2)
= ((2
* j)
+ 1) by
A2;
hence thesis;
end;
theorem ::
GLIB_007:63
Th63: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V, W be
Walk of G1 st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds ((W
.edges() )
c= (
the_Edges_of G2) & W is non
trivial implies not v
in (W
.vertices() )) & ( not v
in (W
.vertices() ) implies (W
.edges() )
c= (
the_Edges_of G2))
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let W be
Walk of G1;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
consider E be
set such that
A2: (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A3: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
A4: (E
/\ (
the_Edges_of G2))
=
{} by
A2,
XBOOLE_0:def 7;
hereby
assume
A5: (W
.edges() )
c= (
the_Edges_of G2) & W is non
trivial;
thus not v
in (W
.vertices() )
proof
assume v
in (W
.vertices() );
then
consider n be
odd
Element of
NAT such that
A6: n
<= (
len W) & (W
. n)
= v by
GLIB_001: 87;
per cases by
A6,
XXREAL_0: 1;
suppose
A7: n
= (
len W);
A8: 1
<> (
len W) by
A5,
GLIB_001: 126;
1
<= (
len W) by
ABIAN: 12;
then 1
< (
len W) by
A8,
XXREAL_0: 1;
then
reconsider m = ((
len W)
- 2) as
odd
Element of
NAT by
Lm13;
A9: m
< ((
len W)
-
0 ) by
XREAL_1: 15;
then (W
. (m
+ 1))
Joins ((W
. m),(W
. (m
+ 2)),G1) by
GLIB_001:def 3;
then
A10: (W
. (m
+ 1))
Joins ((W
. m),v,G1) by
A6,
A7;
then (W
. m)
in V by
A1,
Def4;
then
consider e1 be
object such that
A11: e1
in E & e1
Joins ((W
. m),v,G1) and
A12: for e2 be
object st e2
Joins ((W
. m),v,G1) holds e1
= e2 by
A3;
(W
. (m
+ 1))
in E by
A10,
A11,
A12;
then not (W
. (m
+ 1))
in (W
.edges() ) by
A5,
A4,
Lm7;
hence contradiction by
A9,
GLIB_001: 100;
end;
suppose
A13: n
< (
len W);
then
A14: (W
. (n
+ 1))
Joins ((W
. (n
+ 2)),v,G1) by
A6,
GLIB_000: 14,
GLIB_001:def 3;
then (W
. (n
+ 2))
in V by
A1,
Def4;
then
consider e1 be
object such that
A15: e1
in E & e1
Joins ((W
. (n
+ 2)),v,G1) and
A16: for e2 be
object st e2
Joins ((W
. (n
+ 2)),v,G1) holds e1
= e2 by
A3;
(W
. (n
+ 1))
in E by
A14,
A15,
A16;
then not (W
. (n
+ 1))
in (W
.edges() ) by
A5,
A4,
Lm7;
hence contradiction by
A13,
GLIB_001: 100;
end;
end;
end;
assume
A17: not v
in (W
.vertices() );
for e be
object holds e
in (W
.edges() ) implies e
in (
the_Edges_of G2)
proof
let e be
object;
assume e
in (W
.edges() );
then
consider n be
odd
Element of
NAT such that
A18: n
< (
len W) & (W
. (n
+ 1))
= e by
GLIB_001: 100;
A19: e
Joins ((W
. n),(W
. (n
+ 2)),G1) by
A18,
GLIB_001:def 3;
(W
. n)
<> v & (W
. (n
+ 2))
<> v
proof
thus (W
. n)
<> v by
A17,
A18,
GLIB_001: 87;
A20: (n
+ 2)
<= (
len W) by
A18,
GLIB_001: 1;
assume (W
. (n
+ 2))
= v;
hence contradiction by
A17,
A20,
GLIB_001: 87;
end;
then e
Joins ((W
. n),(W
. (n
+ 2)),G2) by
A19,
A1,
Th49;
hence thesis by
GLIB_000:def 13;
end;
hence thesis by
TARSKI:def 3;
end;
theorem ::
GLIB_007:64
Th64: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V, W be
Walk of G1 st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & (((W
.edges() )
c= (
the_Edges_of G2) & W is non
trivial) or not v
in (W
.vertices() )) holds W is
Walk of G2
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let W be
Walk of G1;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: ((W
.edges() )
c= (
the_Edges_of G2) & W is non
trivial) or not v
in (W
.vertices() );
A3: (W
.edges() )
c= (
the_Edges_of G2) & not v
in (W
.vertices() ) by
A1,
A2,
Th63;
for w be
object holds w
in (W
.vertices() ) implies w
in (
the_Vertices_of G2)
proof
let w be
object;
assume
A4: w
in (W
.vertices() );
then
A5: w
in (
the_Vertices_of G1);
assume
A6: not w
in (
the_Vertices_of G2);
(
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
then w
in
{v} by
A5,
A6,
XBOOLE_0:def 3;
hence contradiction by
A4,
A3,
TARSKI:def 1;
end;
then
A7: (W
.vertices() )
c= (
the_Vertices_of G2) by
TARSKI:def 3;
(
rng W)
= ((W
.vertices() )
\/ (W
.edges() )) by
GLIB_001: 101;
then
A8: W is
FinSequence of ((
the_Vertices_of G2)
\/ (
the_Edges_of G2)) by
FINSEQ_1:def 4,
A7,
A3,
XBOOLE_1: 13;
now
thus (
len W) is
odd;
(W
.first() )
in (W
.vertices() ) by
GLIB_001: 88;
then (W
. 1)
in (W
.vertices() ) by
GLIB_001:def 6;
hence (W
. 1)
in (
the_Vertices_of G2) by
A7;
let n be
odd
Element of
NAT ;
assume
A9: n
< (
len W);
then
A10: (W
. (n
+ 1))
Joins ((W
. n),(W
. (n
+ 2)),G1) by
GLIB_001:def 3;
(W
. (n
+ 1))
in (W
.edges() ) by
A9,
GLIB_001: 100;
hence (W
. (n
+ 1))
Joins ((W
. n),(W
. (n
+ 2)),G2) by
A10,
GLIB_006: 72,
A3;
end;
hence thesis by
A8,
GLIB_001:def 3;
end;
theorem ::
GLIB_007:65
Th65: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V, W be
Walk of G1 st (W
.vertices() )
c= (
the_Vertices_of G2) holds (W
.edges() )
c= (
the_Edges_of G2)
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let W be
Walk of G1;
assume
A1: (W
.vertices() )
c= (
the_Vertices_of G2);
per cases ;
suppose
A2: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then not v
in (W
.vertices() ) by
A1;
hence thesis by
A2,
Th63;
end;
suppose not (V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2));
then G1
== G2 by
Def4;
then (
the_Edges_of G1)
= (
the_Edges_of G2) by
GLIB_000:def 34;
hence thesis;
end;
end;
theorem ::
GLIB_007:66
for G, v, V holds for G1,G2 be
addAdjVertexAll of G, v, V holds (
the_Vertices_of G1)
= (
the_Vertices_of G2) & for v1 be
Vertex of G1 holds v1 is
Vertex of G2
proof
let G, v, V;
let G1,G2 be
addAdjVertexAll of G, v, V;
thus (
the_Vertices_of G1)
= (
the_Vertices_of G2)
proof
per cases ;
suppose V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) & (
the_Vertices_of G2)
= ((
the_Vertices_of G)
\/
{v}) by
Def4;
hence thesis;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G & G2
== G by
Def4;
then G1
== G2 by
GLIB_000: 85;
hence thesis by
GLIB_000:def 34;
end;
end;
hence thesis;
end;
theorem ::
GLIB_007:67
Th67: for G, v, V holds for G1,G2 be
addAdjVertexAll of G, v, V holds for v1,e1,v2 be
object st e1
Joins (v1,v2,G1) holds ex e2 be
object st e2
Joins (v1,v2,G2)
proof
let G, v, V;
let G1,G2 be
addAdjVertexAll of G, v, V;
let v1,e1,v2 be
object;
assume
A1: e1
Joins (v1,v2,G1);
per cases ;
suppose
A2: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then
consider E2 be
set such that (
card V)
= (
card E2) & E2
misses (
the_Edges_of G) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ E2) and
A3: for w1 be
object st w1
in V holds ex e3 be
object st e3
in E2 & e3
Joins (w1,v,G2) & for e2 be
object st e2
Joins (w1,v,G2) holds e3
= e2 by
Def4;
per cases ;
suppose v1
= v & v2
= v;
hence thesis by
A2,
Def4,
A1;
end;
suppose
A4: v1
= v & v2
<> v;
per cases ;
suppose not v2
in V;
then not e1
Joins (v2,v,G1) by
A2,
Def4;
hence thesis by
A1,
A4,
GLIB_000: 14;
end;
suppose v2
in V;
then
consider e3 be
object such that
A5: e3
in E2 & e3
Joins (v2,v,G2) and for e2 be
object st e2
Joins (v2,v,G2) holds e3
= e2 by
A3;
take e3;
thus e3
Joins (v1,v2,G2) by
A5,
A4,
GLIB_000: 14;
end;
end;
suppose
A6: v1
<> v & v2
= v;
per cases ;
suppose not v1
in V;
hence thesis by
A1,
A2,
A6,
Def4;
end;
suppose v1
in V;
then
consider e3 be
object such that
A7: e3
in E2 & e3
Joins (v1,v,G2) and for e2 be
object st e2
Joins (v1,v,G2) holds e3
= e2 by
A3;
take e3;
thus e3
Joins (v1,v2,G2) by
A7,
A6;
end;
end;
suppose
A8: v1
<> v & v2
<> v;
A9: e1
Joins (v1,v2,G)
proof
e1
DJoins (v1,v2,G1) or e1
DJoins (v2,v1,G1) by
A1,
GLIB_000: 16;
then e1
DJoins (v1,v2,G) or e1
DJoins (v2,v1,G) by
A2,
A8,
Def4;
hence thesis by
GLIB_000: 16;
end;
take e1;
reconsider w1 = v1, w2 = v2 as
set by
TARSKI: 1;
e1
Joins (w1,w2,G2) by
A9,
GLIB_006: 70;
hence thesis;
end;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G & G2
== G by
Def4;
then
A10: G1
== G2 by
GLIB_000: 85;
take e1;
thus thesis by
A1,
A10,
GLIB_000: 88;
end;
end;
theorem ::
GLIB_007:68
for G, v, V holds for G1,G2 be
addAdjVertexAll of G, v, V holds ex f be
Function of (
the_Edges_of G1), (
the_Edges_of G2) st (f
| (
the_Edges_of G))
= (
id (
the_Edges_of G)) & f is
one-to-one
onto & for v1,e,v2 be
object st e
Joins (v1,v2,G1) holds (f
. e)
Joins (v1,v2,G2)
proof
let G, v, V;
let G1,G2 be
addAdjVertexAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
defpred
P[
object,
object] means for v1,v2 be
object st $1
Joins (v1,v2,G1) holds $2
Joins (v1,v2,G2);
A2: for e1 be
object st e1
in (
the_Edges_of G1) holds ex e2 be
object st e2
in (
the_Edges_of G2) &
P[e1, e2]
proof
let e1 be
object;
assume e1
in (
the_Edges_of G1);
then e1
Joins (((
the_Source_of G1)
. e1),((
the_Target_of G1)
. e1),G1) by
GLIB_000:def 13;
then
consider e2 be
object such that
A3: e2
Joins (((
the_Source_of G1)
. e1),((
the_Target_of G1)
. e1),G2) by
Th67;
take e2;
thus e2
in (
the_Edges_of G2) by
A3,
GLIB_000:def 13;
let v1,v2 be
object;
assume e1
Joins (v1,v2,G1);
per cases by
GLIB_000:def 13;
suppose ((
the_Source_of G1)
. e1)
= v1 & ((
the_Target_of G1)
. e1)
= v2;
hence e2
Joins (v1,v2,G2) by
A3;
end;
suppose ((
the_Source_of G1)
. e1)
= v2 & ((
the_Target_of G1)
. e1)
= v1;
hence e2
Joins (v1,v2,G2) by
A3,
GLIB_000: 14;
end;
end;
consider f1 be
Function of (
the_Edges_of G1), (
the_Edges_of G2) such that
A4: for e1 be
object st e1
in (
the_Edges_of G1) holds
P[e1, (f1
. e1)] from
FUNCT_2:sch 1(
A2);
set f = (f1
+* (
id (
the_Edges_of G)));
A5: (
the_Edges_of G)
c= (
the_Edges_of G1) by
GLIB_006:def 9;
A6: (
dom f1)
= (
the_Edges_of G1)
proof
per cases ;
suppose V
<>
{} ;
then (
the_Edges_of G2)
<>
{} by
A1,
Th47;
hence thesis by
FUNCT_2:def 1;
end;
suppose
A7: (
the_Edges_of G)
<>
{} ;
(
the_Edges_of G2)
<>
{}
proof
assume
A8: (
the_Edges_of G2)
=
{} ;
(
the_Edges_of G)
c= (
the_Edges_of G2) by
GLIB_006:def 9;
hence contradiction by
A7,
A8;
end;
hence thesis by
FUNCT_2:def 1;
end;
suppose V
=
{} & (
the_Edges_of G)
=
{} ;
then (
the_Edges_of G1)
=
{} & (
the_Edges_of G2)
=
{} by
Lm11;
hence thesis;
end;
end;
A9: (
dom f)
= ((
dom f1)
\/ (
dom (
id (
the_Edges_of G)))) by
FUNCT_4:def 1
.= (
the_Edges_of G1) by
A5,
A6,
XBOOLE_1: 12;
A10: (
rng (
id (
the_Edges_of G)))
c= (
the_Edges_of G2) by
GLIB_006:def 9;
A11: ((
rng f1)
\/ (
rng (
id (
the_Edges_of G))))
c= (
the_Edges_of G2) by
A10,
XBOOLE_1: 8;
(
rng f)
c= ((
rng f1)
\/ (
rng (
id (
the_Edges_of G)))) by
FUNCT_4: 17;
then
reconsider f as
Function of (
the_Edges_of G1), (
the_Edges_of G2) by
A9,
FUNCT_2: 2,
A11,
XBOOLE_1: 1;
take f;
thus (f
| (
the_Edges_of G))
= (f
| (
dom (
id (
the_Edges_of G))))
.= (
id (
the_Edges_of G));
consider E1 be
set such that (
card V)
= (
card E1) and
A12: E1
misses (
the_Edges_of G) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E1) and
A13: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E1 & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
consider E2 be
set such that (
card V)
= (
card E2) and
A14: E2
misses (
the_Edges_of G) & (
the_Edges_of G2)
= ((
the_Edges_of G)
\/ E2) and
A15: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E2 & e1
Joins (v1,v,G2) & for e2 be
object st e2
Joins (v1,v,G2) holds e1
= e2 by
A1,
Def4;
for e1,e2 be
object st e1
in (
dom f) & e2
in (
dom f) & (f
. e1)
= (f
. e2) holds e1
= e2
proof
let e1,e2 be
object;
assume that
A16: e1
in (
dom f) & e2
in (
dom f) and
A17: (f
. e1)
= (f
. e2);
set x1 = ((
the_Source_of G1)
. e1), y1 = ((
the_Target_of G1)
. e1);
set x2 = ((
the_Source_of G1)
. e2), y2 = ((
the_Target_of G1)
. e2);
A18: e1
in (
the_Edges_of G1) & e2
in (
the_Edges_of G1) by
A16;
per cases ;
suppose
A19: e1
in (
the_Edges_of G) & e2
in (
the_Edges_of G);
then e1
in (
dom (
id (
the_Edges_of G))) & e2
in (
dom (
id (
the_Edges_of G)));
then (f
. e1)
= ((
id (
the_Edges_of G))
. e1) & (f
. e2)
= ((
id (
the_Edges_of G))
. e2) by
FUNCT_4: 13;
then (f
. e1)
= e1 & (f
. e2)
= e2 by
A19,
FUNCT_1: 18;
hence thesis by
A17;
end;
suppose
A20: not e1
in (
the_Edges_of G) & e2
in (
the_Edges_of G);
then not e1
in (
dom (
id (
the_Edges_of G))) & e2
in (
dom (
id (
the_Edges_of G)));
then
A21: (f
. e1)
= (f1
. e1) & (f
. e2)
= ((
id (
the_Edges_of G))
. e2) by
FUNCT_4: 11,
FUNCT_4: 13;
A22: e1
Joins (x1,y1,G1) by
A18,
GLIB_000:def 13;
then
A23: not x1
in (
the_Vertices_of G) or not y1
in (
the_Vertices_of G) by
A1,
A12,
A20,
Th51;
e2
Joins (x2,y2,G1) by
A18,
GLIB_000:def 13;
then
A24: e2
Joins (x2,y2,G) by
A20,
GLIB_006: 72;
then
A25: x2
in (
the_Vertices_of G) & y2
in (
the_Vertices_of G) by
GLIB_000: 13;
A26: (f
. e1)
Joins (x1,y1,G2) by
A21,
A18,
A22,
A4;
A27: e2
Joins (x2,y2,G2) by
A24,
GLIB_006: 70;
(f
. e2)
= e2 by
A20,
A21,
FUNCT_1: 18;
hence thesis by
A23,
A25,
A26,
GLIB_000: 15,
A17,
A27;
end;
suppose
A28: not e2
in (
the_Edges_of G) & e1
in (
the_Edges_of G);
then not e2
in (
dom (
id (
the_Edges_of G))) & e1
in (
dom (
id (
the_Edges_of G)));
then
A29: (f
. e2)
= (f1
. e2) & (f
. e1)
= ((
id (
the_Edges_of G))
. e1) by
FUNCT_4: 11,
FUNCT_4: 13;
A30: e2
Joins (x2,y2,G1) by
A18,
GLIB_000:def 13;
then e2
in E1 & ((x2
= v & y2
in V) or (y2
= v & x2
in V)) by
A1,
A12,
A28,
Th51;
then
A31: not x2
in (
the_Vertices_of G) or not y2
in (
the_Vertices_of G) by
A1;
e1
Joins (x1,y1,G1) by
A18,
GLIB_000:def 13;
then
A32: e1
Joins (x1,y1,G) by
A28,
GLIB_006: 72;
then
A33: x1
in (
the_Vertices_of G) & y1
in (
the_Vertices_of G) by
GLIB_000: 13;
A34: (f
. e2)
Joins (x2,y2,G2) by
A29,
A18,
A30,
A4;
A35: e1
Joins (x1,y1,G2) by
A32,
GLIB_006: 70;
(f
. e1)
= e1 by
A28,
A29,
FUNCT_1: 18;
then (f
. e2)
Joins (x1,y1,G2) by
A17,
A35;
hence thesis by
A31,
A33,
A34,
GLIB_000: 15;
end;
suppose
A36: not e1
in (
the_Edges_of G) & not e2
in (
the_Edges_of G);
then not e1
in (
dom (
id (
the_Edges_of G))) & not e2
in (
dom (
id (
the_Edges_of G)));
then
A37: (f
. e1)
= (f1
. e1) & (f
. e2)
= (f1
. e2) by
FUNCT_4: 11;
A38: e1
Joins (x1,y1,G1) by
A18,
GLIB_000:def 13;
then
A39: e1
in E1 & ((x1
= v & y1
in V) or (y1
= v & x1
in V)) by
A1,
A12,
A36,
Th51;
A40: e2
Joins (x2,y2,G1) by
A18,
GLIB_000:def 13;
A41: (f
. e1)
Joins (x1,y1,G2) by
A18,
A38,
A37,
A4;
(f
. e2)
Joins (x2,y2,G2) by
A18,
A40,
A37,
A4;
per cases by
A17,
A41,
GLIB_000: 15;
suppose
A42: x1
= x2 & y1
= y2;
per cases by
A39;
suppose
A43: x1
= v & y1
in V;
then
consider e be
object such that e
in E1 & e
Joins (y1,v,G1) and
A44: for e3 be
object st e3
Joins (y1,v,G1) holds e
= e3 by
A13;
e1
= e by
A44,
A38,
A43,
GLIB_000: 14;
hence thesis by
A44,
A40,
A42,
A43,
GLIB_000: 14;
end;
suppose
A46: y1
= v & x1
in V;
then
consider e be
object such that e
in E1 & e
Joins (x1,v,G1) and
A47: for e3 be
object st e3
Joins (x1,v,G1) holds e
= e3 by
A13;
e1
Joins (x1,v,G1) by
A38,
A46;
then e1
= e by
A47;
hence thesis by
A47,
A40,
A42,
A46;
end;
end;
suppose
A49: x1
= y2 & y1
= x2;
per cases by
A39;
suppose
A50: x1
= v & y1
in V;
then
consider e be
object such that e
in E1 & e
Joins (y1,v,G1) and
A51: for e3 be
object st e3
Joins (y1,v,G1) holds e
= e3 by
A13;
e1
= e by
A51,
A38,
A50,
GLIB_000: 14;
hence thesis by
A51,
A40,
A49,
A50;
end;
suppose
A53: y1
= v & x1
in V;
then
consider e be
object such that e
in E1 & e
Joins (x1,v,G1) and
A54: for e3 be
object st e3
Joins (x1,v,G1) holds e
= e3 by
A13;
e1
Joins (x1,v,G1) by
A38,
A53;
then
A55: e1
= e by
A54;
e2
Joins (x1,v,G1) by
A40,
A49,
A53,
GLIB_000: 14;
hence thesis by
A54,
A55;
end;
end;
end;
end;
hence f is
one-to-one by
FUNCT_1:def 4;
for e be
object holds e
in (
the_Edges_of G2) implies e
in (
rng f)
proof
let e be
object;
assume
A56: e
in (
the_Edges_of G2);
per cases ;
suppose
A57: e
in (
the_Edges_of G);
then e
in (
dom (
id (
the_Edges_of G)));
then
A58: (f
. e)
= ((
id (
the_Edges_of G))
. e) by
FUNCT_4: 13
.= e by
A57,
FUNCT_1: 18;
(
the_Edges_of G)
c= (
the_Edges_of G1) by
GLIB_006:def 9;
hence thesis by
A58,
FUNCT_1:def 3,
A9,
A57;
end;
suppose
A59: not e
in (
the_Edges_of G);
set v1 = ((
the_Source_of G2)
. e), v2 = ((
the_Target_of G2)
. e);
A60: e
Joins (v1,v2,G2) by
A56,
GLIB_000:def 13;
per cases by
A1,
A14,
A59,
Th51;
suppose
A61: v1
= v & v2
in V;
then
consider e1 be
object such that
A62: e1
in E1 & e1
Joins (v2,v,G1) and for e2 be
object st e2
Joins (v2,v,G1) holds e1
= e2 by
A13;
A63: e1
in (
the_Edges_of G1) by
A62,
GLIB_000:def 13;
then
A64: (f1
. e1)
Joins (v2,v,G2) by
A62,
A4;
(E1
/\ (
the_Edges_of G))
=
{} by
A12,
XBOOLE_0:def 7;
then not e1
in (
dom (
id (
the_Edges_of G))) by
A62,
Lm7;
then
A65: (f
. e1)
Joins (v2,v,G2) by
A64,
FUNCT_4: 11;
consider e3 be
object such that e3
in E2 & e3
Joins (v2,v,G2) and
A66: for e2 be
object st e2
Joins (v2,v,G2) holds e3
= e2 by
A15,
A61;
(f
. e1)
= e3 by
A65,
A66;
then (f
. e1)
= e by
A66,
A61,
A60,
GLIB_000: 14;
hence e
in (
rng f) by
A63,
A9,
FUNCT_1:def 3;
end;
suppose
A68: v2
= v & v1
in V;
then
consider e1 be
object such that
A69: e1
in E1 & e1
Joins (v1,v,G1) and for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A13;
A70: e1
in (
the_Edges_of G1) by
A69,
GLIB_000:def 13;
then
A71: (f1
. e1)
Joins (v1,v,G2) by
A69,
A4;
(E1
/\ (
the_Edges_of G))
=
{} by
A12,
XBOOLE_0:def 7;
then not e1
in (
dom (
id (
the_Edges_of G))) by
A69,
Lm7;
then
A72: (f
. e1)
Joins (v1,v,G2) by
A71,
FUNCT_4: 11;
consider e3 be
object such that e3
in E2 & e3
Joins (v1,v,G2) and
A73: for e2 be
object st e2
Joins (v1,v,G2) holds e3
= e2 by
A15,
A68;
(f
. e1)
= e3 by
A72,
A73;
then (f
. e1)
= e by
A73,
A68,
A60;
hence e
in (
rng f) by
A70,
A9,
FUNCT_1:def 3;
end;
end;
end;
then (
the_Edges_of G2)
c= (
rng f) by
TARSKI:def 3;
hence f is
onto by
FUNCT_2:def 3,
XBOOLE_0:def 10;
let v1,e,v2 be
object;
assume
A75: e
Joins (v1,v2,G1);
per cases ;
suppose
A76: e
in (
the_Edges_of G);
then e
in (
dom (
id (
the_Edges_of G)));
then
A77: (f
. e)
= ((
id (
the_Edges_of G))
. e) by
FUNCT_4: 13
.= e by
A76,
FUNCT_1: 18;
reconsider w1 = v1, w2 = v2 as
set by
TARSKI: 1;
e
Joins (w1,w2,G) by
A75,
A76,
GLIB_006: 72;
hence thesis by
A77,
GLIB_006: 70;
end;
suppose not e
in (
the_Edges_of G);
then not e
in (
dom (
id (
the_Edges_of G)));
then
A78: (f
. e)
= (f1
. e) by
FUNCT_4: 11;
e
in (
the_Edges_of G1) by
A75,
GLIB_000:def 13;
hence thesis by
A78,
A75,
A4;
end;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then
A79: G1
== G & G2
== G by
Def4;
then
A80: (
the_Edges_of G1)
= (
the_Edges_of G) & (
the_Edges_of G2)
= (
the_Edges_of G) by
GLIB_000:def 34;
set f = (
id (
the_Edges_of G));
reconsider f as
Function of (
the_Edges_of G1), (
the_Edges_of G2) by
A80;
take f;
thus (f
| (
the_Edges_of G))
= (
id (
the_Edges_of G));
thus f is
one-to-one
onto by
A80;
let v1,e,v2 be
object;
assume
A81: e
Joins (v1,v2,G1);
G1
== G2 by
A79,
GLIB_000: 85;
then
A82: e
Joins (v1,v2,G2) by
A81,
GLIB_000: 88;
e
in (
the_Edges_of G1) by
A81,
GLIB_000:def 13;
hence thesis by
A80,
A82,
FUNCT_1: 18;
end;
end;
registration
let G be
loopless
_Graph;
let v, V;
cluster ->
loopless for
addAdjVertexAll of G, v, V;
coherence
proof
let G1 be
addAdjVertexAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
not ex e be
object st e
in (
the_Edges_of G1) & ((
the_Source_of G1)
. e)
= ((
the_Target_of G1)
. e)
proof
given e be
object such that
A2: e
in (
the_Edges_of G1) and
A3: ((
the_Source_of G1)
. e)
= ((
the_Target_of G1)
. e);
per cases ;
suppose ((
the_Source_of G1)
. e)
= v;
then e
Joins (v,v,G1) by
A2,
A3,
GLIB_000:def 13;
hence contradiction by
A1,
Def4;
end;
suppose
A4: ((
the_Source_of G1)
. e)
<> v;
e
DJoins (((
the_Source_of G1)
. e),((
the_Target_of G1)
. e),G1) by
A2,
GLIB_000:def 14;
then e
DJoins (((
the_Source_of G1)
. e),((
the_Source_of G1)
. e),G) by
A3,
A1,
A4,
Def4;
then e
Joins (((
the_Source_of G1)
. e),((
the_Source_of G1)
. e),G) by
GLIB_000: 16;
hence contradiction by
GLIB_000: 18;
end;
end;
hence G1 is
loopless by
GLIB_000:def 18;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def4;
hence thesis by
GLIB_000: 89;
end;
end;
end
registration
let G be
non-Dmulti
_Graph;
let v, V;
cluster ->
non-Dmulti for
addAdjVertexAll of G, v, V;
coherence
proof
let G1 be
addAdjVertexAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
for e1,e2,v1,v2 be
object holds e1
DJoins (v1,v2,G1) & e2
DJoins (v1,v2,G1) implies e1
= e2
proof
let e1,e2,v1,v2 be
object;
assume
A2: e1
DJoins (v1,v2,G1) & e2
DJoins (v1,v2,G1);
then
A3: e1
Joins (v1,v2,G1) & e2
Joins (v1,v2,G1) by
GLIB_000: 16;
consider E be
set such that (
card V)
= (
card E) & E
misses (
the_Edges_of G) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) and
A4: for v1 be
object st v1
in V holds ex e be
object st e
in E & e
Joins (v1,v,G1) & for e3 be
object st e3
Joins (v1,v,G1) holds e
= e3 by
A1,
Def4;
per cases ;
suppose v1
= v & v2
= v;
hence thesis by
A1,
A3,
Def4;
end;
suppose
A5: v1
= v & v2
<> v;
per cases ;
suppose v2
in V;
then
consider e be
object such that e
in E & e
Joins (v2,v,G1) and
A6: for e3 be
object st e3
Joins (v2,v,G1) holds e
= e3 by
A4;
e1
= e & e2
= e by
A6,
A5,
A3,
GLIB_000: 14;
hence thesis;
end;
suppose not v2
in V;
then not e1
Joins (v2,v,G1) by
A1,
Def4;
hence thesis by
A5,
A3,
GLIB_000: 14;
end;
end;
suppose
A7: v1
<> v & v2
= v;
per cases ;
suppose v1
in V;
then
consider e be
object such that e
in E & e
Joins (v1,v,G1) and
A8: for e3 be
object st e3
Joins (v1,v,G1) holds e
= e3 by
A4;
e1
Joins (v1,v,G1) & e2
Joins (v1,v,G1) by
A7,
A3;
then e1
= e & e2
= e by
A8;
hence thesis;
end;
suppose not v1
in V;
hence thesis by
A7,
A3,
A1,
Def4;
end;
end;
suppose v1
<> v & v2
<> v;
then e1
DJoins (v1,v2,G) & e2
DJoins (v1,v2,G) by
A1,
A2,
Def4;
hence thesis by
GLIB_000:def 21;
end;
end;
hence G1 is
non-Dmulti by
GLIB_000:def 21;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def4;
hence thesis by
GLIB_000: 89;
end;
end;
end
registration
let G be
non-multi
_Graph;
let v, V;
cluster ->
non-multi for
addAdjVertexAll of G, v, V;
coherence
proof
let G1 be
addAdjVertexAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
for e1,e2,v1,v2 be
object holds e1
Joins (v1,v2,G1) & e2
Joins (v1,v2,G1) implies e1
= e2
proof
let e1,e2,v1,v2 be
object;
assume
A2: e1
Joins (v1,v2,G1) & e2
Joins (v1,v2,G1);
consider E be
set such that (
card V)
= (
card E) & E
misses (
the_Edges_of G) & (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) and
A3: for v1 be
object st v1
in V holds ex e be
object st e
in E & e
Joins (v1,v,G1) & for e3 be
object st e3
Joins (v1,v,G1) holds e
= e3 by
A1,
Def4;
per cases ;
suppose v1
= v & v2
= v;
hence thesis by
A1,
A2,
Def4;
end;
suppose
A4: v1
= v & v2
<> v;
per cases ;
suppose v2
in V;
then
consider e be
object such that e
in E & e
Joins (v2,v,G1) and
A5: for e3 be
object st e3
Joins (v2,v,G1) holds e
= e3 by
A3;
e1
= e & e2
= e by
A5,
A2,
A4,
GLIB_000: 14;
hence thesis;
end;
suppose not v2
in V;
then not e1
Joins (v2,v,G1) by
A1,
Def4;
hence thesis by
A2,
A4,
GLIB_000: 14;
end;
end;
suppose
A6: v1
<> v & v2
= v;
per cases ;
suppose v1
in V;
then
consider e be
object such that e
in E & e
Joins (v1,v,G1) and
A7: for e3 be
object st e3
Joins (v1,v,G1) holds e
= e3 by
A3;
e1
= e & e2
= e by
A7,
A2,
A6;
hence thesis;
end;
suppose not v1
in V;
hence thesis by
A2,
A6,
A1,
Def4;
end;
end;
suppose v1
<> v & v2
<> v;
then e1
Joins (v1,v2,G) & e2
Joins (v1,v2,G) by
A1,
A2,
Th49;
hence thesis by
GLIB_000:def 20;
end;
end;
hence G1 is
non-multi by
GLIB_000:def 20;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def4;
hence thesis by
GLIB_000: 89;
end;
end;
end
registration
let G be
Dsimple
_Graph;
let v, V;
cluster ->
Dsimple for
addAdjVertexAll of G, v, V;
coherence ;
end
registration
let G be
simple
_Graph;
let v, V;
cluster ->
simple for
addAdjVertexAll of G, v, V;
coherence ;
end
theorem ::
GLIB_007:69
Th69: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V, W be
Walk of G1 holds for v1,v2 be
Vertex of G2 st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & (W
.first() )
= v1 & (W
.last() )
= v2 & not v2
in (G2
.reachableFrom v1) holds v
in (W
.vertices() )
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
let W be
Walk of G1, v1,v2 be
Vertex of G2;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: (W
.first() )
= v1 & (W
.last() )
= v2 & not v2
in (G2
.reachableFrom v1);
assume not v
in (W
.vertices() );
then
reconsider W2 = W as
Walk of G2 by
A1,
Th64;
(W2
.first() )
= v1 & (W2
.last() )
= v2 by
A2,
GLIB_001: 16;
then W2
is_Walk_from (v1,v2) by
GLIB_001:def 23;
hence contradiction by
A2,
GLIB_002:def 5;
end;
Lm14: for k be
odd
Element of
NAT holds ((k
-' 1)
+ 1)
= k & for n be
Element of
NAT holds k
<= n implies (k
-' 1)
< n
proof
let k be
odd
Element of
NAT ;
thus ((k
-' 1)
+ 1)
= k by
ABIAN: 12,
XREAL_1: 235;
let n be
Element of
NAT ;
A1: (k
-' 1)
< k by
ABIAN: 12,
XREAL_1: 237;
assume k
<= n;
hence thesis by
A1,
XXREAL_0: 2;
end;
Lm15: for k,n be
odd
Element of
NAT holds (n
+ (k
-' 1)) is
odd
Element of
NAT
proof
let k,n be
odd
Element of
NAT ;
consider i be
Nat such that
A1: k
= ((2
* i)
+ 1) by
ABIAN: 9;
consider j be
Nat such that
A2: n
= ((2
* j)
+ 1) by
ABIAN: 9;
(n
+ (k
-' 1))
= (((2
* j)
+ 1)
+ (2
* i)) by
A1,
A2,
NAT_D: 34
.= ((2
* (j
+ i))
+ 1);
hence thesis;
end;
Lm16: 1 is
odd
Element of
NAT & 3 is
odd
Element of
NAT by
POLYFORM: 4,
POLYFORM: 6;
theorem ::
GLIB_007:70
for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & G2 is
acyclic & for G3 be
Component of G2, w1,w2 be
Vertex of G3 st w1
in V & w2
in V holds w1
= w2 holds G1 is
acyclic
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: G2 is
acyclic and
A3: for G3 be
Component of G2, w1,w2 be
Vertex of G3 st w1
in V & w2
in V holds w1
= w2;
consider E be
set such that (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A4: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
not ex W be
Walk of G1 st W is
Cycle-like
proof
given C be
Walk of G1 such that
A5: C is
Cycle-like;
A6: C is
closed & C is
Path-like by
A5;
set v1 = (C
.first() );
A7: v1
= (C
.last() ) by
A6,
GLIB_001:def 24;
per cases ;
suppose
A8: v1
<> v;
then
A9: not v1
in
{v} by
TARSKI:def 1;
A10: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
then
reconsider v1 as
Vertex of G2 by
A9,
XBOOLE_0:def 3;
set G3 = the
inducedSubgraph of G2, (G2
.reachableFrom v1);
per cases ;
suppose (C
.vertices() )
c= (G2
.reachableFrom v1);
then
A11: (C
.vertices() )
c= (
the_Vertices_of G2) by
XBOOLE_1: 1;
then
A12: (C
.edges() )
c= (
the_Edges_of G2) by
Th65;
G2 is
Subgraph of G1 by
GLIB_006: 57;
then
reconsider C2 = C as
Walk of G2 by
A11,
A12,
GLIB_001: 170;
C2 is
Cycle-like by
A5,
GLIB_006: 24;
hence contradiction by
A2,
GLIB_002:def 2;
end;
suppose not (C
.vertices() )
c= (G2
.reachableFrom v1);
then
consider v2 be
object such that
A13: v2
in (C
.vertices() ) & not v2
in (G2
.reachableFrom v1) by
TARSKI:def 3;
reconsider v2 as
Vertex of G1 by
A13;
consider n be
odd
Element of
NAT such that
A14: n
<= (
len C) and
A15: (C
. n)
= v2 by
A13,
GLIB_001: 87;
A16: 1
< n & n
< (
len C)
proof
thus 1
< n
proof
assume
A17: 1
>= n;
1
<= n by
ABIAN: 12;
then n
= 1 by
A17,
XXREAL_0: 1;
then v2
= v1 by
A15,
GLIB_001:def 6;
hence contradiction by
A13,
GLIB_002: 9;
end;
assume n
>= (
len C);
then n
= (
len C) by
A14,
XXREAL_0: 1;
then v2
= v1 by
A7,
A15,
GLIB_001:def 7;
hence contradiction by
A13,
GLIB_002: 9;
end;
per cases ;
suppose
A18: v2
<> v;
then not v2
in
{v} by
TARSKI:def 1;
then
reconsider v2 as
Vertex of G2 by
A10,
XBOOLE_0:def 3;
set P1 = (C
.cut (1,n));
set P2 = (C
.cut (n,(
len C)));
A19: 1 is
odd
Element of
NAT by
Lm16;
A20: 1
<= n & n
<= (
len C) by
ABIAN: 12,
A14;
A21: n
<= (
len C) & (
len C)
<= (
len C) by
A14;
A22: ((
len P1)
+ 1)
= (n
+ 1) by
A20,
A19,
GLIB_001: 36;
A23: ((
len P2)
+ n)
= ((
len C)
+ 1) by
A21,
GLIB_001: 36;
not v
in (P1
.vertices() ) or not v
in (P2
.vertices() )
proof
assume v
in (P1
.vertices() );
then
consider m be
odd
Element of
NAT such that
A24: m
<= (
len P1) & (P1
. m)
= v by
GLIB_001: 87;
reconsider m1 = (m
-' 1) as
Element of
NAT ;
A25: (m1
+ 1)
= m by
Lm14;
m1
< (
len P1) by
A24,
Lm14;
then
A26: (C
. (1
+ m1))
= v by
A19,
A20,
A24,
A25,
GLIB_001: 36;
assume v
in (P2
.vertices() );
then
consider k be
odd
Element of
NAT such that
A27: k
<= (
len P2) & (P2
. k)
= v by
GLIB_001: 87;
A28: k
< (
len P2)
proof
assume k
>= (
len P2);
then
A29: k
= (
len P2) by
A27,
XXREAL_0: 1;
v1
= (C
. (
len C)) by
A7,
GLIB_001:def 7
.= ((C
.cut (n,(
len C)))
.last() ) by
A21,
GLIB_001: 37
.= v by
A27,
A29,
GLIB_001:def 7;
hence contradiction by
A8;
end;
reconsider k1 = (k
-' 1) as
Element of
NAT ;
A30: (k1
+ 1)
= k by
Lm14;
k1
< (
len P2) by
A27,
Lm14;
then (C
. (n
+ k1))
= v by
A21,
A27,
A30,
GLIB_001: 36;
then
A31: (C
. m)
= (C
. (n
+ k1)) by
A25,
A26;
reconsider nk = (n
+ k1) as
odd
Element of
NAT by
Lm15;
A32: 1
<= k1
proof
A33: 1
<= k by
ABIAN: 12;
1
< k
proof
assume 1
>= k;
then k
= 1 by
A33,
XXREAL_0: 1;
then
A34: (P2
.first() )
= v by
A27,
GLIB_001:def 6;
(P2
.first() )
= v2 by
A15,
A21,
GLIB_001: 37;
hence contradiction by
A34,
A18;
end;
hence thesis by
NAT_D: 49;
end;
m
< ((
len P1)
+ 1) by
A24,
NAT_1: 13;
then
A35: m
< (n
+ 1) by
A22;
(n
+ 1)
<= (n
+ k1) by
A32,
XREAL_1: 6;
then
A36: m
< nk by
A35,
XXREAL_0: 2;
A37: 1
<= k by
ABIAN: 12;
(k
+ n)
<= ((
len C)
+ 1) by
A27,
A23,
XREAL_1: 6;
then ((k
+ n)
- 1)
<= (((
len C)
+ 1)
- 1) by
XREAL_1: 9;
then (n
+ (k
- 1))
<= (
len C);
then (n
+ k1)
<= (
len C) by
A37,
XREAL_1: 233;
then m
= 1 & nk
= (
len C) by
A6,
A31,
GLIB_001:def 28,
A36;
hence contradiction by
A28,
A30,
A23;
end;
per cases ;
suppose not v
in (P1
.vertices() );
then
reconsider P3 = P1 as
Walk of G2 by
A1,
Th64;
P1
is_Walk_from ((C
. 1),(C
. n)) by
A20,
A19,
GLIB_001: 37;
then P1
is_Walk_from (v1,v2) by
A15,
GLIB_001:def 6;
then P3
is_Walk_from (v1,v2) by
GLIB_001: 19;
then v2
in (G2
.reachableFrom v1) by
GLIB_002:def 5;
hence contradiction by
A13;
end;
suppose not v
in (P2
.vertices() );
then
reconsider P3 = P2 as
Walk of G2 by
A1,
Th64;
P2
is_Walk_from ((C
. n),(C
. (
len C))) by
A21,
GLIB_001: 37;
then P2
is_Walk_from (v2,v1) by
A15,
A7,
GLIB_001:def 7;
then P3
is_Walk_from (v2,v1) by
GLIB_001: 19;
then (P3
.reverse() )
is_Walk_from (v1,v2) by
GLIB_001: 23;
hence contradiction by
A13,
GLIB_002:def 5;
end;
end;
suppose
A38: v2
= v;
reconsider m = (n
- 2) as
odd
Element of
NAT by
A16,
Lm13;
set P1 = (C
.cut (1,m));
set P2 = (C
.cut ((n
+ 2),(
len C)));
(n
- 2)
<= ((
len C)
-
0 ) by
A14,
XREAL_1: 13;
then
A39: 1
<= m & m
<= (
len C) by
ABIAN: 12;
A40: (n
+ 2)
<= (
len C) & (
len C)
<= (
len C) by
A16,
GLIB_001: 1;
A41: ((
len P1)
+ 1)
= (m
+ 1) by
A39,
Lm16,
GLIB_001: 36;
A42: ((
len P2)
+ (n
+ 2))
= ((
len C)
+ 1) by
A40,
GLIB_001: 36;
A43: not v
in (P1
.vertices() ) & not v
in (P2
.vertices() )
proof
assume v
in (P1
.vertices() ) or v
in (P2
.vertices() );
per cases ;
suppose v
in (P1
.vertices() );
then
consider k be
odd
Element of
NAT such that
A44: k
<= (
len P1) & (P1
. k)
= v by
GLIB_001: 87;
reconsider k1 = (k
-' 1) as
Element of
NAT ;
k1
< (
len P1) by
A44,
Lm14;
then (P1
. (k1
+ 1))
= (C
. (1
+ k1)) by
A39,
Lm16,
GLIB_001: 36;
then (P1
. k)
= (C
. (k1
+ 1)) by
Lm14;
then (P1
. k)
= (C
. k) by
Lm14;
then
A45: (C
. k)
= (C
. n) by
A38,
A15,
A44;
(n
- 2)
< (n
-
0 ) by
XREAL_1: 15;
then
A46: m
< n;
k
<= m by
A44,
A41;
then k
< n & n
<= (
len C) by
A14,
A46,
XXREAL_0: 2;
then n
= (
len C) by
A5,
A45,
GLIB_001:def 28;
hence contradiction by
A16;
end;
suppose v
in (P2
.vertices() );
then
consider k be
odd
Element of
NAT such that
A47: k
<= (
len P2) & (P2
. k)
= v by
GLIB_001: 87;
reconsider k1 = (k
-' 1) as
Element of
NAT ;
k1
< (
len P2) by
A47,
Lm14;
then (P2
. (k1
+ 1))
= (C
. ((n
+ 2)
+ k1)) by
A40,
GLIB_001: 36;
then (P2
. k)
= (C
. ((n
+ (k1
+ 1))
+ 1)) by
Lm14;
then
A48: (P2
. k)
= (C
. ((n
+ k)
+ 1)) by
Lm14;
reconsider nk = ((n
+ k)
+ 1) as
odd
Element of
NAT ;
A49: (C
. nk)
= (C
. n) by
A38,
A15,
A47,
A48;
n
< nk & nk
<= (
len C)
proof
n
< (n
+ 1) by
NAT_1: 13;
then (n
+
0 )
< ((n
+ 1)
+ k) by
XREAL_1: 8;
hence n
< nk;
((
len P2)
+ (n
+ 1))
= (
len C) by
A42;
then (k
+ (n
+ 1))
<= (
len C) by
A47,
XREAL_1: 6;
hence thesis;
end;
then n
= 1 by
A49,
A5,
GLIB_001:def 28;
hence contradiction by
A16;
end;
end;
then
reconsider P1, P2 as
Walk of G2 by
A1,
Th64;
set w1 = (C
. m), w2 = (C
. (n
+ 2));
set e1 = (C
. (m
+ 1)), e2 = (C
. (n
+ 1));
(n
- 2)
< ((
len C)
-
0 ) by
A14,
XREAL_1: 15;
then e1
Joins (w1,(C
. (m
+ 2)),G1) & e2
Joins ((C
. n),w2,G1) by
GLIB_001:def 3,
A16;
then
A50: e1
Joins (w1,v,G1) & e2
Joins (w2,v,G1) by
A38,
GLIB_000: 14,
A15;
then
A51: w1
in V & w2
in V by
A1,
Def4;
then
reconsider w1, w2 as
Vertex of G2 by
A1;
((C
.cut (1,m))
.first() )
= (C
. 1) & ((C
.cut (1,m))
.last() )
= (C
. m) by
A39,
Lm16,
GLIB_001: 37;
then
A52: ((C
.cut (1,m))
.first() )
= v1 & ((C
.cut (1,m))
.last() )
= w1 by
GLIB_001:def 6;
((C
.cut ((n
+ 2),(
len C)))
.first() )
= w2 & ((C
.cut ((n
+ 2),(
len C)))
.last() )
= (C
. (
len C)) by
A40,
GLIB_001: 37;
then ((C
.cut ((n
+ 2),(
len C)))
.first() )
= w2 & ((C
.cut ((n
+ 2),(
len C)))
.last() )
= v1 by
A7,
GLIB_001:def 7;
then
A53: (((C
.cut ((n
+ 2),(
len C)))
.reverse() )
.first() )
= v1 & (((C
.cut ((n
+ 2),(
len C)))
.reverse() )
.last() )
= w2 by
GLIB_001: 22;
w1
in (G2
.reachableFrom v1) by
A1,
A43,
A52,
Th69;
then
reconsider w1 as
Vertex of G3 by
GLIB_000:def 37;
w2
in (G2
.reachableFrom v1)
proof
assume not w2
in (G2
.reachableFrom v1);
then v
in (((C
.cut ((n
+ 2),(
len C)))
.reverse() )
.vertices() ) by
A1,
A53,
Th69;
then v
in ((C
.cut ((n
+ 2),(
len C)))
.vertices() ) by
GLIB_001: 92;
hence contradiction by
A43;
end;
then
reconsider w2 as
Vertex of G3 by
GLIB_000:def 37;
A54: w1
= w2 by
A51,
A3;
consider e3 be
object such that e3
in E & e3
Joins (w1,v,G1) and
A55: for e5 be
object st e5
Joins (w1,v,G1) holds e5
= e3 by
A4,
A51;
e1
= e3 & e2
= e3 by
A54,
A50,
A55;
then
A56: (C
. (n
- 1))
= (C
. (n
+ 1));
reconsider n2 = (m
+ 1) as
even
Element of
NAT ;
(n
+ (
- 1))
< (n
+ 1) by
XREAL_1: 8;
then
A57: n2
< (n
+ 1);
A58: (1
+
0 )
<= (m
+ 1) by
XREAL_1: 7;
((n
+ 2)
- 1)
<= ((
len C)
-
0 ) by
A40,
XREAL_1: 13;
then 1
<= n2 & n2
< (n
+ 1) & (n
+ 1)
<= (
len C) by
A57,
A58;
then (C
. n2)
<> (C
. (n
+ 1)) by
A6,
GLIB_001: 138;
hence contradiction by
A56;
end;
end;
end;
suppose
A59: v1
= v;
A60: (
len C)
>= 5
proof
assume (
len C)
< 5;
then (
len C)
< (4
+ 1);
then (
len C)
<= 4 by
NAT_1: 13;
then
A61: (
len C)
= 3 by
A5,
GLIB_001: 126,
CHORD: 7;
then 1
< (
len C);
then (C
. (1
+ 1))
Joins ((C
. 1),(C
. (1
+ 2)),G1) by
Lm16,
GLIB_001:def 3;
then (C
. 2)
Joins ((C
.first() ),(C
. (
len C)),G1) by
A61,
GLIB_001:def 6;
then (C
. 2)
Joins ((C
.first() ),(C
.last() ),G1) by
GLIB_001:def 7;
then (C
. 2)
Joins (v,v,G1) by
A59,
A7;
hence contradiction by
A1,
Def4;
end;
A62: 1
< (
len C)
proof
assume
A63: 1
>= (
len C);
1
<= (
len C) by
ABIAN: 12;
then (
len C)
= 1 by
A63,
XXREAL_0: 1;
hence contradiction by
A60;
end;
then
reconsider m = ((
len C)
- 2) as
odd
Element of
NAT by
Lm13;
((
len C)
- 2)
< ((
len C)
-
0 ) by
XREAL_1: 15;
then
A64: m
< (
len C);
set w1 = (C
. 3), w2 = (C
. m);
set e1 = (C
. 2), e2 = (C
. (m
+ 1));
set P = (C
.cut (3,m));
A65: 3 is
odd
Element of
NAT by
Lm16;
A66: ((
len C)
- 2)
<= ((
len C)
-
0 ) by
XREAL_1: 13;
(5
- 2)
<= ((
len C)
- 2) by
A60,
XREAL_1: 9;
then
A67: 3
<= m & m
<= (
len C) by
A66;
then ((
len P)
+ 3)
= (((
len C)
- 2)
+ 1) by
A65,
GLIB_001: 36;
then
A68: ((
len P)
+ 4)
= (
len C);
not v
in (P
.vertices() )
proof
assume v
in (P
.vertices() );
then
consider k be
odd
Element of
NAT such that
A69: k
<= (
len P) & (P
. k)
= v by
GLIB_001: 87;
reconsider k1 = (k
-' 1) as
Element of
NAT ;
A70: (k1
+ 1)
= k by
Lm14;
k1
< (
len P) by
A69,
Lm14;
then (P
. (k1
+ 1))
= (C
. (3
+ k1)) by
A67,
A65,
GLIB_001: 36;
then
A71: (C
. (3
+ k1))
= (C
. (
len C)) by
A7,
A59,
A69,
A70,
GLIB_001:def 7;
reconsider k3 = (3
+ k1) as
odd
Element of
NAT by
Lm15,
Lm16;
((
len P)
+ 2)
= ((
len C)
- 2) by
A68;
then
A72: ((
len P)
+ 2)
< ((
len C)
-
0 ) by
XREAL_1: 15;
k3
= ((k1
+ 1)
+ 2);
then k3
= (k
+ 2) by
Lm14;
then k3
<= ((
len P)
+ 2) by
A69,
XREAL_1: 6;
then k3
< (
len C) by
A72,
XXREAL_0: 2;
then
A73: k3
= 1 by
A71,
A6,
GLIB_001:def 28;
3
<= k3 by
NAT_1: 11;
hence contradiction by
A73;
end;
then
reconsider P as
Walk of G2 by
A1,
Th64;
(C
. (1
+ 1))
Joins ((C
. 1),(C
. (1
+ 2)),G1) & (C
. (m
+ 1))
Joins ((C
. m),(C
. (m
+ 2)),G1) by
A62,
A64,
Lm16,
GLIB_001:def 3;
then e1
Joins (v1,w1,G1) & e2
Joins (w2,(C
. (
len C)),G1) by
GLIB_001:def 6;
then e1
Joins (w1,v,G1) & e2
Joins (w2,(C
.last() ),G1) by
A59,
GLIB_000: 14,
GLIB_001:def 7;
then
A74: e1
Joins (w1,v,G1) & e2
Joins (w2,v,G1) by
A59,
A7;
then
A75: w1
in V & w2
in V by
A1,
Def4;
then
reconsider w1, w2 as
Vertex of G2 by
A1;
set G3 = the
inducedSubgraph of G2, (G2
.reachableFrom w1);
(C
.cut (3,m))
is_Walk_from (w1,w2) by
A67,
Lm16,
GLIB_001: 37;
then P
is_Walk_from (w1,w2) by
GLIB_001: 19;
then w2
in (G2
.reachableFrom w1) by
GLIB_002:def 5;
then
reconsider w2 as
Vertex of G3 by
GLIB_000:def 37;
w1
in (G2
.reachableFrom w1) by
GLIB_002: 9;
then
reconsider w1 as
Vertex of G3 by
GLIB_000:def 37;
A76: w1
= w2 by
A3,
A75;
consider e3 be
object such that e3
in E & e3
Joins (w1,v,G1) and
A77: for e5 be
object st e5
Joins (w1,v,G1) holds e3
= e5 by
A4,
A75;
A78: e1
= e3 & e2
= e3 by
A74,
A76,
A77;
reconsider n2 = (1
+ 1) as
even
Element of
NAT by
Lm16;
((
len C)
- 1)
<= ((
len C)
-
0 ) by
XREAL_1: 13;
then
A79: (m
+ 1)
<= (
len C);
2
< 3 & (3
+
0 )
<= (m
+ 1) by
A67,
XREAL_1: 7;
then 1
<= n2 & n2
< (m
+ 1) & (m
+ 1)
<= (
len C) by
A79,
XXREAL_0: 2;
then (C
. n2)
<> (C
. (m
+ 1)) by
A5,
GLIB_001: 138;
hence contradiction by
A78;
end;
end;
hence thesis by
GLIB_002:def 2;
end;
theorem ::
GLIB_007:71
for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & (G2 is non
acyclic or ex G3 be
Component of G2, w1,w2 be
Vertex of G3 st w1
in V & w2
in V & w1
<> w2) holds G1 is non
acyclic
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: G2 is non
acyclic or ex G3 be
Component of G2, w1,w2 be
Vertex of G3 st w1
in V & w2
in V & w1
<> w2;
per cases by
A2;
suppose G2 is non
acyclic;
hence thesis;
end;
suppose ex G3 be
Component of G2, w1,w2 be
Vertex of G3 st w1
in V & w2
in V & w1
<> w2;
then
consider G3 be
Component of G2, w1,w2 be
Vertex of G3 such that
A3: w1
in V & w2
in V & w1
<> w2;
reconsider w1, w2 as
Vertex of G2 by
A3,
A1;
(
the_Vertices_of G3)
= (G2
.reachableFrom w1) by
GLIB_002: 33;
then w2
in (G2
.reachableFrom w1);
then
consider W be
Walk of G2 such that
A4: W
is_Walk_from (w1,w2) by
GLIB_002:def 5;
reconsider W1 = W as
Walk of G1 by
GLIB_006: 75;
set P = the
Path of W1;
W1
is_Walk_from (w1,w2) by
A4,
GLIB_001: 19;
then
A5: P
is_Walk_from (w1,w2) by
GLIB_001: 160;
consider E be
set such that
A6: (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A7: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e3 be
object st e3
Joins (v1,v,G1) holds e1
= e3 by
A1,
Def4;
consider e1 be
object such that
A8: e1
in E & e1
Joins (w1,v,G1) and for e3 be
object st e3
Joins (w1,v,G1) holds e1
= e3 by
A3,
A7;
A9: e1
Joins (v,w1,G1) by
A8,
GLIB_000: 14;
consider e2 be
object such that
A10: e2
in E & e2
Joins (w2,v,G1) and for e3 be
object st e3
Joins (w2,v,G1) holds e2
= e3 by
A3,
A7;
set P2 = (P
.addEdge e2);
set P3 = (P2
.addEdge e1);
A11: (P
.first() )
= w1 & (P
.last() )
= w2 by
A5,
GLIB_001:def 23;
then
A12: (P2
.first() )
= w1 & (P2
.last() )
= v by
A10,
GLIB_001: 63;
then
A13: P3
is_Walk_from (w1,w1) by
A9,
GLIB_001: 63;
A14: not v
in (P
.vertices() )
proof
assume v
in (P
.vertices() );
then v
in (W1
.vertices() ) by
GLIB_001: 163,
TARSKI:def 3;
then v
in (W
.vertices() ) by
GLIB_001: 98;
then v
in (
the_Vertices_of G2);
hence contradiction by
A1;
end;
P is
open by
A3,
A11,
GLIB_001:def 24;
then
A15: P2 is
Path-like by
A10,
A11,
A14,
GLIB_001: 151;
w1
<> v by
A1;
then
A16: P2 is
open by
A12,
GLIB_001:def 24;
A17: not e1
in (P2
.edges() )
proof
assume
A18: e1
in (P2
.edges() );
(P2
.edges() )
= ((P
.edges() )
\/
{e2}) by
A10,
A11,
GLIB_001: 111;
then e1
in ((P
.edges() )
\/
{e2}) by
A18;
per cases by
XBOOLE_0:def 3;
suppose e1
in (P
.edges() );
then e1
in (W1
.edges() ) by
GLIB_001: 163,
TARSKI:def 3;
then e1
in (W
.edges() ) by
GLIB_001: 110;
then
A19: e1
in (
the_Edges_of G2);
(E
/\ (
the_Edges_of G2))
=
{} by
A6,
XBOOLE_0:def 7;
hence contradiction by
A8,
A19,
Lm7;
end;
suppose e1
in
{e2};
then e1
= e2 by
TARSKI:def 1;
then e2
Joins (v,w1,G1) by
A9;
per cases by
A10,
GLIB_000: 15;
suppose w1
= w2 & v
= v;
hence contradiction by
A3;
end;
suppose w1
= v & v
= w2;
hence contradiction by
A3;
end;
end;
end;
for n be
odd
Element of
NAT st 1
< n & n
<= (
len P2) holds (P2
. n)
<> w1
proof
given n be
odd
Element of
NAT such that
A20: 1
< n & n
<= (
len P2) & (P2
. n)
= w1;
(P2
. 1)
= w1 by
A12,
GLIB_001:def 6;
then n
= (
len P2) by
A20,
A15,
Lm16,
GLIB_001:def 28;
then (P2
.last() )
= w1 by
A20,
GLIB_001:def 7;
then w1
= v by
A12;
then v
in V by
A3;
hence contradiction by
A1;
end;
then
A21: P3 is
Path-like by
A9,
A12,
A15,
A16,
A17,
GLIB_001: 150;
A22: P3 is
closed by
A13,
GLIB_001: 119;
P3 is non
trivial by
A9,
A12,
GLIB_001: 132;
then P3 is
Cycle-like by
A21,
A22;
hence thesis by
GLIB_002:def 2;
end;
end;
theorem ::
GLIB_007:72
Th72: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & for G3 be
Component of G2 holds ex w be
Vertex of G3 st w
in V holds G1 is
connected
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: for G3 be
Component of G2 holds ex w be
Vertex of G3 st w
in V;
A3: for u be
Vertex of G1 st u
<> v holds ex W1 be
Walk of G1 st W1
is_Walk_from (u,v)
proof
let u be
Vertex of G1;
assume u
<> v;
then
A4: not u
in
{v} by
TARSKI:def 1;
(
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
then u
in (
the_Vertices_of G2) by
A4,
XBOOLE_0:def 3;
then
reconsider u1 = u as
Vertex of G2;
reconsider G3 = the
inducedSubgraph of G2, (G2
.reachableFrom u1) as
Component of G2;
consider w be
Vertex of G3 such that
A5: w
in V by
A2;
(
the_Vertices_of G3)
= (G2
.reachableFrom u1) by
GLIB_000:def 37;
then w
in (G2
.reachableFrom u1);
then
consider W2 be
Walk of G2 such that
A6: W2
is_Walk_from (u1,w) by
GLIB_002:def 5;
reconsider W3 = W2 as
Walk of G1 by
GLIB_006: 75;
A7: W3
is_Walk_from (u,w) by
A6,
GLIB_001: 19;
consider E be
set such that (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A8: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
consider e1 be
object such that
A9: e1
in E & e1
Joins (w,v,G1) and for e2 be
object st e2
Joins (w,v,G1) holds e1
= e2 by
A8,
A5;
take (W3
.addEdge e1);
(W3
.first() )
= u & (W3
.last() )
= w by
A7,
GLIB_001:def 23;
hence (W3
.addEdge e1)
is_Walk_from (u,v) by
A9,
GLIB_001: 63;
end;
for u,w be
Vertex of G1 holds ex W1 be
Walk of G1 st W1
is_Walk_from (u,w)
proof
let u,w be
Vertex of G1;
per cases ;
suppose
A10: u
= v & w
= v;
take (G1
.walkOf u);
thus (G1
.walkOf u)
is_Walk_from (u,w) by
A10,
GLIB_001: 13;
end;
suppose u
= v & w
<> v;
then
consider W3 be
Walk of G1 such that
A11: W3
is_Walk_from (w,u) by
A3;
take (W3
.reverse() );
thus (W3
.reverse() )
is_Walk_from (u,w) by
A11,
GLIB_001: 23;
end;
suppose u
<> v & w
= v;
hence thesis by
A3;
end;
suppose
A12: u
<> v & w
<> v;
consider W2 be
Walk of G1 such that
A13: W2
is_Walk_from (u,v) by
A12,
A3;
consider W3 be
Walk of G1 such that
A14: W3
is_Walk_from (w,v) by
A12,
A3;
A15: (W3
.reverse() )
is_Walk_from (v,w) by
A14,
GLIB_001: 23;
take (W2
.append (W3
.reverse() ));
thus (W2
.append (W3
.reverse() ))
is_Walk_from (u,w) by
A13,
A15,
GLIB_001: 31;
end;
end;
hence thesis by
GLIB_002:def 1;
end;
registration
let G be
connected
_Graph, v be
object, V be non
empty
set;
cluster ->
connected for
addAdjVertexAll of G, v, V;
coherence
proof
let G1 be
addAdjVertexAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
for G3 be
Component of G holds ex w be
Vertex of G3 st w
in V
proof
let G3 be
Component of G;
set w = the
Element of V;
A2: G
== G3 by
GLIB_006: 55;
w
in (
the_Vertices_of G) by
A1,
TARSKI:def 3;
then
reconsider w as
Vertex of G3 by
A2,
GLIB_000:def 34;
take w;
thus thesis;
end;
hence thesis by
A1,
Th72;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def4;
hence thesis by
GLIB_002: 8;
end;
end;
end
theorem ::
GLIB_007:73
Th73: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & ex G3 be
Component of G2 st for w be
Vertex of G3 holds not w
in V holds G1 is non
connected
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: ex G3 be
Component of G2 st for w be
Vertex of G3 holds not w
in V;
consider G3 be
Component of G2 such that
A3: for w be
Vertex of G3 holds not w
in V by
A2;
set v1 = the
Vertex of G3;
A4: (
the_Vertices_of G3)
c= (
the_Vertices_of G2);
then
A5: v1
in (
the_Vertices_of G2) by
TARSKI:def 3;
then
A6: v1
<> v by
A1;
A7: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
v
in
{v} by
TARSKI:def 1;
then
A8: v
in (
the_Vertices_of G1) by
A7,
XBOOLE_0:def 3;
A9: v1
in (
the_Vertices_of G1) by
A5,
A7,
XBOOLE_0:def 3;
not ex W be
Walk of G1 st W
is_Walk_from (v1,v)
proof
given W be
Walk of G1 such that
A10: W
is_Walk_from (v1,v);
set P = the
Path of W;
reconsider u1 = v1, u2 = v as
set by
TARSKI: 1;
P
is_Walk_from (u1,u2) by
A10,
GLIB_001: 160;
then
A11: (P
.first() )
= v1 & (P
.last() )
= v by
GLIB_001:def 23;
then (P
.first() )
<> (P
.last() ) by
A6;
then P is non
trivial by
GLIB_001: 127;
then 3
<= (
len P) by
GLIB_001: 125;
then 1
< (
len P) by
XXREAL_0: 2;
then
reconsider m = ((
len P)
- 2) as
odd
Element of
NAT by
Lm13;
A12: m
< ((
len P)
-
0 ) & m
<= ((
len P)
-
0 ) by
XREAL_1: 15;
set P2 = (P
.cut (1,m));
A13: (
len P2)
= m by
A12,
GLIB_001: 45;
not v
in (P2
.vertices() )
proof
assume v
in (P2
.vertices() );
then
consider k be
odd
Element of
NAT such that
A14: k
<= (
len P2) & (P2
. k)
= v by
GLIB_001: 87;
1
<= k by
ABIAN: 12;
then k
in (
dom P2) by
A14,
FINSEQ_3: 25;
then (P
. k)
= (P2
. k) by
A12,
GLIB_001: 46;
then
A15: (P
. k)
= v by
A14;
A16: (P
. (
len P))
= v by
A11,
GLIB_001:def 7;
k
< (
len P) by
A14,
A13,
A12,
XXREAL_0: 2;
then k
= 1 by
A15,
A16,
GLIB_001:def 28;
then (P
. 1)
= v by
A15;
hence contradiction by
A11,
A6,
GLIB_001:def 6;
end;
then
reconsider P3 = P2 as
Walk of G2 by
A1,
Th64;
A17: 1
<= m by
ABIAN: 12;
set v2 = (P3
.last() );
v2
in (
the_Vertices_of G3)
proof
A18: 1
in (
dom P2) by
A13,
A17,
FINSEQ_3: 25;
(P3
.first() )
= (P2
. 1) by
GLIB_001:def 6
.= (P
. 1) by
A18,
A12,
GLIB_001: 46
.= v1 by
A11,
GLIB_001:def 6;
then
A19: P3
is_Walk_from (v1,v2) by
GLIB_001:def 23;
reconsider v3 = v1 as
Vertex of G2 by
A4,
TARSKI:def 3;
v2
in (G2
.reachableFrom v3) by
A19,
GLIB_002:def 5;
hence thesis by
GLIB_002: 33;
end;
then
A20: not v2
in V by
A3;
v2
= (P2
.last() ) by
GLIB_001: 16
.= (P
. m) by
A12,
A17,
Lm16,
GLIB_001: 37;
then (P
. (m
+ 1))
Joins (v2,(P
. (m
+ 2)),G1) by
A12,
GLIB_001:def 3;
then (P
. (m
+ 1))
Joins (v2,(P
. (
len P)),G1);
then (P
. (m
+ 1))
Joins (v2,v,G1) by
GLIB_001:def 7,
A11;
hence contradiction by
A20,
A1,
Def4;
end;
hence thesis by
A8,
A9,
GLIB_002:def 1;
end;
theorem ::
GLIB_007:74
for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) & ex G3 be
Component of G2 st (
the_Vertices_of G3)
misses V holds G1 is non
connected
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume that
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) and
A2: ex G3 be
Component of G2 st (
the_Vertices_of G3)
misses V;
ex G3 be
Component of G2 st for w be
Vertex of G3 holds not w
in V
proof
consider G3 be
Component of G2 such that
A3: (
the_Vertices_of G3)
misses V by
A2;
take G3;
let w be
Vertex of G3;
((
the_Vertices_of G3)
/\ V)
=
{} by
A3,
XBOOLE_0:def 7;
hence thesis by
Lm7;
end;
hence thesis by
A1,
Th73;
end;
registration
let G be non
connected
_Graph, v be
object;
cluster -> non
connected for
addAdjVertexAll of G, v,
{} ;
coherence
proof
let G1 be
addAdjVertexAll of G, v,
{} ;
G1 is
addVertex of G, v by
Th55;
hence thesis;
end;
end
theorem ::
GLIB_007:75
Th75: for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds G1 is
complete iff G2 is
complete & V
= (
the_Vertices_of G2)
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
hereby
assume
A2: G1 is
complete;
for u,v be
Vertex of G2 st u
<> v holds (u,v)
are_adjacent
proof
let u2,v2 be
Vertex of G2;
reconsider u1 = u2, v1 = v2 as
Vertex of G1 by
GLIB_006: 68;
assume u2
<> v2;
then u1
<> v1;
then (u1,v1)
are_adjacent by
A2,
CHORD:def 6;
then
consider e be
object such that
A3: e
Joins (u1,v1,G1) by
CHORD:def 3;
u2
<> v & v2
<> v by
A1;
then e
Joins (u2,v2,G2) by
A1,
A3,
Th49;
hence (u2,v2)
are_adjacent by
CHORD:def 3;
end;
hence G2 is
complete by
CHORD:def 6;
for x be
object holds x
in (
the_Vertices_of G2) implies x
in V
proof
let x be
object;
assume x
in (
the_Vertices_of G2);
then
reconsider v2 = x as
Vertex of G2;
reconsider v1 = v2 as
Vertex of G1 by
GLIB_006: 68;
reconsider v0 = v as
Vertex of G1 by
A1,
Th50;
v1
<> v by
A1;
then (v1,v0)
are_adjacent by
A2,
CHORD:def 6;
then
consider e be
object such that
A4: e
Joins (v1,v,G1) by
CHORD:def 3;
thus thesis by
A1,
A4,
Def4;
end;
then (
the_Vertices_of G2)
c= V by
TARSKI:def 3;
hence V
= (
the_Vertices_of G2) by
A1,
XBOOLE_0:def 10;
end;
assume that
A5: G2 is
complete and
A6: V
= (
the_Vertices_of G2);
for u,v be
Vertex of G1 st u
<> v holds (u,v)
are_adjacent
proof
let u1,v1 be
Vertex of G1;
assume
A7: u1
<> v1;
consider E be
set such that (
card V)
= (
card E) & E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and
A8: for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
A9: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
A1,
Def4;
per cases ;
suppose
A10: u1
= v;
then v1
<> v by
A7;
then not v1
in
{v} by
TARSKI:def 1;
then v1
in (
the_Vertices_of G2) by
A9,
XBOOLE_0:def 3;
then
consider e1 be
object such that
A11: e1
in E & e1
Joins (v1,v,G1) and for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A6,
A8;
e1
Joins (u1,v1,G1) by
A10,
A11,
GLIB_000: 14;
hence (u1,v1)
are_adjacent by
CHORD:def 3;
end;
suppose
A12: v1
= v;
then u1
<> v by
A7;
then not u1
in
{v} by
TARSKI:def 1;
then u1
in (
the_Vertices_of G2) by
A9,
XBOOLE_0:def 3;
then
consider e1 be
object such that
A13: e1
in E & e1
Joins (u1,v,G1) and for e2 be
object st e2
Joins (u1,v,G1) holds e1
= e2 by
A6,
A8;
e1
Joins (u1,v1,G1) by
A12,
A13;
hence (u1,v1)
are_adjacent by
CHORD:def 3;
end;
suppose u1
<> v & v1
<> v;
then not u1
in
{v} & not v1
in
{v} by
TARSKI:def 1;
then
reconsider u2 = u1, v2 = v1 as
Vertex of G2 by
A9,
XBOOLE_0:def 3;
(u2,v2)
are_adjacent by
A5,
A7,
CHORD:def 6;
then
consider e be
object such that
A14: e
Joins (u2,v2,G2) by
CHORD:def 3;
e
Joins (u1,v1,G1) by
A14,
GLIB_006: 70;
hence (u1,v1)
are_adjacent by
CHORD:def 3;
end;
end;
hence thesis by
CHORD:def 6;
end;
registration
let G be
complete
_Graph;
cluster ->
complete for
addAdjVertexAll of G, (
the_Vertices_of G);
coherence
proof
let G1 be
addAdjVertexAll of G, (
the_Vertices_of G);
(
the_Vertices_of G)
c= (
the_Vertices_of G) & not (
the_Vertices_of G)
in (
the_Vertices_of G);
hence thesis by
Th75;
end;
end
theorem ::
GLIB_007:76
for G2, v, V holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.order() )
= ((G2
.order() )
+` 1) & (G1
.size() )
= ((G2
.size() )
+` (
card V))
proof
let G2, v, V;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
Def4;
consider E be
set such that
A3: (
card V)
= (
card E) and
A4: E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and for w be
object st w
in V holds ex e1 be
object st e1
in E & e1
Joins (w,v,G1) & for e2 be
object st e2
Joins (w,v,G1) holds e1
= e2 by
A1,
Def4;
A5:
{v}
misses (
the_Vertices_of G2) by
A1,
ZFMISC_1: 50;
thus (G1
.order() )
= (
card (
the_Vertices_of G1)) by
GLIB_000:def 24
.= ((
card (
the_Vertices_of G2))
+` (
card
{v})) by
A2,
A5,
CARD_2: 35
.= ((G2
.order() )
+` (
card
{v})) by
GLIB_000:def 24
.= ((G2
.order() )
+` 1) by
CARD_1: 30;
thus (G1
.size() )
= (
card (
the_Edges_of G1)) by
GLIB_000:def 25
.= ((
card (
the_Edges_of G2))
+` (
card E)) by
A4,
CARD_2: 35
.= ((G2
.size() )
+` (
card V)) by
A3,
GLIB_000:def 25;
end;
theorem ::
GLIB_007:77
for G2 be
_finite
_Graph, v be
object, V be
set holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.order() )
= ((G2
.order() )
+ 1)
proof
let G2 be
_finite
_Graph, v be
object, V be
set;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
then
A2: (
the_Vertices_of G1)
= ((
the_Vertices_of G2)
\/
{v}) by
Def4;
thus (G1
.order() )
= (
card (
the_Vertices_of G1)) by
GLIB_000:def 24
.= ((
card (
the_Vertices_of G2))
+ 1) by
A1,
A2,
CARD_2: 41
.= ((G2
.order() )
+ 1) by
GLIB_000:def 24;
end;
theorem ::
GLIB_007:78
for G2 be
_finite
_Graph, v be
object, V be
finite
set holds for G1 be
addAdjVertexAll of G2, v, V st V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2) holds (G1
.size() )
= ((G2
.size() )
+ (
card V))
proof
let G2 be
_finite
_Graph, v be
object, V be
finite
set;
let G1 be
addAdjVertexAll of G2, v, V;
assume
A1: V
c= (
the_Vertices_of G2) & not v
in (
the_Vertices_of G2);
consider E be
set such that
A2: (
card V)
= (
card E) and
A3: E
misses (
the_Edges_of G2) & (
the_Edges_of G1)
= ((
the_Edges_of G2)
\/ E) and for w be
object st w
in V holds ex e1 be
object st e1
in E & e1
Joins (w,v,G1) & for e2 be
object st e2
Joins (w,v,G1) holds e1
= e2 by
A1,
Def4;
(V,E)
are_equipotent by
A2,
CARD_1: 5;
then
reconsider E as
finite
set by
CARD_1: 38;
thus (G1
.size() )
= (
card (
the_Edges_of G1)) by
GLIB_000:def 25
.= ((
card (
the_Edges_of G2))
+ (
card E)) by
A3,
CARD_2: 40
.= ((G2
.size() )
+ (
card V)) by
A2,
GLIB_000:def 25;
end;
registration
let G be
_finite
_Graph, v be
object, V be
set;
cluster ->
_finite for
addAdjVertexAll of G, v, V;
coherence
proof
let G1 be
addAdjVertexAll of G, v, V;
per cases ;
suppose
A1: V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G);
then
A2: (
the_Vertices_of G1)
= ((
the_Vertices_of G)
\/
{v}) by
Def4;
consider E be
set such that
A3: (
card V)
= (
card E) & E
misses (
the_Edges_of G) and
A4: (
the_Edges_of G1)
= ((
the_Edges_of G)
\/ E) and for v1 be
object st v1
in V holds ex e1 be
object st e1
in E & e1
Joins (v1,v,G1) & for e2 be
object st e2
Joins (v1,v,G1) holds e1
= e2 by
A1,
Def4;
A5: (V,E)
are_equipotent by
A3,
CARD_1: 5;
V is
finite by
A1;
then E is
finite by
A5,
CARD_1: 38;
then (
the_Vertices_of G1) is
finite & (
the_Edges_of G1) is
finite by
A2,
A4;
hence thesis by
GLIB_000:def 17;
end;
suppose not (V
c= (
the_Vertices_of G) & not v
in (
the_Vertices_of G));
then G1
== G by
Def4;
hence thesis by
GLIB_000: 89;
end;
end;
end