reserve G for _Graph;
reserve V for non empty set, E for Relation of V;

theorem Th86:
  for G being non-Dmulti _Graph
  ex F being PGraphMapping of G, createGraph(the_Vertices_of G,VertexDomRel(G))
  st F is Disomorphism & F_V = id the_Vertices_of G &
    for e being object st e in the_Edges_of G
    holds F_E.e = [(the_Source_of G).e,(the_Target_of G).e]
proof
  let G be non-Dmulti _Graph;
  set G9 = createGraph(the_Vertices_of G, VertexDomRel(G));
  reconsider f = id the_Vertices_of G
    as PartFunc of the_Vertices_of G, the_Vertices_of G9;
  deffunc G(object) = [(the_Source_of G).$1,(the_Target_of G).$1];
  consider g being Function such that
    A1: dom g = the_Edges_of G and
    A2: for x being object st x in the_Edges_of G holds g.x = G(x)
    from FUNCT_1:sch 3;
  now
    let y be object;
    hereby
      assume y in rng g;
      then consider x being object such that
        A3: x in dom g & g.x = y by FUNCT_1:def 3;
      A4: y = [(the_Source_of G).x,(the_Target_of G).x] by A1, A2, A3;
      x DJoins (the_Source_of G).x,(the_Target_of G).x,G
        by A1, A3, GLIB_000:def 14;
      then y in VertexDomRel(G) by A4, Th1;
      hence y in the_Edges_of G9;
    end;
    assume y in the_Edges_of G9;
    then A5: y in VertexDomRel(G);
    then consider v,w being object such that
      A6: y = [v,w] by RELAT_1:def 1;
    consider e being object such that
      A7: e DJoins v,w,G by A5, A6, Th1;
    A8: e in the_Edges_of G & (the_Source_of G).e = v &
      (the_Target_of G).e = w by A7, GLIB_000:def 14;
    then g.e = y by A2, A6;
    hence y in rng g by A1, A8, FUNCT_1:3;
  end;
  then A9: rng g = the_Edges_of G9 by TARSKI:2;
  then reconsider g as PartFunc of the_Edges_of G, the_Edges_of G9
    by A1, RELSET_1:4;
  now
    thus for e being object st e in dom g holds
      (the_Source_of G).e in dom f & (the_Target_of G).e in dom f by FUNCT_2:5;
    let e,v,w be object;
    assume A10: e in dom g & v in dom f & w in dom f & e DJoins v,w,G;
    then A11: (the_Source_of G).e = v & (the_Target_of G).e = w
      by GLIB_000:def 14;
    A12: g.e = [v,w] by A2, A10, A11;
    g.e in rng g by A10, FUNCT_1:3;
    then g.e in the_Edges_of G9;
    then g.e in VertexDomRel(G);
    then g.e DJoins v,w,G9 by A12, Th63;
    then g.e DJoins f.v,w,G9 by A10, FUNCT_1:18;
    hence g.e DJoins f.v,f.w,G9 by A10, FUNCT_1:18;
  end;
  then reconsider F = [f,g] as directed PGraphMapping of G, G9 by GLIB_010:30;
  take F;
  now
    let x1,x2 be object;
    assume A13: x1 in dom g & x2 in dom g & g.x1 = g.x2;
    then g.x1 = [(the_Source_of G).x1,(the_Target_of G).x1] &
      g.x2 = [(the_Source_of G).x2,(the_Target_of G).x2] by A2;
    then (the_Source_of G).x1 = (the_Source_of G).x2 &
      (the_Target_of G).x1 = (the_Target_of G).x2 by A13, XTUPLE_0:1;
    then x1 DJoins (the_Source_of G).x1,(the_Target_of G).x1,G &
      x2 DJoins (the_Source_of G).x1,(the_Target_of G).x1,G
      by A13, GLIB_000:def 14;
    hence x1 = x2 by GLIB_000:def 21;
  end;
  then A14: g is one-to-one by FUNCT_1:def 4;
  f is one-to-one & F_V = f & F_E = g;
  then A15: F is one-to-one by A14, GLIB_010:def 13;
  A16: dom f = the_Vertices_of G & rng f = the_Vertices_of G9;
  F_V = f & F_E = g;
  then A17: F is total onto by A1, A9, A16, GLIB_010:def 11, GLIB_010:def 12;
  thus F is Disomorphism by A15, A17;
  thus F_V = id the_Vertices_of G;
  let e be object;
  assume e in the_Edges_of G;
  hence F_E.e = [(the_Source_of G).e,(the_Target_of G).e] by A2;
end;
