Article ORDINAL2, MML version 4.99.1005

:: ORDINAL2:sch 1
scheme ORDINAL2:sch 1
for b1 being ordinal set holds
   P1[b1]
provided
   P1[{}]
and
   for b1 being ordinal set
         st P1[b1]
      holds P1[succ b1]
and
   for b1 being ordinal set
         st b1 <> {} &
            b1 is being_limit_ordinal &
            (for b2 being ordinal set
                  st b2 in b1
               holds P1[b2])
      holds P1[b1];


:: ORDINAL2:th 1
theorem
for b1, b2 being ordinal set holds
   b1 c= b2
iff
   succ b1 c= succ b2;

:: ORDINAL2:th 2
theorem
for b1 being ordinal set holds
   union succ b1 = b1;

:: ORDINAL2:th 3
theorem
for b1 being ordinal set holds
   succ b1 c= bool b1;

:: ORDINAL2:th 4
theorem
{} is being_limit_ordinal;

:: ORDINAL2:th 5
theorem
for b1 being ordinal set holds
   union b1 c= b1;

:: ORDINAL2:funcnot 1 => ORDINAL2:func 1
definition
  let a1 be Relation-like Function-like T-Sequence-like set;
  func last A1 -> set equals
    a1 . union proj1 a1;
end;

:: ORDINAL2:def 1
theorem
for b1 being Relation-like Function-like T-Sequence-like set holds
   last b1 = b1 . union proj1 b1;

:: ORDINAL2:th 7
theorem
for b1 being ordinal set
for b2 being Relation-like Function-like T-Sequence-like set
      st proj1 b2 = succ b1
   holds last b2 = b2 . b1;

:: ORDINAL2:th 9
theorem
for b1 being set holds
   On b1 c= b1;

:: ORDINAL2:th 10
theorem
for b1 being ordinal set holds
   On b1 = b1;

:: ORDINAL2:th 11
theorem
for b1, b2 being set
      st b1 c= b2
   holds On b1 c= On b2;

:: ORDINAL2:th 13
theorem
for b1 being set holds
   Lim b1 c= b1;

:: ORDINAL2:th 14
theorem
for b1, b2 being set
      st b1 c= b2
   holds Lim b1 c= Lim b2;

:: ORDINAL2:th 15
theorem
for b1 being set holds
   Lim b1 c= On b1;

:: ORDINAL2:th 17
theorem
for b1 being set
      st for b2 being set
              st b2 in b1
           holds b2 is ordinal set
   holds meet b1 is ordinal set;

:: ORDINAL2:exreg 1
registration
  cluster epsilon-transitive epsilon-connected ordinal being_limit_ordinal set;
end;

:: ORDINAL2:funcnot 2 => ORDINAL2:func 2
definition
  let a1 be set;
  func inf A1 -> ordinal set equals
    meet On a1;
end;

:: ORDINAL2:def 6
theorem
for b1 being set holds
   inf b1 = meet On b1;

:: ORDINAL2:funcnot 3 => ORDINAL2:func 3
definition
  let a1 be set;
  func sup A1 -> ordinal set means
    On a1 c= it &
     (for b1 being ordinal set
           st On a1 c= b1
        holds it c= b1);
end;

:: ORDINAL2:def 7
theorem
for b1 being set
for b2 being ordinal set holds
      b2 = sup b1
   iff
      On b1 c= b2 &
       (for b3 being ordinal set
             st On b1 c= b3
          holds b2 c= b3);

:: ORDINAL2:th 22
theorem
for b1 being ordinal set
for b2 being set
      st b1 in b2
   holds inf b2 c= b1;

:: ORDINAL2:th 23
theorem
for b1 being ordinal set
for b2 being set
      st On b2 <> {} &
         (for b3 being ordinal set
               st b3 in b2
            holds b1 c= b3)
   holds b1 c= inf b2;

:: ORDINAL2:th 24
theorem
for b1 being ordinal set
for b2, b3 being set
      st b1 in b2 & b2 c= b3
   holds inf b3 c= inf b2;

:: ORDINAL2:th 25
theorem
for b1 being ordinal set
for b2 being set
      st b1 in b2
   holds inf b2 in b2;

:: ORDINAL2:th 26
theorem
for b1 being ordinal set holds
   sup b1 = b1;

:: ORDINAL2:th 27
theorem
for b1 being ordinal set
for b2 being set
      st b1 in b2
   holds b1 in sup b2;

:: ORDINAL2:th 28
theorem
for b1 being ordinal set
for b2 being set
      st for b3 being ordinal set
              st b3 in b2
           holds b3 in b1
   holds sup b2 c= b1;

:: ORDINAL2:th 29
theorem
for b1 being ordinal set
for b2 being set
      st b1 in sup b2
   holds ex b3 being ordinal set st
      b3 in b2 & b1 c= b3;

:: ORDINAL2:th 30
theorem
for b1, b2 being set
      st b1 c= b2
   holds sup b1 c= sup b2;

:: ORDINAL2:th 31
theorem
for b1 being ordinal set holds
   sup {b1} = succ b1;

:: ORDINAL2:th 32
theorem
for b1 being set holds
   inf b1 c= sup b1;

:: ORDINAL2:sch 2
scheme ORDINAL2:sch 2
{F1 -> ordinal set,
  F2 -> set}:
ex b1 being Relation-like Function-like T-Sequence-like set st
   proj1 b1 = F1() &
    (for b2 being ordinal set
          st b2 in F1()
       holds b1 . b2 = F2(b2))


:: ORDINAL2:attrnot 1 => ORDINAL2:attr 1
definition
  let a1 be Relation-like Function-like set;
  attr a1 is Ordinal-yielding means
    ex b1 being ordinal set st
       proj2 a1 c= b1;
end;

:: ORDINAL2:dfs 4
definiens
  let a1 be Relation-like Function-like set;
To prove
     a1 is Ordinal-yielding
it is sufficient to prove
  thus ex b1 being ordinal set st
       proj2 a1 c= b1;

:: ORDINAL2:def 8
theorem
for b1 being Relation-like Function-like set holds
      b1 is Ordinal-yielding
   iff
      ex b2 being ordinal set st
         proj2 b1 c= b2;

:: ORDINAL2:exreg 2
registration
  cluster Relation-like Function-like T-Sequence-like Ordinal-yielding set;
end;

:: ORDINAL2:modenot 1
definition
  mode Ordinal-Sequence is Relation-like Function-like T-Sequence-like Ordinal-yielding set;
end;

:: ORDINAL2:condreg 1
registration
  let a1 be ordinal set;
  cluster -> Ordinal-yielding (T-Sequence of a1);
end;

:: ORDINAL2:funcreg 1
registration
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  let a2 be ordinal set;
  cluster a1 | a2 -> Relation-like Ordinal-yielding;
end;

:: ORDINAL2:th 34
theorem
for b1 being ordinal set
for b2 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
      st b1 in proj1 b2
   holds b2 . b1 is ordinal set;

:: ORDINAL2:funcreg 2
registration
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  let a2 be ordinal set;
  cluster a1 . a2 -> ordinal;
end;

:: ORDINAL2:sch 3
scheme ORDINAL2:sch 3
{F1 -> ordinal set,
  F2 -> ordinal set}:
ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
   proj1 b1 = F1() &
    (for b2 being ordinal set
          st b2 in F1()
       holds b1 . b2 = F2(b2))


:: ORDINAL2:sch 4
scheme ORDINAL2:sch 4
{F1 -> ordinal set,
  F2 -> set,
  F3 -> set,
  F4 -> set,
  F5 -> Relation-like Function-like T-Sequence-like set,
  F6 -> Relation-like Function-like T-Sequence-like set}:
F5() = F6()
provided
   proj1 F5() = F1()
and
   ({} in F1() implies F5() . {} = F2())
and
   for b1 being ordinal set
         st succ b1 in F1()
      holds F5() . succ b1 = F3(b1, F5() . b1)
and
   for b1 being ordinal set
         st b1 in F1() & b1 <> {} & b1 is being_limit_ordinal
      holds F5() . b1 = F4(b1, F5() | b1)
and
   proj1 F6() = F1()
and
   ({} in F1() implies F6() . {} = F2())
and
   for b1 being ordinal set
         st succ b1 in F1()
      holds F6() . succ b1 = F3(b1, F6() . b1)
and
   for b1 being ordinal set
         st b1 in F1() & b1 <> {} & b1 is being_limit_ordinal
      holds F6() . b1 = F4(b1, F6() | b1);


:: ORDINAL2:sch 5
scheme ORDINAL2:sch 5
{F1 -> ordinal set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
ex b1 being Relation-like Function-like T-Sequence-like set st
   proj1 b1 = F1() &
    ({} in F1() implies b1 . {} = F2()) &
    (for b2 being ordinal set
          st succ b2 in F1()
       holds b1 . succ b2 = F3(b2, b1 . b2)) &
    (for b2 being ordinal set
          st b2 in F1() & b2 <> {} & b2 is being_limit_ordinal
       holds b1 . b2 = F4(b2, b1 | b2))


:: ORDINAL2:sch 6
scheme ORDINAL2:sch 6
{F1 -> Relation-like Function-like T-Sequence-like set,
  F2 -> set,
  F3 -> ordinal set,
  F4 -> set,
  F5 -> set,
  F6 -> set}:
for b1 being ordinal set
      st b1 in proj1 F1()
   holds F1() . b1 = F2(b1)
provided
   for b1 being ordinal set
   for b2 being set holds
         b2 = F2(b1)
      iff
         ex b3 being Relation-like Function-like T-Sequence-like set st
            b2 = last b3 &
             proj1 b3 = succ b1 &
             b3 . {} = F4() &
             (for b4 being ordinal set
                   st succ b4 in succ b1
                holds b3 . succ b4 = F5(b4, b3 . b4)) &
             (for b4 being ordinal set
                   st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
                holds b3 . b4 = F6(b4, b3 | b4))
and
   proj1 F1() = F3()
and
   ({} in F3() implies F1() . {} = F4())
and
   for b1 being ordinal set
         st succ b1 in F3()
      holds F1() . succ b1 = F5(b1, F1() . b1)
and
   for b1 being ordinal set
         st b1 in F3() & b1 <> {} & b1 is being_limit_ordinal
      holds F1() . b1 = F6(b1, F1() | b1);


:: ORDINAL2:sch 7
scheme ORDINAL2:sch 7
{F1 -> ordinal set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
(ex b1 being set st
    ex b2 being Relation-like Function-like T-Sequence-like set st
       b1 = last b2 &
        proj1 b2 = succ F1() &
        b2 . {} = F2() &
        (for b3 being ordinal set
              st succ b3 in succ F1()
           holds b2 . succ b3 = F3(b3, b2 . b3)) &
        (for b3 being ordinal set
              st b3 in succ F1() & b3 <> {} & b3 is being_limit_ordinal
           holds b2 . b3 = F4(b3, b2 | b3))) &
 (for b1, b2 being set
       st (ex b3 being Relation-like Function-like T-Sequence-like set st
             b1 = last b3 &
              proj1 b3 = succ F1() &
              b3 . {} = F2() &
              (for b4 being ordinal set
                    st succ b4 in succ F1()
                 holds b3 . succ b4 = F3(b4, b3 . b4)) &
              (for b4 being ordinal set
                    st b4 in succ F1() & b4 <> {} & b4 is being_limit_ordinal
                 holds b3 . b4 = F4(b4, b3 | b4))) &
          (ex b3 being Relation-like Function-like T-Sequence-like set st
             b2 = last b3 &
              proj1 b3 = succ F1() &
              b3 . {} = F2() &
              (for b4 being ordinal set
                    st succ b4 in succ F1()
                 holds b3 . succ b4 = F3(b4, b3 . b4)) &
              (for b4 being ordinal set
                    st b4 in succ F1() & b4 <> {} & b4 is being_limit_ordinal
                 holds b3 . b4 = F4(b4, b3 | b4)))
    holds b1 = b2)


:: ORDINAL2:sch 8
scheme ORDINAL2:sch 8
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
F1({}) = F2()
provided
   for b1 being ordinal set
   for b2 being set holds
         b2 = F1(b1)
      iff
         ex b3 being Relation-like Function-like T-Sequence-like set st
            b2 = last b3 &
             proj1 b3 = succ b1 &
             b3 . {} = F2() &
             (for b4 being ordinal set
                   st succ b4 in succ b1
                holds b3 . succ b4 = F3(b4, b3 . b4)) &
             (for b4 being ordinal set
                   st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
                holds b3 . b4 = F4(b4, b3 | b4));


:: ORDINAL2:sch 9
scheme ORDINAL2:sch 9
{F1 -> set,
  F2 -> set,
  F3 -> set,
  F4 -> set}:
for b1 being ordinal set holds
   F4(succ b1) = F2(b1, F4(b1))
provided
   for b1 being ordinal set
   for b2 being set holds
         b2 = F4(b1)
      iff
         ex b3 being Relation-like Function-like T-Sequence-like set st
            b2 = last b3 &
             proj1 b3 = succ b1 &
             b3 . {} = F1() &
             (for b4 being ordinal set
                   st succ b4 in succ b1
                holds b3 . succ b4 = F2(b4, b3 . b4)) &
             (for b4 being ordinal set
                   st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
                holds b3 . b4 = F3(b4, b3 | b4));


:: ORDINAL2:sch 10
scheme ORDINAL2:sch 10
{F1 -> Relation-like Function-like T-Sequence-like set,
  F2 -> ordinal set,
  F3 -> set,
  F4 -> set,
  F5 -> set,
  F6 -> set}:
F3(F2()) = F6(F2(), F1())
provided
   for b1 being ordinal set
   for b2 being set holds
         b2 = F3(b1)
      iff
         ex b3 being Relation-like Function-like T-Sequence-like set st
            b2 = last b3 &
             proj1 b3 = succ b1 &
             b3 . {} = F4() &
             (for b4 being ordinal set
                   st succ b4 in succ b1
                holds b3 . succ b4 = F5(b4, b3 . b4)) &
             (for b4 being ordinal set
                   st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
                holds b3 . b4 = F6(b4, b3 | b4))
and
   F2() <> {} & F2() is being_limit_ordinal
and
   proj1 F1() = F2()
and
   for b1 being ordinal set
         st b1 in F2()
      holds F1() . b1 = F3(b1);


:: ORDINAL2:sch 11
scheme ORDINAL2:sch 11
{F1 -> ordinal set,
  F2 -> ordinal set,
  F3 -> ordinal set,
  F4 -> ordinal set}:
ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
   proj1 b1 = F1() &
    ({} in F1() implies b1 . {} = F2()) &
    (for b2 being ordinal set
          st succ b2 in F1()
       holds b1 . succ b2 = F3(b2, b1 . b2)) &
    (for b2 being ordinal set
          st b2 in F1() & b2 <> {} & b2 is being_limit_ordinal
       holds b1 . b2 = F4(b2, b1 | b2))


:: ORDINAL2:sch 12
scheme ORDINAL2:sch 12
{F1 -> Relation-like Function-like T-Sequence-like Ordinal-yielding set,
  F2 -> ordinal set,
  F3 -> ordinal set,
  F4 -> ordinal set,
  F5 -> ordinal set,
  F6 -> ordinal set}:
for b1 being ordinal set
      st b1 in proj1 F1()
   holds F1() . b1 = F2(b1)
provided
   for b1, b2 being ordinal set holds
      b2 = F2(b1)
   iff
      ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
         b2 = last b3 &
          proj1 b3 = succ b1 &
          b3 . {} = F4() &
          (for b4 being ordinal set
                st succ b4 in succ b1
             holds b3 . succ b4 = F5(b4, b3 . b4)) &
          (for b4 being ordinal set
                st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
             holds b3 . b4 = F6(b4, b3 | b4))
and
   proj1 F1() = F3()
and
   ({} in F3() implies F1() . {} = F4())
and
   for b1 being ordinal set
         st succ b1 in F3()
      holds F1() . succ b1 = F5(b1, F1() . b1)
and
   for b1 being ordinal set
         st b1 in F3() & b1 <> {} & b1 is being_limit_ordinal
      holds F1() . b1 = F6(b1, F1() | b1);


:: ORDINAL2:sch 13
scheme ORDINAL2:sch 13
{F1 -> ordinal set,
  F2 -> ordinal set,
  F3 -> ordinal set,
  F4 -> ordinal set}:
(ex b1 being ordinal set st
    ex b2 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       b1 = last b2 &
        proj1 b2 = succ F1() &
        b2 . {} = F2() &
        (for b3 being ordinal set
              st succ b3 in succ F1()
           holds b2 . succ b3 = F3(b3, b2 . b3)) &
        (for b3 being ordinal set
              st b3 in succ F1() & b3 <> {} & b3 is being_limit_ordinal
           holds b2 . b3 = F4(b3, b2 | b3))) &
 (for b1, b2 being ordinal set
       st (ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
             b1 = last b3 &
              proj1 b3 = succ F1() &
              b3 . {} = F2() &
              (for b4 being ordinal set
                    st succ b4 in succ F1()
                 holds b3 . succ b4 = F3(b4, b3 . b4)) &
              (for b4 being ordinal set
                    st b4 in succ F1() & b4 <> {} & b4 is being_limit_ordinal
                 holds b3 . b4 = F4(b4, b3 | b4))) &
          (ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
             b2 = last b3 &
              proj1 b3 = succ F1() &
              b3 . {} = F2() &
              (for b4 being ordinal set
                    st succ b4 in succ F1()
                 holds b3 . succ b4 = F3(b4, b3 . b4)) &
              (for b4 being ordinal set
                    st b4 in succ F1() & b4 <> {} & b4 is being_limit_ordinal
                 holds b3 . b4 = F4(b4, b3 | b4)))
    holds b1 = b2)


:: ORDINAL2:sch 14
scheme ORDINAL2:sch 14
{F1 -> ordinal set,
  F2 -> ordinal set,
  F3 -> ordinal set,
  F4 -> ordinal set}:
F1({}) = F2()
provided
   for b1, b2 being ordinal set holds
      b2 = F1(b1)
   iff
      ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
         b2 = last b3 &
          proj1 b3 = succ b1 &
          b3 . {} = F2() &
          (for b4 being ordinal set
                st succ b4 in succ b1
             holds b3 . succ b4 = F3(b4, b3 . b4)) &
          (for b4 being ordinal set
                st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
             holds b3 . b4 = F4(b4, b3 | b4));


:: ORDINAL2:sch 15
scheme ORDINAL2:sch 15
{F1 -> ordinal set,
  F2 -> ordinal set,
  F3 -> ordinal set,
  F4 -> ordinal set}:
for b1 being ordinal set holds
   F4(succ b1) = F2(b1, F4(b1))
provided
   for b1, b2 being ordinal set holds
      b2 = F4(b1)
   iff
      ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
         b2 = last b3 &
          proj1 b3 = succ b1 &
          b3 . {} = F1() &
          (for b4 being ordinal set
                st succ b4 in succ b1
             holds b3 . succ b4 = F2(b4, b3 . b4)) &
          (for b4 being ordinal set
                st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
             holds b3 . b4 = F3(b4, b3 | b4));


:: ORDINAL2:sch 16
scheme ORDINAL2:sch 16
{F1 -> Relation-like Function-like T-Sequence-like Ordinal-yielding set,
  F2 -> ordinal set,
  F3 -> ordinal set,
  F4 -> ordinal set,
  F5 -> ordinal set,
  F6 -> ordinal set}:
F3(F2()) = F6(F2(), F1())
provided
   for b1, b2 being ordinal set holds
      b2 = F3(b1)
   iff
      ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
         b2 = last b3 &
          proj1 b3 = succ b1 &
          b3 . {} = F4() &
          (for b4 being ordinal set
                st succ b4 in succ b1
             holds b3 . succ b4 = F5(b4, b3 . b4)) &
          (for b4 being ordinal set
                st b4 in succ b1 & b4 <> {} & b4 is being_limit_ordinal
             holds b3 . b4 = F6(b4, b3 | b4))
and
   F2() <> {} & F2() is being_limit_ordinal
and
   proj1 F1() = F2()
and
   for b1 being ordinal set
         st b1 in F2()
      holds F1() . b1 = F3(b1);


:: ORDINAL2:funcnot 4 => ORDINAL2:func 4
definition
  let a1 be Relation-like Function-like T-Sequence-like set;
  func sup A1 -> ordinal set equals
    sup proj2 a1;
end;

:: ORDINAL2:def 9
theorem
for b1 being Relation-like Function-like T-Sequence-like set holds
   sup b1 = sup proj2 b1;

:: ORDINAL2:funcnot 5 => ORDINAL2:func 5
definition
  let a1 be Relation-like Function-like T-Sequence-like set;
  func inf A1 -> ordinal set equals
    inf proj2 a1;
end;

:: ORDINAL2:def 10
theorem
for b1 being Relation-like Function-like T-Sequence-like set holds
   inf b1 = inf proj2 b1;

:: ORDINAL2:th 35
theorem
for b1 being Relation-like Function-like T-Sequence-like set holds
   sup b1 = sup proj2 b1 & inf b1 = inf proj2 b1;

:: ORDINAL2:funcnot 6 => ORDINAL2:func 6
definition
  let a1 be Relation-like Function-like T-Sequence-like set;
  func lim_sup A1 -> ordinal set means
    ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       it = inf b1 &
        proj1 b1 = proj1 a1 &
        (for b2 being ordinal set
              st b2 in proj1 a1
           holds b1 . b2 = sup proj2 (a1 | ((proj1 a1) \ b2)));
end;

:: ORDINAL2:def 11
theorem
for b1 being Relation-like Function-like T-Sequence-like set
for b2 being ordinal set holds
      b2 = lim_sup b1
   iff
      ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
         b2 = inf b3 &
          proj1 b3 = proj1 b1 &
          (for b4 being ordinal set
                st b4 in proj1 b1
             holds b3 . b4 = sup proj2 (b1 | ((proj1 b1) \ b4)));

:: ORDINAL2:funcnot 7 => ORDINAL2:func 7
definition
  let a1 be Relation-like Function-like T-Sequence-like set;
  func lim_inf A1 -> ordinal set means
    ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       it = sup b1 &
        proj1 b1 = proj1 a1 &
        (for b2 being ordinal set
              st b2 in proj1 a1
           holds b1 . b2 = inf proj2 (a1 | ((proj1 a1) \ b2)));
end;

:: ORDINAL2:def 12
theorem
for b1 being Relation-like Function-like T-Sequence-like set
for b2 being ordinal set holds
      b2 = lim_inf b1
   iff
      ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
         b2 = sup b3 &
          proj1 b3 = proj1 b1 &
          (for b4 being ordinal set
                st b4 in proj1 b1
             holds b3 . b4 = inf proj2 (b1 | ((proj1 b1) \ b4)));

:: ORDINAL2:prednot 1 => ORDINAL2:pred 1
definition
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  pred A1 is_limes_of A2 means
    ex b1 being ordinal set st
       b1 in proj1 a2 &
        (for b2 being ordinal set
              st b1 c= b2 & b2 in proj1 a2
           holds a2 . b2 = {})
    if a1 = {}
    otherwise for b1, b2 being ordinal set
          st b1 in a1 & a1 in b2
       holds ex b3 being ordinal set st
          b3 in proj1 a2 &
           (for b4 being ordinal set
                 st b3 c= b4 & b4 in proj1 a2
              holds b1 in a2 . b4 & a2 . b4 in b2);
end;

:: ORDINAL2:dfs 9
definiens
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
To prove
     a1 is_limes_of a2
it is sufficient to prove
  per cases;
  case a1 = {};
    thus ex b1 being ordinal set st
       b1 in proj1 a2 &
        (for b2 being ordinal set
              st b1 c= b2 & b2 in proj1 a2
           holds a2 . b2 = {});
  end;
  case a1 <> {};
    thus for b1, b2 being ordinal set
          st b1 in a1 & a1 in b2
       holds ex b3 being ordinal set st
          b3 in proj1 a2 &
           (for b4 being ordinal set
                 st b3 c= b4 & b4 in proj1 a2
              holds b1 in a2 . b4 & a2 . b4 in b2);
  end;

:: ORDINAL2:def 13
theorem
for b1 being ordinal set
for b2 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   (b1 = {} implies    (b1 is_limes_of b2
    iff
       ex b3 being ordinal set st
          b3 in proj1 b2 &
           (for b4 being ordinal set
                 st b3 c= b4 & b4 in proj1 b2
              holds b2 . b4 = {}))) &
    (b1 = {} or    (b1 is_limes_of b2
    iff
       for b3, b4 being ordinal set
             st b3 in b1 & b1 in b4
          holds ex b5 being ordinal set st
             b5 in proj1 b2 &
              (for b6 being ordinal set
                    st b5 c= b6 & b6 in proj1 b2
                 holds b3 in b2 . b6 & b2 . b6 in b4)));

:: ORDINAL2:funcnot 8 => ORDINAL2:func 8
definition
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  assume ex b1 being ordinal set st
       b1 is_limes_of a1;
  func lim A1 -> ordinal set means
    it is_limes_of a1;
end;

:: ORDINAL2:def 14
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
   st ex b2 being ordinal set st
        b2 is_limes_of b1
for b2 being ordinal set holds
      b2 = lim b1
   iff
      b2 is_limes_of b1;

:: ORDINAL2:funcnot 9 => ORDINAL2:func 9
definition
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  func lim(A1,A2) -> ordinal set equals
    lim (a2 | a1);
end;

:: ORDINAL2:def 15
theorem
for b1 being ordinal set
for b2 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   lim(b1,b2) = lim (b2 | b1);

:: ORDINAL2:attrnot 2 => ORDINAL2:attr 2
definition
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  attr a1 is increasing means
    for b1, b2 being ordinal set
          st b1 in b2 & b2 in proj1 a1
       holds a1 . b1 in a1 . b2;
end;

:: ORDINAL2:dfs 12
definiens
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
To prove
     a1 is increasing
it is sufficient to prove
  thus for b1, b2 being ordinal set
          st b1 in b2 & b2 in proj1 a1
       holds a1 . b1 in a1 . b2;

:: ORDINAL2:def 16
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
      b1 is increasing
   iff
      for b2, b3 being ordinal set
            st b2 in b3 & b3 in proj1 b1
         holds b1 . b2 in b1 . b3;

:: ORDINAL2:attrnot 3 => ORDINAL2:attr 3
definition
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  attr a1 is continuous means
    for b1, b2 being ordinal set
          st b1 in proj1 a1 & b1 <> {} & b1 is being_limit_ordinal & b2 = a1 . b1
       holds b2 is_limes_of a1 | b1;
end;

:: ORDINAL2:dfs 13
definiens
  let a1 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
To prove
     a1 is continuous
it is sufficient to prove
  thus for b1, b2 being ordinal set
          st b1 in proj1 a1 & b1 <> {} & b1 is being_limit_ordinal & b2 = a1 . b1
       holds b2 is_limes_of a1 | b1;

:: ORDINAL2:def 17
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
      b1 is continuous
   iff
      for b2, b3 being ordinal set
            st b2 in proj1 b1 & b2 <> {} & b2 is being_limit_ordinal & b3 = b1 . b2
         holds b3 is_limes_of b1 | b2;

:: ORDINAL2:funcnot 10 => ORDINAL2:func 10
definition
  let a1, a2 be ordinal set;
  func A1 +^ A2 -> ordinal set means
    ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       it = last b1 &
        proj1 b1 = succ a2 &
        b1 . {} = a1 &
        (for b2 being ordinal set
              st succ b2 in succ a2
           holds b1 . succ b2 = succ (b1 . b2)) &
        (for b2 being ordinal set
              st b2 in succ a2 & b2 <> {} & b2 is being_limit_ordinal
           holds b1 . b2 = sup (b1 | b2));
end;

:: ORDINAL2:def 18
theorem
for b1, b2, b3 being ordinal set holds
   b3 = b1 +^ b2
iff
   ex b4 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
      b3 = last b4 &
       proj1 b4 = succ b2 &
       b4 . {} = b1 &
       (for b5 being ordinal set
             st succ b5 in succ b2
          holds b4 . succ b5 = succ (b4 . b5)) &
       (for b5 being ordinal set
             st b5 in succ b2 & b5 <> {} & b5 is being_limit_ordinal
          holds b4 . b5 = sup (b4 | b5));

:: ORDINAL2:funcnot 11 => ORDINAL2:func 11
definition
  let a1, a2 be ordinal set;
  func A1 *^ A2 -> ordinal set means
    ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       it = last b1 &
        proj1 b1 = succ a1 &
        b1 . {} = {} &
        (for b2 being ordinal set
              st succ b2 in succ a1
           holds b1 . succ b2 = (b1 . b2) +^ a2) &
        (for b2 being ordinal set
              st b2 in succ a1 & b2 <> {} & b2 is being_limit_ordinal
           holds b1 . b2 = union sup (b1 | b2));
end;

:: ORDINAL2:def 19
theorem
for b1, b2, b3 being ordinal set holds
   b3 = b1 *^ b2
iff
   ex b4 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
      b3 = last b4 &
       proj1 b4 = succ b1 &
       b4 . {} = {} &
       (for b5 being ordinal set
             st succ b5 in succ b1
          holds b4 . succ b5 = (b4 . b5) +^ b2) &
       (for b5 being ordinal set
             st b5 in succ b1 & b5 <> {} & b5 is being_limit_ordinal
          holds b4 . b5 = union sup (b4 | b5));

:: ORDINAL2:condreg 2
registration
  let a1 be ordinal set;
  cluster -> ordinal (Element of a1);
end;

:: ORDINAL2:funcnot 12 => ORDINAL2:func 12
definition
  let a1, a2 be ordinal set;
  func exp(A1,A2) -> ordinal set means
    ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       it = last b1 &
        proj1 b1 = succ a2 &
        b1 . {} = 1 &
        (for b2 being ordinal set
              st succ b2 in succ a2
           holds b1 . succ b2 = a1 *^ (b1 . b2)) &
        (for b2 being ordinal set
              st b2 in succ a2 & b2 <> {} & b2 is being_limit_ordinal
           holds b1 . b2 = lim (b1 | b2));
end;

:: ORDINAL2:def 20
theorem
for b1, b2, b3 being ordinal set holds
   b3 = exp(b1,b2)
iff
   ex b4 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
      b3 = last b4 &
       proj1 b4 = succ b2 &
       b4 . {} = 1 &
       (for b5 being ordinal set
             st succ b5 in succ b2
          holds b4 . succ b5 = b1 *^ (b4 . b5)) &
       (for b5 being ordinal set
             st b5 in succ b2 & b5 <> {} & b5 is being_limit_ordinal
          holds b4 . b5 = lim (b4 | b5));

:: ORDINAL2:th 44
theorem
for b1 being ordinal set holds
   b1 +^ {} = b1;

:: ORDINAL2:th 45
theorem
for b1, b2 being ordinal set holds
b1 +^ succ b2 = succ (b1 +^ b2);

:: ORDINAL2:th 46
theorem
for b1, b2 being ordinal set
   st b1 <> {} & b1 is being_limit_ordinal
for b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
      st proj1 b3 = b1 &
         (for b4 being ordinal set
               st b4 in b1
            holds b3 . b4 = b2 +^ b4)
   holds b2 +^ b1 = sup b3;

:: ORDINAL2:th 47
theorem
for b1 being ordinal set holds
   {} +^ b1 = b1;

:: ORDINAL2:th 48
theorem
for b1 being ordinal set holds
   b1 +^ 1 = succ b1;

:: ORDINAL2:th 49
theorem
for b1, b2, b3 being ordinal set
      st b1 in b2
   holds b3 +^ b1 in b3 +^ b2;

:: ORDINAL2:th 50
theorem
for b1, b2, b3 being ordinal set
      st b1 c= b2
   holds b3 +^ b1 c= b3 +^ b2;

:: ORDINAL2:th 51
theorem
for b1, b2, b3 being ordinal set
      st b1 c= b2
   holds b1 +^ b3 c= b2 +^ b3;

:: ORDINAL2:th 52
theorem
for b1 being ordinal set holds
   {} *^ b1 = {};

:: ORDINAL2:th 53
theorem
for b1, b2 being ordinal set holds
(succ b1) *^ b2 = (b1 *^ b2) +^ b2;

:: ORDINAL2:th 54
theorem
for b1, b2 being ordinal set
   st b1 <> {} & b1 is being_limit_ordinal
for b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
      st proj1 b3 = b1 &
         (for b4 being ordinal set
               st b4 in b1
            holds b3 . b4 = b4 *^ b2)
   holds b1 *^ b2 = union sup b3;

:: ORDINAL2:th 55
theorem
for b1 being ordinal set holds
   b1 *^ {} = {};

:: ORDINAL2:th 56
theorem
for b1 being ordinal set holds
   1 *^ b1 = b1 & b1 *^ 1 = b1;

:: ORDINAL2:th 57
theorem
for b1, b2, b3 being ordinal set
      st b1 <> {} & b2 in b3
   holds b2 *^ b1 in b3 *^ b1;

:: ORDINAL2:th 58
theorem
for b1, b2, b3 being ordinal set
      st b1 c= b2
   holds b1 *^ b3 c= b2 *^ b3;

:: ORDINAL2:th 59
theorem
for b1, b2, b3 being ordinal set
      st b1 c= b2
   holds b3 *^ b1 c= b3 *^ b2;

:: ORDINAL2:th 60
theorem
for b1 being ordinal set holds
   exp(b1,{}) = 1;

:: ORDINAL2:th 61
theorem
for b1, b2 being ordinal set holds
exp(b1,succ b2) = b1 *^ exp(b1,b2);

:: ORDINAL2:th 62
theorem
for b1, b2 being ordinal set
   st b1 <> {} & b1 is being_limit_ordinal
for b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
      st proj1 b3 = b1 &
         (for b4 being ordinal set
               st b4 in b1
            holds b3 . b4 = exp(b2,b4))
   holds exp(b2,b1) = lim b3;

:: ORDINAL2:th 63
theorem
for b1 being ordinal set holds
   exp(b1,1) = b1 & exp(1,b1) = 1;

:: ORDINAL2:th 65
theorem
for b1 being ordinal set holds
   ex b2, b3 being ordinal set st
      b2 is being_limit_ordinal & b3 is natural & b1 = b2 +^ b3;

:: ORDINAL2:funcreg 3
registration
  let a1 be set;
  let a2 be ordinal set;
  cluster a1 --> a2 -> Ordinal-yielding;
end;

:: ORDINAL2:prednot 2 => ORDINAL2:pred 2
definition
  let a1, a2 be ordinal set;
  pred A1 is_cofinal_with A2 means
    ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       proj1 b1 = a2 & proj2 b1 c= a1 & b1 is increasing & a1 = sup b1;
  reflexivity;
::  for a1 being ordinal set holds
::     a1 is_cofinal_with a1;
end;

:: ORDINAL2:dfs 17
definiens
  let a1, a2 be ordinal set;
To prove
     a1 is_cofinal_with a2
it is sufficient to prove
  thus ex b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
       proj1 b1 = a2 & proj2 b1 c= a1 & b1 is increasing & a1 = sup b1;

:: ORDINAL2:def 21
theorem
for b1, b2 being ordinal set holds
   b1 is_cofinal_with b2
iff
   ex b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set st
      proj1 b3 = b2 & proj2 b3 c= b1 & b3 is increasing & b1 = sup b3;

:: ORDINAL2:th 66
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
for b2 being set
      st b2 in proj2 b1
   holds b2 is ordinal set;

:: ORDINAL2:th 67
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   proj2 b1 c= sup b1;

:: ORDINAL2:th 68
theorem
for b1 being ordinal set
      st b1 is_cofinal_with {}
   holds b1 = {};

:: ORDINAL2:sch 17
scheme ORDINAL2:sch 17
{F1 -> natural set}:
P1[F1()]
provided
   P1[{}]
and
   for b1 being natural set
         st P1[b1]
      holds P1[succ b1];


:: ORDINAL2:funcreg 4
registration
  let a1, a2 be natural set;
  cluster a1 +^ a2 -> ordinal natural;
end;

:: ORDINAL2:funcreg 5
registration
  let a1, a2 be set;
  let a3, a4 be natural set;
  cluster IFEQ(a1,a2,a3,a4) -> natural;
end;