
theorem Th95:
  for F being non empty Graph-yielding Function, z being Element of dom F
  for G being Graph-yielding Function
  holds G = canGFDistinction(F,z) iff dom G = dom F &
      G.z = F.z | _GraphSelectors &
    for x being Element of dom F st x <> z
    holds G.x = replaceVerticesEdges(
      renameElementsDistinctlyFunc(the_Vertices_of F,x),
      renameElementsDistinctlyFunc(the_Edges_of F,x))
proof
  let F be non empty Graph-yielding Function, z be Element of dom F;
  let G be Graph-yielding Function;
  z in dom F;
  then A1: z in dom canGFDistinction(F) by Def25;
  hereby
    assume A2: G = canGFDistinction(F,z);
    hence dom G = dom canGFDistinction(F) by FUNCT_7:30
      .= dom F by Def25;
    thus G.z = F.z | _GraphSelectors by A1, A2, FUNCT_7:31;
    let x be Element of dom F;
    assume A3: x <> z;
    thus G.x = (canGFDistinction F).x by A2, A3, FUNCT_7:32
      .= replaceVerticesEdges(
        renameElementsDistinctlyFunc(the_Vertices_of F,x),
        renameElementsDistinctlyFunc(the_Edges_of F,x)) by Def25;
  end;
  assume that
    A4: dom G = dom F & G.z = F.z | _GraphSelectors and
    A5: for x being Element of dom F st x <> z
      holds G.x = replaceVerticesEdges(
        renameElementsDistinctlyFunc(the_Vertices_of F,x),
        renameElementsDistinctlyFunc(the_Edges_of F,x));
  A6: dom G = dom canGFDistinction F by A4, Def25
    .= dom canGFDistinction(F,z) by FUNCT_7:30;
  for x being object st x in dom G holds G.x = canGFDistinction(F,z).x
  proof
    let x be object;
    assume A7: x in dom G;
    per cases;
    suppose x = z;
      hence G.x = canGFDistinction(F,z).x by A1, A4, FUNCT_7:31;
    end;
    suppose A8: x <> z;
      reconsider x0 = x as Element of dom F by A4, A7;
      thus G.x = replaceVerticesEdges(
          renameElementsDistinctlyFunc(the_Vertices_of F,x0),
          renameElementsDistinctlyFunc(the_Edges_of F,x0)) by A5, A8
        .= (canGFDistinction F).x by Def25
        .= canGFDistinction(F,z).x by A8, FUNCT_7:32;
    end;
  end;
  hence thesis by A6, FUNCT_1:2;
end;
