:: Recognizing Chordal Graphs: Lex BFS and MCSRevised by Piotr Rudnicki, September 2008
:: by Broderick Arneson and Piotr Rudnicki
::
:: Received November 17, 2006
:: Copyright (c) 2006 Association of Mizar Users
TH2:
for f being Function st f is one-to-one holds
card (dom f) = card (rng f)
Tw0:
for F being Function
for x, y being set holds dom (F +* (x .--> y)) = (dom F) \/ {x}
invrngrestr:
for f being one-to-one Function
for X, Y being set st X c= Y holds
for x being set st x in dom ((f | X) " ) holds
((f | X) " ) . x = ((f | Y) " ) . x
theorem :: LEXBFS:1
Lm1:
for a, b, c being real number st a < b holds
(c - b) + 1 < (c - a) + 1
theorem Th2: :: LEXBFS:2
for
n,
m,
k being
Nat st
m <= k &
n < m holds
k -' m < k -' n
:: deftheorem Def1 defines with_finite-elements LEXBFS:def 1 :
:: deftheorem Def2 defines .\/ LEXBFS:def 2 :
theorem Th5: :: LEXBFS:3
theorem Th6: :: LEXBFS:4
theorem Th7: :: LEXBFS:5
:: deftheorem Def3 defines natsubset-yielding LEXBFS:def 3 :
Lm2:
for F being Function st ( for x being set st x in rng F holds
x is finite ) holds
F is finite-yielding
theorem Th8: :: LEXBFS:6
:: deftheorem Def4 defines .incSubset LEXBFS:def 4 :
:: deftheorem Def5 defines max LEXBFS:def 5 :
Lm4:
for G being _Graph
for W being Walk of G
for e, v being set st e Joins W .last() ,v,G holds
(W .addEdge e) .length() = (W .length() ) + 1
Lm5:
for G being _Graph
for W being Walk of G holds W .length() = (W .reverse() ) .length()
Lm6:
for G being _Graph
for W being Walk of G
for e, x being set st e Joins W .last() ,x,G holds
for n being Nat st n in dom W holds
( (W .addEdge e) . n = W . n & n in dom (W .addEdge e) )
:: deftheorem Def15 defines iterative LEXBFS:def 6 :
:: deftheorem Def16 defines eventually-constant LEXBFS:def 7 :
theorem Th14: :: LEXBFS:7
theorem Th15: :: LEXBFS:8
theorem Th16: :: LEXBFS:9
theorem Th17: :: LEXBFS:10
:: deftheorem dpVNumSeq defines preVNumberingSeq LEXBFS:def 8 :
:: deftheorem dVNumSeq defines vertex-numbering LEXBFS:def 9 :
:: deftheorem Def27 defines .PickedAt LEXBFS:def 10 :
theorem Th18: :: LEXBFS:11
theorem Th19: :: LEXBFS:12
theorem :: LEXBFS:13
theorem Th21: :: LEXBFS:14
theorem Th22: :: LEXBFS:15
theorem Th23: :: LEXBFS:16
theorem Th24: :: LEXBFS:17
theorem Th25: :: LEXBFS:18
theorem Th26: :: LEXBFS:19
theorem Th27: :: LEXBFS:20
theorem Th28: :: LEXBFS:21
theorem Th29: :: LEXBFS:22
theorem Th30: :: LEXBFS:23
theorem Th31: :: LEXBFS:24
:: deftheorem defines LexBFS:Init LEXBFS:def 11 :
definition
let G be
finite _Graph;
let L be
LexBFS:Labeling of
G;
func LexBFS:PickUnnumbered L -> Vertex of
G means :
Def29:
:: LEXBFS:def 12
it = choose (the_Vertices_of G) if dom (L `1 ) = the_Vertices_of G otherwise ex
S being non
empty finite Subset of
(bool NAT ) ex
B being non
empty finite Subset of
(Bags NAT ) ex
F being
Function st
(
S = rng F &
F = (L `2 ) | ((the_Vertices_of G) \ (dom (L `1 ))) & ( for
x being
finite Subset of
NAT st
x in S holds
x,1
-bag in B ) & ( for
x being
set st
x in B holds
ex
y being
finite Subset of
NAT st
(
y in S &
x = y,1
-bag ) ) &
it = choose (F " {(support (max B,(InvLexOrder NAT )))}) );
existence
( ( dom (L `1 ) = the_Vertices_of G implies ex b1 being Vertex of G st b1 = choose (the_Vertices_of G) ) & ( not dom (L `1 ) = the_Vertices_of G implies ex b1 being Vertex of G ex S being non empty finite Subset of (bool NAT ) ex B being non empty finite Subset of (Bags NAT ) ex F being Function st
( S = rng F & F = (L `2 ) | ((the_Vertices_of G) \ (dom (L `1 ))) & ( for x being finite Subset of NAT st x in S holds
x,1 -bag in B ) & ( for x being set st x in B holds
ex y being finite Subset of NAT st
( y in S & x = y,1 -bag ) ) & b1 = choose (F " {(support (max B,(InvLexOrder NAT )))}) ) ) )
uniqueness
for b1, b2 being Vertex of G holds
( ( dom (L `1 ) = the_Vertices_of G & b1 = choose (the_Vertices_of G) & b2 = choose (the_Vertices_of G) implies b1 = b2 ) & ( not dom (L `1 ) = the_Vertices_of G & ex S being non empty finite Subset of (bool NAT ) ex B being non empty finite Subset of (Bags NAT ) ex F being Function st
( S = rng F & F = (L `2 ) | ((the_Vertices_of G) \ (dom (L `1 ))) & ( for x being finite Subset of NAT st x in S holds
x,1 -bag in B ) & ( for x being set st x in B holds
ex y being finite Subset of NAT st
( y in S & x = y,1 -bag ) ) & b1 = choose (F " {(support (max B,(InvLexOrder NAT )))}) ) & ex S being non empty finite Subset of (bool NAT ) ex B being non empty finite Subset of (Bags NAT ) ex F being Function st
( S = rng F & F = (L `2 ) | ((the_Vertices_of G) \ (dom (L `1 ))) & ( for x being finite Subset of NAT st x in S holds
x,1 -bag in B ) & ( for x being set st x in B holds
ex y being finite Subset of NAT st
( y in S & x = y,1 -bag ) ) & b2 = choose (F " {(support (max B,(InvLexOrder NAT )))}) ) implies b1 = b2 ) )
consistency
for b1 being Vertex of G holds verum
;
end;
:: deftheorem Def29 defines LexBFS:PickUnnumbered LEXBFS:def 12 :
:: deftheorem defines LexBFS:Update LEXBFS:def 13 :
theorem Th32u: :: LEXBFS:25
theorem Th33u: :: LEXBFS:26
theorem Th34u: :: LEXBFS:27
:: deftheorem Def32 defines LexBFS:Step LEXBFS:def 14 :
:: deftheorem dLBFSSeq defines LexBFS:LabelingSeq LEXBFS:def 15 :
:: deftheorem d1stBFSLS defines ``1 LEXBFS:def 16 :
:: deftheorem Def33 defines LexBFS:CSeq LEXBFS:def 17 :
theorem Th36: :: LEXBFS:28
Th38:
for G being _Graph
for v being set holds
( dom ((LexBFS:Init G) `2 ) = the_Vertices_of G & ((LexBFS:Init G) `2 ) . v = {} )
theorem Th40: :: LEXBFS:29
theorem Th41: :: LEXBFS:30
theorem Th44: :: LEXBFS:31
theorem Th46: :: LEXBFS:32
theorem Th47: :: LEXBFS:33
theorem Th48: :: LEXBFS:34
theorem Th49: :: LEXBFS:35
theorem Th50: :: LEXBFS:36
theorem Th51: :: LEXBFS:37
theorem VNS0a: :: LEXBFS:38
theorem VNS0: :: LEXBFS:39
theorem VNS1: :: LEXBFS:40
theorem Th53: :: LEXBFS:41
theorem Th54: :: LEXBFS:42
theorem Th55: :: LEXBFS:43
theorem Th56: :: LEXBFS:44
theorem Th57: :: LEXBFS:45
theorem Th58: :: LEXBFS:46
theorem Th59: :: LEXBFS:47
theorem Th60: :: LEXBFS:48
theorem Th61: :: LEXBFS:49
theorem Th62: :: LEXBFS:50
theorem Th63: :: LEXBFS:51
theorem Th64: :: LEXBFS:52
:: deftheorem Def34 defines with_property_L3 LEXBFS:def 18 :
theorem Th65: :: LEXBFS:53
theorem Th66: :: LEXBFS:54
theorem :: LEXBFS:55
:: deftheorem defines MCS:Init LEXBFS:def 19 :
:: deftheorem Def36 defines MCS:PickUnnumbered LEXBFS:def 20 :
:: deftheorem defines MCS:LabelAdjacent LEXBFS:def 21 :
definition
let G be
finite _Graph;
let L be
MCS:Labeling of
G;
let v be
Vertex of
G;
let n be
Nat;
func MCS:Update L,
v,
n -> MCS:Labeling of
G means :
dLMCSU:
:: LEXBFS:def 22
ex
M being
MCS:Labeling of
G st
(
M = [((L `1 ) +* (v .--> ((G .order() ) -' n))),(L `2 )] &
it = MCS:LabelAdjacent M,
v );
existence
ex b1, M being MCS:Labeling of G st
( M = [((L `1 ) +* (v .--> ((G .order() ) -' n))),(L `2 )] & b1 = MCS:LabelAdjacent M,v )
uniqueness
for b1, b2 being MCS:Labeling of G st ex M being MCS:Labeling of G st
( M = [((L `1 ) +* (v .--> ((G .order() ) -' n))),(L `2 )] & b1 = MCS:LabelAdjacent M,v ) & ex M being MCS:Labeling of G st
( M = [((L `1 ) +* (v .--> ((G .order() ) -' n))),(L `2 )] & b2 = MCS:LabelAdjacent M,v ) holds
b1 = b2
;
end;
:: deftheorem dLMCSU defines MCS:Update LEXBFS:def 22 :
:: deftheorem Def39 defines MCS:Step LEXBFS:def 23 :
:: deftheorem dMCSSeq defines MCS:LabelingSeq LEXBFS:def 24 :
:: deftheorem d1stMCSLS defines ``1 LEXBFS:def 25 :
:: deftheorem Def40 defines MCS:CSeq LEXBFS:def 26 :
theorem Th68: :: LEXBFS:56
theorem Th70: :: LEXBFS:57
theorem Th72: :: LEXBFS:58
theorem Th73: :: LEXBFS:59
theorem Th74: :: LEXBFS:60
theorem Th75: :: LEXBFS:61
theorem Th76: :: LEXBFS:62
theorem :: LEXBFS:63
theorem Th81: :: LEXBFS:64
theorem Th82: :: LEXBFS:65
theorem Th83: :: LEXBFS:66
theorem Th84: :: LEXBFS:67
theorem Th85: :: LEXBFS:68
theorem Th86: :: LEXBFS:69
theorem Th87: :: LEXBFS:70
theorem mVNS0a: :: LEXBFS:71
theorem mVNS0: :: LEXBFS:72
theorem Th88: :: LEXBFS:73
theorem Th89: :: LEXBFS:74
theorem Th90: :: LEXBFS:75
theorem Th91: :: LEXBFS:76
:: deftheorem Def41 defines with_property_T LEXBFS:def 27 :
theorem :: LEXBFS:77
theorem :: LEXBFS:78
theorem :: LEXBFS:79