
theorem Th162:
  for G3, G4 being _Graph, v1,v2 being object, V1, V2 being set
  for G1 being addAdjVertexAll of G3,v1,V1
  for G2 being addAdjVertexAll of G4,v2,V2
  for F0 being PGraphMapping of G3, G4
  st V1 c= the_Vertices_of G3 & V2 c= the_Vertices_of G4 &
    not v1 in the_Vertices_of G3 & not v2 in the_Vertices_of G4 &
    F0_V | V1 is one-to-one & dom(F0_V | V1) = V1 & rng(F0_V | V1) = V2
  ex F being PGraphMapping of G1, G2 st
    F_V = F0_V +* (v1 .--> v2) & F_E | dom F0_E = F0_E &
    (F0 is total implies F is total) &
    (F0 is onto implies F is onto) &
    (F0 is one-to-one implies F is one-to-one) &
    (F0 is weak_SG-embedding implies F is weak_SG-embedding) &
    (F0 is isomorphism implies F is isomorphism)
proof
  let G3, G4 be _Graph, v1,v2 be object, V1, V2 be set;
  let G1 be addAdjVertexAll of G3,v1,V1, G2 be addAdjVertexAll of G4,v2,V2;
  let F0 be PGraphMapping of G3, G4;
  assume that
    A1: V1 c= the_Vertices_of G3 & V2 c= the_Vertices_of G4 &
      not v1 in the_Vertices_of G3 & not v2 in the_Vertices_of G4 and
    A2: F0_V | V1 is one-to-one & dom(F0_V | V1) = V1 & rng(F0_V | V1) = V2;
  :: construct F, starting with F_V
  A3: V1 c= dom F0_V
  proof
    V1 = dom F0_V /\ V1 by A2, RELAT_1:61;
    hence thesis by XBOOLE_1:17;
  end;
  set f = F0_V +* (v1 .--> v2);
  A4: v1 is set & v2 is set by TARSKI:1;
  A5: {v1} = dom({v1} --> v2)
    .= dom(v1 .--> v2) by FUNCOP_1:def 9;
  A6: dom f = dom F0_V \/ {v1} by A5, FUNCT_4:def 1;
  not v1 in dom F0_V by A1;
  then A7: dom F0_V misses dom(v1 .--> v2) by A5, ZFMISC_1:50;
  dom f c= the_Vertices_of G3 \/ {v1} by A6, XBOOLE_1:9;
  then A8: dom f c= the_Vertices_of G1 by A1, GLIB_007:def 4;
  not v2 in rng F0_V by A1;
  then rng F0_V misses {v2} by ZFMISC_1:50;
  then A9: rng F0_V misses rng(v1 .--> v2) by A4, FUNCOP_1:88;
  A10: rng f = rng F0_V \/ rng(v1 .--> v2) by A7, NECKLACE:6
    .= rng F0_V \/ {v2} by A4, FUNCOP_1:88;
  rng f c= the_Vertices_of G4 \/ {v2} by A10, XBOOLE_1:9;
  then rng f c= the_Vertices_of G2 by A1, GLIB_007:def 4;
  then reconsider f as PartFunc of the_Vertices_of G1, the_Vertices_of G2
    by A8, RELSET_1:4;
  :: next is F_E
  V1 c= V1;
  then consider h1 being Function of V1, G1.edgesBetween(V1,{v1}) such that
    A11: h1 is one-to-one onto and
    A12: for w being object st w in V1 holds h1.w Joins w,v1,G1
    by A1, GLIB_007:57;
  V2 c= V2;
  then consider h2 being Function of V2, G2.edgesBetween(V2,{v2}) such that
    A13: h2 is one-to-one onto and
    A14: for w being object st w in V2 holds h2.w Joins w,v2,G2
    by A1, GLIB_007:57;
  reconsider h1 as one-to-one Function by A11;
  set g = F0_E +* (h2*F0_V*(h1"));
  dom(h2*F0_V*(h1")) c= dom(h1") by RELAT_1:25;
  then dom F0_E \/ dom(h2*F0_V*(h1")) c= the_Edges_of G3 \/ dom(h1")
    by XBOOLE_1:13;
  then dom g c= the_Edges_of G3 \/ dom(h1") by FUNCT_4:def 1;
  then dom g c= the_Edges_of G3 \/ rng h1 by FUNCT_1:33;
  then dom g c= the_Edges_of G3 \/ G1.edgesBetween(V1,{v1})
    by A11, FUNCT_2:def 3;
  then A15: dom g c= the_Edges_of G1 by A1, GLIB_007:59;
  A16: rng(h2*F0_V*(h1")) c= rng(h2*F0_V) by RELAT_1:26;
  rng(h2*F0_V) c= rng h2 by RELAT_1:26;
  then rng(h2*F0_V*(h1")) c= rng h2 by A16, XBOOLE_1:1;
  then A17: rng F0_E \/ rng(h2*F0_V*(h1")) c= the_Edges_of G4 \/ rng h2
    by XBOOLE_1:13;
  rng g c= rng F0_E \/ rng(h2*F0_V*(h1")) by FUNCT_4:17;
  then rng g c= the_Edges_of G4 \/ rng h2 by A17, XBOOLE_1:1;
  then rng g c= the_Edges_of G4 \/ G2.edgesBetween(V2,{v2})
    by A13, FUNCT_2:def 3;
  then rng g c= the_Edges_of G2 by A1, GLIB_007:59;
  then reconsider g as PartFunc of the_Edges_of G1, the_Edges_of G2
    by A15, RELSET_1:4;
  A18: G1.edgesBetween(V1,{v1}) misses the_Edges_of G3 &
    the_Edges_of G1 = the_Edges_of G3 \/ G1.edgesBetween(V1,{v1})
    by A1, GLIB_007:59;
  A19: dom F0_E misses dom(h2*F0_V*(h1"))
  proof
    assume dom F0_E meets dom(h2*F0_V*(h1"));
    then dom F0_E /\ dom(h2*F0_V*(h1")) <> {} by XBOOLE_0:def 7;
    then consider e being object such that
      A20: e in dom F0_E /\ dom(h2*F0_V*(h1")) by XBOOLE_0:def 1;
    A21: e in the_Edges_of G3 by A20;
    e in dom(h2*F0_V*(h1")) by A20, XBOOLE_0:def 4;
    then e in dom(h1") by FUNCT_1:11;
    then e in rng h1 by FUNCT_1:33;
    then e in G1.edgesBetween(V1,{v1}) by A11, FUNCT_2:def 3;
    then e in the_Edges_of G3 /\ G1.edgesBetween(V1,{v1})
      by A21, XBOOLE_0:def 4;
    hence contradiction by A1, GLIB_007:59, XBOOLE_0:def 7;
  end;
  A22: rng F0_E misses rng(h2*F0_V*(h1"))
  proof
    assume rng F0_E meets rng(h2*F0_V*(h1"));
    then rng F0_E /\ rng(h2*F0_V*(h1")) <> {} by XBOOLE_0:def 7;
    then consider e being object such that
      A23: e in rng F0_E /\ rng(h2*F0_V*(h1")) by XBOOLE_0:def 1;
    e in rng F0_E by A23, XBOOLE_0:def 4;
    then A24: e in the_Edges_of G4;
    e in rng(h2*F0_V*(h1")) by A23, XBOOLE_0:def 4;
    then e in rng(h2*F0_V) by RELAT_1:26, TARSKI:def 3;
    then e in rng h2 by RELAT_1:26, TARSKI:def 3;
    then e in the_Edges_of G4 /\ G2.edgesBetween(V2,{v2})
      by A24, XBOOLE_0:def 4;
    hence contradiction by A1, GLIB_007:59, XBOOLE_0:def 7;
  end;
  consider E1 being set such that
    card V1 = card E1 & E1 misses the_Edges_of G3 &
    the_Edges_of G1 = the_Edges_of G3 \/ E1 and
    A25: for w1 being object st w1 in V1 ex e1 being object st e1 in E1 &
      e1 Joins w1,v1,G1 &
      for e9 being object st e9 Joins w1,v1,G1 holds e1 = e9
    by A1, GLIB_007:def 4;
  consider E2 being set such that
    card V2 = card E2 & E2 misses the_Edges_of G4 &
    the_Edges_of G2 = the_Edges_of G4 \/ E2 and
    A26: for w2 being object st w2 in V2 ex e2 being object st e2 in E2 &
      e2 Joins w2,v2,G2 &
      for e9 being object st e9 Joins w2,v2,G2 holds e2 = e9
    by A1, GLIB_007:def 4;
  :: defining properties of PGM
  now
    hereby
      let e be object;
      assume e in dom g;
      then e in dom F0_E \/ dom(h2*F0_V*(h1")) by FUNCT_4:def 1;
      then per cases by XBOOLE_0:def 3;
      suppose A27: e in dom F0_E;
        then (the_Source_of G1).e = (the_Source_of G3).e &
          (the_Target_of G1).e = (the_Target_of G3).e by GLIB_006:def 9;
        then (the_Source_of G1).e in dom F0_V &
          (the_Target_of G1).e in dom F0_V by A27, Th5;
        hence (the_Source_of G1).e in dom f & (the_Target_of G1).e in dom f
          by A6, XBOOLE_0:def 3;
      end;
      suppose e in dom(h2*F0_V*(h1"));
        then e in dom(h1") by RELAT_1:25, TARSKI:def 3;
        then e in rng h1 by FUNCT_1:33;
        then e in G1.edgesBetween(V1,{v1}) by A11, FUNCT_2:def 3;
        then e SJoins V1,{v1},G1 by GLIB_000:def 30;
        then (the_Source_of G1).e in V1 & (the_Target_of G1).e in {v1} or
          (the_Source_of G1).e in {v1} & (the_Target_of G1).e in V1
          by GLIB_000:def 15;
        then A28: (the_Source_of G1).e in V1 \/ {v1} &
          (the_Target_of G1).e in V1 \/ {v1} by XBOOLE_0:def 3;
        V1 \/ {v1} c= dom F0_V \/ {v1} by A3, XBOOLE_1:9;
        hence (the_Source_of G1).e in dom f & (the_Target_of G1).e in dom f
          by A6, A28;
      end;
    end;
    let e,v,w be object;
    assume A29: e in dom g & v in dom f & w in dom f;
    assume A30: e Joins v,w,G1;
    then per cases by GLIB_006:72;
    :: in case edge is from subgraph; properties of F0 can be used
    suppose A31: e Joins v,w,G3;
      then A32: e in the_Edges_of G3 by GLIB_000:def 13;
      A33: not e in dom(h2*F0_V*(h1"))
      proof
        assume e in dom(h2*F0_V*(h1"));
        then e in dom(h1") by RELAT_1:25, TARSKI:def 3;
        then e in rng h1 by FUNCT_1:33;
        then e in G1.edgesBetween(V1,{v1}) by A11, FUNCT_2:def 3;
        then the_Edges_of G3 /\ G1.edgesBetween(V1,{v1}) <> {}
          by A32, XBOOLE_0:def 4;
        hence contradiction by A18, XBOOLE_0:def 7;
      end;
      e in dom F0_E \/ dom(h2*F0_V*(h1")) by A29, FUNCT_4:def 1;
      then A34: e in dom F0_E by A33, XBOOLE_0:def 3;
      v in the_Vertices_of G3 & w in the_Vertices_of G3 by A31, GLIB_000:13;
      then A35: not v in {v1} & not w in {v1} by A1, TARSKI:def 1;
      then not v in dom(v1 .--> v2) & not w in dom(v1 .--> v2);
      then A36: f.v = F0_V.v & f.w = F0_V.w by FUNCT_4:11;
      v in dom F0_V \/ dom(v1 .--> v2) & w in dom F0_V \/ dom(v1 .--> v2)
        by A29, FUNCT_4:def 1;
      then v in dom F0_V & w in dom F0_V by A35, A5, XBOOLE_0:def 3;
      then F0_E.e Joins F0_V.v,F0_V.w,G4 by A31, A34, Th4;
      then g.e Joins f.v,f.w,G4 by A33, A36, FUNCT_4:11;
      hence g.e Joins f.v,f.w,G2 by GLIB_006:70;
    end;
    :: in case edge is one of new edges
    suppose A37: not e in the_Edges_of G3;
      then A38: e in G1.edgesBetween(V1,{v1}) &
        (v = v1 & w in V1) or (v in V1 & w = v1) by A1, A18, A30, GLIB_007:51;
      A39: not e in dom F0_E by A37;
      e in dom F0_E \/ dom(h2*F0_V*(h1")) by A29, FUNCT_4:def 1;
      then A40: e in dom(h2*F0_V*(h1")) by A39, XBOOLE_0:def 3;
      then A41: e in dom(h1") & (h1").e in dom(h2*F0_V) by FUNCT_1:11;
      A42: g.e = (h2*F0_V*(h1")).e by A40, FUNCT_4:13
        .= (h2*F0_V).(h1".e) by A40, FUNCT_1:12
        .= h2.(F0_V.(h1".e)) by A41, FUNCT_1:12;
      e in rng h1 by A41, FUNCT_1:33;
      then A43: G1.edgesBetween(V1,{v1}) <> {};
      :: symmetric cases
      per cases by A38;
      suppose A44: v = v1 & w in V1;
        then v in {v1} by TARSKI:def 1;
        then A45: f.v = (v1 .--> v2).v by A5, FUNCT_4:13
          .= v2 by A44, FUNCOP_1:72;
        w <> v1 by A1, A44;
        then not w in dom(v1 .--> v2) by TARSKI:def 1;
        then A46: f.w = F0_V.w by FUNCT_4:11;
        consider e1 being object such that
          e1 in E1 & e1 Joins w,v1,G1 and
          A47: for e2 being object st e2 Joins w,v1,G1 holds e1 = e2
          by A44, A25;
        h1.w = e1 & e = e1 by A12, A30, A44, A47, GLIB_000:14;
        then A48: h1.w = e;
        w in dom h1 by A43, A44, FUNCT_2:def 1;
        then A49: g.e = h2.(F0_V.w) by A42, A48, FUNCT_1:34;
        A50: F0_V.w = (F0_V|V1).w by A44, FUNCT_1:49;
        w in dom(F0_V|V1) by A3, A44, RELAT_1:57;
        then h2.(F0_V.w) Joins F0_V.w,v2,G2 by A2, A14, A50, FUNCT_1:3;
        hence g.e Joins f.v,f.w,G2 by A45, A46, A49, GLIB_000:14;
      end;
      suppose A51: v in V1 & w = v1;
        then w in {v1} by TARSKI:def 1;
        then A52: f.w = (v1 .--> v2).w by A5, FUNCT_4:13
          .= v2 by A51, FUNCOP_1:72;
        v in the_Vertices_of G3 by A1, A51;
        then not v in {v1} by A1, TARSKI:def 1;
        then not v in dom(v1 .--> v2);
        then A53: f.v = F0_V.v by FUNCT_4:11;
        consider e1 being object such that
          e1 in E1 & e1 Joins v,v1,G1 and
          A54: for e2 being object st e2 Joins v,v1,G1 holds e1 = e2
          by A51, A25;
        h1.v = e1 & e = e1 by A12, A30, A51, A54;
        then A55: h1.v = e;
        v in dom h1 by A43, A51, FUNCT_2:def 1;
        then A56: g.e = h2.(F0_V.v) by A42, A55, FUNCT_1:34;
        A57: F0_V.v = (F0_V|V1).v by A51, FUNCT_1:49;
        v in dom(F0_V|V1) by A3, A51, RELAT_1:57;
        then h2.(F0_V.v) Joins F0_V.v,v2,G2 by A2, A14, A57, FUNCT_1:3;
        hence g.e Joins f.v,f.w,G2 by A52, A53, A56;
      end;
    end;
  end;
  then reconsider F = [f,g] as PGraphMapping of G1, G2 by Th8;
  take F;
  thus F_V = F0_V +* (v1 .--> v2);
  thus F_E | dom F0_E = F0_E by A19, FUNCT_4:33;
  thus A58: F0 is total implies F is total
  proof
    now
      let x be object;
      hereby
        assume x in dom(h2*F0_V*(h1"));
        then A59: x in dom(h1") & h1".x in dom(h2*F0_V) by FUNCT_1:11;
        A60: x in rng h1 by A59, FUNCT_1:33;
        then h1 <> {};
        then G1.edgesBetween(V1,{v1}) <> {};
        then A61: dom h1 = V1 by FUNCT_2:def 1;
        consider y being object such that
          A62: y in dom h1 & h1.y = x by A60, FUNCT_1:def 3;
        A63: x Joins y,v1,G1 by A12, A61, A62;
        v1 in {v1} by TARSKI:def 1;
        then x SJoins V1,{v1},G1 by A61, A62, A63, GLIB_000:17;
        hence x in G1.edgesBetween(V1,{v1}) by GLIB_000:def 30;
      end;
      set w1 = (the_Source_of G1).x, w2 = (the_Target_of G1).x;
      assume A64: x in G1.edgesBetween(V1,{v1});
      then G1.edgesBetween(V1,{v1}) <> {};
      then A65: dom h1 = V1 by FUNCT_2:def 1;
      A66: x SJoins V1,{v1},G1 by A64, GLIB_000:def 30;
      then per cases by GLIB_000:def 15;
      suppose A67: w1 in V1 & w2 in {v1};
        then consider e1 being object such that
          e1 in E1 & e1 Joins w1,v1,G1 and
          A68: for e2 being object st e2 Joins w1,v1,G1 holds e1 = e2 by A25;
        w2 = v1 & x in the_Edges_of G1
          by A66, A67, TARSKI:def 1, GLIB_000:def 15;
        then A69: x Joins w1,v1,G1 by GLIB_000:def 13;
        h1.w1 = e1 & x = e1 by A12, A67, A68, A69;
        then A70: h1.w1 = x;
        then x in rng h1 by A65, A67, FUNCT_1:3;
        then A71: x in dom(h1") by FUNCT_1:33;
        A72: w1 in dom F0_V by A3, A67;
        then A73: w1 in dom(F0_V|V1) by A67, RELAT_1:57;
        F0_V.w1 = (F0_V|V1).w1 by A67, FUNCT_1:49;
        then A74: F0_V.w1 in V2 by A2, A73, FUNCT_1:3;
        then A75: h2.(F0_V.w1) Joins F0_V.w1,v2,G2 by A14;
        v2 in {v2} by TARSKI:def 1;
        then h2.(F0_V.w1) SJoins V2,{v2},G2 by A74, A75, GLIB_000:17;
        then h2.(F0_V.w1) in G2.edgesBetween(V2,{v2}) by GLIB_000:def 30;
        then dom h2 = V2 by FUNCT_2:def 1;
        then A76: w1 in dom(h2*F0_V) by A72, A74, FUNCT_1:11;
        h1".x = w1 by A65, A67, A70, FUNCT_1:34;
        hence x in dom(h2*F0_V*(h1")) by A71, A76, FUNCT_1:11;
      end;
      suppose A77: w1 in {v1} & w2 in V1;
        then consider e1 being object such that
          e1 in E1 & e1 Joins w2,v1,G1 and
          A78: for e2 being object st e2 Joins w2,v1,G1 holds e1 = e2 by A25;
        w1 = v1 & x in the_Edges_of G1
          by A66, A77, TARSKI:def 1, GLIB_000:def 15;
        then A79: x Joins w2,v1,G1 by GLIB_000:def 13;
        h1.w2 = e1 & x = e1 by A12, A77, A78, A79;
        then A80: h1.w2 = x;
        then x in rng h1 by A65, A77, FUNCT_1:3;
        then A81: x in dom(h1") by FUNCT_1:33;
        A82: w2 in dom F0_V by A3, A77;
        then A83: w2 in dom(F0_V|V1) by A77, RELAT_1:57;
        F0_V.w2 = (F0_V|V1).w2 by A77, FUNCT_1:49;
        then A84: F0_V.w2 in V2 by A2, A83, FUNCT_1:3;
        then A85: h2.(F0_V.w2) Joins F0_V.w2,v2,G2 by A14;
        v2 in {v2} by TARSKI:def 1;
        then h2.(F0_V.w2) SJoins V2,{v2},G2 by A84, A85, GLIB_000:17;
        then G2.edgesBetween(V2,{v2}) <> {} by GLIB_000:def 30;
        then F0_V.w2 in dom h2 by A84, FUNCT_2:def 1;
        then A86: w2 in dom(h2*F0_V) by A82, FUNCT_1:11;
        h1".x = w2 by A65, A77, A80, FUNCT_1:34;
        hence x in dom(h2*F0_V*(h1")) by A81, A86, FUNCT_1:11;
      end;
    end;
    then A87: dom(h2*F0_V*(h1")) = G1.edgesBetween(V1,{v1}) by TARSKI:2;
    assume F0 is total;
    then A88: dom F0_V = the_Vertices_of G3 & dom F0_E = the_Edges_of G3;
    A89: dom F_V = dom F0_V \/ {v1} by A5, FUNCT_4:def 1
      .= the_Vertices_of G1 by A1, A88, GLIB_007:def 4;
    dom F_E = the_Edges_of G1 by A18, A87, A88, FUNCT_4:def 1;
    hence thesis by A89;
  end;
  thus A90: F0 is onto implies F is onto
  proof
    now
      let x be object;
      thus x in rng(h2*F0_V*(h1")) implies x in G2.edgesBetween(V2,{v2});
      set w1 = (the_Source_of G2).x, w2 = (the_Target_of G2).x;
      assume A91: x in G2.edgesBetween(V2,{v2});
      then A92: dom h2 = V2 by FUNCT_2:def 1;
      A93: x SJoins V2,{v2},G2 by A91, GLIB_000:def 30;
      then per cases by GLIB_000:def 15;
      suppose A94: w1 in V2 & w2 in {v2};
        then A95: h2.w1 Joins w1,v2,G2 by A14;
        consider e2 being object such that
          e2 in E2 & e2 Joins w1,v2,G2 and
          A96: for e9 being object st e9 Joins w1,v2,G2 holds e2 = e9
          by A94, A26;
        w2 = v2 & x in the_Edges_of G2
          by A93, A94, GLIB_000:def 15, TARSKI:def 1;
        then x Joins w1,v2,G2 by GLIB_000:def 13;
        then h2.w1 = e2 & x = e2 by A95, A96;
        then A97: h2.w1 = x;
        w1 in rng(F0_V|V1) by A2, A94;
        then consider z being object such that
          A98: z in dom(F0_V|V1) & (F0_V|V1).z = w1 by FUNCT_1:def 3;
        A99: z in V1 by A98;
        then A100: h1.z Joins z,v1,G1 by A12;
        v1 in {v1} by TARSKI:def 1;
        then h1.z SJoins V1,{v1},G1 by A99, A100, GLIB_000:17;
        then h1.z in G1.edgesBetween(V1,{v1}) by GLIB_000:def 30;
        then dom h1 = V1 by FUNCT_2:def 1;
        then z in rng(h1") by A99, FUNCT_1:33;
        then consider y being object such that
          A101: y in dom(h1") & h1".y = z by FUNCT_1:def 3;
        h1".y in V1 by A99, A101;
        then A102: y in dom(F0_V*(h1")) by A3, A101, FUNCT_1:11;
        then A103: (F0_V*(h1")).y = F0_V.z by A101, FUNCT_1:12
          .= w1 by A98, FUNCT_1:49;
        then A104: y in dom(h2*(F0_V*(h1"))) by A92, A94, A102, FUNCT_1:11;
        A105: (h2*F0_V*(h1")).y = (h2*(F0_V*(h1"))).y by RELAT_1:36
          .= x by A97, A103, A104, FUNCT_1:12;
        y in dom(h2*F0_V*(h1")) by A104, RELAT_1:36;
        hence x in rng(h2*F0_V*(h1")) by A105, FUNCT_1:3;
      end;
      suppose A106: w1 in {v2} & w2 in V2;
        then A107: h2.w2 Joins w2,v2,G2 by A14;
        consider e2 being object such that
          e2 in E2 & e2 Joins w2,v2,G2 and
          A108: for e9 being object st e9 Joins w2,v2,G2 holds e2 = e9
          by A106, A26;
        w1 = v2 & x in the_Edges_of G2
          by A93, A106, GLIB_000:def 15, TARSKI:def 1;
        then x Joins w2,v2,G2 by GLIB_000:def 13;
        then h2.w2 = e2 & x = e2 by A107, A108;
        then A109: h2.w2 = x;
        w2 in rng(F0_V|V1) by A2, A106;
        then consider z being object such that
          A110: z in dom(F0_V|V1) & (F0_V|V1).z = w2 by FUNCT_1:def 3;
        A111: z in V1 by A110;
        then A112: h1.z Joins z,v1,G1 by A12;
        v1 in {v1} by TARSKI:def 1;
        then h1.z SJoins V1,{v1},G1 by A111, A112, GLIB_000:17;
        then h1.z in G1.edgesBetween(V1,{v1}) by GLIB_000:def 30;
        then dom h1 = V1 by FUNCT_2:def 1;
        then z in rng(h1") by A111, FUNCT_1:33;
        then consider y being object such that
          A113: y in dom(h1") & h1".y = z by FUNCT_1:def 3;
        h1".y in V1 by A111, A113;
        then A114: y in dom(F0_V*(h1")) by A3, A113, FUNCT_1:11;
        then A115: (F0_V*(h1")).y = F0_V.z by A113, FUNCT_1:12
          .= w2 by A110, FUNCT_1:49;
        then A116: y in dom(h2*(F0_V*(h1"))) by A92, A106, A114, FUNCT_1:11;
        A117: (h2*F0_V*(h1")).y = (h2*(F0_V*(h1"))).y by RELAT_1:36
          .= x by A109, A115, A116, FUNCT_1:12;
        y in dom(h2*F0_V*(h1")) by A116, RELAT_1:36;
        hence x in rng(h2*F0_V*(h1")) by A117, FUNCT_1:3;
      end;
    end;
    then A118: rng(h2*F0_V*(h1")) = G2.edgesBetween(V2,{v2}) by TARSKI:2;
    assume F0 is onto;
    then A119: rng F0_V = the_Vertices_of G4 & rng F0_E = the_Edges_of G4;
    A120: v1 is set & v2 is set by TARSKI:1;
    A121: rng F_V = rng F0_V \/ rng(v1 .--> v2) by A7, NECKLACE:6
      .= the_Vertices_of G4 \/ {v2} by A119, A120, FUNCOP_1:88
      .= the_Vertices_of G2 by A1, GLIB_007:def 4;
    rng F_E = rng F0_E \/ rng(h2*F0_V*(h1")) by A19, NECKLACE:6
      .= the_Edges_of G2 by A1, A118, A119, GLIB_007:59;
    hence thesis by A121;
  end;
  thus A122: F0 is one-to-one implies F is one-to-one
    by A9, A13, A22, FUNCT_4:92;
  thus F0 is weak_SG-embedding implies F is weak_SG-embedding by A58, A122;
  thus F0 is isomorphism implies F is isomorphism by A58, A90, A122;
end;
