:: GLIB_000 semantic presentation
:: deftheorem Def1 defines GraphStruct GLIB_000:def 1 :
:: deftheorem Def2 defines VertexSelector GLIB_000:def 2 :
:: deftheorem Def3 defines EdgeSelector GLIB_000:def 3 :
:: deftheorem Def4 defines SourceSelector GLIB_000:def 4 :
:: deftheorem Def5 defines TargetSelector GLIB_000:def 5 :
:: deftheorem Def6 defines _GraphSelectors GLIB_000:def 6 :
:: deftheorem Def7 defines the_Vertices_of GLIB_000:def 7 :
:: deftheorem Def8 defines the_Edges_of GLIB_000:def 8 :
:: deftheorem Def9 defines the_Source_of GLIB_000:def 9 :
:: deftheorem Def10 defines the_Target_of GLIB_000:def 10 :
:: deftheorem Def11 defines [Graph-like] GLIB_000:def 11 :
Lemma3:
for b1 being _Graph holds
( dom (the_Source_of b1) = the_Edges_of b1 & dom (the_Target_of b1) = the_Edges_of b1 & rng (the_Source_of b1) c= the_Vertices_of b1 & rng (the_Target_of b1) c= the_Vertices_of b1 )
by FUNCT_2:def 1;
definition
let c1 be non
empty set ;
let c2 be
set ;
let c3,
c4 be
Function of
c2,
c1;
func createGraph c1,
c2,
c3,
c4 -> _Graph equals :: GLIB_000:def 12
<*a1,a2,a3,a4*>;
coherence
<*c1,c2,c3,c4*> is _Graph
end;
:: deftheorem Def12 defines createGraph GLIB_000:def 12 :
Lemma4:
for b1 being non empty set
for b2 being set
for b3, b4 being Function of b2,b1 holds
( the_Vertices_of (createGraph b1,b2,b3,b4) = b1 & the_Edges_of (createGraph b1,b2,b3,b4) = b2 & the_Source_of (createGraph b1,b2,b3,b4) = b3 & the_Target_of (createGraph b1,b2,b3,b4) = b4 )
by SCMPDS_1:3;
:: deftheorem Def13 defines .set GLIB_000:def 13 :
:: deftheorem Def14 defines .strict GLIB_000:def 14 :
Lemma5:
for b1 being GraphStruct holds
( b1 is [Graph-like] iff ( _GraphSelectors c= dom b1 & not the_Vertices_of b1 is empty & the_Source_of b1 is Function of the_Edges_of b1, the_Vertices_of b1 & the_Target_of b1 is Function of the_Edges_of b1, the_Vertices_of b1 ) )
:: deftheorem Def15 defines Joins GLIB_000:def 15 :
:: deftheorem Def16 defines DJoins GLIB_000:def 16 :
:: deftheorem Def17 defines SJoins GLIB_000:def 17 :
:: deftheorem Def18 defines DSJoins GLIB_000:def 18 :
Lemma10:
for b1 being _Graph
for b2, b3, b4 being set holds
( b2 Joins b3,b4,b1 iff ( b2 DJoins b3,b4,b1 or b2 DJoins b4,b3,b1 ) )
definition
let c1 be
_Graph;
attr a1 is
finite means :
Def19:
:: GLIB_000:def 19
(
the_Vertices_of a1 is
finite &
the_Edges_of a1 is
finite );
attr a1 is
loopless means :
Def20:
:: GLIB_000:def 20
for
b1 being
set holds
( not
b1 in the_Edges_of a1 or not
(the_Source_of a1) . b1 = (the_Target_of a1) . b1 );
attr a1 is
trivial means :
Def21:
:: GLIB_000:def 21
Card (the_Vertices_of a1) = one ;
attr a1 is
non-multi means :
Def22:
:: GLIB_000:def 22
for
b1,
b2,
b3,
b4 being
set st
b1 Joins b3,
b4,
a1 &
b2 Joins b3,
b4,
a1 holds
b1 = b2;
attr a1 is
non-Dmulti means :
Def23:
:: GLIB_000:def 23
for
b1,
b2,
b3,
b4 being
set st
b1 DJoins b3,
b4,
a1 &
b2 DJoins b3,
b4,
a1 holds
b1 = b2;
end;
:: deftheorem Def19 defines finite GLIB_000:def 19 :
:: deftheorem Def20 defines loopless GLIB_000:def 20 :
:: deftheorem Def21 defines trivial GLIB_000:def 21 :
:: deftheorem Def22 defines non-multi GLIB_000:def 22 :
:: deftheorem Def23 defines non-Dmulti GLIB_000:def 23 :
:: deftheorem Def24 defines simple GLIB_000:def 24 :
:: deftheorem Def25 defines Dsimple GLIB_000:def 25 :
Lemma18:
for b1 being _Graph st the_Edges_of b1 = {} holds
b1 is simple
:: deftheorem Def26 defines .order() GLIB_000:def 26 :
:: deftheorem Def27 defines .size() GLIB_000:def 27 :
:: deftheorem Def28 defines .edgesInto GLIB_000:def 28 :
:: deftheorem Def29 defines .edgesOutOf GLIB_000:def 29 :
:: deftheorem Def30 defines .edgesInOut GLIB_000:def 30 :
:: deftheorem Def31 defines .edgesBetween GLIB_000:def 31 :
definition
let c1 be
_Graph;
let c2,
c3 be
set ;
func c1 .edgesBetween c2,
c3 -> Subset of
(the_Edges_of a1) means :
Def32:
:: GLIB_000:def 32
for
b1 being
set holds
(
b1 in a4 iff
b1 SJoins a2,
a3,
a1 );
existence
ex b1 being Subset of (the_Edges_of c1) st
for b2 being set holds
( b2 in b1 iff b2 SJoins c2,c3,c1 )
uniqueness
for b1, b2 being Subset of (the_Edges_of c1) st ( for b3 being set holds
( b3 in b1 iff b3 SJoins c2,c3,c1 ) ) & ( for b3 being set holds
( b3 in b2 iff b3 SJoins c2,c3,c1 ) ) holds
b1 = b2
func c1 .edgesDBetween c2,
c3 -> Subset of
(the_Edges_of a1) means :
Def33:
:: GLIB_000:def 33
for
b1 being
set holds
(
b1 in a4 iff
b1 DSJoins a2,
a3,
a1 );
existence
ex b1 being Subset of (the_Edges_of c1) st
for b2 being set holds
( b2 in b1 iff b2 DSJoins c2,c3,c1 )
uniqueness
for b1, b2 being Subset of (the_Edges_of c1) st ( for b3 being set holds
( b3 in b1 iff b3 DSJoins c2,c3,c1 ) ) & ( for b3 being set holds
( b3 in b2 iff b3 DSJoins c2,c3,c1 ) ) holds
b1 = b2
end;
:: deftheorem Def32 defines .edgesBetween GLIB_000:def 32 :
:: deftheorem Def33 defines .edgesDBetween GLIB_000:def 33 :
:: deftheorem Def34 defines Subgraph GLIB_000:def 34 :
Lemma24:
for b1 being _Graph holds b1 is Subgraph of b1
Lemma25:
for b1 being _Graph
for b2 being Subgraph of b1
for b3, b4, b5 being set st b5 Joins b3,b4,b2 holds
b5 Joins b3,b4,b1
:: deftheorem Def35 defines spanning GLIB_000:def 35 :
:: deftheorem Def36 defines == GLIB_000:def 36 :
:: deftheorem Def37 defines c= GLIB_000:def 37 :
:: deftheorem Def38 defines c< GLIB_000:def 38 :
for
b1,
b2 being
_Graph holds
(
b1 c< b2 iff (
b1 c= b2 &
b1 != b2 ) );
:: deftheorem Def39 defines inducedSubgraph GLIB_000:def 39 :
Lemma31:
for b1 being _Graph
for b2, b3 being set holds
( ( b2 in the_Edges_of b1 & (the_Source_of b1) . b2 in b3 & (the_Target_of b1) . b2 in b3 ) iff b2 in b1 .edgesBetween b3 )
Lemma32:
for b1 being _Graph holds the_Edges_of b1 = b1 .edgesBetween (the_Vertices_of b1)
:: deftheorem Def40 defines .edgesIn() GLIB_000:def 40 :
:: deftheorem Def41 defines .edgesOut() GLIB_000:def 41 :
:: deftheorem Def42 defines .edgesInOut() GLIB_000:def 42 :
Lemma33:
for b1 being _Graph
for b2 being Vertex of b1
for b3 being set holds
( b3 in b2 .edgesIn() iff ( b3 in the_Edges_of b1 & (the_Target_of b1) . b3 = b2 ) )
Lemma34:
for b1 being _Graph
for b2 being Vertex of b1
for b3 being set holds
( b3 in b2 .edgesOut() iff ( b3 in the_Edges_of b1 & (the_Source_of b1) . b3 = b2 ) )
:: deftheorem Def43 defines .adj GLIB_000:def 43 :
:: deftheorem Def44 defines .inDegree() GLIB_000:def 44 :
:: deftheorem Def45 defines .outDegree() GLIB_000:def 45 :
:: deftheorem Def46 defines .degree() GLIB_000:def 46 :
:: deftheorem Def47 defines .degree() GLIB_000:def 47 :
:: deftheorem Def48 defines .inNeighbors() GLIB_000:def 48 :
:: deftheorem Def49 defines .outNeighbors() GLIB_000:def 49 :
:: deftheorem Def50 defines .allNeighbors() GLIB_000:def 50 :
:: deftheorem Def51 defines isolated GLIB_000:def 51 :
:: deftheorem Def52 defines isolated GLIB_000:def 52 :
:: deftheorem Def53 defines endvertex GLIB_000:def 53 :
:: deftheorem Def54 defines endvertex GLIB_000:def 54 :
:: deftheorem Def55 defines Graph-yielding GLIB_000:def 55 :
:: deftheorem Def56 defines halting GLIB_000:def 56 :
:: deftheorem Def57 defines .Lifespan() GLIB_000:def 57 :
:: deftheorem Def58 defines .Result() GLIB_000:def 58 :
:: deftheorem Def59 defines .-> GLIB_000:def 59 :
:: deftheorem Def60 defines finite GLIB_000:def 60 :
:: deftheorem Def61 defines loopless GLIB_000:def 61 :
:: deftheorem Def62 defines trivial GLIB_000:def 62 :
:: deftheorem Def63 defines non-trivial GLIB_000:def 63 :
:: deftheorem Def64 defines non-multi GLIB_000:def 64 :
:: deftheorem Def65 defines non-Dmulti GLIB_000:def 65 :
:: deftheorem Def66 defines simple GLIB_000:def 66 :
:: deftheorem Def67 defines Dsimple GLIB_000:def 67 :
:: deftheorem Def68 defines halting GLIB_000:def 68 :
theorem Th1: :: GLIB_000:1
theorem Th2: :: GLIB_000:2
theorem Th3: :: GLIB_000:3
theorem Th4: :: GLIB_000:4
theorem Th5: :: GLIB_000:5
theorem Th6: :: GLIB_000:6
canceled;
theorem Th7: :: GLIB_000:7
theorem Th8: :: GLIB_000:8
for
b1 being non
empty set for
b2 being
set for
b3,
b4 being
Function of
b2,
b1 holds
(
the_Vertices_of (createGraph b1,b2,b3,b4) = b1 &
the_Edges_of (createGraph b1,b2,b3,b4) = b2 &
the_Source_of (createGraph b1,b2,b3,b4) = b3 &
the_Target_of (createGraph b1,b2,b3,b4) = b4 )
by Lemma4;
theorem Th9: :: GLIB_000:9
theorem Th10: :: GLIB_000:10
theorem Th11: :: GLIB_000:11
theorem Th12: :: GLIB_000:12
theorem Th13: :: GLIB_000:13
theorem Th14: :: GLIB_000:14
theorem Th15: :: GLIB_000:15
for
b1 being
GraphStruct for
b2,
b3 being
set for
b4,
b5 being
Nat st
b4 <> b5 holds
(
b4 in dom ((b1 .set b4,b2) .set b5,b3) &
b5 in dom ((b1 .set b4,b2) .set b5,b3) &
((b1 .set b4,b2) .set b5,b3) . b4 = b2 &
((b1 .set b4,b2) .set b5,b3) . b5 = b3 )
theorem Th16: :: GLIB_000:16
theorem Th17: :: GLIB_000:17
theorem Th18: :: GLIB_000:18
for
b1 being
_Graph for
b2,
b3,
b4,
b5,
b6 being
set st
b2 Joins b3,
b4,
b1 &
b2 Joins b5,
b6,
b1 & not (
b3 = b5 &
b4 = b6 ) holds
(
b3 = b6 &
b4 = b5 )
theorem Th19: :: GLIB_000:19
theorem Th20: :: GLIB_000:20
for
b1 being
_Graph for
b2,
b3,
b4,
b5,
b6 being
set st
b2 Joins b3,
b4,
b1 & ( (
b3 in b5 &
b4 in b6 ) or (
b3 in b6 &
b4 in b5 ) ) holds
b2 SJoins b5,
b6,
b1
theorem Th21: :: GLIB_000:21
theorem Th22: :: GLIB_000:22
theorem Th23: :: GLIB_000:23
theorem Th24: :: GLIB_000:24
theorem Th25: :: GLIB_000:25
theorem Th26: :: GLIB_000:26
theorem Th27: :: GLIB_000:27
theorem Th28: :: GLIB_000:28
theorem Th29: :: GLIB_000:29
theorem Th30: :: GLIB_000:30
theorem Th31: :: GLIB_000:31
theorem Th32: :: GLIB_000:32
theorem Th33: :: GLIB_000:33
theorem Th34: :: GLIB_000:34
theorem Th35: :: GLIB_000:35
theorem Th36: :: GLIB_000:36
theorem Th37: :: GLIB_000:37
theorem Th38: :: GLIB_000:38
theorem Th39: :: GLIB_000:39
theorem Th40: :: GLIB_000:40
theorem Th41: :: GLIB_000:41
theorem Th42: :: GLIB_000:42
theorem Th43: :: GLIB_000:43
theorem Th44: :: GLIB_000:44
theorem Th45: :: GLIB_000:45
theorem Th46: :: GLIB_000:46
theorem Th47: :: GLIB_000:47
theorem Th48: :: GLIB_000:48
theorem Th49: :: GLIB_000:49
theorem Th50: :: GLIB_000:50
theorem Th51: :: GLIB_000:51
theorem Th52: :: GLIB_000:52
theorem Th53: :: GLIB_000:53
theorem Th54: :: GLIB_000:54
theorem Th55: :: GLIB_000:55
theorem Th56: :: GLIB_000:56
theorem Th57: :: GLIB_000:57
theorem Th58: :: GLIB_000:58
theorem Th59: :: GLIB_000:59
theorem Th60: :: GLIB_000:60
theorem Th61: :: GLIB_000:61
theorem Th62: :: GLIB_000:62
theorem Th63: :: GLIB_000:63
theorem Th64: :: GLIB_000:64
theorem Th65: :: GLIB_000:65
theorem Th66: :: GLIB_000:66
theorem Th67: :: GLIB_000:67
theorem Th68: :: GLIB_000:68
theorem Th69: :: GLIB_000:69
theorem Th70: :: GLIB_000:70
theorem Th71: :: GLIB_000:71
theorem Th72: :: GLIB_000:72
theorem Th73: :: GLIB_000:73
theorem Th74: :: GLIB_000:74
theorem Th75: :: GLIB_000:75
for
b1 being
_Graph for
b2 being
Subgraph of
b1 for
b3,
b4,
b5 being
set holds
( (
b5 Joins b3,
b4,
b2 implies
b5 Joins b3,
b4,
b1 ) & (
b5 DJoins b3,
b4,
b2 implies
b5 DJoins b3,
b4,
b1 ) & (
b5 SJoins b3,
b4,
b2 implies
b5 SJoins b3,
b4,
b1 ) & (
b5 DSJoins b3,
b4,
b2 implies
b5 DSJoins b3,
b4,
b1 ) )
theorem Th76: :: GLIB_000:76
for
b1 being
_Graph for
b2 being
Subgraph of
b1 for
b3,
b4,
b5 being
set st
b5 in the_Edges_of b2 holds
( (
b5 Joins b3,
b4,
b1 implies
b5 Joins b3,
b4,
b2 ) & (
b5 DJoins b3,
b4,
b1 implies
b5 DJoins b3,
b4,
b2 ) & (
b5 SJoins b3,
b4,
b1 implies
b5 SJoins b3,
b4,
b2 ) & (
b5 DSJoins b3,
b4,
b1 implies
b5 DSJoins b3,
b4,
b2 ) )
theorem Th77: :: GLIB_000:77
theorem Th78: :: GLIB_000:78
theorem Th79: :: GLIB_000:79
theorem Th80: :: GLIB_000:80
theorem Th81: :: GLIB_000:81
theorem Th82: :: GLIB_000:82
theorem Th83: :: GLIB_000:83
theorem Th84: :: GLIB_000:84
theorem Th85: :: GLIB_000:85
theorem Th86: :: GLIB_000:86
theorem Th87: :: GLIB_000:87
theorem Th88: :: GLIB_000:88
for
b1,
b2,
b3 being
_Graph st
b1 == b2 &
b2 == b3 holds
b1 == b3
theorem Th89: :: GLIB_000:89
theorem Th90: :: GLIB_000:90
theorem Th91: :: GLIB_000:91
for
b1,
b2 being
_Graph for
b3,
b4,
b5,
b6,
b7 being
set st
b1 == b2 holds
( (
b3 Joins b4,
b5,
b1 implies
b3 Joins b4,
b5,
b2 ) & (
b3 DJoins b4,
b5,
b1 implies
b3 DJoins b4,
b5,
b2 ) & (
b3 SJoins b6,
b7,
b1 implies
b3 SJoins b6,
b7,
b2 ) & (
b3 DSJoins b6,
b7,
b1 implies
b3 DSJoins b6,
b7,
b2 ) )
theorem Th92: :: GLIB_000:92
theorem Th93: :: GLIB_000:93
theorem Th94: :: GLIB_000:94
theorem Th95: :: GLIB_000:95
theorem Th96: :: GLIB_000:96
theorem Th97: :: GLIB_000:97
theorem Th98: :: GLIB_000:98
theorem Th99: :: GLIB_000:99
theorem Th100: :: GLIB_000:100
theorem Th101: :: GLIB_000:101
theorem Th102: :: GLIB_000:102