Article ORDINAL3, MML version 4.99.1005

:: ORDINAL3:th 1
theorem
for b1 being set holds
   b1 c= succ b1;

:: ORDINAL3:th 2
theorem
for b1, b2 being set
      st succ b1 c= b2
   holds b1 c= b2;

:: ORDINAL3:th 5
theorem
for b1, b2 being ordinal set holds
   b1 in b2
iff
   succ b1 in succ b2;

:: ORDINAL3:th 6
theorem
for b1 being ordinal set
for b2 being set
      st b2 c= b1
   holds union b2 is ordinal set;

:: ORDINAL3:th 7
theorem
for b1 being set holds
   union On b1 is ordinal set;

:: ORDINAL3:th 8
theorem
for b1 being ordinal set
for b2 being set
      st b2 c= b1
   holds On b2 = b2;

:: ORDINAL3:th 9
theorem
for b1 being ordinal set holds
   On {b1} = {b1};

:: ORDINAL3:th 10
theorem
for b1 being ordinal set
      st b1 <> {}
   holds {} in b1;

:: ORDINAL3:th 11
theorem
for b1 being ordinal set holds
   inf b1 = {};

:: ORDINAL3:th 12
theorem
for b1 being ordinal set holds
   inf {b1} = b1;

:: ORDINAL3:th 13
theorem
for b1 being ordinal set
for b2 being set
      st b2 c= b1
   holds meet b2 is ordinal set;

:: ORDINAL3:funcreg 1
registration
  let a1, a2 be ordinal set;
  cluster a1 \/ a2 -> ordinal;
end;

:: ORDINAL3:funcreg 2
registration
  let a1, a2 be ordinal set;
  cluster a1 /\ a2 -> ordinal;
end;

:: ORDINAL3:th 15
theorem
for b1, b2 being ordinal set
      st b1 \/ b2 <> b1
   holds b1 \/ b2 = b2;

:: ORDINAL3:th 16
theorem
for b1, b2 being ordinal set
      st b1 /\ b2 <> b1
   holds b1 /\ b2 = b2;

:: ORDINAL3:th 17
theorem
for b1 being ordinal set
      st b1 in 1
   holds b1 = {};

:: ORDINAL3:th 18
theorem
1 = {{}};

:: ORDINAL3:th 19
theorem
for b1 being ordinal set
      st b1 c= 1 & b1 <> {}
   holds b1 = 1;

:: ORDINAL3:th 20
theorem
for b1, b2, b3, b4 being ordinal set
      st (b1 c= b2 or b1 in b2) & b3 in b4
   holds b1 +^ b3 in b2 +^ b4;

:: ORDINAL3:th 21
theorem
for b1, b2, b3, b4 being ordinal set
      st b1 c= b2 & b3 c= b4
   holds b1 +^ b3 c= b2 +^ b4;

:: ORDINAL3:th 22
theorem
for b1, b2, b3, b4 being ordinal set
      st b1 in b2 & (b3 c= b4 & b4 <> {} or b3 in b4)
   holds b1 *^ b3 in b2 *^ b4;

:: ORDINAL3:th 23
theorem
for b1, b2, b3, b4 being ordinal set
      st b1 c= b2 & b3 c= b4
   holds b1 *^ b3 c= b2 *^ b4;

:: ORDINAL3:th 24
theorem
for b1, b2, b3 being ordinal set
      st b1 +^ b2 = b1 +^ b3
   holds b2 = b3;

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

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

:: ORDINAL3:th 27
theorem
for b1, b2 being ordinal set holds
b1 c= b1 +^ b2 & b2 c= b1 +^ b2;

:: ORDINAL3:th 28
theorem
for b1, b2, b3 being ordinal set
      st b1 in b2
   holds b1 in b2 +^ b3 & b1 in b3 +^ b2;

:: ORDINAL3:th 29
theorem
for b1, b2 being ordinal set
      st b1 +^ b2 = {}
   holds b1 = {} & b2 = {};

:: ORDINAL3:th 30
theorem
for b1, b2 being ordinal set
      st b1 c= b2
   holds ex b3 being ordinal set st
      b2 = b1 +^ b3;

:: ORDINAL3:th 31
theorem
for b1, b2 being ordinal set
      st b1 in b2
   holds ex b3 being ordinal set st
      b2 = b1 +^ b3 & b3 <> {};

:: ORDINAL3:th 32
theorem
for b1, b2 being ordinal set
      st b1 <> {} & b1 is being_limit_ordinal
   holds b2 +^ b1 is being_limit_ordinal;

:: ORDINAL3:th 33
theorem
for b1, b2, b3 being ordinal set holds
(b1 +^ b2) +^ b3 = b1 +^ (b2 +^ b3);

:: ORDINAL3:th 34
theorem
for b1, b2 being ordinal set
      st b1 *^ b2 = {} & b1 <> {}
   holds b2 = {};

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

:: ORDINAL3:th 36
theorem
for b1, b2, b3 being ordinal set
      st b1 *^ b2 = b3 *^ b2 & b2 <> {}
   holds b1 = b3;

:: ORDINAL3:th 37
theorem
for b1, b2, b3 being ordinal set
      st b1 *^ b2 in b3 *^ b2
   holds b1 in b3;

:: ORDINAL3:th 38
theorem
for b1, b2, b3 being ordinal set
      st b1 *^ b2 c= b3 *^ b2 & b2 <> {}
   holds b1 c= b3;

:: ORDINAL3:th 39
theorem
for b1, b2 being ordinal set
      st b1 <> {}
   holds b2 c= b2 *^ b1 & b2 c= b1 *^ b2;

:: ORDINAL3:th 41
theorem
for b1, b2 being ordinal set
      st b1 *^ b2 = 1
   holds b1 = 1 & b2 = 1;

:: ORDINAL3:th 42
theorem
for b1, b2, b3 being ordinal set
      st b1 in b2 +^ b3 & not b1 in b2
   holds ex b4 being ordinal set st
      b4 in b3 & b1 = b2 +^ b4;

:: ORDINAL3:funcnot 1 => ORDINAL3:func 1
definition
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  func A1 +^ A2 -> Relation-like Function-like T-Sequence-like Ordinal-yielding set means
    proj1 it = proj1 a2 &
     (for b1 being ordinal set
           st b1 in proj1 a2
        holds it . b1 = a1 +^ (a2 . b1));
end;

:: ORDINAL3:def 2
theorem
for b1 being ordinal set
for b2, b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   b3 = b1 +^ b2
iff
   proj1 b3 = proj1 b2 &
    (for b4 being ordinal set
          st b4 in proj1 b2
       holds b3 . b4 = b1 +^ (b2 . b4));

:: ORDINAL3:funcnot 2 => ORDINAL3:func 2
definition
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  func A2 +^ A1 -> Relation-like Function-like T-Sequence-like Ordinal-yielding set means
    proj1 it = proj1 a2 &
     (for b1 being ordinal set
           st b1 in proj1 a2
        holds it . b1 = (a2 . b1) +^ a1);
end;

:: ORDINAL3:def 3
theorem
for b1 being ordinal set
for b2, b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   b3 = b2 +^ b1
iff
   proj1 b3 = proj1 b2 &
    (for b4 being ordinal set
          st b4 in proj1 b2
       holds b3 . b4 = (b2 . b4) +^ b1);

:: ORDINAL3:funcnot 3 => ORDINAL3:func 3
definition
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  func A1 *^ A2 -> Relation-like Function-like T-Sequence-like Ordinal-yielding set means
    proj1 it = proj1 a2 &
     (for b1 being ordinal set
           st b1 in proj1 a2
        holds it . b1 = a1 *^ (a2 . b1));
end;

:: ORDINAL3:def 4
theorem
for b1 being ordinal set
for b2, b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   b3 = b1 *^ b2
iff
   proj1 b3 = proj1 b2 &
    (for b4 being ordinal set
          st b4 in proj1 b2
       holds b3 . b4 = b1 *^ (b2 . b4));

:: ORDINAL3:funcnot 4 => ORDINAL3:func 4
definition
  let a1 be ordinal set;
  let a2 be Relation-like Function-like T-Sequence-like Ordinal-yielding set;
  func A2 *^ A1 -> Relation-like Function-like T-Sequence-like Ordinal-yielding set means
    proj1 it = proj1 a2 &
     (for b1 being ordinal set
           st b1 in proj1 a2
        holds it . b1 = (a2 . b1) *^ a1);
end;

:: ORDINAL3:def 5
theorem
for b1 being ordinal set
for b2, b3 being Relation-like Function-like T-Sequence-like Ordinal-yielding set holds
   b3 = b2 *^ b1
iff
   proj1 b3 = proj1 b2 &
    (for b4 being ordinal set
          st b4 in proj1 b2
       holds b3 . b4 = (b2 . b4) *^ b1);

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

:: ORDINAL3:th 48
theorem
for b1, b2 being ordinal set
      st b1 is being_limit_ordinal
   holds b1 *^ b2 is being_limit_ordinal;

:: ORDINAL3:th 49
theorem
for b1, b2, b3 being ordinal set
      st b1 in b2 *^ b3 & b2 is being_limit_ordinal
   holds ex b4 being ordinal set st
      b4 in b2 & b1 in b4 *^ b3;

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

:: ORDINAL3:th 51
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
for b2 being ordinal set
      st {} <> proj1 b1
   holds sup (b2 +^ b1) = b2 +^ sup b1;

:: ORDINAL3:th 52
theorem
for b1 being Relation-like Function-like T-Sequence-like Ordinal-yielding set
for b2 being ordinal set
      st {} <> proj1 b1 & b2 <> {} & sup b1 is being_limit_ordinal
   holds sup (b1 *^ b2) = (sup b1) *^ b2;

:: ORDINAL3:th 53
theorem
for b1, b2 being ordinal set
      st b1 <> {}
   holds union (b2 +^ b1) = b2 +^ union b1;

:: ORDINAL3:th 54
theorem
for b1, b2, b3 being ordinal set holds
(b1 +^ b2) *^ b3 = (b1 *^ b3) +^ (b2 *^ b3);

:: ORDINAL3:th 55
theorem
for b1, b2 being ordinal set
      st b1 <> {}
   holds ex b3, b4 being ordinal set st
      b2 = (b3 *^ b1) +^ b4 & b4 in b1;

:: ORDINAL3:th 56
theorem
for b1, b2, b3, b4, b5 being ordinal set
      st (b2 *^ b1) +^ b3 = (b4 *^ b1) +^ b5 &
         b3 in b1 &
         b5 in b1
   holds b2 = b4 & b3 = b5;

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

:: ORDINAL3:th 58
theorem
for b1, b2, b3 being ordinal set holds
(b1 *^ b2) *^ b3 = b1 *^ (b2 *^ b3);

:: ORDINAL3:funcnot 5 => ORDINAL3:func 5
definition
  let a1, a2 be ordinal set;
  func A1 -^ A2 -> ordinal set means
    a1 = a2 +^ it
    if a2 c= a1
    otherwise it = {};
end;

:: ORDINAL3:def 6
theorem
for b1, b2, b3 being ordinal set holds
(b2 c= b1 implies    (b3 = b1 -^ b2
 iff
    b1 = b2 +^ b3)) &
 (b2 c= b1 or    (b3 = b1 -^ b2
 iff
    b3 = {}));

:: ORDINAL3:funcnot 6 => ORDINAL3:func 6
definition
  let a1, a2 be ordinal set;
  func A1 div^ A2 -> ordinal set means
    ex b1 being ordinal set st
       a1 = (it *^ a2) +^ b1 & b1 in a2
    if a2 <> {}
    otherwise it = {};
end;

:: ORDINAL3:def 7
theorem
for b1, b2, b3 being ordinal set holds
(b2 = {} or    (b3 = b1 div^ b2
 iff
    ex b4 being ordinal set st
       b1 = (b3 *^ b2) +^ b4 & b4 in b2)) &
 (b2 = {} implies    (b3 = b1 div^ b2
 iff
    b3 = {}));

:: ORDINAL3:funcnot 7 => ORDINAL3:func 7
definition
  let a1, a2 be ordinal set;
  func A1 mod^ A2 -> ordinal set equals
    a1 -^ ((a1 div^ a2) *^ a2);
end;

:: ORDINAL3:def 8
theorem
for b1, b2 being ordinal set holds
b1 mod^ b2 = b1 -^ ((b1 div^ b2) *^ b2);

:: ORDINAL3:th 60
theorem
for b1, b2 being ordinal set
      st b1 in b2
   holds b2 = b1 +^ (b2 -^ b1);

:: ORDINAL3:th 65
theorem
for b1, b2 being ordinal set holds
(b1 +^ b2) -^ b1 = b2;

:: ORDINAL3:th 66
theorem
for b1, b2, b3 being ordinal set
      st b1 in b2 & (b3 c= b1 or b3 in b1)
   holds b1 -^ b3 in b2 -^ b3;

:: ORDINAL3:th 67
theorem
for b1 being ordinal set holds
   b1 -^ b1 = {};

:: ORDINAL3:th 68
theorem
for b1, b2 being ordinal set
      st b1 in b2
   holds b2 -^ b1 <> {} & {} in b2 -^ b1;

:: ORDINAL3:th 69
theorem
for b1 being ordinal set holds
   b1 -^ {} = b1 & {} -^ b1 = {};

:: ORDINAL3:th 70
theorem
for b1, b2, b3 being ordinal set holds
b1 -^ (b2 +^ b3) = (b1 -^ b2) -^ b3;

:: ORDINAL3:th 71
theorem
for b1, b2, b3 being ordinal set
      st b1 c= b2
   holds b3 -^ b2 c= b3 -^ b1;

:: ORDINAL3:th 72
theorem
for b1, b2, b3 being ordinal set
      st b1 c= b2
   holds b1 -^ b3 c= b2 -^ b3;

:: ORDINAL3:th 73
theorem
for b1, b2, b3 being ordinal set
      st b1 <> {} & b2 in b3 +^ b1
   holds b2 -^ b3 in b1;

:: ORDINAL3:th 74
theorem
for b1, b2, b3 being ordinal set
      st b1 +^ b2 in b3
   holds b2 in b3 -^ b1;

:: ORDINAL3:th 75
theorem
for b1, b2 being ordinal set holds
b1 c= b2 +^ (b1 -^ b2);

:: ORDINAL3:th 76
theorem
for b1, b2, b3 being ordinal set holds
(b1 *^ b2) -^ (b3 *^ b2) = (b1 -^ b3) *^ b2;

:: ORDINAL3:th 77
theorem
for b1, b2 being ordinal set holds
(b1 div^ b2) *^ b2 c= b1;

:: ORDINAL3:th 78
theorem
for b1, b2 being ordinal set holds
b1 = ((b1 div^ b2) *^ b2) +^ (b1 mod^ b2);

:: ORDINAL3:th 79
theorem
for b1, b2, b3, b4 being ordinal set
      st b1 = (b2 *^ b3) +^ b4 & b4 in b3
   holds b2 = b1 div^ b3 & b4 = b1 mod^ b3;

:: ORDINAL3:th 80
theorem
for b1, b2, b3 being ordinal set
      st b1 in b2 *^ b3
   holds b1 div^ b3 in b2 & b1 mod^ b3 in b3;

:: ORDINAL3:th 81
theorem
for b1, b2 being ordinal set
      st b1 <> {}
   holds (b2 *^ b1) div^ b1 = b2;

:: ORDINAL3:th 82
theorem
for b1, b2 being ordinal set holds
(b1 *^ b2) mod^ b2 = {};

:: ORDINAL3:th 83
theorem
for b1 being ordinal set holds
   {} div^ b1 = {} & {} mod^ b1 = {} & b1 mod^ {} = b1;

:: ORDINAL3:th 84
theorem
for b1 being ordinal set holds
   b1 div^ 1 = b1 & b1 mod^ 1 = {};

:: ORDINAL3:th 85
theorem
for b1 being set holds
   sup b1 c= succ union On b1;

:: ORDINAL3:th 86
theorem
for b1 being ordinal set holds
   succ b1 is_cofinal_with 1;

:: ORDINAL3:th 87
theorem
for b1, b2 being ordinal set
      st b1 +^ b2 is natural
   holds b1 in omega & b2 in omega;

:: ORDINAL3:funcreg 3
registration
  let a1, a2 be ordinal natural set;
  cluster a1 -^ a2 -> ordinal natural;
end;

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

:: ORDINAL3:th 88
theorem
for b1, b2 being ordinal set
      st b1 *^ b2 is natural & b1 *^ b2 is not empty
   holds b1 in omega & b2 in omega;

:: ORDINAL3:funcnot 8 => ORDINAL3:func 8
definition
  let a1, a2 be ordinal natural set;
  redefine func a1 +^ a2 -> ordinal set;
  commutativity;
::  for a1, a2 being ordinal natural set holds
::  a1 +^ a2 = a2 +^ a1;
end;

:: ORDINAL3:funcnot 9 => ORDINAL3:func 9
definition
  let a1, a2 be ordinal natural set;
  redefine func a1 *^ a2 -> ordinal set;
  commutativity;
::  for a1, a2 being ordinal natural set holds
::  a1 *^ a2 = a2 *^ a1;
end;