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

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

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

set CS = LexBFS:CSeq G;
set CSN = (LexBFS:CSeq G) . n;
set VLN = ((LexBFS:CSeq G) . n) `1 ;
set V2N = ((LexBFS:CSeq G) . n) `2 ;
set CN1 = (LexBFS:CSeq G) . (n + 1);
set V21 = ((LexBFS:CSeq G) . (n + 1)) `2 ;
set w = LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n);
take LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n) ; :: thesis: ( LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n) = LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} & not v in dom (((LexBFS:CSeq G) . n) `1) implies (((LexBFS:CSeq G) . (n + 1)) `2) . v = ((((LexBFS:CSeq G) . n) `2) . v) \/ {((G .order()) -' n)} ) & ( ( not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} or v in dom (((LexBFS:CSeq G) . n) `1) ) implies (((LexBFS:CSeq G) . (n + 1)) `2) . v = (((LexBFS:CSeq G) . n) `2) . v ) ) ) )

A2: (LexBFS:CSeq G) . (n + 1) = LexBFS:Step ((LexBFS:CSeq G) . n) by Def16;
card (dom (((LexBFS:CSeq G) . n) `1)) = n by A1, Th32;
then A3: (LexBFS:CSeq G) . (n + 1) = LexBFS:Update (((LexBFS:CSeq G) . n),(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n)),n) by A1, A2, Def13;
now :: thesis: for v being set st ( not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} or v in dom (((LexBFS:CSeq G) . n) `1) ) holds
(((LexBFS:CSeq G) . (n + 1)) `2) . v = (((LexBFS:CSeq G) . n) `2) . v
let v be set ; :: thesis: ( ( not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} or v in dom (((LexBFS:CSeq G) . n) `1) ) implies (((LexBFS:CSeq G) . (n + 1)) `2) . b1 = (((LexBFS:CSeq G) . n) `2) . b1 )
assume A4: ( not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} or v in dom (((LexBFS:CSeq G) . n) `1) ) ; :: thesis: (((LexBFS:CSeq G) . (n + 1)) `2) . b1 = (((LexBFS:CSeq G) . n) `2) . b1
per cases ( not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} or v in dom (((LexBFS:CSeq G) . n) `1) ) by A4;
suppose not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} ; :: thesis: (((LexBFS:CSeq G) . (n + 1)) `2) . b1 = (((LexBFS:CSeq G) . n) `2) . b1
hence (((LexBFS:CSeq G) . (n + 1)) `2) . v = (((LexBFS:CSeq G) . n) `2) . v by A3, Th25; :: thesis: verum
end;
suppose v in dom (((LexBFS:CSeq G) . n) `1) ; :: thesis: (((LexBFS:CSeq G) . (n + 1)) `2) . b1 = (((LexBFS:CSeq G) . n) `2) . b1
hence (((LexBFS:CSeq G) . (n + 1)) `2) . v = (((LexBFS:CSeq G) . n) `2) . v by A3, Th26; :: thesis: verum
end;
end;
end;
hence ( LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n) = LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n) & ( for v being set holds
( ( v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} & not v in dom (((LexBFS:CSeq G) . n) `1) implies (((LexBFS:CSeq G) . (n + 1)) `2) . v = ((((LexBFS:CSeq G) . n) `2) . v) \/ {((G .order()) -' n)} ) & ( ( not v in G .AdjacentSet {(LexBFS:PickUnnumbered ((LexBFS:CSeq G) . n))} or v in dom (((LexBFS:CSeq G) . n) `1) ) implies (((LexBFS:CSeq G) . (n + 1)) `2) . v = (((LexBFS:CSeq G) . n) `2) . v ) ) ) ) by A3, Th27; :: thesis: verum