defpred S1[ Nat] means for G being _finite simple _Graph
for W being set
for H being inducedSubgraph of G,W st (G .order()) - (H .order()) = $1 holds
ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) );
A1: S1[ 0 ]
proof
let G be _finite simple _Graph; :: thesis: for W being set
for H being inducedSubgraph of G,W st (G .order()) - (H .order()) = 0 holds
ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

let W be set ; :: thesis: for H being inducedSubgraph of G,W st (G .order()) - (H .order()) = 0 holds
ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

let H be inducedSubgraph of G,W; :: thesis: ( (G .order()) - (H .order()) = 0 implies ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) ) )

assume A2: (G .order()) - (H .order()) = 0 ; :: thesis: ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

then H is spanning by GLIB_000:117;
then A3: G == H by GLIB_000:120;
set p = <*G*>;
take <*G*> ; :: thesis: ( <*G*> . 1 == H & <*G*> . (len <*G*>) = G & len <*G*> = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom <*G*> st n <= (len <*G*>) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V ) ) )

thus <*G*> . 1 == H by A3; :: thesis: ( <*G*> . (len <*G*>) = G & len <*G*> = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom <*G*> st n <= (len <*G*>) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V ) ) )

thus <*G*> . (len <*G*>) = <*G*> . 1 by FINSEQ_1:40
.= G ; :: thesis: ( len <*G*> = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom <*G*> st n <= (len <*G*>) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V ) ) )

thus len <*G*> = ((G .order()) - (H .order())) + 1 by A2, FINSEQ_1:40; :: thesis: for n being Element of dom <*G*> st n <= (len <*G*>) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V )

let n be Element of dom <*G*>; :: thesis: ( n <= (len <*G*>) - 1 implies ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V ) )

( 1 <= n & n <= len <*G*> ) by FINSEQ_3:25;
then ( 1 <= n & n <= 1 ) by FINSEQ_1:40;
then A4: n = 1 by XXREAL_0:1;
assume n <= (len <*G*>) - 1 ; :: thesis: ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V )

then n <= 1 - 1 by FINSEQ_1:40;
hence ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (<*G*> . n)) & V c= the_Vertices_of (<*G*> . n) & <*G*> . (n + 1) is addAdjVertexAll of <*G*> . n,v,V ) by A4; :: thesis: verum
end;
A5: for k being Nat st S1[k] holds
S1[k + 1]
proof
let k be Nat; :: thesis: ( S1[k] implies S1[k + 1] )
assume A6: S1[k] ; :: thesis: S1[k + 1]
let G be _finite simple _Graph; :: thesis: for W being set
for H being inducedSubgraph of G,W st (G .order()) - (H .order()) = k + 1 holds
ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

let W be set ; :: thesis: for H being inducedSubgraph of G,W st (G .order()) - (H .order()) = k + 1 holds
ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

let H be inducedSubgraph of G,W; :: thesis: ( (G .order()) - (H .order()) = k + 1 implies ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) ) )

assume A7: (G .order()) - (H .order()) = k + 1 ; :: thesis: ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

A8: (the_Vertices_of G) \ (the_Vertices_of H) <> {}
proof end;
set v0 = the Element of (the_Vertices_of G) \ (the_Vertices_of H);
the Element of (the_Vertices_of G) \ (the_Vertices_of H) in (the_Vertices_of G) \ (the_Vertices_of H) by A8;
then reconsider v0 = the Element of (the_Vertices_of G) \ (the_Vertices_of H) as Vertex of G ;
set G2 = the removeVertex of G,v0;
A10: the_Vertices_of G <> the_Vertices_of H by A8, XBOOLE_1:37;
then A11: not G is _trivial by GLIB_000:121, GLIB_000:def 33;
then A12: ( the removeVertex of G,v0 .order()) + 1 = G .order() by GLIB_000:48;
then A13: ( the removeVertex of G,v0 .order()) - (H .order()) = k by A7;
A14: the_Edges_of the removeVertex of G,v0 = G .edgesBetween ((the_Vertices_of G) \ {v0}) by A11, GLIB_000:47
.= (G .edgesBetween (the_Vertices_of G)) \ (v0 .edgesInOut()) by GLIB_000:107
.= (the_Edges_of G) \ (v0 .edgesInOut()) by GLIB_000:34 ;
( the_Vertices_of H c= the_Vertices_of the removeVertex of G,v0 & the_Edges_of H c= the_Edges_of the removeVertex of G,v0 )
proof
A15: not v0 in the_Vertices_of H by A8, XBOOLE_0:def 5;
the_Vertices_of H c= (the_Vertices_of G) \ {v0} by A15, ZFMISC_1:34;
hence the_Vertices_of H c= the_Vertices_of the removeVertex of G,v0 by A11, GLIB_000:47; :: thesis: the_Edges_of H c= the_Edges_of the removeVertex of G,v0
(the_Edges_of H) /\ (v0 .edgesInOut()) = {}
proof end;
then the_Edges_of H = (the_Edges_of H) \ (v0 .edgesInOut()) by XBOOLE_0:def 7, XBOOLE_1:83;
hence the_Edges_of H c= the_Edges_of the removeVertex of G,v0 by A14, XBOOLE_1:33; :: thesis: verum
end;
then A18: H is Subgraph of the removeVertex of G,v0 by GLIB_000:44;
H is inducedSubgraph of the removeVertex of G,v0,W
proof
H != G by A10, GLIB_000:def 34;
then W is non empty Subset of (the_Vertices_of G) by GLIB_000:def 37;
then A19: ( the_Vertices_of H = W & the_Edges_of H = G .edgesBetween W ) by GLIB_000:def 37;
then A20: W is non empty Subset of (the_Vertices_of the removeVertex of G,v0) by A18, GLIB_000:def 32;
for x being object st x in G .edgesBetween W holds
x in the removeVertex of G,v0 .edgesBetween W
proof end;
then A24: G .edgesBetween W c= the removeVertex of G,v0 .edgesBetween W by TARSKI:def 3;
the removeVertex of G,v0 .edgesBetween W c= G .edgesBetween W by GLIB_000:76;
then the removeVertex of G,v0 .edgesBetween W = the_Edges_of H by A19, A24, XBOOLE_0:def 10;
hence H is inducedSubgraph of the removeVertex of G,v0,W by A18, A19, A20, GLIB_000:def 37; :: thesis: verum
end;
then consider p being non empty Graph-yielding _finite simple FinSequence such that
A25: ( p . 1 == H & p . (len p) = the removeVertex of G,v0 & len p = (( the removeVertex of G,v0 .order()) - (H .order())) + 1 ) and
A26: for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of the removeVertex of G,v0) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) by A6, A13;
set q = p ^ <*G*>;
take p ^ <*G*> ; :: thesis: ( (p ^ <*G*>) . 1 == H & (p ^ <*G*>) . (len (p ^ <*G*>)) = G & len (p ^ <*G*>) = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom (p ^ <*G*>) st n <= (len (p ^ <*G*>)) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V ) ) )

1 in dom p by FINSEQ_5:6;
hence (p ^ <*G*>) . 1 == H by A25, FINSEQ_1:def 7; :: thesis: ( (p ^ <*G*>) . (len (p ^ <*G*>)) = G & len (p ^ <*G*>) = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom (p ^ <*G*>) st n <= (len (p ^ <*G*>)) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V ) ) )

A27: len (p ^ <*G*>) = (len p) + (len <*G*>) by FINSEQ_1:22
.= (len p) + 1 by FINSEQ_1:40 ;
hence A28: (p ^ <*G*>) . (len (p ^ <*G*>)) = G by FINSEQ_1:42; :: thesis: ( len (p ^ <*G*>) = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom (p ^ <*G*>) st n <= (len (p ^ <*G*>)) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V ) ) )

thus len (p ^ <*G*>) = ((G .order()) - (H .order())) + 1 by A12, A25, A27; :: thesis: for n being Element of dom (p ^ <*G*>) st n <= (len (p ^ <*G*>)) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )

let n be Element of dom (p ^ <*G*>); :: thesis: ( n <= (len (p ^ <*G*>)) - 1 implies ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V ) )

assume n <= (len (p ^ <*G*>)) - 1 ; :: thesis: ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )

per cases then ( n = (len (p ^ <*G*>)) - 1 or n <= (len p) - 1 ) by Lm12;
suppose A29: n = (len (p ^ <*G*>)) - 1 ; :: thesis: ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )

then A30: (p ^ <*G*>) . (n + 1) = G by A28;
A31: 1 <= n by FINSEQ_3:25;
A32: n = len p by A27, A29;
then n in dom p by A31, FINSEQ_3:25;
then A33: (p ^ <*G*>) . n = the removeVertex of G,v0 by A25, A32, FINSEQ_1:def 7;
reconsider V = v0 .allNeighbors() as finite set ;
take v0 ; :: thesis: ex V being finite set st
( v0 in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v0,V )

take V ; :: thesis: ( v0 in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v0,V )
v0 in {v0} by TARSKI:def 1;
then not v0 in (the_Vertices_of G) \ {v0} by XBOOLE_0:def 5;
then not v0 in the_Vertices_of the removeVertex of G,v0 by A11, GLIB_000:47;
hence v0 in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) by A33, XBOOLE_0:def 5; :: thesis: ( V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v0,V )
for x being object st x in V holds
x in the_Vertices_of the removeVertex of G,v0 hence V c= the_Vertices_of ((p ^ <*G*>) . n) by A33, TARSKI:def 3; :: thesis: (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v0,V
thus (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v0,V by A11, A30, A33, Th47; :: thesis: verum
end;
suppose A36: n <= (len p) - 1 ; :: thesis: ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )

then A37: n + 0 <= ((len p) - 1) + 1 by XREAL_1:7;
1 <= n by FINSEQ_3:25;
then reconsider m = n as Element of dom p by A37, FINSEQ_3:25;
consider v being object , V being finite set such that
A38: ( v in (the_Vertices_of the removeVertex of G,v0) \ (the_Vertices_of (p . m)) & V c= the_Vertices_of (p . m) & p . (m + 1) is addAdjVertexAll of p . m,v,V ) by A26, A36;
( 1 + 0 <= n + 1 & n + 1 <= ((len p) - 1) + 1 ) by A36, XREAL_1:6;
then n + 1 in dom p by FINSEQ_3:25;
then A39: (p ^ <*G*>) . (n + 1) = p . (m + 1) by FINSEQ_1:def 7;
A40: (p ^ <*G*>) . n = p . m by FINSEQ_1:def 7;
take v ; :: thesis: ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )

take V ; :: thesis: ( v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) & V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )
(the_Vertices_of the removeVertex of G,v0) \ (the_Vertices_of (p . m)) c= (the_Vertices_of G) \ (the_Vertices_of (p . m)) by XBOOLE_1:33;
hence v in (the_Vertices_of G) \ (the_Vertices_of ((p ^ <*G*>) . n)) by A38, A40; :: thesis: ( V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V )
thus ( V c= the_Vertices_of ((p ^ <*G*>) . n) & (p ^ <*G*>) . (n + 1) is addAdjVertexAll of (p ^ <*G*>) . n,v,V ) by A38, A39, A40; :: thesis: verum
end;
end;
end;
A41: for k being Nat holds S1[k] from NAT_1:sch 2(A1, A5);
let G be _finite simple _Graph; :: thesis: for W being set
for H being inducedSubgraph of G,W ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

let W be set ; :: thesis: for H being inducedSubgraph of G,W ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

let H be inducedSubgraph of G,W; :: thesis: ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) )

(G .order()) - (H .order()) is Nat by GLIB_000:75, NAT_1:21;
hence ex p being non empty Graph-yielding _finite simple FinSequence st
( p . 1 == H & p . (len p) = G & len p = ((G .order()) - (H .order())) + 1 & ( for n being Element of dom p st n <= (len p) - 1 holds
ex v being object ex V being finite set st
( v in (the_Vertices_of G) \ (the_Vertices_of (p . n)) & V c= the_Vertices_of (p . n) & p . (n + 1) is addAdjVertexAll of p . n,v,V ) ) ) by A41; :: thesis: verum