let G1, G2 be _Graph; :: thesis: for f being PVertexMapping of G1,G2
for E1 being RepEdgeSelection of G1
for E2 being RepEdgeSelection of G2 ex F being PGraphMapping of G1,G2 st
( F _V = f & dom (F _E) = E1 /\ (G1 .edgesBetween (dom f)) & rng (F _E) c= E2 /\ (G2 .edgesBetween (rng f)) )

let f be PVertexMapping of G1,G2; :: thesis: for E1 being RepEdgeSelection of G1
for E2 being RepEdgeSelection of G2 ex F being PGraphMapping of G1,G2 st
( F _V = f & dom (F _E) = E1 /\ (G1 .edgesBetween (dom f)) & rng (F _E) c= E2 /\ (G2 .edgesBetween (rng f)) )

let E1 be RepEdgeSelection of G1; :: thesis: for E2 being RepEdgeSelection of G2 ex F being PGraphMapping of G1,G2 st
( F _V = f & dom (F _E) = E1 /\ (G1 .edgesBetween (dom f)) & rng (F _E) c= E2 /\ (G2 .edgesBetween (rng f)) )

let E2 be RepEdgeSelection of G2; :: thesis: ex F being PGraphMapping of G1,G2 st
( F _V = f & dom (F _E) = E1 /\ (G1 .edgesBetween (dom f)) & rng (F _E) c= E2 /\ (G2 .edgesBetween (rng f)) )

defpred S1[ object , object ] means ex v, w being object st
( v in dom f & w in dom f & $1 in E1 & $2 in E2 & $1 Joins v,w,G1 & $2 Joins f . v,f . w,G2 );
A1: for e1, e2, e3 being object st e1 in E1 /\ (G1 .edgesBetween (dom f)) & S1[e1,e2] & S1[e1,e3] holds
e2 = e3
proof
let e1, e2, e3 be object ; :: thesis: ( e1 in E1 /\ (G1 .edgesBetween (dom f)) & S1[e1,e2] & S1[e1,e3] implies e2 = e3 )
assume A2: ( e1 in E1 /\ (G1 .edgesBetween (dom f)) & S1[e1,e2] & S1[e1,e3] ) ; :: thesis: e2 = e3
then consider v2, w2 being object such that
A3: ( v2 in dom f & w2 in dom f & e1 in E1 & e2 in E2 & e1 Joins v2,w2,G1 & e2 Joins f . v2,f . w2,G2 ) ;
consider v3, w3 being object such that
A4: ( v3 in dom f & w3 in dom f & e1 in E1 & e3 in E2 & e1 Joins v3,w3,G1 & e3 Joins f . v3,f . w3,G2 ) by A2;
( ( v2 = v3 & w2 = w3 ) or ( v2 = w3 & w2 = v3 ) ) by A3, A4, GLIB_000:15;
then ( ( f . v2 = f . v3 & f . w2 = f . w3 ) or ( f . v2 = f . w3 & f . w2 = f . v3 ) ) ;
then A5: e3 Joins f . v2,f . w2,G2 by A4, GLIB_000:14;
then consider e0 being object such that
( e0 Joins f . v2,f . w2,G2 & e0 in E2 ) and
A6: for e9 being object st e9 Joins f . v2,f . w2,G2 & e9 in E2 holds
e9 = e0 by GLIB_009:def 5;
( e2 = e0 & e3 = e0 ) by A3, A4, A5, A6;
hence e2 = e3 ; :: thesis: verum
end;
A7: for e1 being object st e1 in E1 /\ (G1 .edgesBetween (dom f)) holds
ex e2 being object st S1[e1,e2]
proof
let e1 be object ; :: thesis: ( e1 in E1 /\ (G1 .edgesBetween (dom f)) implies ex e2 being object st S1[e1,e2] )
set v = (the_Source_of G1) . e1;
set w = (the_Target_of G1) . e1;
assume A8: e1 in E1 /\ (G1 .edgesBetween (dom f)) ; :: thesis: ex e2 being object st S1[e1,e2]
then e1 in G1 .edgesBetween (dom f) by XBOOLE_0:def 4;
then A9: ( e1 in the_Edges_of G1 & (the_Source_of G1) . e1 in dom f & (the_Target_of G1) . e1 in dom f ) by GLIB_000:31;
then A10: e1 Joins (the_Source_of G1) . e1,(the_Target_of G1) . e1,G1 by GLIB_000:def 13;
then consider e0 being object such that
A11: e0 Joins f . ((the_Source_of G1) . e1),f . ((the_Target_of G1) . e1),G2 by A9, Th1;
consider e2 being object such that
A12: ( e2 Joins f . ((the_Source_of G1) . e1),f . ((the_Target_of G1) . e1),G2 & e2 in E2 ) and
for e9 being object st e9 Joins f . ((the_Source_of G1) . e1),f . ((the_Target_of G1) . e1),G2 & e9 in E2 holds
e9 = e2 by A11, GLIB_009:def 5;
take e2 ; :: thesis: S1[e1,e2]
take (the_Source_of G1) . e1 ; :: thesis: ex w being object st
( (the_Source_of G1) . e1 in dom f & w in dom f & e1 in E1 & e2 in E2 & e1 Joins (the_Source_of G1) . e1,w,G1 & e2 Joins f . ((the_Source_of G1) . e1),f . w,G2 )

take (the_Target_of G1) . e1 ; :: thesis: ( (the_Source_of G1) . e1 in dom f & (the_Target_of G1) . e1 in dom f & e1 in E1 & e2 in E2 & e1 Joins (the_Source_of G1) . e1,(the_Target_of G1) . e1,G1 & e2 Joins f . ((the_Source_of G1) . e1),f . ((the_Target_of G1) . e1),G2 )
thus ( (the_Source_of G1) . e1 in dom f & (the_Target_of G1) . e1 in dom f & e1 in E1 ) by A8, A9, XBOOLE_0:def 4; :: thesis: ( e2 in E2 & e1 Joins (the_Source_of G1) . e1,(the_Target_of G1) . e1,G1 & e2 Joins f . ((the_Source_of G1) . e1),f . ((the_Target_of G1) . e1),G2 )
thus ( e2 in E2 & e1 Joins (the_Source_of G1) . e1,(the_Target_of G1) . e1,G1 & e2 Joins f . ((the_Source_of G1) . e1),f . ((the_Target_of G1) . e1),G2 ) by A10, A12; :: thesis: verum
end;
consider g being Function such that
A13: dom g = E1 /\ (G1 .edgesBetween (dom f)) and
A14: for e1 being object st e1 in E1 /\ (G1 .edgesBetween (dom f)) holds
S1[e1,g . e1] from FUNCT_1:sch 2(A1, A7);
for y being object st y in rng g holds
y in E2 /\ (G2 .edgesBetween (rng f))
proof
let y be object ; :: thesis: ( y in rng g implies y in E2 /\ (G2 .edgesBetween (rng f)) )
assume y in rng g ; :: thesis: y in E2 /\ (G2 .edgesBetween (rng f))
then consider x being object such that
A15: ( x in dom g & g . x = y ) by FUNCT_1:def 3;
consider v, w being object such that
A16: ( v in dom f & w in dom f & x in E1 & g . x in E2 ) and
A17: ( x Joins v,w,G1 & g . x Joins f . v,f . w,G2 ) by A13, A14, A15;
( f . v in rng f & f . w in rng f ) by A16, FUNCT_1:3;
then ( (the_Source_of G2) . y in rng f & (the_Target_of G2) . y in rng f & y in the_Edges_of G2 ) by A15, A17, GLIB_000:def 13;
then y in G2 .edgesBetween (rng f) by GLIB_000:31;
hence y in E2 /\ (G2 .edgesBetween (rng f)) by A15, A16, XBOOLE_0:def 4; :: thesis: verum
end;
then A18: rng g c= E2 /\ (G2 .edgesBetween (rng f)) by TARSKI:def 3;
rng g c= the_Edges_of G2 by A18, XBOOLE_1:1;
then reconsider g = g as PartFunc of (the_Edges_of G1),(the_Edges_of G2) by A13, RELSET_1:4;
now :: thesis: ( ( for e being object st e in dom g holds
( (the_Source_of G1) . e in dom f & (the_Target_of G1) . 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,G1 holds
g . e Joins f . v,f . w,G2 ) )
hereby :: thesis: for e, v, w being object st e in dom g & v in dom f & w in dom f & e Joins v,w,G1 holds
g . e Joins f . v,f . w,G2
let e be object ; :: thesis: ( e in dom g implies ( (the_Source_of G1) . e in dom f & (the_Target_of G1) . e in dom f ) )
assume e in dom g ; :: thesis: ( (the_Source_of G1) . e in dom f & (the_Target_of G1) . e in dom f )
then consider v, w being object such that
A19: ( v in dom f & w in dom f & e in E1 & g . e in E2 & e Joins v,w,G1 & g . e Joins f . v,f . w,G2 ) by A13, A14;
thus ( (the_Source_of G1) . e in dom f & (the_Target_of G1) . e in dom f ) by A19, GLIB_000:def 13; :: thesis: verum
end;
let e, v, w be object ; :: thesis: ( e in dom g & v in dom f & w in dom f & e Joins v,w,G1 implies g . e Joins f . v,f . w,G2 )
assume ( e in dom g & v in dom f & w in dom f ) ; :: thesis: ( e Joins v,w,G1 implies g . e Joins f . v,f . w,G2 )
then consider v0, w0 being object such that
A20: ( v0 in dom f & w0 in dom f & e in E1 & g . e in E2 & e Joins v0,w0,G1 & g . e Joins f . v0,f . w0,G2 ) by A13, A14;
assume e Joins v,w,G1 ; :: thesis: g . e Joins f . v,f . w,G2
then ( ( v = v0 & w = w0 ) or ( v = w0 & w = v0 ) ) by A20, GLIB_000:15;
hence g . e Joins f . v,f . w,G2 by A20, GLIB_000:14; :: thesis: verum
end;
then reconsider F = [f,g] as PGraphMapping of G1,G2 by GLIB_010:8;
take F ; :: thesis: ( F _V = f & dom (F _E) = E1 /\ (G1 .edgesBetween (dom f)) & rng (F _E) c= E2 /\ (G2 .edgesBetween (rng f)) )
thus ( F _V = f & dom (F _E) = E1 /\ (G1 .edgesBetween (dom f)) & rng (F _E) c= E2 /\ (G2 .edgesBetween (rng f)) ) by A13, A18; :: thesis: verum