let G be finite _Graph; :: thesis: for n being Nat st n < G .order() holds
ex w being Vertex of G st
( w = MCS:PickUnnumbered ((MCS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {w} & not v in dom (((MCS:CSeq G) . n) `1) implies (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 ) & ( ( not v in G .AdjacentSet {w} or v in dom (((MCS:CSeq G) . n) `1) ) implies (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v ) ) ) )

let n be Nat; :: thesis: ( n < G .order() implies ex w being Vertex of G st
( w = MCS:PickUnnumbered ((MCS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {w} & not v in dom (((MCS:CSeq G) . n) `1) implies (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 ) & ( ( not v in G .AdjacentSet {w} or v in dom (((MCS:CSeq G) . n) `1) ) implies (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v ) ) ) ) )

assume A1: n < G .order() ; :: thesis: ex w being Vertex of G st
( w = MCS:PickUnnumbered ((MCS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {w} & not v in dom (((MCS:CSeq G) . n) `1) implies (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 ) & ( ( not v in G .AdjacentSet {w} or v in dom (((MCS:CSeq G) . n) `1) ) implies (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v ) ) ) )

set CSN = (MCS:CSeq G) . n;
set VLN = ((MCS:CSeq G) . n) `1 ;
A2: n = card (dom (((MCS:CSeq G) . n) `1)) by A1, Th65;
set k = (G .order()) -' n;
set w = MCS:PickUnnumbered ((MCS:CSeq G) . n);
set CN1 = (MCS:CSeq G) . (n + 1);
set CSlv = [((((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n))),(((MCS:CSeq G) . n) `2)];
set CSlv1 = (((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n));
A3: dom ((((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n))) = (dom (((MCS:CSeq G) . n) `1)) \/ {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} by Lm1;
rng ((((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n))) c= (rng (((MCS:CSeq G) . n) `1)) \/ (rng ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n))) by FUNCT_4:17;
then rng ((((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n))) c= NAT by XBOOLE_1:1;
then (((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n)) in PFuncs ((the_Vertices_of G),NAT) by A3, PARTFUN1:def 3;
then reconsider CSlv = [((((MCS:CSeq G) . n) `1) +* ((MCS:PickUnnumbered ((MCS:CSeq G) . n)) .--> ((G .order()) -' n))),(((MCS:CSeq G) . n) `2)] as MCS:Labeling of G by ZFMISC_1:def 2;
A4: (MCS:CSeq G) . (n + 1) = MCS:Step ((MCS:CSeq G) . n) by Def25
.= MCS:Update (((MCS:CSeq G) . n),(MCS:PickUnnumbered ((MCS:CSeq G) . n)),n) by A1, A2, Def22
.= MCS:LabelAdjacent (CSlv,(MCS:PickUnnumbered ((MCS:CSeq G) . n))) by Def21 ;
take MCS:PickUnnumbered ((MCS:CSeq G) . n) ; :: thesis: ( MCS:PickUnnumbered ((MCS:CSeq G) . n) = MCS:PickUnnumbered ((MCS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} & not v in dom (((MCS:CSeq G) . n) `1) implies (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 ) & ( ( not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} or v in dom (((MCS:CSeq G) . n) `1) ) implies (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v ) ) ) )

set V2v = CSlv `2 ;
set VLv = CSlv `1 ;
set V21 = ((MCS:CSeq G) . (n + 1)) `2 ;
set V2N = ((MCS:CSeq G) . n) `2 ;
A5: dom (CSlv `1) = (dom (((MCS:CSeq G) . n) `1)) \/ {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} by Lm1;
then A6: dom (((MCS:CSeq G) . n) `1) c= dom (CSlv `1) by XBOOLE_1:7;
A7: now :: thesis: for v being set st ( not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} or v in dom (((MCS:CSeq G) . n) `1) ) holds
(((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v
let v be set ; :: thesis: ( ( not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} or v in dom (((MCS:CSeq G) . n) `1) ) implies (((MCS:CSeq G) . (n + 1)) `2) . b1 = (((MCS:CSeq G) . n) `2) . b1 )
assume A8: ( not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} or v in dom (((MCS:CSeq G) . n) `1) ) ; :: thesis: (((MCS:CSeq G) . (n + 1)) `2) . b1 = (((MCS:CSeq G) . n) `2) . b1
per cases ( not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} or v in dom (((MCS:CSeq G) . n) `1) ) by A8;
suppose not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} ; :: thesis: (((MCS:CSeq G) . (n + 1)) `2) . b1 = (((MCS:CSeq G) . n) `2) . b1
hence (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v by A4, Th60; :: thesis: verum
end;
suppose v in dom (((MCS:CSeq G) . n) `1) ; :: thesis: (((MCS:CSeq G) . (n + 1)) `2) . b1 = (((MCS:CSeq G) . n) `2) . b1
hence (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v by A4, A6, Th61; :: thesis: verum
end;
end;
end;
A9: dom (((MCS:CSeq G) . n) `2) = the_Vertices_of G by FUNCT_2:def 1;
now :: thesis: for v being set st v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} & not v in dom (((MCS:CSeq G) . n) `1) holds
(((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1
let v be set ; :: thesis: ( v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} & not v in dom (((MCS:CSeq G) . n) `1) implies (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 )
assume that
A10: v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} and
A11: not v in dom (((MCS:CSeq G) . n) `1) ; :: thesis: (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1
not v in {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} by A10, CHORD:49;
then not v in dom (CSlv `1) by A5, A11, XBOOLE_0:def 3;
hence (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 by A4, A9, A10, Th62; :: thesis: verum
end;
hence ( MCS:PickUnnumbered ((MCS:CSeq G) . n) = MCS:PickUnnumbered ((MCS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} & not v in dom (((MCS:CSeq G) . n) `1) implies (((MCS:CSeq G) . (n + 1)) `2) . v = ((((MCS:CSeq G) . n) `2) . v) + 1 ) & ( ( not v in G .AdjacentSet {(MCS:PickUnnumbered ((MCS:CSeq G) . n))} or v in dom (((MCS:CSeq G) . n) `1) ) implies (((MCS:CSeq G) . (n + 1)) `2) . v = (((MCS:CSeq G) . n) `2) . v ) ) ) ) by A7; :: thesis: verum