
theorem Th25:
  for G1, G2, G being _Graph st G1 tolerates G2 holds G is GraphUnion of G1, G2
    iff the_Vertices_of G = the_Vertices_of G1 \/ the_Vertices_of G2 &
    the_Edges_of G = the_Edges_of G1 \/ the_Edges_of G2 &
    the_Source_of G = the_Source_of G1 +* the_Source_of G2 &
    the_Target_of G = the_Target_of G1 +* the_Target_of G2
proof
  let G1, G2, G be _Graph;
  assume A1: G1 tolerates G2;
  hereby
    assume G is GraphUnion of G1, G2;
    then consider S being GraphUnionSet such that
      A2: S = {G1,G2} & G is GraphUnion of S by A1, Def26;
    thus the_Vertices_of G = union the_Vertices_of {G1,G2} by A2, Def25
      .= union {the_Vertices_of G1, the_Vertices_of G2} by Th6
      .= the_Vertices_of G1 \/ the_Vertices_of G2 by ZFMISC_1:75;
    thus the_Edges_of G = union the_Edges_of {G1,G2} by A2, Def25
      .= union {the_Edges_of G1, the_Edges_of G2} by Th6
      .= the_Edges_of G1 \/ the_Edges_of G2 by ZFMISC_1:75;
    thus the_Source_of G = union the_Source_of {G1,G2} by A2, Def25
      .= union {the_Source_of G1, the_Source_of G2} by Th6
      .= the_Source_of G1 \/ the_Source_of G2 by ZFMISC_1:75
      .= the_Source_of G1 +* the_Source_of G2 by A1, FUNCT_4:30;
    thus the_Target_of G = union the_Target_of {G1,G2} by A2, Def25
      .= union {the_Target_of G1, the_Target_of G2} by Th6
      .= the_Target_of G1 \/ the_Target_of G2 by ZFMISC_1:75
      .= the_Target_of G1 +* the_Target_of G2 by A1, FUNCT_4:30;
  end;
  assume A3: the_Vertices_of G = the_Vertices_of G1 \/ the_Vertices_of G2 &
    the_Edges_of G = the_Edges_of G1 \/ the_Edges_of G2 &
    the_Source_of G = the_Source_of G1 +* the_Source_of G2 &
    the_Target_of G = the_Target_of G1 +* the_Target_of G2;
  reconsider S = {G1,G2} as GraphUnionSet by A1, Th19;
  A4: the_Vertices_of G1 c= the_Vertices_of G by A3, XBOOLE_1:7;
  the_Source_of G = the_Source_of G1 \/ the_Source_of G2
    by A1, A3, FUNCT_4:30;
  then A5: the_Source_of G1 c= the_Source_of G by XBOOLE_1:7;
  the_Target_of G = the_Target_of G1 \/ the_Target_of G2
    by A1, A3, FUNCT_4:30;
  then A6: G is Supergraph of G1 by A4, A5, XBOOLE_1:7, GLIB_006:63;
  A7: the_Vertices_of G
     = union {the_Vertices_of G1,the_Vertices_of G2} by A3, ZFMISC_1:75
    .= union the_Vertices_of S by Th6;
  A8: the_Edges_of G
     = union {the_Edges_of G1,the_Edges_of G2} by A3, ZFMISC_1:75
    .= union the_Edges_of S by Th6;
  A9: the_Source_of G
     = the_Source_of G1 \/ the_Source_of G2 by A1, A3, FUNCT_4:30
    .= union {the_Source_of G1,the_Source_of G2} by ZFMISC_1:75
    .= union the_Source_of S by Th6;
  the_Target_of G
     = the_Target_of G1 \/ the_Target_of G2 by A1, A3, FUNCT_4:30
    .= union {the_Target_of G1,the_Target_of G2} by ZFMISC_1:75
    .= union the_Target_of S by Th6;
  then G is GraphUnion of S by A7, A8, A9, Def25;
  hence G is GraphUnion of G1, G2 by A1, A6, Def26;
end;
