let G1, G2 be _Graph; :: thesis: ( G1 == G2 implies ( ( G1 is _finite implies G2 is _finite ) & ( G1 is loopless implies G2 is loopless ) & ( G1 is _trivial implies G2 is _trivial ) & ( G1 is non-multi implies G2 is non-multi ) & ( G1 is non-Dmulti implies G2 is non-Dmulti ) & ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) ) )
assume A1: G1 == G2 ; :: thesis: ( ( G1 is _finite implies G2 is _finite ) & ( G1 is loopless implies G2 is loopless ) & ( G1 is _trivial implies G2 is _trivial ) & ( G1 is non-multi implies G2 is non-multi ) & ( G1 is non-Dmulti implies G2 is non-Dmulti ) & ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) )
then A2: the_Edges_of G1 = the_Edges_of G2 ;
the_Vertices_of G1 = the_Vertices_of G2 by A1;
hence ( G1 is _finite implies G2 is _finite ) by A2; :: thesis: ( ( G1 is loopless implies G2 is loopless ) & ( G1 is _trivial implies G2 is _trivial ) & ( G1 is non-multi implies G2 is non-multi ) & ( G1 is non-Dmulti implies G2 is non-Dmulti ) & ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) )
A3: ( the_Source_of G1 = the_Source_of G2 & the_Target_of G1 = the_Target_of G2 ) by A1;
A4: ( G1 is loopless implies G2 is loopless ) by A2, A3;
hence ( G1 is loopless implies G2 is loopless ) ; :: thesis: ( ( G1 is _trivial implies G2 is _trivial ) & ( G1 is non-multi implies G2 is non-multi ) & ( G1 is non-Dmulti implies G2 is non-Dmulti ) & ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) )
thus ( G1 is _trivial implies G2 is _trivial ) by A1; :: thesis: ( ( G1 is non-multi implies G2 is non-multi ) & ( G1 is non-Dmulti implies G2 is non-Dmulti ) & ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) )
A5: now :: thesis: ( G1 is non-multi implies G2 is non-multi )
assume A6: G1 is non-multi ; :: thesis: G2 is non-multi
now :: thesis: for e1, e2, v1, v2 being object st e1 Joins v1,v2,G2 & e2 Joins v1,v2,G2 holds
e1 = e2
let e1, e2, v1, v2 be object ; :: thesis: ( e1 Joins v1,v2,G2 & e2 Joins v1,v2,G2 implies e1 = e2 )
assume ( e1 Joins v1,v2,G2 & e2 Joins v1,v2,G2 ) ; :: thesis: e1 = e2
then ( e1 Joins v1,v2,G1 & e2 Joins v1,v2,G1 ) by A1;
hence e1 = e2 by A6; :: thesis: verum
end;
hence G2 is non-multi ; :: thesis: verum
end;
hence ( G1 is non-multi implies G2 is non-multi ) ; :: thesis: ( ( G1 is non-Dmulti implies G2 is non-Dmulti ) & ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) )
A7: now :: thesis: ( G1 is non-Dmulti implies G2 is non-Dmulti )
assume A8: G1 is non-Dmulti ; :: thesis: G2 is non-Dmulti
now :: thesis: for e1, e2, v1, v2 being object st e1 DJoins v1,v2,G2 & e2 DJoins v1,v2,G2 holds
e1 = e2
let e1, e2, v1, v2 be object ; :: thesis: ( e1 DJoins v1,v2,G2 & e2 DJoins v1,v2,G2 implies e1 = e2 )
assume ( e1 DJoins v1,v2,G2 & e2 DJoins v1,v2,G2 ) ; :: thesis: e1 = e2
then ( e1 DJoins v1,v2,G1 & e2 DJoins v1,v2,G1 ) by A1;
hence e1 = e2 by A8; :: thesis: verum
end;
hence G2 is non-Dmulti ; :: thesis: verum
end;
hence ( G1 is non-Dmulti implies G2 is non-Dmulti ) ; :: thesis: ( ( G1 is simple implies G2 is simple ) & ( G1 is Dsimple implies G2 is Dsimple ) )
thus ( G1 is simple implies G2 is simple ) by A4, A5; :: thesis: ( G1 is Dsimple implies G2 is Dsimple )
thus ( G1 is Dsimple implies G2 is Dsimple ) by A4, A7; :: thesis: verum