:: ORDINAL2 semantic presentation

scheme :: ORDINAL2:sch 1
s1{ P1[ Ordinal] } :
for b1 being Ordinal holds P1[b1]
provided
E1: P1[ {} ] and E2: for b1 being Ordinal holds
( P1[b1] implies P1[ succ b1] ) and E3: for b1 being Ordinal holds
( b1 <> {} & b1 is_limit_ordinal & ( for b2 being Ordinal holds
( b2 in b1 implies P1[b2] ) ) implies P1[b1] )
proof end;

theorem Th1: :: ORDINAL2:1
for b1, b2 being Ordinal holds
( b1 c= b2 iff succ b1 c= succ b2 )
proof end;

theorem Th2: :: ORDINAL2:2
for b1 being Ordinal holds union (succ b1) = b1
proof end;

theorem Th3: :: ORDINAL2:3
for b1 being Ordinal holds succ b1 c= bool b1
proof end;

theorem Th4: :: ORDINAL2:4
{} is_limit_ordinal
proof end;

theorem Th5: :: ORDINAL2:5
for b1 being Ordinal holds union b1 c= b1
proof end;

definition
let c1 be T-Sequence;
func last c1 -> set equals :: ORDINAL2:def 1
a1 . (union (dom a1));
coherence
c1 . (union (dom c1)) is set
;
end;

:: deftheorem Def1 defines last ORDINAL2:def 1 :
for b1 being T-Sequence holds last b1 = b1 . (union (dom b1));

theorem Th6: :: ORDINAL2:6
canceled;

theorem Th7: :: ORDINAL2:7
for b1 being Ordinal
for b2 being T-Sequence holds
( dom b2 = succ b1 implies last b2 = b2 . b1 ) by Th2;

definition
let c1 be set ;
canceled;
canceled;
end;

:: deftheorem Def2 ORDINAL2:def 2 :
canceled;

:: deftheorem Def3 ORDINAL2:def 3 :
canceled;

theorem Th8: :: ORDINAL2:8
canceled;

theorem Th9: :: ORDINAL2:9
for b1 being set holds On b1 c= b1
proof end;

theorem Th10: :: ORDINAL2:10
for b1 being Ordinal holds On b1 = b1
proof end;

theorem Th11: :: ORDINAL2:11
for b1, b2 being set holds
( b1 c= b2 implies On b1 c= On b2 )
proof end;

theorem Th12: :: ORDINAL2:12
canceled;

theorem Th13: :: ORDINAL2:13
for b1 being set holds Lim b1 c= b1
proof end;

theorem Th14: :: ORDINAL2:14
for b1, b2 being set holds
( b1 c= b2 implies Lim b1 c= Lim b2 )
proof end;

theorem Th15: :: ORDINAL2:15
for b1 being set holds Lim b1 c= On b1
proof end;

theorem Th16: :: ORDINAL2:16
for b1 being Ordinal holds
ex b2 being Ordinal st
( b1 in b2 & b2 is_limit_ordinal ) by ORDINAL1:51;

theorem Th17: :: ORDINAL2:17
for b1 being set holds
( ( for b2 being set holds
( b2 in b1 implies b2 is Ordinal ) ) implies meet b1 is Ordinal )
proof end;

definition
canceled;
canceled;
end;

:: deftheorem Def4 ORDINAL2:def 4 :
canceled;

:: deftheorem Def5 ORDINAL2:def 5 :
canceled;

registration
cluster being_limit_ordinal set ;
existence
ex b1 being Ordinal st b1 is being_limit_ordinal
proof end;
end;

definition
let c1 be set ;
func inf c1 -> Ordinal equals :: ORDINAL2:def 6
meet (On a1);
coherence
meet (On c1) is Ordinal
proof end;
func sup c1 -> Ordinal means :Def7: :: ORDINAL2:def 7
( On a1 c= a2 & ( for b1 being Ordinal holds
( On a1 c= b1 implies a2 c= b1 ) ) );
existence
ex b1 being Ordinal st
( On c1 c= b1 & ( for b2 being Ordinal holds
( On c1 c= b2 implies b1 c= b2 ) ) )
proof end;
uniqueness
for b1, b2 being Ordinal holds
( On c1 c= b1 & ( for b3 being Ordinal holds
( On c1 c= b3 implies b1 c= b3 ) ) & On c1 c= b2 & ( for b3 being Ordinal holds
( On c1 c= b3 implies b2 c= b3 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def6 defines inf ORDINAL2:def 6 :
for b1 being set holds inf b1 = meet (On b1);

:: deftheorem Def7 defines sup ORDINAL2:def 7 :
for b1 being set
for b2 being Ordinal holds
( b2 = sup b1 iff ( On b1 c= b2 & ( for b3 being Ordinal holds
( On b1 c= b3 implies b2 c= b3 ) ) ) );

theorem Th18: :: ORDINAL2:18
canceled;

theorem Th19: :: ORDINAL2:19
( {} in omega & omega is_limit_ordinal & ( for b1 being Ordinal holds
( {} in b1 & b1 is_limit_ordinal implies omega c= b1 ) ) ) by ORDINAL1:def 12;

theorem Th20: :: ORDINAL2:20
canceled;

theorem Th21: :: ORDINAL2:21
canceled;

theorem Th22: :: ORDINAL2:22
for b1 being Ordinal
for b2 being set holds
( b1 in b2 implies inf b2 c= b1 )
proof end;

theorem Th23: :: ORDINAL2:23
for b1 being Ordinal
for b2 being set holds
( On b2 <> {} & ( for b3 being Ordinal holds
( b3 in b2 implies b1 c= b3 ) ) implies b1 c= inf b2 )
proof end;

theorem Th24: :: ORDINAL2:24
for b1 being Ordinal
for b2, b3 being set holds
( b1 in b2 & b2 c= b3 implies inf b3 c= inf b2 )
proof end;

theorem Th25: :: ORDINAL2:25
for b1 being Ordinal
for b2 being set holds
( b1 in b2 implies inf b2 in b2 )
proof end;

theorem Th26: :: ORDINAL2:26
for b1 being Ordinal holds sup b1 = b1
proof end;

theorem Th27: :: ORDINAL2:27
for b1 being Ordinal
for b2 being set holds
( b1 in b2 implies b1 in sup b2 )
proof end;

theorem Th28: :: ORDINAL2:28
for b1 being Ordinal
for b2 being set holds
( ( for b3 being Ordinal holds
( b3 in b2 implies b3 in b1 ) ) implies sup b2 c= b1 )
proof end;

theorem Th29: :: ORDINAL2:29
for b1 being Ordinal
for b2 being set holds
not ( b1 in sup b2 & ( for b3 being Ordinal holds
not ( b3 in b2 & b1 c= b3 ) ) )
proof end;

theorem Th30: :: ORDINAL2:30
for b1, b2 being set holds
( b1 c= b2 implies sup b1 c= sup b2 )
proof end;

theorem Th31: :: ORDINAL2:31
for b1 being Ordinal holds sup {b1} = succ b1
proof end;

theorem Th32: :: ORDINAL2:32
for b1 being set holds inf b1 c= sup b1
proof end;

scheme :: ORDINAL2:sch 2
s2{ F1() -> Ordinal, F2( Ordinal) -> set } :
ex b1 being T-Sequence st
( dom b1 = F1() & ( for b2 being Ordinal holds
( b2 in F1() implies b1 . b2 = F2(b2) ) ) )
proof end;

definition
let c1 be Function;
attr a1 is Ordinal-yielding means :Def8: :: ORDINAL2:def 8
ex b1 being Ordinal st rng a1 c= b1;
end;

:: deftheorem Def8 defines Ordinal-yielding ORDINAL2:def 8 :
for b1 being Function holds
( b1 is Ordinal-yielding iff ex b2 being Ordinal st rng b1 c= b2 );

registration
cluster Ordinal-yielding set ;
existence
ex b1 being T-Sequence st b1 is Ordinal-yielding
proof end;
end;

definition
mode Ordinal-Sequence is Ordinal-yielding T-Sequence;
end;

registration
let c1 be Ordinal;
cluster -> Ordinal-yielding T-Sequence of a1;
coherence
for b1 being T-Sequence of c1 holds b1 is Ordinal-yielding
proof end;
end;

registration
let c1 be Ordinal-Sequence;
let c2 be Ordinal;
cluster a1 | a2 -> Ordinal-yielding ;
coherence
c1 | c2 is Ordinal-yielding
proof end;
end;

theorem Th33: :: ORDINAL2:33
canceled;

theorem Th34: :: ORDINAL2:34
for b1 being Ordinal
for b2 being Ordinal-Sequence holds
( b1 in dom b2 implies b2 . b1 is Ordinal )
proof end;

registration
let c1 be Ordinal-Sequence;
let c2 be Ordinal;
cluster a1 . a2 -> ordinal ;
coherence
c1 . c2 is ordinal
proof end;
end;

scheme :: ORDINAL2:sch 3
s3{ F1() -> Ordinal, F2( Ordinal) -> Ordinal } :
ex b1 being Ordinal-Sequence st
( dom b1 = F1() & ( for b2 being Ordinal holds
( b2 in F1() implies b1 . b2 = F2(b2) ) ) )
proof end;

scheme :: ORDINAL2:sch 4
s4{ F1() -> Ordinal, F2() -> set , F3( Ordinal, set ) -> set , F4( Ordinal, T-Sequence) -> set , F5() -> T-Sequence, F6() -> T-Sequence } :
F5() = F6()
provided
E14: dom F5() = F1() and E15: ( {} in F1() implies F5() . {} = F2() ) and E16: for b1 being Ordinal holds
( succ b1 in F1() implies F5() . (succ b1) = F3(b1,(F5() . b1)) ) and E17: for b1 being Ordinal holds
( b1 in F1() & b1 <> {} & b1 is_limit_ordinal implies F5() . b1 = F4(b1,(F5() | b1)) ) and E18: dom F6() = F1() and E19: ( {} in F1() implies F6() . {} = F2() ) and E20: for b1 being Ordinal holds
( succ b1 in F1() implies F6() . (succ b1) = F3(b1,(F6() . b1)) ) and E21: for b1 being Ordinal holds
( b1 in F1() & b1 <> {} & b1 is_limit_ordinal implies F6() . b1 = F4(b1,(F6() | b1)) )
proof end;

scheme :: ORDINAL2:sch 5
s5{ F1() -> Ordinal, F2() -> set , F3( Ordinal, set ) -> set , F4( Ordinal, T-Sequence) -> set } :
ex b1 being T-Sequence st
( dom b1 = F1() & ( {} in F1() implies b1 . {} = F2() ) & ( for b2 being Ordinal holds
( succ b2 in F1() implies b1 . (succ b2) = F3(b2,(b1 . b2)) ) ) & ( for b2 being Ordinal holds
( b2 in F1() & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = F4(b2,(b1 | b2)) ) ) )
proof end;

scheme :: ORDINAL2:sch 6
s6{ F1() -> T-Sequence, F2( Ordinal) -> set , F3() -> Ordinal, F4() -> set , F5( Ordinal, set ) -> set , F6( Ordinal, T-Sequence) -> set } :
for b1 being Ordinal holds
( b1 in dom F1() implies F1() . b1 = F2(b1) )
provided
E14: for b1 being Ordinal
for b2 being set holds
( b2 = F2(b1) iff ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F4() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F5(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F6(b4,(b3 | b4)) ) ) ) ) and E15: dom F1() = F3() and E16: ( {} in F3() implies F1() . {} = F4() ) and E17: for b1 being Ordinal holds
( succ b1 in F3() implies F1() . (succ b1) = F5(b1,(F1() . b1)) ) and E18: for b1 being Ordinal holds
( b1 in F3() & b1 <> {} & b1 is_limit_ordinal implies F1() . b1 = F6(b1,(F1() | b1)) )
proof end;

scheme :: ORDINAL2:sch 7
s7{ F1() -> Ordinal, F2() -> set , F3( Ordinal, set ) -> set , F4( Ordinal, T-Sequence) -> set } :
( ex b1 being set ex b2 being T-Sequence st
( b1 = last b2 & dom b2 = succ F1() & b2 . {} = F2() & ( for b3 being Ordinal holds
( succ b3 in succ F1() implies b2 . (succ b3) = F3(b3,(b2 . b3)) ) ) & ( for b3 being Ordinal holds
( b3 in succ F1() & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = F4(b3,(b2 | b3)) ) ) ) & ( for b1, b2 being set holds
( ex b3 being T-Sequence st
( b1 = last b3 & dom b3 = succ F1() & b3 . {} = F2() & ( for b4 being Ordinal holds
( succ b4 in succ F1() implies b3 . (succ b4) = F3(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ F1() & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F4(b4,(b3 | b4)) ) ) ) & ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ F1() & b3 . {} = F2() & ( for b4 being Ordinal holds
( succ b4 in succ F1() implies b3 . (succ b4) = F3(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ F1() & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F4(b4,(b3 | b4)) ) ) ) implies b1 = b2 ) ) )
proof end;

scheme :: ORDINAL2:sch 8
s8{ F1( Ordinal) -> set , F2() -> set , F3( Ordinal, set ) -> set , F4( Ordinal, T-Sequence) -> set } :
F1({} ) = F2()
provided
E14: for b1 being Ordinal
for b2 being set holds
( b2 = F1(b1) iff ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F2() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F3(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F4(b4,(b3 | b4)) ) ) ) )
proof end;

scheme :: ORDINAL2:sch 9
s9{ F1() -> set , F2( Ordinal, set ) -> set , F3( Ordinal, T-Sequence) -> set , F4( Ordinal) -> set } :
for b1 being Ordinal holds F4((succ b1)) = F2(b1,F4(b1))
provided
E14: for b1 being Ordinal
for b2 being set holds
( b2 = F4(b1) iff ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F1() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F2(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F3(b4,(b3 | b4)) ) ) ) )
proof end;

scheme :: ORDINAL2:sch 10
s10{ F1() -> T-Sequence, F2() -> Ordinal, F3( Ordinal) -> set , F4() -> set , F5( Ordinal, set ) -> set , F6( Ordinal, T-Sequence) -> set } :
F3(F2()) = F6(F2(),F1())
provided
E14: for b1 being Ordinal
for b2 being set holds
( b2 = F3(b1) iff ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F4() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F5(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F6(b4,(b3 | b4)) ) ) ) ) and E15: ( F2() <> {} & F2() is_limit_ordinal ) and E16: dom F1() = F2() and E17: for b1 being Ordinal holds
( b1 in F2() implies F1() . b1 = F3(b1) )
proof end;

scheme :: ORDINAL2:sch 11
s11{ F1() -> Ordinal, F2() -> Ordinal, F3( Ordinal, Ordinal) -> Ordinal, F4( Ordinal, T-Sequence) -> Ordinal } :
ex b1 being Ordinal-Sequence st
( dom b1 = F1() & ( {} in F1() implies b1 . {} = F2() ) & ( for b2 being Ordinal holds
( succ b2 in F1() implies b1 . (succ b2) = F3(b2,(b1 . b2)) ) ) & ( for b2 being Ordinal holds
( b2 in F1() & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = F4(b2,(b1 | b2)) ) ) )
proof end;

scheme :: ORDINAL2:sch 12
s12{ F1() -> Ordinal-Sequence, F2( Ordinal) -> Ordinal, F3() -> Ordinal, F4() -> Ordinal, F5( Ordinal, Ordinal) -> Ordinal, F6( Ordinal, T-Sequence) -> Ordinal } :
for b1 being Ordinal holds
( b1 in dom F1() implies F1() . b1 = F2(b1) )
provided
E14: for b1, b2 being Ordinal holds
( b2 = F2(b1) iff ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F4() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F5(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F6(b4,(b3 | b4)) ) ) ) ) and E15: dom F1() = F3() and E16: ( {} in F3() implies F1() . {} = F4() ) and E17: for b1 being Ordinal holds
( succ b1 in F3() implies F1() . (succ b1) = F5(b1,(F1() . b1)) ) and E18: for b1 being Ordinal holds
( b1 in F3() & b1 <> {} & b1 is_limit_ordinal implies F1() . b1 = F6(b1,(F1() | b1)) )
proof end;

scheme :: ORDINAL2:sch 13
s13{ F1() -> Ordinal, F2() -> Ordinal, F3( Ordinal, Ordinal) -> Ordinal, F4( Ordinal, T-Sequence) -> Ordinal } :
( ex b1 being Ordinalex b2 being Ordinal-Sequence st
( b1 = last b2 & dom b2 = succ F1() & b2 . {} = F2() & ( for b3 being Ordinal holds
( succ b3 in succ F1() implies b2 . (succ b3) = F3(b3,(b2 . b3)) ) ) & ( for b3 being Ordinal holds
( b3 in succ F1() & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = F4(b3,(b2 | b3)) ) ) ) & ( for b1, b2 being Ordinal holds
( ex b3 being Ordinal-Sequence st
( b1 = last b3 & dom b3 = succ F1() & b3 . {} = F2() & ( for b4 being Ordinal holds
( succ b4 in succ F1() implies b3 . (succ b4) = F3(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ F1() & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F4(b4,(b3 | b4)) ) ) ) & ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ F1() & b3 . {} = F2() & ( for b4 being Ordinal holds
( succ b4 in succ F1() implies b3 . (succ b4) = F3(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ F1() & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F4(b4,(b3 | b4)) ) ) ) implies b1 = b2 ) ) )
proof end;

scheme :: ORDINAL2:sch 14
s14{ F1( Ordinal) -> Ordinal, F2() -> Ordinal, F3( Ordinal, Ordinal) -> Ordinal, F4( Ordinal, T-Sequence) -> Ordinal } :
F1({} ) = F2()
provided
E14: for b1, b2 being Ordinal holds
( b2 = F1(b1) iff ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F2() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F3(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F4(b4,(b3 | b4)) ) ) ) )
proof end;

scheme :: ORDINAL2:sch 15
s15{ F1() -> Ordinal, F2( Ordinal, Ordinal) -> Ordinal, F3( Ordinal, T-Sequence) -> Ordinal, F4( Ordinal) -> Ordinal } :
for b1 being Ordinal holds F4((succ b1)) = F2(b1,F4(b1))
provided
E14: for b1, b2 being Ordinal holds
( b2 = F4(b1) iff ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F1() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F2(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F3(b4,(b3 | b4)) ) ) ) )
proof end;

scheme :: ORDINAL2:sch 16
s16{ F1() -> Ordinal-Sequence, F2() -> Ordinal, F3( Ordinal) -> Ordinal, F4() -> Ordinal, F5( Ordinal, Ordinal) -> Ordinal, F6( Ordinal, T-Sequence) -> Ordinal } :
F3(F2()) = F6(F2(),F1())
provided
E14: for b1, b2 being Ordinal holds
( b2 = F3(b1) iff ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ b1 & b3 . {} = F4() & ( for b4 being Ordinal holds
( succ b4 in succ b1 implies b3 . (succ b4) = F5(b4,(b3 . b4)) ) ) & ( for b4 being Ordinal holds
( b4 in succ b1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = F6(b4,(b3 | b4)) ) ) ) ) and E15: ( F2() <> {} & F2() is_limit_ordinal ) and E16: dom F1() = F2() and E17: for b1 being Ordinal holds
( b1 in F2() implies F1() . b1 = F3(b1) )
proof end;

definition
let c1 be T-Sequence;
func sup c1 -> Ordinal equals :: ORDINAL2:def 9
sup (rng a1);
correctness
coherence
sup (rng c1) is Ordinal
;
;
func inf c1 -> Ordinal equals :: ORDINAL2:def 10
inf (rng a1);
correctness
coherence
inf (rng c1) is Ordinal
;
;
end;

:: deftheorem Def9 defines sup ORDINAL2:def 9 :
for b1 being T-Sequence holds sup b1 = sup (rng b1);

:: deftheorem Def10 defines inf ORDINAL2:def 10 :
for b1 being T-Sequence holds inf b1 = inf (rng b1);

theorem Th35: :: ORDINAL2:35
for b1 being T-Sequence holds
( sup b1 = sup (rng b1) & inf b1 = inf (rng b1) ) ;

definition
let c1 be T-Sequence;
func lim_sup c1 -> Ordinal means :: ORDINAL2:def 11
ex b1 being Ordinal-Sequence st
( a2 = inf b1 & dom b1 = dom a1 & ( for b2 being Ordinal holds
( b2 in dom a1 implies b1 . b2 = sup (rng (a1 | ((dom a1) \ b2))) ) ) );
existence
ex b1 being Ordinalex b2 being Ordinal-Sequence st
( b1 = inf b2 & dom b2 = dom c1 & ( for b3 being Ordinal holds
( b3 in dom c1 implies b2 . b3 = sup (rng (c1 | ((dom c1) \ b3))) ) ) )
proof end;
uniqueness
for b1, b2 being Ordinal holds
( ex b3 being Ordinal-Sequence st
( b1 = inf b3 & dom b3 = dom c1 & ( for b4 being Ordinal holds
( b4 in dom c1 implies b3 . b4 = sup (rng (c1 | ((dom c1) \ b4))) ) ) ) & ex b3 being Ordinal-Sequence st
( b2 = inf b3 & dom b3 = dom c1 & ( for b4 being Ordinal holds
( b4 in dom c1 implies b3 . b4 = sup (rng (c1 | ((dom c1) \ b4))) ) ) ) implies b1 = b2 )
proof end;
func lim_inf c1 -> Ordinal means :: ORDINAL2:def 12
ex b1 being Ordinal-Sequence st
( a2 = sup b1 & dom b1 = dom a1 & ( for b2 being Ordinal holds
( b2 in dom a1 implies b1 . b2 = inf (rng (a1 | ((dom a1) \ b2))) ) ) );
existence
ex b1 being Ordinalex b2 being Ordinal-Sequence st
( b1 = sup b2 & dom b2 = dom c1 & ( for b3 being Ordinal holds
( b3 in dom c1 implies b2 . b3 = inf (rng (c1 | ((dom c1) \ b3))) ) ) )
proof end;
uniqueness
for b1, b2 being Ordinal holds
( ex b3 being Ordinal-Sequence st
( b1 = sup b3 & dom b3 = dom c1 & ( for b4 being Ordinal holds
( b4 in dom c1 implies b3 . b4 = inf (rng (c1 | ((dom c1) \ b4))) ) ) ) & ex b3 being Ordinal-Sequence st
( b2 = sup b3 & dom b3 = dom c1 & ( for b4 being Ordinal holds
( b4 in dom c1 implies b3 . b4 = inf (rng (c1 | ((dom c1) \ b4))) ) ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def11 defines lim_sup ORDINAL2:def 11 :
for b1 being T-Sequence
for b2 being Ordinal holds
( b2 = lim_sup b1 iff ex b3 being Ordinal-Sequence st
( b2 = inf b3 & dom b3 = dom b1 & ( for b4 being Ordinal holds
( b4 in dom b1 implies b3 . b4 = sup (rng (b1 | ((dom b1) \ b4))) ) ) ) );

:: deftheorem Def12 defines lim_inf ORDINAL2:def 12 :
for b1 being T-Sequence
for b2 being Ordinal holds
( b2 = lim_inf b1 iff ex b3 being Ordinal-Sequence st
( b2 = sup b3 & dom b3 = dom b1 & ( for b4 being Ordinal holds
( b4 in dom b1 implies b3 . b4 = inf (rng (b1 | ((dom b1) \ b4))) ) ) ) );

definition
let c1 be Ordinal;
let c2 be Ordinal-Sequence;
pred c1 is_limes_of c2 means :Def13: :: ORDINAL2:def 13
ex b1 being Ordinal st
( b1 in dom a2 & ( for b2 being Ordinal holds
( b1 c= b2 & b2 in dom a2 implies a2 . b2 = {} ) ) ) if a1 = {}
otherwise for b1, b2 being Ordinal holds
not ( b1 in a1 & a1 in b2 & ( for b3 being Ordinal holds
not ( b3 in dom a2 & ( for b4 being Ordinal holds
( b3 c= b4 & b4 in dom a2 implies ( b1 in a2 . b4 & a2 . b4 in b2 ) ) ) ) ) );
consistency
verum
;
end;

:: deftheorem Def13 defines is_limes_of ORDINAL2:def 13 :
for b1 being Ordinal
for b2 being Ordinal-Sequence holds
( ( b1 = {} implies ( b1 is_limes_of b2 iff ex b3 being Ordinal st
( b3 in dom b2 & ( for b4 being Ordinal holds
( b3 c= b4 & b4 in dom b2 implies b2 . b4 = {} ) ) ) ) ) & ( not b1 = {} implies ( b1 is_limes_of b2 iff for b3, b4 being Ordinal holds
not ( b3 in b1 & b1 in b4 & ( for b5 being Ordinal holds
not ( b5 in dom b2 & ( for b6 being Ordinal holds
( b5 c= b6 & b6 in dom b2 implies ( b3 in b2 . b6 & b2 . b6 in b4 ) ) ) ) ) ) ) ) );

definition
let c1 be Ordinal-Sequence;
given c2 being Ordinal such that E15: c2 is_limes_of c1 ;
func lim c1 -> Ordinal means :Def14: :: ORDINAL2:def 14
a2 is_limes_of a1;
existence
ex b1 being Ordinal st b1 is_limes_of c1
by E15;
uniqueness
for b1, b2 being Ordinal holds
( b1 is_limes_of c1 & b2 is_limes_of c1 implies b1 = b2 )
proof end;
end;

:: deftheorem Def14 defines lim ORDINAL2:def 14 :
for b1 being Ordinal-Sequence holds
( ex b2 being Ordinal st b2 is_limes_of b1 implies for b2 being Ordinal holds
( b2 = lim b1 iff b2 is_limes_of b1 ) );

definition
let c1 be Ordinal;
let c2 be Ordinal-Sequence;
func lim c1,c2 -> Ordinal equals :: ORDINAL2:def 15
lim (a2 | a1);
correctness
coherence
lim (c2 | c1) is Ordinal
;
;
end;

:: deftheorem Def15 defines lim ORDINAL2:def 15 :
for b1 being Ordinal
for b2 being Ordinal-Sequence holds lim b1,b2 = lim (b2 | b1);

definition
let c1 be Ordinal-Sequence;
attr a1 is increasing means :: ORDINAL2:def 16
for b1, b2 being Ordinal holds
( b1 in b2 & b2 in dom a1 implies a1 . b1 in a1 . b2 );
attr a1 is continuous means :: ORDINAL2:def 17
for b1, b2 being Ordinal holds
( b1 in dom a1 & b1 <> {} & b1 is_limit_ordinal & b2 = a1 . b1 implies b2 is_limes_of a1 | b1 );
end;

:: deftheorem Def16 defines increasing ORDINAL2:def 16 :
for b1 being Ordinal-Sequence holds
( b1 is increasing iff for b2, b3 being Ordinal holds
( b2 in b3 & b3 in dom b1 implies b1 . b2 in b1 . b3 ) );

:: deftheorem Def17 defines continuous ORDINAL2:def 17 :
for b1 being Ordinal-Sequence holds
( b1 is continuous iff for b2, b3 being Ordinal holds
( b2 in dom b1 & b2 <> {} & b2 is_limit_ordinal & b3 = b1 . b2 implies b3 is_limes_of b1 | b2 ) );

definition
let c1, c2 be Ordinal;
func c1 +^ c2 -> Ordinal means :Def18: :: ORDINAL2:def 18
ex b1 being Ordinal-Sequence st
( a3 = last b1 & dom b1 = succ a2 & b1 . {} = a1 & ( for b2 being Ordinal holds
( succ b2 in succ a2 implies b1 . (succ b2) = succ (b1 . b2) ) ) & ( for b2 being Ordinal holds
( b2 in succ a2 & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = sup (b1 | b2) ) ) );
correctness
existence
ex b1 being Ordinalex b2 being Ordinal-Sequence st
( b1 = last b2 & dom b2 = succ c2 & b2 . {} = c1 & ( for b3 being Ordinal holds
( succ b3 in succ c2 implies b2 . (succ b3) = succ (b2 . b3) ) ) & ( for b3 being Ordinal holds
( b3 in succ c2 & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = sup (b2 | b3) ) ) )
;
uniqueness
for b1, b2 being Ordinal holds
( ex b3 being Ordinal-Sequence st
( b1 = last b3 & dom b3 = succ c2 & b3 . {} = c1 & ( for b4 being Ordinal holds
( succ b4 in succ c2 implies b3 . (succ b4) = succ (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c2 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = sup (b3 | b4) ) ) ) & ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ c2 & b3 . {} = c1 & ( for b4 being Ordinal holds
( succ b4 in succ c2 implies b3 . (succ b4) = succ (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c2 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = sup (b3 | b4) ) ) ) implies b1 = b2 )
;
proof end;
end;

:: deftheorem Def18 defines +^ ORDINAL2:def 18 :
for b1, b2, b3 being Ordinal holds
( b3 = b1 +^ b2 iff ex b4 being Ordinal-Sequence st
( b3 = last b4 & dom b4 = succ b2 & b4 . {} = b1 & ( for b5 being Ordinal holds
( succ b5 in succ b2 implies b4 . (succ b5) = succ (b4 . b5) ) ) & ( for b5 being Ordinal holds
( b5 in succ b2 & b5 <> {} & b5 is_limit_ordinal implies b4 . b5 = sup (b4 | b5) ) ) ) );

definition
let c1, c2 be Ordinal;
func c1 *^ c2 -> Ordinal means :Def19: :: ORDINAL2:def 19
ex b1 being Ordinal-Sequence st
( a3 = last b1 & dom b1 = succ a1 & b1 . {} = {} & ( for b2 being Ordinal holds
( succ b2 in succ a1 implies b1 . (succ b2) = (b1 . b2) +^ a2 ) ) & ( for b2 being Ordinal holds
( b2 in succ a1 & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = union (sup (b1 | b2)) ) ) );
correctness
existence
ex b1 being Ordinalex b2 being Ordinal-Sequence st
( b1 = last b2 & dom b2 = succ c1 & b2 . {} = {} & ( for b3 being Ordinal holds
( succ b3 in succ c1 implies b2 . (succ b3) = (b2 . b3) +^ c2 ) ) & ( for b3 being Ordinal holds
( b3 in succ c1 & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = union (sup (b2 | b3)) ) ) )
;
uniqueness
for b1, b2 being Ordinal holds
( ex b3 being Ordinal-Sequence st
( b1 = last b3 & dom b3 = succ c1 & b3 . {} = {} & ( for b4 being Ordinal holds
( succ b4 in succ c1 implies b3 . (succ b4) = (b3 . b4) +^ c2 ) ) & ( for b4 being Ordinal holds
( b4 in succ c1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = union (sup (b3 | b4)) ) ) ) & ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ c1 & b3 . {} = {} & ( for b4 being Ordinal holds
( succ b4 in succ c1 implies b3 . (succ b4) = (b3 . b4) +^ c2 ) ) & ( for b4 being Ordinal holds
( b4 in succ c1 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = union (sup (b3 | b4)) ) ) ) implies b1 = b2 )
;
proof end;
end;

:: deftheorem Def19 defines *^ ORDINAL2:def 19 :
for b1, b2, b3 being Ordinal holds
( b3 = b1 *^ b2 iff ex b4 being Ordinal-Sequence st
( b3 = last b4 & dom b4 = succ b1 & b4 . {} = {} & ( for b5 being Ordinal holds
( succ b5 in succ b1 implies b4 . (succ b5) = (b4 . b5) +^ b2 ) ) & ( for b5 being Ordinal holds
( b5 in succ b1 & b5 <> {} & b5 is_limit_ordinal implies b4 . b5 = union (sup (b4 | b5)) ) ) ) );

registration
let c1 be Ordinal;
cluster -> ordinal Element of a1;
coherence
for b1 being Element of c1 holds b1 is ordinal
proof end;
end;

definition
let c1, c2 be Ordinal;
func exp c1,c2 -> Ordinal means :Def20: :: ORDINAL2:def 20
ex b1 being Ordinal-Sequence st
( a3 = last b1 & dom b1 = succ a2 & b1 . {} = 1 & ( for b2 being Ordinal holds
( succ b2 in succ a2 implies b1 . (succ b2) = a1 *^ (b1 . b2) ) ) & ( for b2 being Ordinal holds
( b2 in succ a2 & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = lim (b1 | b2) ) ) );
correctness
existence
ex b1 being Ordinalex b2 being Ordinal-Sequence st
( b1 = last b2 & dom b2 = succ c2 & b2 . {} = 1 & ( for b3 being Ordinal holds
( succ b3 in succ c2 implies b2 . (succ b3) = c1 *^ (b2 . b3) ) ) & ( for b3 being Ordinal holds
( b3 in succ c2 & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = lim (b2 | b3) ) ) )
;
uniqueness
for b1, b2 being Ordinal holds
( ex b3 being Ordinal-Sequence st
( b1 = last b3 & dom b3 = succ c2 & b3 . {} = 1 & ( for b4 being Ordinal holds
( succ b4 in succ c2 implies b3 . (succ b4) = c1 *^ (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c2 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = lim (b3 | b4) ) ) ) & ex b3 being Ordinal-Sequence st
( b2 = last b3 & dom b3 = succ c2 & b3 . {} = 1 & ( for b4 being Ordinal holds
( succ b4 in succ c2 implies b3 . (succ b4) = c1 *^ (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c2 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = lim (b3 | b4) ) ) ) implies b1 = b2 )
;
proof end;
end;

:: deftheorem Def20 defines exp ORDINAL2:def 20 :
for b1, b2, b3 being Ordinal holds
( b3 = exp b1,b2 iff ex b4 being Ordinal-Sequence st
( b3 = last b4 & dom b4 = succ b2 & b4 . {} = 1 & ( for b5 being Ordinal holds
( succ b5 in succ b2 implies b4 . (succ b5) = b1 *^ (b4 . b5) ) ) & ( for b5 being Ordinal holds
( b5 in succ b2 & b5 <> {} & b5 is_limit_ordinal implies b4 . b5 = lim (b4 | b5) ) ) ) );

theorem Th36: :: ORDINAL2:36
canceled;

theorem Th37: :: ORDINAL2:37
canceled;

theorem Th38: :: ORDINAL2:38
canceled;

theorem Th39: :: ORDINAL2:39
canceled;

theorem Th40: :: ORDINAL2:40
canceled;

theorem Th41: :: ORDINAL2:41
canceled;

theorem Th42: :: ORDINAL2:42
canceled;

theorem Th43: :: ORDINAL2:43
canceled;

theorem Th44: :: ORDINAL2:44
for b1 being Ordinal holds b1 +^ {} = b1
proof end;

theorem Th45: :: ORDINAL2:45
for b1, b2 being Ordinal holds b1 +^ (succ b2) = succ (b1 +^ b2)
proof end;

theorem Th46: :: ORDINAL2:46
for b1, b2 being Ordinal holds
( b1 <> {} & b1 is_limit_ordinal implies for b3 being Ordinal-Sequence holds
( dom b3 = b1 & ( for b4 being Ordinal holds
( b4 in b1 implies b3 . b4 = b2 +^ b4 ) ) implies b2 +^ b1 = sup b3 ) )
proof end;

theorem Th47: :: ORDINAL2:47
for b1 being Ordinal holds {} +^ b1 = b1
proof end;

Lemma23: 1 = succ 0
;

theorem Th48: :: ORDINAL2:48
for b1 being Ordinal holds b1 +^ 1 = succ b1
proof end;

theorem Th49: :: ORDINAL2:49
for b1, b2, b3 being Ordinal holds
( b1 in b2 implies b3 +^ b1 in b3 +^ b2 )
proof end;

theorem Th50: :: ORDINAL2:50
for b1, b2, b3 being Ordinal holds
( b1 c= b2 implies b3 +^ b1 c= b3 +^ b2 )
proof end;

theorem Th51: :: ORDINAL2:51
for b1, b2, b3 being Ordinal holds
( b1 c= b2 implies b1 +^ b3 c= b2 +^ b3 )
proof end;

theorem Th52: :: ORDINAL2:52
for b1 being Ordinal holds {} *^ b1 = {}
proof end;

theorem Th53: :: ORDINAL2:53
for b1, b2 being Ordinal holds (succ b1) *^ b2 = (b1 *^ b2) +^ b2
proof end;

theorem Th54: :: ORDINAL2:54
for b1, b2 being Ordinal holds
( b1 <> {} & b1 is_limit_ordinal implies for b3 being Ordinal-Sequence holds
( dom b3 = b1 & ( for b4 being Ordinal holds
( b4 in b1 implies b3 . b4 = b4 *^ b2 ) ) implies b1 *^ b2 = union (sup b3) ) )
proof end;

theorem Th55: :: ORDINAL2:55
for b1 being Ordinal holds b1 *^ {} = {}
proof end;

theorem Th56: :: ORDINAL2:56
for b1 being Ordinal holds
( 1 *^ b1 = b1 & b1 *^ 1 = b1 )
proof end;

theorem Th57: :: ORDINAL2:57
for b1, b2, b3 being Ordinal holds
( b1 <> {} & b2 in b3 implies b2 *^ b1 in b3 *^ b1 )
proof end;

theorem Th58: :: ORDINAL2:58
for b1, b2, b3 being Ordinal holds
( b1 c= b2 implies b1 *^ b3 c= b2 *^ b3 )
proof end;

theorem Th59: :: ORDINAL2:59
for b1, b2, b3 being Ordinal holds
( b1 c= b2 implies b3 *^ b1 c= b3 *^ b2 )
proof end;

theorem Th60: :: ORDINAL2:60
for b1 being Ordinal holds exp b1,{} = 1
proof end;

theorem Th61: :: ORDINAL2:61
for b1, b2 being Ordinal holds exp b1,(succ b2) = b1 *^ (exp b1,b2)
proof end;

theorem Th62: :: ORDINAL2:62
for b1, b2 being Ordinal holds
( b1 <> {} & b1 is_limit_ordinal implies for b3 being Ordinal-Sequence holds
( dom b3 = b1 & ( for b4 being Ordinal holds
( b4 in b1 implies b3 . b4 = exp b2,b4 ) ) implies exp b2,b1 = lim b3 ) )
proof end;

theorem Th63: :: ORDINAL2:63
for b1 being Ordinal holds
( exp b1,1 = b1 & exp 1,b1 = 1 )
proof end;

theorem Th64: :: ORDINAL2:64
canceled;

theorem Th65: :: ORDINAL2:65
for b1 being Ordinal holds
ex b2, b3 being Ordinal st
( b2 is_limit_ordinal & b3 is natural & b1 = b2 +^ b3 )
proof end;

registration
let c1 be set ;
let c2 be Ordinal;
cluster a1 --> a2 -> Ordinal-yielding ;
coherence
c1 --> c2 is Ordinal-yielding
proof end;
end;