let G1 be _Graph; :: thesis: for G2 being reverseEdgeDirections of G1
for v1 being Vertex of G1
for v2 being Vertex of G2 st v1 = v2 holds
( v2 .edgesIn() = v1 .edgesOut() & v2 .inDegree() = v1 .outDegree() & v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() )

let G2 be reverseEdgeDirections of G1; :: thesis: for v1 being Vertex of G1
for v2 being Vertex of G2 st v1 = v2 holds
( v2 .edgesIn() = v1 .edgesOut() & v2 .inDegree() = v1 .outDegree() & v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() )

let v1 be Vertex of G1; :: thesis: for v2 being Vertex of G2 st v1 = v2 holds
( v2 .edgesIn() = v1 .edgesOut() & v2 .inDegree() = v1 .outDegree() & v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() )

let v2 be Vertex of G2; :: thesis: ( v1 = v2 implies ( v2 .edgesIn() = v1 .edgesOut() & v2 .inDegree() = v1 .outDegree() & v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() ) )
assume A1: v1 = v2 ; :: thesis: ( v2 .edgesIn() = v1 .edgesOut() & v2 .inDegree() = v1 .outDegree() & v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() )
now :: thesis: for e being object holds
( ( e in v2 .edgesIn() implies e in v1 .edgesOut() ) & ( e in v1 .edgesOut() implies e in v2 .edgesIn() ) )
let e be object ; :: thesis: ( ( e in v2 .edgesIn() implies e in v1 .edgesOut() ) & ( e in v1 .edgesOut() implies e in v2 .edgesIn() ) )
hereby :: thesis: ( e in v1 .edgesOut() implies e in v2 .edgesIn() ) end;
assume A5: e in v1 .edgesOut() ; :: thesis: e in v2 .edgesIn()
A6: e is set by TARSKI:1;
consider x being set such that
A7: e DJoins v1,x,G1 by A5, GLIB_000:59;
e in the_Edges_of G1 by A7, GLIB_000:def 14;
then e DJoins x,v2,G2 by A1, A7, GLIB_007:7;
hence e in v2 .edgesIn() by A6, GLIB_000:57; :: thesis: verum
end;
hence v2 .edgesIn() = v1 .edgesOut() by TARSKI:2; :: thesis: ( v2 .inDegree() = v1 .outDegree() & v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() )
hence v2 .inDegree() = v1 .outDegree() ; :: thesis: ( v2 .edgesOut() = v1 .edgesIn() & v2 .outDegree() = v1 .inDegree() )
now :: thesis: for e being object holds
( ( e in v2 .edgesOut() implies e in v1 .edgesIn() ) & ( e in v1 .edgesIn() implies e in v2 .edgesOut() ) )
let e be object ; :: thesis: ( ( e in v2 .edgesOut() implies e in v1 .edgesIn() ) & ( e in v1 .edgesIn() implies e in v2 .edgesOut() ) )
hereby :: thesis: ( e in v1 .edgesIn() implies e in v2 .edgesOut() ) end;
assume A11: e in v1 .edgesIn() ; :: thesis: e in v2 .edgesOut()
A12: e is set by TARSKI:1;
consider x being set such that
A13: e DJoins x,v1,G1 by A11, GLIB_000:57;
e in the_Edges_of G1 by A13, GLIB_000:def 14;
then e DJoins v2,x,G2 by A1, A13, GLIB_007:7;
hence e in v2 .edgesOut() by A12, GLIB_000:59; :: thesis: verum
end;
hence v2 .edgesOut() = v1 .edgesIn() by TARSKI:2; :: thesis: v2 .outDegree() = v1 .inDegree()
hence v2 .outDegree() = v1 .inDegree() ; :: thesis: verum