reserve G, G2 for _Graph, V, E for set,
  v for object;

theorem Th3:
  for G2, E for G1 being reverseEdgeDirections of G2, E
  holds G2 is reverseEdgeDirections of G1, E
proof
  let G2, E;
  let G1 be reverseEdgeDirections of G2, E;
  per cases;
  suppose A1: E c= the_Edges_of G2;
    then A2: the_Vertices_of G1 = the_Vertices_of G2 &
      the_Edges_of G1 = the_Edges_of G2 &
      the_Source_of G1 = the_Source_of G2 +* ((the_Target_of G2) | E) &
      the_Target_of G1 = the_Target_of G2 +* ((the_Source_of G2) | E) by Def1;
    set S1 = the_Source_of G1;
    set S2 = the_Source_of G2;
    set T1 = the_Target_of G1;
    set T2 = the_Target_of G2;
    A3: dom S1 = the_Edges_of G1 & dom T1 = the_Edges_of G1 &
      dom S2 = the_Edges_of G2 & dom T2 = the_Edges_of G2 by FUNCT_2:def 1;
    A4: dom (S2|E) = E by A3, A1, RELAT_1:62;
    A5: dom (T2|E) = E by A3, A1, RELAT_1:62;
    A6: S2 = S2 +* (S2|E) by FUNCT_4:75
      .= S2 +* (T2|E) +* (S2|E) by A4, A5, FUNCT_4:74
      .= S1 +* (T1|E) by A2, A4;
    T2 = T2 +* (T2|E) by FUNCT_4:75
      .= T2 +* (S2|E) +* (T2|E) by A4, A5, FUNCT_4:74
      .= T1 +* (S1|E) by A2, A5;
    hence thesis by A1, A2, A6, Def1;
  end;
  suppose A7: not E c= the_Edges_of G2;
    then A8: G1 == G2 by Def1;
    then the_Edges_of G1 = the_Edges_of G2 by GLIB_000:def 34;
    hence thesis by A7, A8, Def1;
  end;
end;
