let G be non-multi _Graph; :: thesis: 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); :: thesis: 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 ; :: thesis: ( 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] ) ; :: thesis: 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 ( y1 = [((the_Source_of G) . x),((the_Target_of G) . x)] & y2 = [((the_Source_of G) . x),((the_Target_of G) . x)] ) ; :: thesis: y1 = y2
hence y1 = y2 ; :: thesis: verum
end;
suppose A5: ( y1 = [((the_Source_of G) . x),((the_Target_of G) . x)] & y2 = [((the_Target_of G) . x),((the_Source_of G) . x)] ) ; :: thesis: y1 = y2
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)] ) ; :: thesis: y1 = y2
end;
suppose ( y1 = [((the_Target_of G) . x),((the_Source_of G) . x)] & y2 = [((the_Target_of G) . x),((the_Source_of G) . x)] ) ; :: thesis: y1 = y2
hence y1 = y2 ; :: thesis: 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 ; :: thesis: ( x in the_Edges_of G implies ex y being object st S1[x,y] )
assume A14: x in the_Edges_of G ; :: thesis: 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 ; :: thesis: S1[x,z]
per cases ( z DJoins (the_Source_of G) . x,(the_Target_of G) . x, createGraph ((the_Vertices_of G),(VertexAdjSymRel G)) or z DJoins (the_Target_of G) . x,(the_Source_of G) . x, createGraph ((the_Vertices_of G),(VertexAdjSymRel G)) ) by A16, GLIB_000:16;
end;
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 :: thesis: 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 ; :: thesis: ( ( y in rng g implies y in the_Edges_of G9 ) & ( y in the_Edges_of G9 implies b1 in rng g ) )
hereby :: thesis: ( y in the_Edges_of G9 implies b1 in rng g )
assume y in rng g ; :: thesis: y in the_Edges_of G9
then consider x being object such that
A19: ( x in dom g & g . x = y ) by FUNCT_1:def 3;
thus y in the_Edges_of G9 by A2, A17, A18, A19; :: thesis: verum
end;
assume A20: y in the_Edges_of G9 ; :: thesis: b1 in rng g
set 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;
per cases ( ( (the_Source_of G) . x = (the_Source_of G9) . y & (the_Target_of G) . x = (the_Target_of G9) . y ) or ( (the_Source_of G) . x = (the_Target_of G9) . y & (the_Target_of G) . x = (the_Source_of G9) . y ) ) by A23, GLIB_000:def 13;
end;
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 :: thesis: ( ( 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; :: thesis: 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,G9

let e, v, w be object ; :: thesis: ( 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 ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
then 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 ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
per 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)] ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
end;
suppose ( g . e in E9 & g . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
end;
end;
end;
suppose A35: ( (the_Source_of G) . e = w & (the_Target_of G) . e = v ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
per 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)] ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
end;
suppose ( g . e in E9 & g . e = [((the_Target_of G) . e),((the_Source_of G) . e)] ) ; :: thesis: g . b1 Joins f . b2,f . b3,G9
end;
end;
end;
end;
end;
then reconsider F = [f,g] as PGraphMapping of G,G9 by GLIB_010:8;
take F ; :: thesis: ( 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)] ) ) )

now :: thesis: for x1, x2 being object st x1 in dom g & x2 in dom g & g . x1 = g . x2 holds
x1 = x2
let x1, x2 be object ; :: thesis: ( x1 in dom g & x2 in dom g & g . x1 = g . x2 implies b1 = b2 )
assume A40: ( x1 in dom g & x2 in dom g & g . x1 = g . x2 ) ; :: thesis: b1 = b2
per cases ( ( g . x1 = [((the_Source_of G) . x1),((the_Target_of G) . x1)] & g . x2 = [((the_Source_of G) . x2),((the_Target_of G) . x2)] ) or ( g . x1 = [((the_Source_of G) . x1),((the_Target_of G) . x1)] & g . x2 = [((the_Target_of G) . x2),((the_Source_of G) . x2)] ) or ( g . x1 = [((the_Target_of G) . x1),((the_Source_of G) . x1)] & g . x2 = [((the_Source_of G) . x2),((the_Target_of G) . x2)] ) or ( g . x1 = [((the_Target_of G) . x1),((the_Source_of G) . x1)] & g . x2 = [((the_Target_of G) . x2),((the_Source_of G) . x2)] ) ) by A18, A40;
end;
end;
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; :: thesis: ( 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) ; :: thesis: 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; :: thesis: verum