let G be non-multi _Graph; for G2 being GraphFromSymRel of (the_Vertices_of G),(VertexAdjSymRel G) ex F being PGraphMapping of G,G2 st
( F is isomorphism & F _V = id (the_Vertices_of G) & ( for e being object holds
( not e in the_Edges_of G or (F _E) . e = [((the_Source_of G) . e),((the_Target_of G) . e)] or (F _E) . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) ) )
set E0 = VertexAdjSymRel G;
set G0 = createGraph ((the_Vertices_of G),(VertexAdjSymRel G));
let G9 be GraphFromSymRel of (the_Vertices_of G),(VertexAdjSymRel G); ex F being PGraphMapping of G,G9 st
( F is isomorphism & F _V = id (the_Vertices_of G) & ( for e being object holds
( not e in the_Edges_of G or (F _E) . e = [((the_Source_of G) . e),((the_Target_of G) . e)] or (F _E) . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) ) )
the_Vertices_of G9 =
the_Vertices_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G)))
by GLIB_000:def 33
.=
the_Vertices_of G
;
then reconsider f = id (the_Vertices_of G) as PartFunc of (the_Vertices_of G),(the_Vertices_of G9) ;
consider E9 being RepEdgeSelection of createGraph ((the_Vertices_of G),(VertexAdjSymRel G)) such that
A1:
G9 is inducedSubgraph of createGraph ((the_Vertices_of G),(VertexAdjSymRel G)), the_Vertices_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))),E9
by GLIB_009:def 7;
( the_Edges_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) = (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) .edgesBetween (the_Vertices_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G)))) & the_Vertices_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) c= the_Vertices_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) )
by GLIB_000:34;
then A2:
the_Edges_of G9 = E9
by A1, GLIB_000:def 37;
defpred S1[ object , object ] means ( $2 in E9 & ( $2 = [((the_Source_of G) . $1),((the_Target_of G) . $1)] or $2 = [((the_Target_of G) . $1),((the_Source_of G) . $1)] ) );
A3:
for x, y1, y2 being object st x in the_Edges_of G & S1[x,y1] & S1[x,y2] holds
y1 = y2
proof
let x,
y1,
y2 be
object ;
( x in the_Edges_of G & S1[x,y1] & S1[x,y2] implies y1 = y2 )
assume A4:
(
x in the_Edges_of G &
S1[
x,
y1] &
S1[
x,
y2] )
;
y1 = y2
set v =
(the_Source_of G) . x;
set w =
(the_Target_of G) . x;
per cases
( ( y1 = [((the_Source_of G) . x),((the_Target_of G) . x)] & y2 = [((the_Source_of G) . x),((the_Target_of G) . x)] ) or ( y1 = [((the_Source_of G) . x),((the_Target_of G) . x)] & y2 = [((the_Target_of G) . x),((the_Source_of G) . x)] ) or ( y1 = [((the_Target_of G) . x),((the_Source_of G) . x)] & y2 = [((the_Source_of G) . x),((the_Target_of G) . x)] ) or ( y1 = [((the_Target_of G) . x),((the_Source_of G) . x)] & y2 = [((the_Target_of G) . x),((the_Source_of G) . x)] ) )
by A4;
suppose A5:
(
y1 = [((the_Source_of G) . x),((the_Target_of G) . x)] &
y2 = [((the_Target_of G) . x),((the_Source_of G) . x)] )
;
y1 = y2A6:
(
y1 in the_Edges_of G9 &
y2 in the_Edges_of G9 )
by A2, A4;
then
(
y1 in the_Edges_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) &
y2 in the_Edges_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) )
;
then
(
y1 in VertexAdjSymRel G &
y2 in VertexAdjSymRel G )
;
then
(
y1 DJoins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y2 DJoins (the_Target_of G) . x,
(the_Source_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) )
by A5, Th63;
then A7:
(
y1 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y2 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) )
by GLIB_000:16;
then consider y0 being
object such that
(
y0 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y0 in E9 )
and A8:
for
y9 being
object st
y9 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y9 in E9 holds
y9 = y0
by GLIB_009:def 5;
(
y1 = y0 &
y2 = y0 )
by A2, A6, A7, A8;
hence
y1 = y2
;
verum end; suppose A9:
(
y1 = [((the_Target_of G) . x),((the_Source_of G) . x)] &
y2 = [((the_Source_of G) . x),((the_Target_of G) . x)] )
;
y1 = y2A10:
(
y1 in the_Edges_of G9 &
y2 in the_Edges_of G9 )
by A2, A4;
then
(
y1 in the_Edges_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) &
y2 in the_Edges_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G))) )
;
then
(
y1 in VertexAdjSymRel G &
y2 in VertexAdjSymRel G )
;
then
(
y1 DJoins (the_Target_of G) . x,
(the_Source_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y2 DJoins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) )
by A9, Th63;
then A11:
(
y1 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y2 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) )
by GLIB_000:16;
then consider y0 being
object such that
(
y0 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y0 in E9 )
and A12:
for
y9 being
object st
y9 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
y9 in E9 holds
y9 = y0
by GLIB_009:def 5;
(
y1 = y0 &
y2 = y0 )
by A2, A10, A11, A12;
hence
y1 = y2
;
verum end; end;
end;
A13:
for x being object st x in the_Edges_of G holds
ex y being object st S1[x,y]
proof
let x be
object ;
( x in the_Edges_of G implies ex y being object st S1[x,y] )
assume A14:
x in the_Edges_of G
;
ex y being object st S1[x,y]
set v =
(the_Source_of G) . x;
set w =
(the_Target_of G) . x;
(
x Joins (the_Source_of G) . x,
(the_Target_of G) . x,
G &
x Joins (the_Target_of G) . x,
(the_Source_of G) . x,
G )
by A14, GLIB_000:def 13;
then A15:
(
[((the_Source_of G) . x),((the_Target_of G) . x)] DJoins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
[((the_Target_of G) . x),((the_Source_of G) . x)] DJoins (the_Target_of G) . x,
(the_Source_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) )
by Th32, Th63;
then
[((the_Source_of G) . x),((the_Target_of G) . x)] Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G))
by GLIB_000:16;
then consider z being
object such that A16:
(
z Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
z in E9 )
and
for
e9 being
object st
e9 Joins (the_Source_of G) . x,
(the_Target_of G) . x,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
e9 in E9 holds
e9 = z
by GLIB_009:def 5;
take
z
;
S1[x,z]
end;
consider g being Function such that
A17:
dom g = the_Edges_of G
and
A18:
for x being object st x in the_Edges_of G holds
S1[x,g . x]
from FUNCT_1:sch 2(A3, A13);
now for y being object holds
( ( y in rng g implies y in the_Edges_of G9 ) & ( y in the_Edges_of G9 implies y in rng g ) )let y be
object ;
( ( y in rng g implies y in the_Edges_of G9 ) & ( y in the_Edges_of G9 implies b1 in rng g ) )assume A20:
y in the_Edges_of G9
;
b1 in rng gset v =
(the_Source_of G9) . y;
set w =
(the_Target_of G9) . y;
y DJoins (the_Source_of G9) . y,
(the_Target_of G9) . y,
G9
by A20, GLIB_000:def 14;
then A21:
y DJoins (the_Source_of G9) . y,
(the_Target_of G9) . y,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G))
by GLIB_000:72;
then A22:
y = [((the_Source_of G9) . y),((the_Target_of G9) . y)]
by Th64;
then consider x being
object such that A23:
x Joins (the_Source_of G9) . y,
(the_Target_of G9) . y,
G
by A21, Th32, Th63;
A24:
x in the_Edges_of G
by A23, GLIB_000:def 13;
end;
then A27:
rng g = the_Edges_of G9
by TARSKI:2;
then reconsider g = g as PartFunc of (the_Edges_of G),(the_Edges_of G9) by A17, RELSET_1:4;
now ( ( for e being object st e in dom g holds
( (the_Source_of G) . e in dom f & (the_Target_of G) . e in dom f ) ) & ( for e, v, w being object st e in dom g & v in dom f & w in dom f & e Joins v,w,G holds
g . e Joins f . v,f . w,G9 ) )thus
for
e being
object st
e in dom g holds
(
(the_Source_of G) . e in dom f &
(the_Target_of G) . e in dom f )
by FUNCT_2:5;
for e, v, w being object st e in dom g & v in dom f & w in dom f & e Joins v,w,G holds
g . b4 Joins f . b5,f . b6,G9let e,
v,
w be
object ;
( e in dom g & v in dom f & w in dom f & e Joins v,w,G implies g . b1 Joins f . b2,f . b3,G9 )assume A28:
(
e in dom g &
v in dom f &
w in dom f &
e Joins v,
w,
G )
;
g . b1 Joins f . b2,f . b3,G9then A29:
e in the_Edges_of G
;
per cases
( ( (the_Source_of G) . e = v & (the_Target_of G) . e = w ) or ( (the_Source_of G) . e = w & (the_Target_of G) . e = v ) )
by A28, GLIB_000:def 13;
suppose A30:
(
(the_Source_of G) . e = v &
(the_Target_of G) . e = w )
;
g . b1 Joins f . b2,f . b3,G9per cases
( ( g . e in E9 & g . e = [((the_Source_of G) . e),((the_Target_of G) . e)] ) or ( g . e in E9 & g . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) )
by A18, A28;
suppose
(
g . e in E9 &
g . e = [((the_Source_of G) . e),((the_Target_of G) . e)] )
;
g . b1 Joins f . b2,f . b3,G9then A31:
g . e = [v,w]
by A30;
g . e in rng g
by A28, FUNCT_1:3;
then A32:
g . e in the_Edges_of G9
;
e Joins v,
w,
G
by A30, A29, GLIB_000:def 13;
then
[v,w] in VertexAdjSymRel G
by Th32;
then
(
g . e DJoins v,
w,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
v is
set &
w is
set )
by A31, Th63, TARSKI:1;
then
g . e DJoins v,
w,
G9
by A32, GLIB_000:73;
then
g . e Joins v,
w,
G9
by GLIB_000:16;
then
g . e Joins f . v,
w,
G9
by A28, FUNCT_1:18;
hence
g . e Joins f . v,
f . w,
G9
by A28, FUNCT_1:18;
verum end; suppose
(
g . e in E9 &
g . e = [((the_Target_of G) . e),((the_Source_of G) . e)] )
;
g . b1 Joins f . b2,f . b3,G9then A33:
g . e = [w,v]
by A30;
g . e in rng g
by A28, FUNCT_1:3;
then A34:
g . e in the_Edges_of G9
;
e Joins w,
v,
G
by A30, A29, GLIB_000:def 13;
then
(
g . e DJoins w,
v,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
v is
set &
w is
set )
by A33, Th63, TARSKI:1, Th32;
then
g . e DJoins w,
v,
G9
by A34, GLIB_000:73;
then
g . e Joins v,
w,
G9
by GLIB_000:16;
then
g . e Joins f . v,
w,
G9
by A28, FUNCT_1:18;
hence
g . e Joins f . v,
f . w,
G9
by A28, FUNCT_1:18;
verum end; end; end; suppose A35:
(
(the_Source_of G) . e = w &
(the_Target_of G) . e = v )
;
g . b1 Joins f . b2,f . b3,G9per cases
( ( g . e in E9 & g . e = [((the_Source_of G) . e),((the_Target_of G) . e)] ) or ( g . e in E9 & g . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) )
by A18, A28;
suppose
(
g . e in E9 &
g . e = [((the_Source_of G) . e),((the_Target_of G) . e)] )
;
g . b1 Joins f . b2,f . b3,G9then A36:
g . e = [w,v]
by A35;
g . e in rng g
by A28, FUNCT_1:3;
then A37:
g . e in the_Edges_of G9
;
e Joins w,
v,
G
by A35, A29, GLIB_000:def 13;
then
[w,v] in VertexAdjSymRel G
by Th32;
then
(
g . e DJoins w,
v,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
v is
set &
w is
set )
by A36, Th63, TARSKI:1;
then
g . e DJoins w,
v,
G9
by A37, GLIB_000:73;
then
g . e Joins v,
w,
G9
by GLIB_000:16;
then
g . e Joins f . v,
w,
G9
by A28, FUNCT_1:18;
hence
g . e Joins f . v,
f . w,
G9
by A28, FUNCT_1:18;
verum end; suppose
(
g . e in E9 &
g . e = [((the_Target_of G) . e),((the_Source_of G) . e)] )
;
g . b1 Joins f . b2,f . b3,G9then A38:
g . e = [v,w]
by A35;
g . e in rng g
by A28, FUNCT_1:3;
then A39:
g . e in the_Edges_of G9
;
e Joins v,
w,
G
by A35, A29, GLIB_000:def 13;
then
(
g . e DJoins v,
w,
createGraph (
(the_Vertices_of G),
(VertexAdjSymRel G)) &
v is
set &
w is
set )
by A38, Th63, TARSKI:1, Th32;
then
g . e DJoins v,
w,
G9
by A39, GLIB_000:73;
then
g . e Joins v,
w,
G9
by GLIB_000:16;
then
g . e Joins f . v,
w,
G9
by A28, FUNCT_1:18;
hence
g . e Joins f . v,
f . w,
G9
by A28, FUNCT_1:18;
verum end; end; end; end; end;
then reconsider F = [f,g] as PGraphMapping of G,G9 by GLIB_010:8;
take
F
; ( F is isomorphism & F _V = id (the_Vertices_of G) & ( for e being object holds
( not e in the_Edges_of G or (F _E) . e = [((the_Source_of G) . e),((the_Target_of G) . e)] or (F _E) . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) ) )
then A41:
g is one-to-one
by FUNCT_1:def 4;
( f is one-to-one & F _V = f & F _E = g )
;
then A42:
F is one-to-one
by A41, GLIB_010:def 13;
the_Vertices_of G =
the_Vertices_of (createGraph ((the_Vertices_of G),(VertexAdjSymRel G)))
.=
the_Vertices_of G9
by GLIB_000:def 33
;
then A43:
( dom f = the_Vertices_of G & rng f = the_Vertices_of G9 )
;
( F _V = f & F _E = g )
;
then A44:
( F is total & F is onto )
by A17, A27, A43, GLIB_010:def 11, GLIB_010:def 12;
thus
F is isomorphism
by A42, A44; ( F _V = id (the_Vertices_of G) & ( for e being object holds
( not e in the_Edges_of G or (F _E) . e = [((the_Source_of G) . e),((the_Target_of G) . e)] or (F _E) . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) ) )
thus
F _V = id (the_Vertices_of G)
; for e being object holds
( not e in the_Edges_of G or (F _E) . e = [((the_Source_of G) . e),((the_Target_of G) . e)] or (F _E) . e = [((the_Target_of G) . e),((the_Source_of G) . e)] )
thus
for e being object holds
( not e in the_Edges_of G or (F _E) . e = [((the_Source_of G) . e),((the_Target_of G) . e)] or (F _E) . e = [((the_Target_of G) . e),((the_Source_of G) . e)] )
by A18; verum