:: TREES_2 semantic presentation

theorem Th1: :: TREES_2:1
for b1, b2, b3 being FinSequence st b1 is_a_prefix_of b3 & b2 is_a_prefix_of b3 holds
b1,b2 are_c=-comparable
proof end;

theorem Th2: :: TREES_2:2
for b1, b2, b3 being FinSequence st b1 is_a_proper_prefix_of b3 & b2 is_a_prefix_of b3 holds
b1,b2 are_c=-comparable
proof end;

Lemma3: for b1 being set
for b2 being FinSequence holds len (b2 ^ <*b1*>) = (len b2) + 1
proof end;

theorem Th3: :: TREES_2:3
canceled;

theorem Th4: :: TREES_2:4
for b1 being Nat
for b2 being FinSequence st len b2 = b1 + 1 holds
ex b3 being FinSequenceex b4 being set st
( b2 = b3 ^ <*b4*> & len b3 = b1 )
proof end;

theorem Th5: :: TREES_2:5
canceled;

theorem Th6: :: TREES_2:6
for b1 being set
for b2 being FinSequence holds ProperPrefixes (b2 ^ <*b1*>) = (ProperPrefixes b2) \/ {b2}
proof end;

scheme :: TREES_2:sch 1
s1{ F1() -> Tree, P1[ set ] } :
for b1 being Element of F1() holds P1[b1]
provided
E6: P1[ {} ] and
E7: for b1 being Element of F1()
for b2 being Nat st P1[b1] & b1 ^ <*b2*> in F1() holds
P1[b1 ^ <*b2*>]
proof end;

theorem Th7: :: TREES_2:7
for b1, b2 being Tree st ( for b3 being FinSequence of NAT holds
( b3 in b1 iff b3 in b2 ) ) holds
b1 = b2
proof end;

definition
let c1, c2 be Tree;
redefine pred c1 = c2 means :: TREES_2:def 1
for b1 being FinSequence of NAT holds
( b1 in a1 iff b1 in a2 );
compatibility
( c1 = c2 iff for b1 being FinSequence of NAT holds
( b1 in c1 iff b1 in c2 ) )
by Th7;
end;

:: deftheorem Def1 defines = TREES_2:def 1 :
for b1, b2 being Tree holds
( b1 = b2 iff for b3 being FinSequence of NAT holds
( b3 in b1 iff b3 in b2 ) );

theorem Th8: :: TREES_2:8
for b1 being Tree
for b2 being FinSequence of NAT st b2 in b1 holds
b1 = b1 with-replacement b2,(b1 | b2)
proof end;

theorem Th9: :: TREES_2:9
for b1, b2 being Tree
for b3, b4 being FinSequence of NAT st b3 in b1 & b4 in b1 & not b3 is_a_prefix_of b4 holds
b4 in b1 with-replacement b3,b2
proof end;

theorem Th10: :: TREES_2:10
for b1, b2, b3 being Tree
for b4, b5 being FinSequence of NAT st b4 in b1 & b5 in b1 & not b4,b5 are_c=-comparable holds
(b1 with-replacement b4,b2) with-replacement b5,b3 = (b1 with-replacement b5,b3) with-replacement b4,b2
proof end;

definition
let c1 be Tree;
attr a1 is finite-order means :: TREES_2:def 2
ex b1 being Nat st
for b2 being Element of a1 holds not b2 ^ <*b1*> in a1;
end;

:: deftheorem Def2 defines finite-order TREES_2:def 2 :
for b1 being Tree holds
( b1 is finite-order iff ex b2 being Nat st
for b3 being Element of b1 holds not b3 ^ <*b2*> in b1 );

registration
cluster finite-order set ;
existence
ex b1 being Tree st b1 is finite-order
proof end;
end;

definition
let c1 be Tree;
mode Chain of c1 -> Subset of a1 means :Def3: :: TREES_2:def 3
for b1, b2 being FinSequence of NAT st b1 in a2 & b2 in a2 holds
b1,b2 are_c=-comparable ;
existence
ex b1 being Subset of c1 st
for b2, b3 being FinSequence of NAT st b2 in b1 & b3 in b1 holds
b2,b3 are_c=-comparable
proof end;
mode Level of c1 -> Subset of a1 means :Def4: :: TREES_2:def 4
ex b1 being Nat st a2 = { b2 where B is Element of a1 : len b2 = b1 } ;
existence
ex b1 being Subset of c1ex b2 being Nat st b1 = { b3 where B is Element of c1 : len b3 = b2 }
proof end;
let c2 be Element of c1;
func succ c2 -> Subset of a1 equals :: TREES_2:def 5
{ (a2 ^ <*b1*>) where B is Nat : a2 ^ <*b1*> in a1 } ;
coherence
{ (c2 ^ <*b1*>) where B is Nat : c2 ^ <*b1*> in c1 } is Subset of c1
proof end;
end;

:: deftheorem Def3 defines Chain TREES_2:def 3 :
for b1 being Tree
for b2 being Subset of b1 holds
( b2 is Chain of b1 iff for b3, b4 being FinSequence of NAT st b3 in b2 & b4 in b2 holds
b3,b4 are_c=-comparable );

:: deftheorem Def4 defines Level TREES_2:def 4 :
for b1 being Tree
for b2 being Subset of b1 holds
( b2 is Level of b1 iff ex b3 being Nat st b2 = { b4 where B is Element of b1 : len b4 = b3 } );

:: deftheorem Def5 defines succ TREES_2:def 5 :
for b1 being Tree
for b2 being Element of b1 holds succ b2 = { (b2 ^ <*b3*>) where B is Nat : b2 ^ <*b3*> in b1 } ;

theorem Th11: :: TREES_2:11
for b1 being Tree
for b2 being Level of b1 holds b2 is AntiChain_of_Prefixes of b1
proof end;

theorem Th12: :: TREES_2:12
for b1 being Tree
for b2 being Element of b1 holds succ b2 is AntiChain_of_Prefixes of b1
proof end;

theorem Th13: :: TREES_2:13
for b1 being Tree
for b2 being AntiChain_of_Prefixes of b1
for b3 being Chain of b1 ex b4 being Element of b1 st b2 /\ b3 c= {b4}
proof end;

definition
let c1 be Tree;
let c2 be Nat;
func c1 -level c2 -> Level of a1 equals :: TREES_2:def 6
{ b1 where B is Element of a1 : len b1 = a2 } ;
coherence
{ b1 where B is Element of c1 : len b1 = c2 } is Level of c1
proof end;
end;

:: deftheorem Def6 defines -level TREES_2:def 6 :
for b1 being Tree
for b2 being Nat holds b1 -level b2 = { b3 where B is Element of b1 : len b3 = b2 } ;

theorem Th14: :: TREES_2:14
for b1 being Tree
for b2 being Element of b1
for b3 being Nat holds
( b2 ^ <*b3*> in succ b2 iff b2 ^ <*b3*> in b1 ) ;

theorem Th15: :: TREES_2:15
for b1 being Tree
for b2 being Element of b1 st b2 = {} holds
b1 -level 1 = succ b2
proof end;

theorem Th16: :: TREES_2:16
for b1 being Tree holds b1 = union { (b1 -level b2) where B is Nat : verum }
proof end;

theorem Th17: :: TREES_2:17
for b1 being finite Tree holds b1 = union { (b1 -level b2) where B is Nat : b2 <= height b1 }
proof end;

theorem Th18: :: TREES_2:18
for b1 being Tree
for b2 being Level of b1 ex b3 being Nat st b2 = b1 -level b3
proof end;

scheme :: TREES_2:sch 2
s2{ F1() -> non empty set , F2() -> set , F3( set ) -> set } :
Card { F3(b1) where B is Element of F1() : b1 in F2() } <=` Card F2()
proof end;

scheme :: TREES_2:sch 3
s3{ F1() -> non empty set , F2() -> finite set , F3() -> finite set , F4( set ) -> set } :
card F3() <= card F2()
provided
E10: F3() = { F4(b1) where B is Element of F1() : b1 in F2() }
proof end;

theorem Th19: :: TREES_2:19
for b1 being Tree st b1 is finite-order holds
ex b2 being Nat st
for b3 being Element of b1 ex b4 being finite set st
( b4 = succ b3 & card b4 <= b2 )
proof end;

theorem Th20: :: TREES_2:20
for b1 being Tree
for b2 being Element of b1 st b1 is finite-order holds
succ b2 is finite
proof end;

registration
let c1 be finite-order Tree;
let c2 be Element of c1;
cluster succ a2 -> finite ;
coherence
succ c2 is finite
by Th20;
end;

theorem Th21: :: TREES_2:21
for b1 being Tree holds {} is Chain of b1
proof end;

theorem Th22: :: TREES_2:22
for b1 being Tree holds {{} } is Chain of b1
proof end;

registration
let c1 be Tree;
cluster non empty Chain of a1;
existence
not for b1 being Chain of c1 holds b1 is empty
proof end;
end;

definition
let c1 be Tree;
let c2 be Chain of c1;
attr a2 is Branch-like means :Def7: :: TREES_2:def 7
( ( for b1 being FinSequence of NAT st b1 in a2 holds
ProperPrefixes b1 c= a2 ) & ( for b1 being FinSequence of NAT holds
( not b1 in a1 or ex b2 being FinSequence of NAT st
( b2 in a2 & not b2 is_a_proper_prefix_of b1 ) ) ) );
end;

:: deftheorem Def7 defines Branch-like TREES_2:def 7 :
for b1 being Tree
for b2 being Chain of b1 holds
( b2 is Branch-like iff ( ( for b3 being FinSequence of NAT st b3 in b2 holds
ProperPrefixes b3 c= b2 ) & ( for b3 being FinSequence of NAT holds
( not b3 in b1 or ex b4 being FinSequence of NAT st
( b4 in b2 & not b4 is_a_proper_prefix_of b3 ) ) ) ) );

registration
let c1 be Tree;
cluster Branch-like Chain of a1;
existence
ex b1 being Chain of c1 st b1 is Branch-like
proof end;
end;

definition
let c1 be Tree;
mode Branch of a1 is Branch-like Chain of a1;
end;

registration
let c1 be Tree;
cluster Branch-like -> non empty Chain of a1;
coherence
for b1 being Chain of c1 st b1 is Branch-like holds
not b1 is empty
proof end;
end;

theorem Th23: :: TREES_2:23
for b1 being Tree
for b2, b3 being FinSequence
for b4 being Chain of b1 st b2 in b4 & b3 in b4 & not b2 in ProperPrefixes b3 holds
b3 is_a_prefix_of b2
proof end;

theorem Th24: :: TREES_2:24
for b1 being Tree
for b2, b3, b4 being FinSequence
for b5 being Chain of b1 st b2 in b5 & b3 in b5 & b4 is_a_prefix_of b3 & not b2 in ProperPrefixes b4 holds
b4 is_a_prefix_of b2
proof end;

registration
let c1 be Tree;
cluster finite Chain of a1;
existence
ex b1 being Chain of c1 st b1 is finite
proof end;
end;

theorem Th25: :: TREES_2:25
for b1 being Tree
for b2 being Nat
for b3 being finite Chain of b1 st card b3 > b2 holds
ex b4 being FinSequence of NAT st
( b4 in b3 & len b4 >= b2 )
proof end;

theorem Th26: :: TREES_2:26
for b1 being Tree
for b2 being Chain of b1 holds { b3 where B is Element of b1 : ex b1 being FinSequence of NAT st
( b4 in b2 & b3 is_a_prefix_of b4 )
}
is Chain of b1
proof end;

theorem Th27: :: TREES_2:27
for b1 being Tree
for b2, b3 being FinSequence of NAT
for b4 being Branch of b1 st b2 is_a_prefix_of b3 & b3 in b4 holds
b2 in b4
proof end;

theorem Th28: :: TREES_2:28
for b1 being Tree
for b2 being Branch of b1 holds {} in b2
proof end;

theorem Th29: :: TREES_2:29
for b1 being Tree
for b2, b3 being FinSequence of NAT
for b4 being Chain of b1 st b2 in b4 & b3 in b4 & len b2 <= len b3 holds
b2 is_a_prefix_of b3
proof end;

theorem Th30: :: TREES_2:30
for b1 being Tree
for b2 being Chain of b1 ex b3 being Branch of b1 st b2 c= b3
proof end;

scheme :: TREES_2:sch 4
s4{ P1[ set , Nat], F1() -> set } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being set st b2 in F1() holds
ex b3 being Nat st
( b1 . b2 = b3 & P1[b2,b3] & ( for b4 being Nat st P1[b2,b4] holds
b3 <= b4 ) ) ) )
provided
E23: for b1 being set st b1 in F1() holds
ex b2 being Nat st P1[b1,b2]
proof end;

Lemma23: for b1 being set st b1 is finite holds
ex b2 being Nat st
for b3 being Nat st b3 in b1 holds
b3 <= b2
proof end;

scheme :: TREES_2:sch 5
s5{ F1() -> set , F2() -> set , P1[ set ], P2[ set , set ] } :
ex b1 being Function st
( dom b1 = NAT & rng b1 c= F1() & b1 . 0 = F2() & ( for b2 being Nat holds
( P2[b1 . b2,b1 . (b2 + 1)] & P1[b1 . b2] ) ) )
provided
E24: ( F2() in F1() & P1[F2()] ) and
E25: for b1 being set st b1 in F1() & P1[b1] holds
ex b2 being set st
( b2 in F1() & P2[b1,b2] & P1[b2] )
proof end;

theorem Th31: :: TREES_2:31
for b1 being Tree st ( for b2 being Nat ex b3 being finite Chain of b1 st card b3 = b2 ) & ( for b2 being Element of b1 holds succ b2 is finite ) holds
ex b2 being Chain of b1 st not b2 is finite
proof end;

theorem Th32: :: TREES_2:32
for b1 being finite-order Tree st ( for b2 being Nat ex b3 being finite Chain of b1 st card b3 = b2 ) holds
ex b2 being Chain of b1 st not b2 is finite
proof end;

definition
let c1 be Relation;
attr a1 is DecoratedTree-like means :Def8: :: TREES_2:def 8
dom a1 is Tree;
end;

:: deftheorem Def8 defines DecoratedTree-like TREES_2:def 8 :
for b1 being Relation holds
( b1 is DecoratedTree-like iff dom b1 is Tree );

registration
cluster DecoratedTree-like set ;
existence
ex b1 being Function st b1 is DecoratedTree-like
proof end;
end;

definition
mode DecoratedTree is DecoratedTree-like Function;
end;

registration
let c1 be DecoratedTree;
cluster dom a1 -> non empty Tree-like ;
coherence
( not dom c1 is empty & dom c1 is Tree-like )
by Def8;
end;

definition
let c1 be set ;
mode ParametrizedSubset of c1 -> Relation means :Def9: :: TREES_2:def 9
rng a2 c= a1;
existence
ex b1 being Relation st rng b1 c= c1
proof end;
end;

:: deftheorem Def9 defines ParametrizedSubset TREES_2:def 9 :
for b1 being set
for b2 being Relation holds
( b2 is ParametrizedSubset of b1 iff rng b2 c= b1 );

registration
let c1 be non empty set ;
cluster Function-like DecoratedTree-like ParametrizedSubset of a1;
existence
ex b1 being ParametrizedSubset of c1 st
( b1 is DecoratedTree-like & b1 is Function-like )
proof end;
end;

definition
let c1 be non empty set ;
mode DecoratedTree of a1 is Function-like DecoratedTree-like ParametrizedSubset of a1;
end;

definition
let c1 be non empty set ;
let c2 be DecoratedTree of c1;
let c3 be Element of dom c2;
redefine func . as c2 . c3 -> Element of a1;
coherence
c2 . c3 is Element of c1
proof end;
end;

theorem Th33: :: TREES_2:33
for b1, b2 being DecoratedTree st dom b1 = dom b2 & ( for b3 being FinSequence of NAT st b3 in dom b1 holds
b1 . b3 = b2 . b3 ) holds
b1 = b2
proof end;

scheme :: TREES_2:sch 6
s6{ F1() -> Tree, P1[ set , set ] } :
ex b1 being DecoratedTree st
( dom b1 = F1() & ( for b2 being FinSequence of NAT st b2 in F1() holds
P1[b2,b1 . b2] ) )
provided
E28: for b1 being FinSequence of NAT st b1 in F1() holds
ex b2 being set st P1[b1,b2]
proof end;

scheme :: TREES_2:sch 7
s7{ F1() -> Tree, F2( set ) -> set } :
ex b1 being DecoratedTree st
( dom b1 = F1() & ( for b2 being FinSequence of NAT st b2 in F1() holds
b1 . b2 = F2(b2) ) )
proof end;

definition
let c1 be DecoratedTree;
func Leaves c1 -> set equals :: TREES_2:def 10
a1 .: (Leaves (dom a1));
correctness
coherence
c1 .: (Leaves (dom c1)) is set
;
;
let c2 be FinSequence of NAT ;
func c1 | c2 -> DecoratedTree means :Def11: :: TREES_2:def 11
( dom a3 = (dom a1) | a2 & ( for b1 being FinSequence of NAT st b1 in (dom a1) | a2 holds
a3 . b1 = a1 . (a2 ^ b1) ) );
existence
ex b1 being DecoratedTree st
( dom b1 = (dom c1) | c2 & ( for b2 being FinSequence of NAT st b2 in (dom c1) | c2 holds
b1 . b2 = c1 . (c2 ^ b2) ) )
proof end;
uniqueness
for b1, b2 being DecoratedTree st dom b1 = (dom c1) | c2 & ( for b3 being FinSequence of NAT st b3 in (dom c1) | c2 holds
b1 . b3 = c1 . (c2 ^ b3) ) & dom b2 = (dom c1) | c2 & ( for b3 being FinSequence of NAT st b3 in (dom c1) | c2 holds
b2 . b3 = c1 . (c2 ^ b3) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines Leaves TREES_2:def 10 :
for b1 being DecoratedTree holds Leaves b1 = b1 .: (Leaves (dom b1));

:: deftheorem Def11 defines | TREES_2:def 11 :
for b1 being DecoratedTree
for b2 being FinSequence of NAT
for b3 being DecoratedTree holds
( b3 = b1 | b2 iff ( dom b3 = (dom b1) | b2 & ( for b4 being FinSequence of NAT st b4 in (dom b1) | b2 holds
b3 . b4 = b1 . (b2 ^ b4) ) ) );

theorem Th34: :: TREES_2:34
for b1 being FinSequence of NAT
for b2 being DecoratedTree st b1 in dom b2 holds
rng (b2 | b1) c= rng b2
proof end;

definition
let c1 be non empty set ;
let c2 be DecoratedTree of c1;
redefine func Leaves as Leaves c2 -> Subset of a1;
coherence
Leaves c2 is Subset of c1
proof end;
let c3 be Element of dom c2;
redefine func | as c2 | c3 -> DecoratedTree of a1;
coherence
c2 | c3 is DecoratedTree of c1
proof end;
end;

definition
let c1 be DecoratedTree;
let c2 be FinSequence of NAT ;
let c3 be DecoratedTree;
assume E30: c2 in dom c1 ;
func c1 with-replacement c2,c3 -> DecoratedTree means :: TREES_2:def 12
( dom a4 = (dom a1) with-replacement a2,(dom a3) & ( for b1 being FinSequence of NAT holds
( not b1 in (dom a1) with-replacement a2,(dom a3) or ( not a2 is_a_prefix_of b1 & a4 . b1 = a1 . b1 ) or ex b2 being FinSequence of NAT st
( b2 in dom a3 & b1 = a2 ^ b2 & a4 . b1 = a3 . b2 ) ) ) );
existence
ex b1 being DecoratedTree st
( dom b1 = (dom c1) with-replacement c2,(dom c3) & ( for b2 being FinSequence of NAT holds
( not b2 in (dom c1) with-replacement c2,(dom c3) or ( not c2 is_a_prefix_of b2 & b1 . b2 = c1 . b2 ) or ex b3 being FinSequence of NAT st
( b3 in dom c3 & b2 = c2 ^ b3 & b1 . b2 = c3 . b3 ) ) ) )
proof end;
uniqueness
for b1, b2 being DecoratedTree st dom b1 = (dom c1) with-replacement c2,(dom c3) & ( for b3 being FinSequence of NAT holds
( not b3 in (dom c1) with-replacement c2,(dom c3) or ( not c2 is_a_prefix_of b3 & b1 . b3 = c1 . b3 ) or ex b4 being FinSequence of NAT st
( b4 in dom c3 & b3 = c2 ^ b4 & b1 . b3 = c3 . b4 ) ) ) & dom b2 = (dom c1) with-replacement c2,(dom c3) & ( for b3 being FinSequence of NAT holds
( not b3 in (dom c1) with-replacement c2,(dom c3) or ( not c2 is_a_prefix_of b3 & b2 . b3 = c1 . b3 ) or ex b4 being FinSequence of NAT st
( b4 in dom c3 & b3 = c2 ^ b4 & b2 . b3 = c3 . b4 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 defines with-replacement TREES_2:def 12 :
for b1 being DecoratedTree
for b2 being FinSequence of NAT
for b3 being DecoratedTree st b2 in dom b1 holds
for b4 being DecoratedTree holds
( b4 = b1 with-replacement b2,b3 iff ( dom b4 = (dom b1) with-replacement b2,(dom b3) & ( for b5 being FinSequence of NAT holds
( not b5 in (dom b1) with-replacement b2,(dom b3) or ( not b2 is_a_prefix_of b5 & b4 . b5 = b1 . b5 ) or ex b6 being FinSequence of NAT st
( b6 in dom b3 & b5 = b2 ^ b6 & b4 . b5 = b3 . b6 ) ) ) ) );

registration
let c1 be Tree;
let c2 be set ;
cluster a1 --> a2 -> DecoratedTree-like ;
coherence
c1 --> c2 is DecoratedTree-like
proof end;
end;

definition
let c1 be non empty set ;
let c2 be Tree;
let c3 be Element of c1;
redefine func --> as c2 --> c3 -> DecoratedTree of a1;
coherence
c2 --> c3 is DecoratedTree of c1
proof end;
end;

theorem Th35: :: TREES_2:35
for b1 being non empty set st ( for b2 being set st b2 in b1 holds
b2 is Tree ) holds
union b1 is Tree
proof end;

theorem Th36: :: TREES_2:36
for b1 being set st ( for b2 being set st b2 in b1 holds
b2 is Function ) & b1 is c=-linear holds
( union b1 is Relation-like & union b1 is Function-like )
proof end;

theorem Th37: :: TREES_2:37
for b1 being non empty set st ( for b2 being set st b2 in b1 holds
b2 is DecoratedTree ) & b1 is c=-linear holds
union b1 is DecoratedTree
proof end;

theorem Th38: :: TREES_2:38
for b1, b2 being non empty set st ( for b3 being set st b3 in b1 holds
b3 is DecoratedTree of b2 ) & b1 is c=-linear holds
union b1 is DecoratedTree of b2
proof end;

scheme :: TREES_2:sch 8
s8{ F1() -> non empty set , F2() -> Element of F1(), F3( set ) -> set , F4() -> Function of [:F1(),NAT :],F1() } :
ex b1 being DecoratedTree of F1() st
( b1 . {} = F2() & ( for b2 being Element of dom b1 holds
( succ b2 = { (b2 ^ <*b3*>) where B is Nat : b3 in F3((b1 . b2)) } & ( for b3 being Nat st b3 in F3((b1 . b2)) holds
b1 . (b2 ^ <*b3*>) = F4() . [(b1 . b2),b3] ) ) ) )
provided
E34: for b1 being Element of F1()
for b2, b3 being Nat st b2 <= b3 & b3 in F3(b1) holds
b2 in F3(b1)
proof end;

scheme :: TREES_2:sch 9
s9{ F1() -> non empty set , F2() -> Element of F1(), F3( set ) -> Nat, F4() -> Function of [:F1(),NAT :],F1() } :
ex b1 being DecoratedTree of F1() st
( b1 . {} = F2() & ( for b2 being Element of dom b1 holds
( succ b2 = { (b2 ^ <*b3*>) where B is Nat : b3 < F3((b1 . b2)) } & ( for b3 being Nat st b3 < F3((b1 . b2)) holds
b1 . (b2 ^ <*b3*>) = F4() . [(b1 . b2),b3] ) ) ) )
proof end;

registration
let c1 be finite Tree;
let c2 be Element of c1;
cluster succ a2 -> finite ;
coherence
succ c2 is finite
;
end;

definition
let c1 be finite Tree;
let c2 be Element of c1;
func branchdeg c2 -> set equals :: TREES_2:def 13
card (succ a2);
correctness
coherence
card (succ c2) is set
;
;
end;

:: deftheorem Def13 defines branchdeg TREES_2:def 13 :
for b1 being finite Tree
for b2 being Element of b1 holds branchdeg b2 = card (succ b2);

Lemma34: for b1 being Function holds (pr1 (dom b1),(rng b1)) .: b1 = dom b1
proof end;

Lemma35: for b1 being Function holds
( dom b1 is finite iff b1 is finite )
proof end;

registration
cluster finite set ;
existence
ex b1 being DecoratedTree st b1 is finite
proof end;
end;

registration
let c1 be non empty set ;
cluster finite ParametrizedSubset of a1;
existence
ex b1 being DecoratedTree of c1 st b1 is finite
proof end;
end;

registration
let c1 be finite Relation;
cluster dom a1 -> finite ;
coherence
dom c1 is finite
proof end;
end;

registration
let c1, c2 be non empty set ;
cluster non empty Relation of a1,a2;
existence
not for b1 being Relation of c1,c2 holds b1 is empty
proof end;
end;