
theorem Th67:
  for G1 being _finite _Graph, H being Subgraph of G1
  ex G2 being spanning Subgraph of G1,
    p being non empty _finite Graph-yielding FinSequence
  st H.size() = G2.size() & p.1 == H & p.len p = G2 &
    len p = G1.order() - H.order() + 1 &
    for n being Element of dom p st n <= len p - 1 holds
    ex v being Vertex of G1 st p.(n+1) is addVertex of p.n, v &
      not v in the_Vertices_of p.n
proof
  let G1 be _finite _Graph, H be Subgraph of G1;
  set V = the_Vertices_of G1 \ the_Vertices_of H;
  set G2 = the addVertices of H, V;
  consider p being non empty Graph-yielding FinSequence such that
    A1: p.1 == H & p.len p = G2 & len p = card (V \ the_Vertices_of H) + 1 and
    A2: for n being Element of dom p st n <= len p - 1 holds
      ex v being Vertex of G2
      st p.(n+1) is addVertex of p.n, v & not v in the_Vertices_of p.n by Th59;
  defpred P[Nat] means for n being Element of dom p st $1 = n
    holds p.n is _finite;
  A3: P[1] by A1, GLIB_000:89;
  A4: for k being non zero Nat st P[k] holds P[k+1]
  proof
    let k be non zero Nat;
    assume A5: P[k];
    let m be Element of dom p;
    assume A6: k+1 = m;
    then A7: k+1 <= len p by FINSEQ_3:25;
    then A8: k+1-1 <= len p - 0 by XREAL_1:13;
    1 <= k by NAT_1:14;
    then reconsider n = k as Element of dom p by A8, FINSEQ_3:25;
    k+1-1 <= len p - 1 by A7, XREAL_1:9;
    then consider v being Vertex of G2 such that
      A9: p.(n+1) is addVertex of p.n, v & not v in the_Vertices_of p.n by A2;
    p.n is _finite by A5;
    hence thesis by A6, A9;
  end;
  A10: for k being non zero Nat holds P[k] from NAT_1:sch 10(A3,A4);
  for x being Element of dom p holds p.x is _finite
  proof
    let x be Element of dom p;
    x is non zero Nat by FINSEQ_3:25;
    hence thesis by A10;
  end;
  then reconsider p as non empty _finite Graph-yielding FinSequence
    by GLIB_000:def 66;
  A11: the_Vertices_of G2 = the_Vertices_of H \/
       (the_Vertices_of G1 \ the_Vertices_of H) by GLIB_006:def 10
    .= the_Vertices_of G1 by XBOOLE_1:45;
  G2 is Subgraph of G1
  proof
    the_Edges_of G2 = the_Edges_of H &
      the_Source_of G2 = the_Source_of H &
      the_Target_of G2 = the_Target_of H by GLIB_006:def 10;
    then the_Edges_of G2 c= the_Edges_of G1 &
      for e being set st e in the_Edges_of G2 holds
        (the_Source_of G2).e = (the_Source_of G1).e &
        (the_Target_of G2).e = (the_Target_of G1).e by GLIB_000:def 32;
    hence thesis by A11, GLIB_000:def 32;
  end;
  then reconsider G2 as spanning Subgraph of G1 by A11, GLIB_000:def 33;
  take G2, p;
  thus H.size() = G2.size() by GLIB_006:95;
  thus p.1 == H & p.len p = G2 by A1;
  V \ the_Vertices_of H = the_Vertices_of G1 \
      (the_Vertices_of H \/ the_Vertices_of H) by XBOOLE_1:41
    .= the_Vertices_of G1 \ the_Vertices_of H;
  hence len p
     = card (the_Vertices_of G1) - card(the_Vertices_of H) + 1 by A1, CARD_2:44
    .= G1.order() - card(the_Vertices_of H) + 1 by GLIB_000:def 24
    .= G1.order() - H.order() + 1 by GLIB_000:def 24;
  let n be Element of dom p;
  assume n <= len p - 1;
  then consider v being Vertex of G2 such that
    A12: p.(n+1) is addVertex of p.n, v & not v in the_Vertices_of p.n by A2;
  the_Vertices_of G2 c= the_Vertices_of G1;
  then reconsider v as Vertex of G1 by TARSKI:def 3;
  take v;
  thus thesis by A12;
end;
