Article GRAPH_3, MML version 4.99.1005
:: GRAPH_3:modenot 1 => GRAPH_3:mode 1
definition
let a1 be set;
let a2 be non empty FinSequenceSet of a1;
let a3 be non empty Element of bool a2;
redefine mode Element of a3 -> FinSequence of a1;
end;
:: GRAPH_3:funcreg 1
registration
let a1, a2 be even integer set;
cluster a1 - a2 -> even;
end;
:: GRAPH_3:th 1
theorem
for b1, b2 being integer set holds
b1 is even
iff
b2 is even
iff
b1 - b2 is even;
:: GRAPH_3:th 2
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2, b3, b4 being Element of NAT
st b4 in dom ((b2,b3)-cut b1)
holds ex b5 being Element of NAT st
b5 in dom b1 & b1 . b5 = ((b2,b3)-cut b1) . b4 & b5 + 1 = b2 + b4 & b2 <= b5 & b5 <= b3;
:: GRAPH_3:modenot 2
definition
let a1 be Graph-like MultiGraphStruct;
mode Vertex of a1 is Element of the Vertices of a1;
end;
:: GRAPH_3:th 3
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
for b3 being FinSequence of the Vertices of b1
st b3 is_vertex_seq_of b2
holds b3 is not empty;
:: GRAPH_3:th 7
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set
st b2 in the Edges of b1
holds <*b2*> is one-to-one Chain of b1;
:: GRAPH_3:th 8
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being one-to-one Chain of b1
for b3, b4 being Element of NAT holds
(b3,b4)-cut b2 is one-to-one Chain of b1;
:: GRAPH_3:th 9
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being one-to-one Chain of b1
for b4, b5 being FinSequence of the Vertices of b1
st proj2 b2 misses proj2 b3 & b4 is_vertex_seq_of b2 & b5 is_vertex_seq_of b3 & b4 . len b4 = b5 . 1
holds b2 ^ b3 is one-to-one Chain of b1;
:: GRAPH_3:th 12
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
st b2 = {}
holds b2 is cyclic(b1);
:: GRAPH_3:exreg 1
registration
let a1 be Graph-like MultiGraphStruct;
cluster Relation-like Function-like one-to-one finite FinSequence-like cyclic Chain of a1;
end;
:: GRAPH_3:th 13
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of NAT
for b3 being one-to-one cyclic Chain of b1 holds
((b2 + 1,len b3)-cut b3) ^ ((1,b2)-cut b3) is one-to-one cyclic Chain of b1;
:: GRAPH_3:th 14
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being one-to-one Chain of b1
for b3 being Element of NAT
st b3 + 1 in dom b2
holds len (((b3 + 1,len b2)-cut b2) ^ ((1,b3)-cut b2)) = len b2 &
proj2 (((b3 + 1,len b2)-cut b2) ^ ((1,b3)-cut b2)) = proj2 b2 &
(((b3 + 1,len b2)-cut b2) ^ ((1,b3)-cut b2)) . 1 = b2 . (b3 + 1);
:: GRAPH_3:th 15
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of NAT
for b3 being one-to-one cyclic Chain of b1
st b2 in dom b3
holds ex b4 being one-to-one cyclic Chain of b1 st
b4 . 1 = b3 . b2 & len b4 = len b3 & proj2 b4 = proj2 b3;
:: GRAPH_3:th 16
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set
for b3, b4 being Element of the Vertices of b1
st b3 = (the Source of b1) . b2 & b4 = (the Target of b1) . b2
holds <*b4,b3*> is_vertex_seq_of <*b2*>;
:: GRAPH_3:th 17
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
for b3 being FinSequence of the Vertices of b1
for b4 being set
st b4 in the Edges of b1 & b3 is_vertex_seq_of b2 & b3 . len b3 = (the Source of b1) . b4
holds b2 ^ <*b4*> is Chain of b1 &
(ex b5 being FinSequence of the Vertices of b1 st
b5 = b3 ^' <*(the Source of b1) . b4,(the Target of b1) . b4*> &
b5 is_vertex_seq_of b2 ^ <*b4*> &
b5 . 1 = b3 . 1 &
b5 . len b5 = (the Target of b1) . b4);
:: GRAPH_3:th 18
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
for b3 being FinSequence of the Vertices of b1
for b4 being set
st b4 in the Edges of b1 & b3 is_vertex_seq_of b2 & b3 . len b3 = (the Target of b1) . b4
holds b2 ^ <*b4*> is Chain of b1 &
(ex b5 being FinSequence of the Vertices of b1 st
b5 = b3 ^' <*(the Target of b1) . b4,(the Source of b1) . b4*> &
b5 is_vertex_seq_of b2 ^ <*b4*> &
b5 . 1 = b3 . 1 &
b5 . len b5 = (the Source of b1) . b4);
:: GRAPH_3:th 19
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
for b3 being FinSequence of the Vertices of b1
st b3 is_vertex_seq_of b2
for b4 being Element of NAT
st b4 in dom b2 &
(b3 . b4 = (the Target of b1) . (b2 . b4) implies b3 . (b4 + 1) <> (the Source of b1) . (b2 . b4))
holds b3 . b4 = (the Source of b1) . (b2 . b4) &
b3 . (b4 + 1) = (the Target of b1) . (b2 . b4);
:: GRAPH_3:th 20
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
for b3 being FinSequence of the Vertices of b1
for b4 being set
st b3 is_vertex_seq_of b2 & b4 in proj2 b2
holds (the Target of b1) . b4 in proj2 b3 & (the Source of b1) . b4 in proj2 b3;
:: GRAPH_3:funcnot 1 => GRAPH_3:func 1
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be set;
redefine func a1 -VSet a2 -> Element of bool the Vertices of a1;
end;
:: GRAPH_3:th 21
theorem
for b1 being Graph-like MultiGraphStruct holds
b1 -VSet {} = {};
:: GRAPH_3:th 22
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being set
st b2 in the Edges of b1 & b2 in b3
holds b1 -VSet b3 is not empty;
:: GRAPH_3:th 23
theorem
for b1 being Graph-like MultiGraphStruct holds
b1 is connected
iff
for b2, b3 being Element of the Vertices of b1
st b2 <> b3
holds ex b4 being Chain of b1 st
ex b5 being FinSequence of the Vertices of b1 st
b4 is not empty & b5 is_vertex_seq_of b4 & b5 . 1 = b2 & b5 . len b5 = b3;
:: GRAPH_3:th 24
theorem
for b1 being Graph-like connected MultiGraphStruct
for b2 being set
for b3 being Element of the Vertices of b1
st b2 meets the Edges of b1 & not b3 in b1 -VSet b2
holds ex b4 being Element of the Vertices of b1 st
ex b5 being Element of the Edges of b1 st
b4 in b1 -VSet b2 &
not b5 in b2 &
(b4 = (the Target of b1) . b5 or b4 = (the Source of b1) . b5);
:: GRAPH_3:funcnot 2 => GRAPH_3:func 2
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
func Edges_In(A2,A3) -> Element of bool the Edges of a1 means
for b1 being set holds
b1 in it
iff
b1 in the Edges of a1 & b1 in a3 & (the Target of a1) . b1 = a2;
end;
:: GRAPH_3:def 1
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set
for b4 being Element of bool the Edges of b1 holds
b4 = Edges_In(b2,b3)
iff
for b5 being set holds
b5 in b4
iff
b5 in the Edges of b1 & b5 in b3 & (the Target of b1) . b5 = b2;
:: GRAPH_3:funcnot 3 => GRAPH_3:func 3
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
func Edges_Out(A2,A3) -> Element of bool the Edges of a1 means
for b1 being set holds
b1 in it
iff
b1 in the Edges of a1 & b1 in a3 & (the Source of a1) . b1 = a2;
end;
:: GRAPH_3:def 2
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set
for b4 being Element of bool the Edges of b1 holds
b4 = Edges_Out(b2,b3)
iff
for b5 being set holds
b5 in b4
iff
b5 in the Edges of b1 & b5 in b3 & (the Source of b1) . b5 = b2;
:: GRAPH_3:funcnot 4 => GRAPH_3:func 4
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
func Edges_At(A2,A3) -> Element of bool the Edges of a1 equals
(Edges_In(a2,a3)) \/ Edges_Out(a2,a3);
end;
:: GRAPH_3:def 3
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set holds
Edges_At(b2,b3) = (Edges_In(b2,b3)) \/ Edges_Out(b2,b3);
:: GRAPH_3:funcreg 2
registration
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
cluster Edges_In(a2,a3) -> finite;
end;
:: GRAPH_3:funcreg 3
registration
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
cluster Edges_Out(a2,a3) -> finite;
end;
:: GRAPH_3:funcreg 4
registration
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
cluster Edges_At(a2,a3) -> finite;
end;
:: GRAPH_3:funcreg 5
registration
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be empty set;
cluster Edges_In(a2,a3) -> empty;
end;
:: GRAPH_3:funcreg 6
registration
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be empty set;
cluster Edges_Out(a2,a3) -> empty;
end;
:: GRAPH_3:funcreg 7
registration
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be empty set;
cluster Edges_At(a2,a3) -> empty;
end;
:: GRAPH_3:funcnot 5 => GRAPH_3:func 5
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
func Edges_In A2 -> Element of bool the Edges of a1 equals
Edges_In(a2,the Edges of a1);
end;
:: GRAPH_3:def 4
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
Edges_In b2 = Edges_In(b2,the Edges of b1);
:: GRAPH_3:funcnot 6 => GRAPH_3:func 6
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
func Edges_Out A2 -> Element of bool the Edges of a1 equals
Edges_Out(a2,the Edges of a1);
end;
:: GRAPH_3:def 5
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
Edges_Out b2 = Edges_Out(b2,the Edges of b1);
:: GRAPH_3:th 25
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set holds
Edges_In(b2,b3) c= Edges_In b2;
:: GRAPH_3:th 26
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set holds
Edges_Out(b2,b3) c= Edges_Out b2;
:: GRAPH_3:funcreg 8
registration
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
cluster Edges_In a2 -> finite;
end;
:: GRAPH_3:funcreg 9
registration
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
cluster Edges_Out a2 -> finite;
end;
:: GRAPH_3:th 27
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
card Edges_In b2 = EdgesIn b2;
:: GRAPH_3:th 28
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
card Edges_Out b2 = EdgesOut b2;
:: GRAPH_3:funcnot 7 => GRAPH_3:func 7
definition
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
func Degree(A2,A3) -> Element of NAT equals
(card Edges_In(a2,a3)) + card Edges_Out(a2,a3);
end;
:: GRAPH_3:def 6
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set holds
Degree(b2,b3) = (card Edges_In(b2,b3)) + card Edges_Out(b2,b3);
:: GRAPH_3:th 29
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
Degree b2 = Degree(b2,the Edges of b1);
:: GRAPH_3:th 30
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3 being Element of the Vertices of b2
st Degree(b3,b1) <> 0
holds Edges_At(b3,b1) is not empty;
:: GRAPH_3:th 31
theorem
for b1, b2 being set
for b3 being Graph-like finite MultiGraphStruct
for b4 being Element of the Vertices of b3
st b1 in the Edges of b3 &
not b1 in b2 &
(b4 = (the Target of b3) . b1 or b4 = (the Source of b3) . b1)
holds Degree b4 <> Degree(b4,b2);
:: GRAPH_3:th 32
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3, b4 being set
st b3 c= b4
holds card Edges_In(b2,b4 \ b3) = (card Edges_In(b2,b4)) - card Edges_In(b2,b3);
:: GRAPH_3:th 33
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3, b4 being set
st b3 c= b4
holds card Edges_Out(b2,b4 \ b3) = (card Edges_Out(b2,b4)) - card Edges_Out(b2,b3);
:: GRAPH_3:th 34
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3, b4 being set
st b3 c= b4
holds Degree(b2,b4 \ b3) = (Degree(b2,b4)) - Degree(b2,b3);
:: GRAPH_3:th 35
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3 being Element of the Vertices of b2 holds
Edges_In(b3,b1) = Edges_In(b3,b1 /\ the Edges of b2) &
Edges_Out(b3,b1) = Edges_Out(b3,b1 /\ the Edges of b2);
:: GRAPH_3:th 36
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3 being Element of the Vertices of b2 holds
Degree(b3,b1) = Degree(b3,b1 /\ the Edges of b2);
:: GRAPH_3:th 37
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being Chain of b1
for b4 being FinSequence of the Vertices of b1
st b3 is not empty & b4 is_vertex_seq_of b3
holds b2 in proj2 b4
iff
Degree(b2,proj2 b3) <> 0;
:: GRAPH_3:th 38
theorem
for b1 being Graph-like connected finite non empty MultiGraphStruct
for b2 being Element of the Vertices of b1 holds
Degree b2 <> 0;
:: GRAPH_3:funcnot 8 => GRAPH_3:func 8
definition
let a1 be Graph-like MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
func AddNewEdge(A2,A3) -> strict Graph-like MultiGraphStruct means
the Vertices of it = the Vertices of a1 &
the Edges of it = (the Edges of a1) \/ {the Edges of a1} &
the Source of it = (the Source of a1) +* ((the Edges of a1) .--> a2) &
the Target of it = (the Target of a1) +* ((the Edges of a1) .--> a3);
end;
:: GRAPH_3:def 7
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being strict Graph-like MultiGraphStruct holds
b4 = AddNewEdge(b2,b3)
iff
the Vertices of b4 = the Vertices of b1 &
the Edges of b4 = (the Edges of b1) \/ {the Edges of b1} &
the Source of b4 = (the Source of b1) +* ((the Edges of b1) .--> b2) &
the Target of b4 = (the Target of b1) +* ((the Edges of b1) .--> b3);
:: GRAPH_3:funcreg 10
registration
let a1 be Graph-like finite MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
cluster AddNewEdge(a2,a3) -> strict Graph-like finite;
end;
:: GRAPH_3:th 39
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1 holds
the Edges of b1 in the Edges of AddNewEdge(b2,b3) &
the Edges of b1 = (the Edges of AddNewEdge(b2,b3)) \ {the Edges of b1} &
(the Source of AddNewEdge(b2,b3)) . the Edges of b1 = b2 &
(the Target of AddNewEdge(b2,b3)) . the Edges of b1 = b3;
:: GRAPH_3:th 40
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4 being Element of the Vertices of b2
st b1 in the Edges of b2
holds (the Source of AddNewEdge(b3,b4)) . b1 = (the Source of b2) . b1 &
(the Target of AddNewEdge(b3,b4)) . b1 = (the Target of b2) . b1;
:: GRAPH_3:th 41
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being Chain of b1
for b5 being FinSequence of the Vertices of b1
for b6 being FinSequence of the Vertices of AddNewEdge(b2,b3)
st b6 = b5 & b5 is_vertex_seq_of b4
holds b6 is_vertex_seq_of b4;
:: GRAPH_3:th 42
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being Chain of b1 holds
b4 is Chain of AddNewEdge(b2,b3);
:: GRAPH_3:th 43
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being one-to-one Chain of b1 holds
b4 is one-to-one Chain of AddNewEdge(b2,b3);
:: GRAPH_3:th 44
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4 being Element of the Vertices of b2
for b5 being Element of the Vertices of AddNewEdge(b3,b4)
st b5 = b3 & b3 <> b4
holds Edges_In(b5,b1) = Edges_In(b3,b1);
:: GRAPH_3:th 45
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4 being Element of the Vertices of b2
for b5 being Element of the Vertices of AddNewEdge(b4,b3)
st b5 = b3 & b4 <> b3
holds Edges_Out(b5,b1) = Edges_Out(b3,b1);
:: GRAPH_3:th 46
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4 being Element of the Vertices of b2
for b5 being Element of the Vertices of AddNewEdge(b3,b4)
st b5 = b3 & b3 <> b4 & the Edges of b2 in b1
holds Edges_Out(b5,b1) = (Edges_Out(b3,b1)) \/ {the Edges of b2} &
Edges_Out(b3,b1) misses {the Edges of b2};
:: GRAPH_3:th 47
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4 being Element of the Vertices of b2
for b5 being Element of the Vertices of AddNewEdge(b4,b3)
st b5 = b3 & b4 <> b3 & the Edges of b2 in b1
holds Edges_In(b5,b1) = (Edges_In(b3,b1)) \/ {the Edges of b2} &
Edges_In(b3,b1) misses {the Edges of b2};
:: GRAPH_3:th 48
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4, b5 being Element of the Vertices of b2
for b6 being Element of the Vertices of AddNewEdge(b4,b5)
st b6 = b3 & b3 <> b4 & b3 <> b5
holds Edges_In(b6,b1) = Edges_In(b3,b1);
:: GRAPH_3:th 49
theorem
for b1 being set
for b2 being Graph-like MultiGraphStruct
for b3, b4, b5 being Element of the Vertices of b2
for b6 being Element of the Vertices of AddNewEdge(b4,b5)
st b6 = b3 & b3 <> b4 & b3 <> b5
holds Edges_Out(b6,b1) = Edges_Out(b3,b1);
:: GRAPH_3:th 50
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being one-to-one Chain of AddNewEdge(b2,b3)
st not the Edges of b1 in proj2 b4
holds b4 is one-to-one Chain of b1;
:: GRAPH_3:th 51
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of the Vertices of b1
for b4 being FinSequence of the Vertices of b1
for b5 being one-to-one Chain of AddNewEdge(b2,b3)
for b6 being FinSequence of the Vertices of AddNewEdge(b2,b3)
st not the Edges of b1 in proj2 b5 & b4 = b6 & b6 is_vertex_seq_of b5
holds b4 is_vertex_seq_of b5;
:: GRAPH_3:funcreg 11
registration
let a1 be Graph-like connected MultiGraphStruct;
let a2, a3 be Element of the Vertices of a1;
cluster AddNewEdge(a2,a3) -> strict Graph-like connected;
end;
:: GRAPH_3:th 52
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3, b4, b5 being Element of the Vertices of b2
for b6 being Element of the Vertices of AddNewEdge(b4,b5)
st b6 = b3 & b4 <> b5 & (b3 = b4 or b3 = b5) & the Edges of b2 in b1
holds Degree(b6,b1) = (Degree(b3,b1)) + 1;
:: GRAPH_3:th 53
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3, b4, b5 being Element of the Vertices of b2
for b6 being Element of the Vertices of AddNewEdge(b4,b5)
st b6 = b3 & b3 <> b4 & b3 <> b5
holds Degree(b6,b1) = Degree(b3,b1);
:: GRAPH_3:th 54
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being one-to-one cyclic Chain of b1 holds
Degree(b2,proj2 b3) is even;
:: GRAPH_3:th 55
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being FinSequence of the Vertices of b1
for b4 being one-to-one Chain of b1
st b4 is not cyclic(b1) & b3 is_vertex_seq_of b4
holds Degree(b2,proj2 b4) is even
iff
b2 <> b3 . 1 & b2 <> b3 . len b3;
:: GRAPH_3:funcnot 9 => GRAPH_3:func 9
definition
let a1 be Graph-like MultiGraphStruct;
func A1 -CycleSet -> non empty FinSequenceSet of the Edges of a1 means
for b1 being set holds
b1 in it
iff
b1 is one-to-one cyclic Chain of a1;
end;
:: GRAPH_3:def 8
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being non empty FinSequenceSet of the Edges of b1 holds
b2 = b1 -CycleSet
iff
for b3 being set holds
b3 in b2
iff
b3 is one-to-one cyclic Chain of b1;
:: GRAPH_3:th 56
theorem
for b1 being Graph-like MultiGraphStruct holds
{} is Element of b1 -CycleSet;
:: GRAPH_3:th 57
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being Element of b1 -CycleSet
st b2 in b1 -VSet proj2 b3
holds {b4 where b4 is Element of b1 -CycleSet: proj2 b4 = proj2 b3 &
(ex b5 being FinSequence of the Vertices of b1 st
b5 is_vertex_seq_of b4 & b5 . 1 = b2)} is non empty Element of bool (b1 -CycleSet);
:: GRAPH_3:funcnot 10 => GRAPH_3:func 10
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be Element of a1 -CycleSet;
assume a2 in a1 -VSet proj2 a3;
func Rotate(A3,A2) -> Element of a1 -CycleSet equals
choose {b1 where b1 is Element of a1 -CycleSet: proj2 b1 = proj2 a3 &
(ex b2 being FinSequence of the Vertices of a1 st
b2 is_vertex_seq_of b1 & b2 . 1 = a2)};
end;
:: GRAPH_3:def 9
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being Element of b1 -CycleSet
st b2 in b1 -VSet proj2 b3
holds Rotate(b3,b2) = choose {b4 where b4 is Element of b1 -CycleSet: proj2 b4 = proj2 b3 &
(ex b5 being FinSequence of the Vertices of b1 st
b5 is_vertex_seq_of b4 & b5 . 1 = b2)};
:: GRAPH_3:funcnot 11 => GRAPH_3:func 11
definition
let a1 be Graph-like MultiGraphStruct;
let a2, a3 be Element of a1 -CycleSet;
assume a1 -VSet proj2 a2 meets a1 -VSet proj2 a3 &
proj2 a2 misses proj2 a3;
func CatCycles(A2,A3) -> Element of a1 -CycleSet means
ex b1 being Element of the Vertices of a1 st
b1 = choose ((a1 -VSet proj2 a2) /\ (a1 -VSet proj2 a3)) &
it = (Rotate(a2,b1)) ^ Rotate(a3,b1);
end;
:: GRAPH_3:def 10
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of b1 -CycleSet
st b1 -VSet proj2 b2 meets b1 -VSet proj2 b3 &
proj2 b2 misses proj2 b3
for b4 being Element of b1 -CycleSet holds
b4 = CatCycles(b2,b3)
iff
ex b5 being Element of the Vertices of b1 st
b5 = choose ((b1 -VSet proj2 b2) /\ (b1 -VSet proj2 b3)) &
b4 = (Rotate(b2,b5)) ^ Rotate(b3,b5);
:: GRAPH_3:th 58
theorem
for b1 being Graph-like MultiGraphStruct
for b2, b3 being Element of b1 -CycleSet
st b1 -VSet proj2 b2 meets b1 -VSet proj2 b3 &
proj2 b2 misses proj2 b3 &
(b2 = {} implies b3 <> {})
holds CatCycles(b2,b3) is not empty;
:: GRAPH_3:funcnot 12 => GRAPH_3:func 12
definition
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
assume Degree(a2,a3) <> 0;
func A3 -PathSet A2 -> non empty FinSequenceSet of the Edges of a1 equals
{b1 where b1 is Element of a3 *: b1 is one-to-one Chain of a1 &
b1 is not empty &
(ex b2 being FinSequence of the Vertices of a1 st
b2 is_vertex_seq_of b1 & b2 . 1 = a2)};
end;
:: GRAPH_3:def 11
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set
st Degree(b2,b3) <> 0
holds b3 -PathSet b2 = {b4 where b4 is Element of b3 *: b4 is one-to-one Chain of b1 &
b4 is not empty &
(ex b5 being FinSequence of the Vertices of b1 st
b5 is_vertex_seq_of b4 & b5 . 1 = b2)};
:: GRAPH_3:th 59
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3 being Element of the Vertices of b2
for b4 being Element of b1 -PathSet b3
for b5 being finite set
st b5 = the Edges of b2 & Degree(b3,b1) <> 0
holds len b4 <= card b5;
:: GRAPH_3:funcnot 13 => GRAPH_3:func 13
definition
let a1 be Graph-like finite MultiGraphStruct;
let a2 be Element of the Vertices of a1;
let a3 be set;
assume (for b1 being Element of the Vertices of a1 holds
Degree(b1,a3) is even) &
Degree(a2,a3) <> 0;
func A3 -CycleSet A2 -> non empty Element of bool (a1 -CycleSet) equals
{b1 where b1 is Element of a1 -CycleSet: proj2 b1 c= a3 &
b1 is not empty &
(ex b2 being FinSequence of the Vertices of a1 st
b2 is_vertex_seq_of b1 & b2 . 1 = a2)};
end;
:: GRAPH_3:def 12
theorem
for b1 being Graph-like finite MultiGraphStruct
for b2 being Element of the Vertices of b1
for b3 being set
st (for b4 being Element of the Vertices of b1 holds
Degree(b4,b3) is even) &
Degree(b2,b3) <> 0
holds b3 -CycleSet b2 = {b4 where b4 is Element of b1 -CycleSet: proj2 b4 c= b3 &
b4 is not empty &
(ex b5 being FinSequence of the Vertices of b1 st
b5 is_vertex_seq_of b4 & b5 . 1 = b2)};
:: GRAPH_3:th 60
theorem
for b1 being set
for b2 being Graph-like finite MultiGraphStruct
for b3 being Element of the Vertices of b2
st Degree(b3,b1) <> 0 &
(for b4 being Element of the Vertices of b2 holds
Degree(b4,b1) is even)
for b4 being Element of b1 -CycleSet b3 holds
b4 is not empty & proj2 b4 c= b1 & b3 in b2 -VSet proj2 b4;
:: GRAPH_3:th 61
theorem
for b1 being Graph-like connected finite MultiGraphStruct
for b2 being Element of b1 -CycleSet
st proj2 b2 <> the Edges of b1 & b2 is not empty
holds {b3 where b3 is Element of the Vertices of b1: b3 in b1 -VSet proj2 b2 & Degree b3 <> Degree(b3,proj2 b2)} is non empty Element of bool the Vertices of b1;
:: GRAPH_3:funcnot 14 => GRAPH_3:func 14
definition
let a1 be Graph-like connected finite MultiGraphStruct;
let a2 be Element of a1 -CycleSet;
assume proj2 a2 <> the Edges of a1 & a2 is not empty;
func ExtendCycle A2 -> Element of a1 -CycleSet means
ex b1 being Element of a1 -CycleSet st
ex b2 being Element of the Vertices of a1 st
b2 = choose {b3 where b3 is Element of the Vertices of a1: b3 in a1 -VSet proj2 a2 & Degree b3 <> Degree(b3,proj2 a2)} &
b1 = choose (((the Edges of a1) \ proj2 a2) -CycleSet b2) &
it = CatCycles(a2,b1);
end;
:: GRAPH_3:def 13
theorem
for b1 being Graph-like connected finite MultiGraphStruct
for b2 being Element of b1 -CycleSet
st proj2 b2 <> the Edges of b1 & b2 is not empty
for b3 being Element of b1 -CycleSet holds
b3 = ExtendCycle b2
iff
ex b4 being Element of b1 -CycleSet st
ex b5 being Element of the Vertices of b1 st
b5 = choose {b6 where b6 is Element of the Vertices of b1: b6 in b1 -VSet proj2 b2 & Degree b6 <> Degree(b6,proj2 b2)} &
b4 = choose (((the Edges of b1) \ proj2 b2) -CycleSet b5) &
b3 = CatCycles(b2,b4);
:: GRAPH_3:th 62
theorem
for b1 being Graph-like connected finite MultiGraphStruct
for b2 being Element of b1 -CycleSet
st proj2 b2 <> the Edges of b1 &
b2 is not empty &
(for b3 being Element of the Vertices of b1 holds
Degree b3 is even)
holds ExtendCycle b2 is not empty &
card proj2 b2 < card proj2 ExtendCycle b2;
:: GRAPH_3:attrnot 1 => GRAPH_3:attr 1
definition
let a1 be Graph-like MultiGraphStruct;
let a2 be one-to-one Chain of a1;
attr a2 is Eulerian means
proj2 a2 = the Edges of a1;
end;
:: GRAPH_3:dfs 14
definiens
let a1 be Graph-like MultiGraphStruct;
let a2 be one-to-one Chain of a1;
To prove
a2 is Eulerian
it is sufficient to prove
thus proj2 a2 = the Edges of a1;
:: GRAPH_3:def 14
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being one-to-one Chain of b1 holds
b2 is Eulerian(b1)
iff
proj2 b2 = the Edges of b1;
:: GRAPH_3:th 63
theorem
for b1 being Graph-like connected MultiGraphStruct
for b2 being one-to-one Chain of b1
for b3 being FinSequence of the Vertices of b1
st b2 is Eulerian(b1) & b3 is_vertex_seq_of b2
holds proj2 b3 = the Vertices of b1;
:: GRAPH_3:th 64
theorem
for b1 being Graph-like connected finite MultiGraphStruct holds
ex b2 being one-to-one cyclic Chain of b1 st
b2 is Eulerian(b1)
iff
for b2 being Element of the Vertices of b1 holds
Degree b2 is even;
:: GRAPH_3:th 65
theorem
for b1 being Graph-like connected finite MultiGraphStruct holds
ex b2 being one-to-one Chain of b1 st
b2 is not cyclic(b1) & b2 is Eulerian(b1)
iff
ex b2, b3 being Element of the Vertices of b1 st
b2 <> b3 &
(for b4 being Element of the Vertices of b1 holds
Degree b4 is even
iff
b4 <> b2 & b4 <> b3);