Article GRAPH_1, MML version 4.99.1005
:: GRAPH_1:structnot 1 => GRAPH_1:struct 1
definition
struct() MultiGraphStruct(#
Vertices -> set,
Edges -> set,
Source -> Function-like quasi_total Relation of the Edges of it,the Vertices of it,
Target -> Function-like quasi_total Relation of the Edges of it,the Vertices of it
#);
end;
:: GRAPH_1:attrnot 1 => GRAPH_1:attr 1
definition
let a1 be MultiGraphStruct;
attr a1 is strict;
end;
:: GRAPH_1:exreg 1
registration
cluster strict MultiGraphStruct;
end;
:: GRAPH_1:aggrnot 1 => GRAPH_1:aggr 1
definition
let a1, a2 be set;
let a3, a4 be Function-like quasi_total Relation of a2,a1;
aggr MultiGraphStruct(#a1,a2,a3,a4#) -> strict MultiGraphStruct;
end;
:: GRAPH_1:selnot 1 => GRAPH_1:sel 1
definition
let a1 be MultiGraphStruct;
sel the Vertices of a1 -> set;
end;
:: GRAPH_1:selnot 2 => GRAPH_1:sel 2
definition
let a1 be MultiGraphStruct;
sel the Edges of a1 -> set;
end;
:: GRAPH_1:selnot 3 => GRAPH_1:sel 3
definition
let a1 be MultiGraphStruct;
sel the Source of a1 -> Function-like quasi_total Relation of the Edges of a1,the Vertices of a1;
end;
:: GRAPH_1:selnot 4 => GRAPH_1:sel 4
definition
let a1 be MultiGraphStruct;
sel the Target of a1 -> Function-like quasi_total Relation of the Edges of a1,the Vertices of a1;
end;
:: GRAPH_1:attrnot 2 => GRAPH_1:attr 2
definition
let a1 be MultiGraphStruct;
attr a1 is Graph-like means
the Vertices of a1 is non empty set;
end;
:: GRAPH_1:dfs 1
definiens
let a1 be MultiGraphStruct;
To prove
a1 is Graph-like
it is sufficient to prove
thus the Vertices of a1 is non empty set;
:: GRAPH_1:def 1
theorem
for b1 being MultiGraphStruct holds
b1 is Graph-like
iff
the Vertices of b1 is non empty set;
:: GRAPH_1:exreg 2
registration
cluster strict Graph-like MultiGraphStruct;
end;
:: GRAPH_1:modenot 1
definition
mode Graph is Graph-like MultiGraphStruct;
end;
:: GRAPH_1:funcnot 1 => GRAPH_1:func 1
definition
let a1, a2 be Graph-like MultiGraphStruct;
assume the Source of a1 tolerates the Source of a2 & the Target of a1 tolerates the Target of a2;
func A1 \/ A2 -> strict Graph-like MultiGraphStruct means
the Vertices of it = (the Vertices of a1) \/ the Vertices of a2 &
the Edges of it = (the Edges of a1) \/ the Edges of a2 &
(for b1 being set
st b1 in the Edges of a1
holds (the Source of it) . b1 = (the Source of a1) . b1 & (the Target of it) . b1 = (the Target of a1) . b1) &
(for b1 being set
st b1 in the Edges of a2
holds (the Source of it) . b1 = (the Source of a2) . b1 & (the Target of it) . b1 = (the Target of a2) . b1);
end;
:: GRAPH_1:def 2
theorem
for b1, b2 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2
for b3 being strict Graph-like MultiGraphStruct holds
b3 = b1 \/ b2
iff
the Vertices of b3 = (the Vertices of b1) \/ the Vertices of b2 &
the Edges of b3 = (the Edges of b1) \/ the Edges of b2 &
(for b4 being set
st b4 in the Edges of b1
holds (the Source of b3) . b4 = (the Source of b1) . b4 & (the Target of b3) . b4 = (the Target of b1) . b4) &
(for b4 being set
st b4 in the Edges of b2
holds (the Source of b3) . b4 = (the Source of b2) . b4 & (the Target of b3) . b4 = (the Target of b2) . b4);
:: GRAPH_1:prednot 1 => GRAPH_1:pred 1
definition
let a1, a2, a3 be Graph-like MultiGraphStruct;
pred A1 is_sum_of A2,A3 means
the Target of a2 tolerates the Target of a3 &
the Source of a2 tolerates the Source of a3 &
MultiGraphStruct(#the Vertices of a1,the Edges of a1,the Source of a1,the Target of a1#) = a2 \/ a3;
end;
:: GRAPH_1:dfs 3
definiens
let a1, a2, a3 be Graph-like MultiGraphStruct;
To prove
a1 is_sum_of a2,a3
it is sufficient to prove
thus the Target of a2 tolerates the Target of a3 &
the Source of a2 tolerates the Source of a3 &
MultiGraphStruct(#the Vertices of a1,the Edges of a1,the Source of a1,the Target of a1#) = a2 \/ a3;
:: GRAPH_1:def 3
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct holds
b1 is_sum_of b2,b3
iff
the Target of b2 tolerates the Target of b3 &
the Source of b2 tolerates the Source of b3 &
MultiGraphStruct(#the Vertices of b1,the Edges of b1,the Source of b1,the Target of b1#) = b2 \/ b3;
:: GRAPH_1:attrnot 3 => GRAPH_1:attr 3
definition
let a1 be Graph-like MultiGraphStruct;
attr a1 is oriented means
for b1, b2 being set
st b1 in the Edges of a1 & b2 in the Edges of a1 & (the Source of a1) . b1 = (the Source of a1) . b2 & (the Target of a1) . b1 = (the Target of a1) . b2
holds b1 = b2;
end;
:: GRAPH_1:dfs 4
definiens
let a1 be Graph-like MultiGraphStruct;
To prove
a1 is oriented
it is sufficient to prove
thus for b1, b2 being set
st b1 in the Edges of a1 & b2 in the Edges of a1 & (the Source of a1) . b1 = (the Source of a1) . b2 & (the Target of a1) . b1 = (the Target of a1) . b2
holds b1 = b2;
:: GRAPH_1:def 4
theorem
for b1 being Graph-like MultiGraphStruct holds
b1 is oriented
iff
for b2, b3 being set
st b2 in the Edges of b1 & b3 in the Edges of b1 & (the Source of b1) . b2 = (the Source of b1) . b3 & (the Target of b1) . b2 = (the Target of b1) . b3
holds b2 = b3;
:: GRAPH_1:attrnot 4 => GRAPH_1:attr 4
definition
let a1 be Graph-like MultiGraphStruct;
attr a1 is non-multi means
for b1, b2 being set
st b1 in the Edges of a1 &
b2 in the Edges of a1 &
((the Source of a1) . b1 = (the Source of a1) . b2 & (the Target of a1) . b1 = (the Target of a1) . b2 or (the Source of a1) . b1 = (the Target of a1) . b2 & (the Source of a1) . b2 = (the Target of a1) . b1)
holds b1 = b2;
end;
:: GRAPH_1:dfs 5
definiens
let a1 be Graph-like MultiGraphStruct;
To prove
a1 is non-multi
it is sufficient to prove
thus for b1, b2 being set
st b1 in the Edges of a1 &
b2 in the Edges of a1 &
((the Source of a1) . b1 = (the Source of a1) . b2 & (the Target of a1) . b1 = (the Target of a1) . b2 or (the Source of a1) . b1 = (the Target of a1) . b2 & (the Source of a1) . b2 = (the Target of a1) . b1)
holds b1 = b2;
:: GRAPH_1:def 5
theorem
for b1 being Graph-like MultiGraphStruct holds
b1 is non-multi
iff
for b2, b3 being set
st b2 in the Edges of b1 &
b3 in the Edges of b1 &
((the Source of b1) . b2 = (the Source of b1) . b3 & (the Target of b1) . b2 = (the Target of b1) . b3 or (the Source of b1) . b2 = (the Target of b1) . b3 & (the Source of b1) . b3 = (the Target of b1) . b2)
holds b2 = b3;
:: GRAPH_1:attrnot 5 => GRAPH_1:attr 5
definition
let a1 be Graph-like MultiGraphStruct;
attr a1 is simple means
for b1 being set
st b1 in the Edges of a1
holds (the Source of a1) . b1 <> (the Target of a1) . b1;
end;
:: GRAPH_1:dfs 6
definiens
let a1 be Graph-like MultiGraphStruct;
To prove
a1 is simple
it is sufficient to prove
thus for b1 being set
st b1 in the Edges of a1
holds (the Source of a1) . b1 <> (the Target of a1) . b1;
:: GRAPH_1:def 6
theorem
for b1 being Graph-like MultiGraphStruct holds
b1 is simple
iff
for b2 being set
st b2 in the Edges of b1
holds (the Source of b1) . b2 <> (the Target of b1) . b2;
:: GRAPH_1:attrnot 6 => GRAPH_1:attr 6
definition
let a1 be Graph-like MultiGraphStruct;
attr a1 is connected means
for b1, b2 being Graph-like MultiGraphStruct
st the Vertices of b1 misses the Vertices of b2
holds not a1 is_sum_of b1,b2;
end;
:: GRAPH_1:dfs 7
definiens
let a1 be Graph-like MultiGraphStruct;
To prove
a1 is connected
it is sufficient to prove
thus for b1, b2 being Graph-like MultiGraphStruct
st the Vertices of b1 misses the Vertices of b2
holds not a1 is_sum_of b1,b2;
:: GRAPH_1:def 7
theorem
for b1 being Graph-like MultiGraphStruct holds
b1 is connected
iff
for b2, b3 being Graph-like MultiGraphStruct
st the Vertices of b2 misses the Vertices of b3
holds not b1 is_sum_of b2,b3;
:: GRAPH_1:attrnot 7 => GRAPH_1:attr 7
definition
let a1 be MultiGraphStruct;
attr a1 is finite means
the Vertices of a1 is finite & the Edges of a1 is finite;
end;
:: GRAPH_1:dfs 8
definiens
let a1 be MultiGraphStruct;
To prove
a1 is finite
it is sufficient to prove
thus the Vertices of a1 is finite & the Edges of a1 is finite;
:: GRAPH_1:def 8
theorem
for b1 being MultiGraphStruct holds
b1 is finite
iff
the Vertices of b1 is finite & the Edges of b1 is finite;
:: GRAPH_1:exreg 3
registration
cluster finite MultiGraphStruct;
end;
:: GRAPH_1:exreg 4
registration
cluster Graph-like oriented non-multi simple connected finite MultiGraphStruct;
end;
:: GRAPH_1:prednot 2 => GRAPH_1:pred 2
definition
let a1 be Graph-like MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
let a4 be set;
pred A4 joins A2,A3 means
(((the Source of a1) . a4 = a2 implies (the Target of a1) . a4 <> a3)) implies (the Source of a1) . a4 = a3 & (the Target of a1) . a4 = a2;
end;
:: GRAPH_1:dfs 9
definiens
let a1 be Graph-like MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
let a4 be set;
To prove
a4 joins a2,a3
it is sufficient to prove
thus (((the Source of a1) . a4 = a2 implies (the Target of a1) . a4 <> a3)) implies (the Source of a1) . a4 = a3 & (the Target of a1) . a4 = a2;
:: GRAPH_1:def 9
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being set holds
b4 joins b2,b3
iff
((the Source of b1) . b4 = b2 & (the Target of b1) . b4 = b3 or (the Source of b1) . b4 = b3 & (the Target of b1) . b4 = b2);
:: GRAPH_1:prednot 3 => GRAPH_1:pred 3
definition
let a1 be Graph-like MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
pred A2,A3 are_incydent means
ex b1 being set st
b1 in the Edges of a1 & b1 joins a2,a3;
end;
:: GRAPH_1:dfs 10
definiens
let a1 be Graph-like MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
To prove
a2,a3 are_incydent
it is sufficient to prove
thus ex b1 being set st
b1 in the Edges of a1 & b1 joins a2,a3;
:: GRAPH_1:def 10
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1 holds
b2,b3 are_incydent
iff
ex b4 being set st
b4 in the Edges of b1 & b4 joins b2,b3;
:: GRAPH_1:modenot 2 => GRAPH_1:mode 1
definition
let a1 be Graph-like MultiGraphStruct;
mode Chain of A1 -> Relation-like Function-like FinSequence-like set means
(for b1 being Element of NAT
st 1 <= b1 & b1 <= len it
holds it . b1 in the Edges of a1) &
(ex b1 being Relation-like Function-like FinSequence-like set st
len b1 = (len it) + 1 &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len b1
holds b1 . b2 in the Vertices of a1) &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len it
holds ex b3, b4 being Element of the Vertices of a1 st
b3 = b1 . b2 & b4 = b1 . (b2 + 1) & it . b2 joins b3,b4));
end;
:: GRAPH_1:dfs 11
definiens
let a1 be Graph-like MultiGraphStruct;
let a2 be Relation-like Function-like FinSequence-like set;
To prove
a2 is Chain of a1
it is sufficient to prove
thus (for b1 being Element of NAT
st 1 <= b1 & b1 <= len a2
holds a2 . b1 in the Edges of a1) &
(ex b1 being Relation-like Function-like FinSequence-like set st
len b1 = (len a2) + 1 &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len b1
holds b1 . b2 in the Vertices of a1) &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len a2
holds ex b3, b4 being Element of the Vertices of a1 st
b3 = b1 . b2 & b4 = b1 . (b2 + 1) & a2 . b2 joins b3,b4));
:: GRAPH_1:def 11
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Relation-like Function-like FinSequence-like set holds
b2 is Chain of b1
iff
(for b3 being Element of NAT
st 1 <= b3 & b3 <= len b2
holds b2 . b3 in the Edges of b1) &
(ex b3 being Relation-like Function-like FinSequence-like set st
len b3 = (len b2) + 1 &
(for b4 being Element of NAT
st 1 <= b4 & b4 <= len b3
holds b3 . b4 in the Vertices of b1) &
(for b4 being Element of NAT
st 1 <= b4 & b4 <= len b2
holds ex b5, b6 being Element of the Vertices of b1 st
b5 = b3 . b4 & b6 = b3 . (b4 + 1) & b2 . b4 joins b5,b6));
:: GRAPH_1:modenot 3 => GRAPH_1:mode 2
definition
let a1 be Graph-like MultiGraphStruct;
redefine mode Chain of a1 -> FinSequence of the Edges of a1;
end;
:: GRAPH_1:attrnot 8 => GRAPH_1:attr 8
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Chain of a1;
attr a2 is oriented means
for b1 being Element of NAT
st 1 <= b1 & b1 < len a2
holds (the Source of a1) . (a2 . (b1 + 1)) = (the Target of a1) . (a2 . b1);
end;
:: GRAPH_1:dfs 12
definiens
let a1 be Graph-like MultiGraphStruct;
let a2 be Chain of a1;
To prove
a2 is oriented
it is sufficient to prove
thus for b1 being Element of NAT
st 1 <= b1 & b1 < len a2
holds (the Source of a1) . (a2 . (b1 + 1)) = (the Target of a1) . (a2 . b1);
:: GRAPH_1:def 12
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1 holds
b2 is oriented(b1)
iff
for b3 being Element of NAT
st 1 <= b3 & b3 < len b2
holds (the Source of b1) . (b2 . (b3 + 1)) = (the Target of b1) . (b2 . b3);
:: GRAPH_1:exreg 5
registration
let a1 be Graph-like MultiGraphStruct;
cluster Relation-like Function-like finite FinSequence-like oriented Chain of a1;
end;
:: GRAPH_1:attrnot 9 => GRAPH_1:attr 9
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Chain of a1;
redefine attr a2 is one-to-one means
for b1, b2 being Element of NAT
st 1 <= b1 & b1 < b2 & b2 <= len a2
holds a2 . b1 <> a2 . b2;
end;
:: GRAPH_1:dfs 13
definiens
let a1 be Graph-like MultiGraphStruct;
let a2 be Chain of a1;
To prove
a1 is one-to-one
it is sufficient to prove
thus for b1, b2 being Element of NAT
st 1 <= b1 & b1 < b2 & b2 <= len a2
holds a2 . b1 <> a2 . b2;
:: GRAPH_1:def 13
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1 holds
b2 is one-to-one
iff
for b3, b4 being Element of NAT
st 1 <= b3 & b3 < b4 & b4 <= len b2
holds b2 . b3 <> b2 . b4;
:: GRAPH_1:exreg 6
registration
let a1 be Graph-like MultiGraphStruct;
cluster Relation-like Function-like one-to-one finite FinSequence-like Chain of a1;
end;
:: GRAPH_1:modenot 4
definition
let a1 be Graph-like MultiGraphStruct;
mode Path of a1 is one-to-one Chain of a1;
end;
:: GRAPH_1:exreg 7
registration
let a1 be Graph-like MultiGraphStruct;
cluster Relation-like Function-like one-to-one finite FinSequence-like oriented Chain of a1;
end;
:: GRAPH_1:modenot 5
definition
let a1 be Graph-like MultiGraphStruct;
mode OrientedPath of a1 is one-to-one oriented Chain of a1;
end;
:: GRAPH_1:attrnot 10 => GRAPH_1:attr 10
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be one-to-one Chain of a1;
attr a2 is cyclic means
ex b1 being Relation-like Function-like FinSequence-like set st
len b1 = (len a2) + 1 &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len b1
holds b1 . b2 in the Vertices of a1) &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len a2
holds ex b3, b4 being Element of the Vertices of a1 st
b3 = b1 . b2 & b4 = b1 . (b2 + 1) & a2 . b2 joins b3,b4) &
b1 . 1 = b1 . len b1;
end;
:: GRAPH_1:dfs 14
definiens
let a1 be Graph-like MultiGraphStruct;
let a2 be one-to-one Chain of a1;
To prove
a2 is cyclic
it is sufficient to prove
thus ex b1 being Relation-like Function-like FinSequence-like set st
len b1 = (len a2) + 1 &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len b1
holds b1 . b2 in the Vertices of a1) &
(for b2 being Element of NAT
st 1 <= b2 & b2 <= len a2
holds ex b3, b4 being Element of the Vertices of a1 st
b3 = b1 . b2 & b4 = b1 . (b2 + 1) & a2 . b2 joins b3,b4) &
b1 . 1 = b1 . len b1;
:: GRAPH_1:def 15
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being one-to-one Chain of b1 holds
b2 is cyclic(b1)
iff
ex b3 being Relation-like Function-like FinSequence-like set st
len b3 = (len b2) + 1 &
(for b4 being Element of NAT
st 1 <= b4 & b4 <= len b3
holds b3 . b4 in the Vertices of b1) &
(for b4 being Element of NAT
st 1 <= b4 & b4 <= len b2
holds ex b5, b6 being Element of the Vertices of b1 st
b5 = b3 . b4 & b6 = b3 . (b4 + 1) & b2 . b4 joins b5,b6) &
b3 . 1 = b3 . len b3;
:: GRAPH_1:exreg 8
registration
let a1 be Graph-like MultiGraphStruct;
cluster Relation-like Function-like one-to-one finite FinSequence-like cyclic Chain of a1;
end;
:: GRAPH_1:modenot 6
definition
let a1 be Graph-like MultiGraphStruct;
mode Cycle of a1 is one-to-one cyclic Chain of a1;
end;
:: GRAPH_1:exreg 9
registration
let a1 be Graph-like MultiGraphStruct;
cluster Relation-like Function-like one-to-one finite FinSequence-like oriented cyclic Chain of a1;
end;
:: GRAPH_1:modenot 7
definition
let a1 be Graph-like MultiGraphStruct;
mode OrientedCycle of a1 is one-to-one oriented cyclic Chain of a1;
end;
:: GRAPH_1:modenot 8 => GRAPH_1:mode 3
definition
let a1 be Graph-like MultiGraphStruct;
mode Subgraph of A1 -> Graph-like MultiGraphStruct means
the Vertices of it c= the Vertices of a1 &
the Edges of it c= the Edges of a1 &
(for b1 being set
st b1 in the Edges of it
holds (the Source of it) . b1 = (the Source of a1) . b1 & (the Target of it) . b1 = (the Target of a1) . b1 & (the Source of a1) . b1 in the Vertices of it & (the Target of a1) . b1 in the Vertices of it);
end;
:: GRAPH_1:dfs 15
definiens
let a1, a2 be Graph-like MultiGraphStruct;
To prove
a2 is Subgraph of a1
it is sufficient to prove
thus the Vertices of a2 c= the Vertices of a1 &
the Edges of a2 c= the Edges of a1 &
(for b1 being set
st b1 in the Edges of a2
holds (the Source of a2) . b1 = (the Source of a1) . b1 & (the Target of a2) . b1 = (the Target of a1) . b1 & (the Source of a1) . b1 in the Vertices of a2 & (the Target of a1) . b1 in the Vertices of a2);
:: GRAPH_1:def 17
theorem
for b1, b2 being Graph-like MultiGraphStruct holds
b2 is Subgraph of b1
iff
the Vertices of b2 c= the Vertices of b1 &
the Edges of b2 c= the Edges of b1 &
(for b3 being set
st b3 in the Edges of b2
holds (the Source of b2) . b3 = (the Source of b1) . b3 & (the Target of b2) . b3 = (the Target of b1) . b3 & (the Source of b1) . b3 in the Vertices of b2 & (the Target of b1) . b3 in the Vertices of b2);
:: GRAPH_1:exreg 10
registration
let a1 be Graph-like MultiGraphStruct;
cluster strict Graph-like Subgraph of a1;
end;
:: GRAPH_1:funcnot 2 => GRAPH_1:func 2
definition
let a1 be Graph-like finite MultiGraphStruct;
func VerticesCount A1 -> Element of NAT means
ex b1 being finite set st
b1 = the Vertices of a1 & it = card b1;
end;
:: GRAPH_1:def 18
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of NAT holds
b2 = VerticesCount b1
iff
ex b3 being finite set st
b3 = the Vertices of b1 & b2 = card b3;
:: GRAPH_1:funcnot 3 => GRAPH_1:func 3
definition
let a1 be Graph-like finite MultiGraphStruct;
func EdgesCount A1 -> Element of NAT means
ex b1 being finite set st
b1 = the Edges of a1 & it = card b1;
end;
:: GRAPH_1:def 19
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of NAT holds
b2 = EdgesCount b1
iff
ex b3 being finite set st
b3 = the Edges of b1 & b2 = card b3;
:: GRAPH_1:funcnot 4 => GRAPH_1:func 4
definition
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
func EdgesIn A2 -> Element of NAT means
ex b1 being finite set st
(for b2 being set holds
b2 in b1
iff
b2 in the Edges of a1 & (the Target of a1) . b2 = a2) &
it = card b1;
end;
:: GRAPH_1:def 20
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being Element of NAT holds
b3 = EdgesIn b2
iff
ex b4 being finite set st
(for b5 being set holds
b5 in b4
iff
b5 in the Edges of b1 & (the Target of b1) . b5 = b2) &
b3 = card b4;
:: GRAPH_1:funcnot 5 => GRAPH_1:func 5
definition
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
func EdgesOut A2 -> Element of NAT means
ex b1 being finite set st
(for b2 being set holds
b2 in b1
iff
b2 in the Edges of a1 & (the Source of a1) . b2 = a2) &
it = card b1;
end;
:: GRAPH_1:def 21
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being Element of NAT holds
b3 = EdgesOut b2
iff
ex b4 being finite set st
(for b5 being set holds
b5 in b4
iff
b5 in the Edges of b1 & (the Source of b1) . b5 = b2) &
b3 = card b4;
:: GRAPH_1:funcnot 6 => GRAPH_1:func 6
definition
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
func Degree A2 -> Element of NAT equals
(EdgesIn a2) + EdgesOut a2;
end;
:: GRAPH_1:def 22
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
Degree b2 = (EdgesIn b2) + EdgesOut b2;
:: GRAPH_1:prednot 4 => GRAPH_1:pred 4
definition
let a1, a2 be Graph-like MultiGraphStruct;
pred A1 c= A2 means
a1 is Subgraph of a2;
reflexivity;
:: for a1 being Graph-like MultiGraphStruct holds
:: a1 c= a1;
end;
:: GRAPH_1:dfs 21
definiens
let a1, a2 be Graph-like MultiGraphStruct;
To prove
a1 c= a2
it is sufficient to prove
thus a1 is Subgraph of a2;
:: GRAPH_1:def 23
theorem
for b1, b2 being Graph-like MultiGraphStruct holds
b1 c= b2
iff
b1 is Subgraph of b2;
:: GRAPH_1:funcnot 7 => GRAPH_1:func 7
definition
let a1 be Graph-like MultiGraphStruct;
func bool A1 -> set means
for b1 being set holds
b1 in it
iff
b1 is strict Subgraph of a1;
end;
:: GRAPH_1:def 24
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set holds
b2 = bool b1
iff
for b3 being set holds
b3 in b2
iff
b3 is strict Subgraph of b1;
:: GRAPH_1:sch 1
scheme GRAPH_1:sch 1
{F1 -> Graph-like MultiGraphStruct}:
ex b1 being set st
for b2 being set holds
b2 in b1
iff
b2 is strict Subgraph of F1() & P1[b2]
:: GRAPH_1:th 1
theorem
for b1 being Graph-like MultiGraphStruct holds
proj1 the Source of b1 = the Edges of b1 & proj1 the Target of b1 = the Edges of b1;
:: GRAPH_1:th 2
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
b2 in the Vertices of b1;
:: GRAPH_1:th 3
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set
st b2 in the Edges of b1
holds (the Source of b1) . b2 in the Vertices of b1 & (the Target of b1) . b2 in the Vertices of b1;
:: GRAPH_1:th 4
theorem
for b1 being Element of NAT
for b2 being Graph-like MultiGraphStruct
for b3 being Chain of b2 holds
b3 | Seg b1 is Chain of b2;
:: GRAPH_1:th 5
theorem
for b1, b2 being Graph-like MultiGraphStruct
st b1 c= b2
holds the Source of b1 c= the Source of b2 & the Target of b1 c= the Target of b2;
:: GRAPH_1:th 6
theorem
for b1, b2 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2
holds the Source of b1 \/ b2 = (the Source of b1) \/ the Source of b2 &
the Target of b1 \/ b2 = (the Target of b1) \/ the Target of b2;
:: GRAPH_1:th 7
theorem
for b1 being strict Graph-like MultiGraphStruct holds
b1 = b1 \/ b1;
:: GRAPH_1:th 8
theorem
for b1, b2 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2
holds b1 \/ b2 = b2 \/ b1;
:: GRAPH_1:th 9
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2 & the Source of b1 tolerates the Source of b3 & the Target of b1 tolerates the Target of b3 & the Source of b2 tolerates the Source of b3 & the Target of b2 tolerates the Target of b3
holds (b1 \/ b2) \/ b3 = b1 \/ (b2 \/ b3);
:: GRAPH_1:th 10
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st b1 is_sum_of b2,b3
holds b1 is_sum_of b3,b2;
:: GRAPH_1:th 11
theorem
for b1 being strict Graph-like MultiGraphStruct holds
b1 is_sum_of b1,b1;
:: GRAPH_1:th 12
theorem
for b1, b2 being Graph-like MultiGraphStruct
st ex b3 being Graph-like MultiGraphStruct st
b1 c= b3 & b2 c= b3
holds b1 \/ b2 = b2 \/ b1;
:: GRAPH_1:th 13
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st ex b4 being Graph-like MultiGraphStruct st
b1 c= b4 & b2 c= b4 & b3 c= b4
holds (b1 \/ b2) \/ b3 = b1 \/ (b2 \/ b3);
:: GRAPH_1:th 14
theorem
for b1 being Graph-like MultiGraphStruct holds
{} is one-to-one oriented cyclic Chain of b1;
:: GRAPH_1:th 15
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being strict Subgraph of b1
st the Vertices of b2 = the Vertices of b3 & the Edges of b2 = the Edges of b3
holds b2 = b3;
:: GRAPH_1:th 16
theorem
for b1, b2 being strict Graph-like MultiGraphStruct
st b1 c= b2 & b2 c= b1
holds b1 = b2;
:: GRAPH_1:th 17
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st b1 c= b2 & b2 c= b3
holds b1 c= b3;
:: GRAPH_1:th 18
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st b1 is_sum_of b2,b3
holds b2 c= b1 & b3 c= b1;
:: GRAPH_1:th 19
theorem
for b1, b2 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2
holds b1 c= b1 \/ b2 & b2 c= b1 \/ b2;
:: GRAPH_1:th 20
theorem
for b1, b2 being Graph-like MultiGraphStruct
st ex b3 being Graph-like MultiGraphStruct st
b1 c= b3 & b2 c= b3
holds b1 c= b1 \/ b2 & b2 c= b1 \/ b2;
:: GRAPH_1:th 21
theorem
for b1, b2, b3, b4 being Graph-like MultiGraphStruct
st b1 c= b2 & b3 c= b2 & b4 is_sum_of b1,b3
holds b4 c= b2;
:: GRAPH_1:th 22
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st b1 c= b2 & b3 c= b2
holds b1 \/ b3 c= b2;
:: GRAPH_1:th 23
theorem
for b1, b2 being strict Graph-like MultiGraphStruct
st b1 c= b2
holds b1 \/ b2 = b2 & b2 \/ b1 = b2;
:: GRAPH_1:th 24
theorem
for b1, b2 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2 & (b1 \/ b2 = b2 or b2 \/ b1 = b2)
holds b1 c= b2;
:: GRAPH_1:th 27
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Graph-like oriented MultiGraphStruct
st b1 c= b2
holds b1 is oriented;
:: GRAPH_1:th 28
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Graph-like non-multi MultiGraphStruct
st b1 c= b2
holds b1 is non-multi;
:: GRAPH_1:th 29
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Graph-like simple MultiGraphStruct
st b1 c= b2
holds b1 is simple;
:: GRAPH_1:th 30
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being strict Graph-like MultiGraphStruct holds
b2 in bool b1
iff
b2 c= b1;
:: GRAPH_1:th 31
theorem
for b1 being strict Graph-like MultiGraphStruct holds
b1 in bool b1;
:: GRAPH_1:th 32
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being strict Graph-like MultiGraphStruct holds
b2 c= b1
iff
bool b2 c= bool b1;
:: GRAPH_1:th 34
theorem
for b1 being strict Graph-like MultiGraphStruct holds
{b1} c= bool b1;
:: GRAPH_1:th 35
theorem
for b1, b2 being strict Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 &
the Target of b1 tolerates the Target of b2 &
bool (b1 \/ b2) c= (bool b1) \/ bool b2 &
not b1 c= b2
holds b2 c= b1;
:: GRAPH_1:th 36
theorem
for b1, b2 being Graph-like MultiGraphStruct
st the Source of b1 tolerates the Source of b2 & the Target of b1 tolerates the Target of b2
holds (bool b1) \/ bool b2 c= bool (b1 \/ b2);
:: GRAPH_1:th 37
theorem
for b1, b2, b3 being Graph-like MultiGraphStruct
st b1 in bool b2 & b3 in bool b2
holds b1 \/ b3 in bool b2;