
theorem Th17:
  for G1, G2 being _Graph holds G1 tolerates G2 iff
    for e,v1,w1,v2,w2 being object st e DJoins v1,w1,G1 & e DJoins v2,w2,G2
    holds v1 = v2 & w1 = w2
proof
  let G1, G2 be _Graph;
  hereby
    assume A1: G1 tolerates G2;
    let e,v1,w1,v2,w2 be object;
    assume A2: e DJoins v1,w1,G1 & e DJoins v2,w2,G2;
    then A3: e in the_Edges_of G1 & e in the_Edges_of G2 by GLIB_000:def 14;
    then e in dom the_Source_of G1 & e in dom the_Source_of G2
      by FUNCT_2:def 1;
    then A4: e in dom the_Source_of G1 /\ dom the_Source_of G2
      by XBOOLE_0:def 4;
    thus v1 = (the_Source_of G1).e by A2, GLIB_000:def 14
      .= (the_Source_of G2).e by A1, A4, PARTFUN1:def 4
      .= v2 by A2, GLIB_000:def 14;
    e in dom the_Target_of G1 & e in dom the_Target_of G2
      by A3, FUNCT_2:def 1;
    then A5: e in dom the_Target_of G1 /\ dom the_Target_of G2
      by XBOOLE_0:def 4;
    thus w1 = (the_Target_of G1).e by A2, GLIB_000:def 14
      .= (the_Target_of G2).e by A1, A5, PARTFUN1:def 4
      .= w2 by A2, GLIB_000:def 14;
  end;
  assume A6: for e,v1,w1,v2,w2 being object
    st e DJoins v1,w1,G1 & e DJoins v2,w2,G2 holds v1 = v2 & w1 = w2;
  now
    let x be object;
    set v1 = (the_Source_of G1).x, w1 = (the_Target_of G1).x;
    set v2 = (the_Source_of G2).x, w2 = (the_Target_of G2).x;
    assume x in dom the_Source_of G1 /\ dom the_Source_of G2;
    then x in the_Edges_of G1 /\ dom the_Source_of G2 by FUNCT_2:def 1;
    then x in the_Edges_of G1 /\ the_Edges_of G2 by FUNCT_2:def 1;
    then x in the_Edges_of G1 & x in the_Edges_of G2 by XBOOLE_0:def 4;
    then x DJoins v1,w1,G1 & x DJoins v2,w2,G2 by GLIB_000:def 14;
    hence (the_Source_of G1).x = (the_Source_of G2).x by A6;
  end;
  hence the_Source_of G1 tolerates the_Source_of G2 by PARTFUN1:def 4;
  now
    let x be object;
    set v1 = (the_Source_of G1).x, w1 = (the_Target_of G1).x;
    set v2 = (the_Source_of G2).x, w2 = (the_Target_of G2).x;
    assume x in dom the_Target_of G1 /\ dom the_Target_of G2;
    then x in the_Edges_of G1 /\ dom the_Target_of G2 by FUNCT_2:def 1;
    then x in the_Edges_of G1 /\ the_Edges_of G2 by FUNCT_2:def 1;
    then x in the_Edges_of G1 & x in the_Edges_of G2 by XBOOLE_0:def 4;
    then x DJoins v1,w1,G1 & x DJoins v2,w2,G2 by GLIB_000:def 14;
    hence (the_Target_of G1).x = (the_Target_of G2).x by A6;
  end;
  hence the_Target_of G1 tolerates the_Target_of G2 by PARTFUN1:def 4;
end;
