ORDINAL7

index · ← FIELD_2 · GLIB_008 →
:: Natural Addition of Ordinals
::  by Sebastian Koch
:: 
:: Received May 27, 2019
:: Copyright (c) 2019-2026 Association of Mizar Users
::           (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.

environ

 vocabularies NUMBERS, ORDINAL1, ORDINAL2, TARSKI, XBOOLE_0, CARD_1, FINSET_1,
      AFINSQ_1, ORDINAL4, RELAT_1, FUNCT_1, VALUED_0, SUBSET_1, ARYTM_3, NAT_1,
      XXREAL_0, ORDINAL3, FINSEQ_1, ORDINAL5, WELLORD2, STRUCT_0, ORDERS_2,
      ORDERS_5, PRGCOR_2, PARTFUN1, ARYTM_1, XCMPLX_0, FUNCOP_1, CARD_2,
      RFINSEQ, MATHMORP, ORDINAL7;
 notations TARSKI, XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, PARTFUN1,
      WELLORD2, FUNCOP_1, ORDINAL2, ORDINAL3, FINSET_1, CARD_1, ORDERS_1,
      CARD_3, NUMBERS, XCMPLX_0, XXREAL_0, XREAL_0, NAT_1, VALUED_0, CARD_2,
      NAT_D, ORDINAL4, FINSEQ_1, NEWTON, RFINSEQ, AFINSQ_1, AFINSQ_2, ORDINAL5,
      ORDINAL6, STRUCT_0, ORDERS_2, ORDERS_5;
 constructors NEWTON, NAT_1, AFINSQ_1, ORDINAL3, CARD_3, NUMBERS, ORDINAL5,
      ORDINAL6, WELLORD2, STRUCT_0, ORDERS_1, ORDERS_2, ORDERS_5, RELAT_2,
      VALUED_0, FINSEQ_1, PARTFUN1, RELAT_1, FUNCT_1, XXREAL_0, RELSET_1,
      FUNCOP_1, NAT_D, XREAL_0, CARD_1, CARD_2, ABIAN, ENUMSET1, AFINSQ_2,
      RFINSEQ;
 registrations XBOOLE_0, RELAT_1, FUNCT_1, ORDINAL1, NAT_1, XREAL_0, ORDINAL2,
      ORDINAL4, CARD_1, CARD_LAR, AFINSQ_1, FINSET_1, ORDINAL5, ORDINAL6,
      ORDERS_2, ORDERS_5, VALUED_0, FINSEQ_1, FUNCOP_1, MSAFREE5, ORDINAL3,
      AFINSQ_2;
 requirements SUBSET, BOOLE, NUMERALS, ARITHM, REAL;
 equalities ORDINAL1;
 theorems TARSKI, FUNCT_1, FINSET_1, NAT_1, AFINSQ_1, RELAT_1, ORDINAL1,
      ORDINAL2, ORDINAL3, ORDINAL4, CARD_2, XBOOLE_0, XBOOLE_1, ZFMISC_1,
      XXREAL_0, ORDINAL5, CARD_1, ORDERS_5, WELLORD2, RELAT_2, VALUED_0,
      XREAL_1, ORDERS_2, PARTFUN1, FINSEQ_3, FUNCOP_1, AFINSQ_2, FUZZY_2;
 schemes NAT_1, ORDINAL1, ORDINAL2, FUNCT_1;

begin :: Preliminaries

:: into ORDINAL1 ?
theorem Th1:
  for X being set holds X /\ succ X = X
proof
  let X be set;
  for x being object holds x in X & x in succ X iff x in X
    by XBOOLE_0:def 3;
  hence thesis by XBOOLE_0:def 4;
end;

:: into ORDINAL2 ?
registration
  let A be increasing Ordinal-Sequence, a be Ordinal;
  cluster A | a -> increasing;
  coherence
  proof
    now
      let c, d be Ordinal;
      assume A1: c in d & d in dom(A|a);
      then A2: (A|a).d = A.d & (A|a).c = A.c by FUNCT_1:47, ORDINAL1:10;
      d in dom A by A1, RELAT_1:57;
      hence (A|a).c in (A|a).d by A1, A2, ORDINAL2:def 12;
    end;
    hence thesis by ORDINAL2:def 12;
  end;
end;

Lm1: succ 0 = 1;
Lm2: succ succ 0 = 2;

:: into ORDINAL2 ?
theorem Th2:
  for a being Ordinal holds a +^ a = 2 *^ a
proof
  let a be Ordinal;
  consider fi being Ordinal-Sequence such that
    A1: 2 *^ a = last fi & dom fi = succ 2 & fi.0 = 0 and
    A2: for c being Ordinal st succ c in succ 2
      holds fi.succ c = (fi.c) +^ a and
    for c being Ordinal st c in succ 2 & c <> 0 & c is limit_ordinal
      holds fi.c = union sup(fi|c) by ORDINAL2:def 15;
  succ 0 in succ succ 0 & succ succ 0 in succ 2 by ORDINAL1:6;
  then A3: succ 0 in succ 2 & succ succ 0 in succ 2 by ORDINAL1:10;
  2 *^ a = fi.2 by A1, ORDINAL2:6
    .= (fi.succ 0) +^ a by A2, A3
    .= ((fi.0) +^ a) +^ a by A2, A3
    .= a +^ a by A1, ORDINAL2:30;
  hence thesis;
end;

:: into ORDINAL2 ?
theorem
  for a, b being Ordinal st 1 in a & a in b holds b +^ a in a *^ b
proof
  let a, b be Ordinal;
  assume A1: 1 in a & a in b;
  then A2: 2 *^ b c= a *^ b by Lm2, ORDINAL1:21, ORDINAL2:41;
  b +^ a in b +^ b by A1, ORDINAL2:32;
  then b +^ a in 2 *^ b by Th2;
  hence thesis by A2;
end;

:: into ORDINAL2 ?
theorem Th4:
  for a being Ordinal holds a *^ a = exp(a,2)
proof
  let a be Ordinal;
  consider fi being Ordinal-Sequence such that
    A1: exp(a,2) = last fi & dom fi = succ 2 & fi.0 = 1 and
    A2: for c being Ordinal st succ c in succ 2
      holds fi.succ c = a *^ (fi.c) and
    for c being Ordinal st c in succ 2 & c <> 0 & c is limit_ordinal
      holds fi.c = lim(fi|c) by ORDINAL2:def 16;
  succ 0 in succ succ 0 & succ succ 0 in succ 2 by ORDINAL1:6;
  then A3: succ 0 in succ 2 & succ succ 0 in succ 2 by ORDINAL1:10;
  exp(a,2) = fi.2 by A1, ORDINAL2:6
    .= a *^ (fi.succ 0) by A2, A3
    .= a *^ (a *^ (fi.0)) by A2, A3
    .= a *^ a by A1, ORDINAL2:39;
  hence thesis;
end;

:: into ORDINAL4 ?
theorem
  for a, b being Ordinal st 1 in a & a in b holds a *^ b in exp(b,a)
proof
  let a, b be Ordinal;
  assume A1: 1 in a & a in b; then
  A3: exp(b,2) c= exp(b,a) by Lm2, ORDINAL1:21, ORDINAL4:27;
  a *^ b in b *^ b by A1, ORDINAL2:40;
  then a *^ b in exp(b,2) by Th4;
  hence thesis by A3;
end;

:: a |^|^ 2 = exp(a, a) is ORDINAL5:18

:: into ORDINAL5 ?
theorem
  for a, b being Ordinal st 1 in a & a in b holds exp(b,a) in b |^|^ a
proof
  let a, b be Ordinal;
  assume A1: 1 in a & a in b;
  then A2: 1 in b by ORDINAL1:10;
  then 0 c< b by XBOOLE_1:2, XBOOLE_0:def 8;
  then 0 in b by ORDINAL1:11;
  then A3: b |^|^ 2 c= b |^|^ a by A1, Lm2, ORDINAL1:21, ORDINAL5:21;
  exp(b,a) in exp(b,b) by A1, A2, ORDINAL4:24;
  then exp(b,a) in b |^|^ 2 by ORDINAL5:18;
  hence thesis by A3;
end;

registration
  cluster infinite for Ordinal-Sequence;
  existence
  proof
    take omega --> omega;
    dom(omega --> omega) = omega;
    hence thesis;
  end;
end;

Th9:
  for A, B being Sequence holds rng(A^B) = rng A \/ rng B by ORDINAL4:2;

:: into ORDINAL4 ?
theorem Th10:
  for A, B being Sequence st A^B is Ordinal-yielding
  holds A is Ordinal-yielding & B is Ordinal-yielding
proof
  let A, B be Sequence;
  assume A^B is Ordinal-yielding;
  then consider c being Ordinal such that
    A1: rng(A^B) c= c by ORDINAL2:def 4;
  rng A c= rng(A^B) by ORDINAL4:39;
  hence A is Ordinal-yielding by A1, XBOOLE_1:1, ORDINAL2:def 4;
  rng B c= rng(A^B) by ORDINAL4:40;
  hence B is Ordinal-yielding by A1, XBOOLE_1:1, ORDINAL2:def 4;
end;

Th13:
  for D being set, p being FinSequence of D, n being Nat
  holds n+1 in dom p iff n in dom FS2XFS p by AFINSQ_1:94;

Th15:
  for D being set, p being FinSequence of D holds rng p = rng FS2XFS p
    by AFINSQ_1:96;

:: analogous theorem of FINSEQ_5:34
Th19:
  for D being set, p being one-to-one XFinSequence of D, n being Nat
  holds rng(p|n) misses rng(p/^n) by AFINSQ_2:87;

:: into ORDINAL5 ?
:: corrolary from theorem above
theorem Th21:
  for a, b being Ordinal st a in b holds b -exponent a = 0
proof
  let a, b be Ordinal;
  assume A1: a in b;
  per cases;
  suppose 0 in a;
    then 0 = b -exponent(a *^ exp(b,0)) by A1, ORDINAL5:58
      .= b -exponent(a *^ 1) by ORDINAL2:43
      .= b -exponent a by ORDINAL2:39;
    hence thesis;
  end;
  suppose not 0 in a;
    hence thesis by ORDINAL5:def 10;
  end;
end;

:: into ORDINAL5 ?
theorem Th22:
  for a, b, c being Ordinal st a c= c holds b -exponent a c= b -exponent c
proof
  let a, b, c be Ordinal;
  assume A1: a c= c;
  per cases;
  suppose A2: 1 in b & 0 in a & 0 in c;
    then exp(b,b -exponent a) c= a by ORDINAL5:def 10;
    then exp(b,b -exponent a) c= c by A1, XBOOLE_1:1;
    hence thesis by A2, ORDINAL5:def 10;
  end;
  suppose not 1 in b;
    then b-exponent a = 0 & b-exponent c = 0 by ORDINAL5:def 10;
    hence thesis;
  end;
  suppose not 0 in a or not 0 in c;
    then not 0 in a by A1;
    then b-exponent a = {} by ORDINAL5:def 10;
    hence thesis;
  end;
end;

:: into ORDINAL5 ?
theorem Th23:
  for a, b, c being Ordinal st 0 in a & 1 in b & a in exp(b,c)
  holds b -exponent a in c
proof
  let a, b, c be Ordinal;
  assume that
    A1: 0 in a and
    A2: 1 in b and
    A3: a in exp(b,c);
  exp(b,c) = 1*^exp(b,c) & 0 in 1 by CARD_1:49, TARSKI:def 1, ORDINAL2:39;
  then b-exponent(exp(b,c)) = c by A2, ORDINAL5:58;
  then A4: b -exponent a c= c by A3, Th22, ORDINAL1:def 2;
  b -exponent a <> c
  proof
    assume A5: b -exponent a = c;
    exp(b,b -exponent a) c= a by A2, A1, ORDINAL5:def 10;
    hence contradiction by A3, A5, ORDINAL1:5;
  end;
  hence thesis by A4, XBOOLE_0:def 8, ORDINAL1:11;
end;

:: into ORDINAL5 ?
registration
  cluster decreasing -> one-to-one for Ordinal-Sequence;
  coherence
  proof
    let A be Ordinal-Sequence;
    assume A1: A is decreasing;
    now
      let x1,x2 be object;
      assume A2: x1 in dom A & x2 in dom A & A.x1 = A.x2;
      then reconsider a1 = x1, a2 = x2 as Ordinal;
      per cases by ORDINAL1:14;
      suppose a1 in a2;
        then A.a2 in A.a1 by A1, A2, ORDINAL5:def 1;
        hence x1 = x2 by A2; :: by contradiction
      end;
      suppose a1 = a2;
        hence x1 = x2;
      end;
      suppose a2 in a1;
        then A.a1 in A.a2 by A1, A2, ORDINAL5:def 1;
        hence x1 = x2 by A2; :: by contradiction
      end;
    end;
    hence thesis by FUNCT_1:def 4;
  end;
end;

:: into ORDINAL5 ?
registration
  let A be decreasing Sequence, a be Ordinal;
  cluster A | a -> decreasing;
  coherence
  proof
    now
      let b,c be Ordinal;
      assume A1: b in c & c in dom(A|a);
      then A2: (A|a).b = A.b & (A|a).c = A.c by FUNCT_1:47, ORDINAL1:10;
      c in dom A by A1, RELAT_1:57;
      hence (A|a).c in (A|a).b by A1, A2, ORDINAL5:def 1;
    end;
    hence thesis by ORDINAL5:def 1;
  end;
end;

:: into ORDINAL5 ?
registration
  let A be non-decreasing Sequence, a be Ordinal;
  cluster A | a -> non-decreasing;
  coherence
  proof
    now
      let b,c be Ordinal;
      assume A1: b in c & c in dom(A|a);
      then A2: (A|a).b = A.b & (A|a).c = A.c by ORDINAL1:10, FUNCT_1:47;
      c in dom A by A1, RELAT_1:57;
      hence (A|a).b c= (A|a).c by A1, A2, ORDINAL5:def 2;
    end;
    hence thesis by ORDINAL5:def 2;
  end;
end;

:: into ORDINAL5 ?
registration
  let A be non-increasing Sequence, a be Ordinal;
  cluster A | a -> non-increasing;
  coherence
  proof
    now
      let b,c be Ordinal;
      assume A1: b in c & c in dom(A|a);
      then A2: (A|a).b = A.b & (A|a).c = A.c by ORDINAL1:10, FUNCT_1:47;
      c in dom A by A1, RELAT_1:57;
      hence (A|a).c c= (A|a).b by A1, A2, ORDINAL5:def 3;
    end;
    hence thesis by ORDINAL5:def 3;
  end;
end;

:: into ORDINAL5 ?
theorem Th24:
  for A, B being finite Ordinal-Sequence holds Sum^ (A^B) = Sum^ A +^ Sum^ B
proof
  defpred P[Nat] means for A, B being finite Ordinal-Sequence
    st dom B = $1 holds Sum^ (A^B) = Sum^ A +^ Sum^ B;
  A1: P[0]
  proof
    let A, B be finite Ordinal-Sequence;
    assume dom B = 0;
    then B = {};
    hence Sum^(A^B) = Sum^ A +^ Sum^ B by ORDINAL2:27, ORDINAL5:52;
  end;
  A2: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A3: P[n];
    let A, B be finite Ordinal-Sequence;
    assume A4: dom B = n+1;
    then B <> {};
    then consider C being XFinSequence, a being object such that
      A5: B = C ^ <% a %> by AFINSQ_1:40;
    consider b being Ordinal such that
      A6: rng B c= b by ORDINAL2:def 4;
    rng C c= rng B by A5, AFINSQ_1:24;
    then reconsider C as finite Ordinal-Sequence
      by A6, XBOOLE_1:1, ORDINAL2:def 4;
    rng <% a %> c= rng B by A5, AFINSQ_1:25;
    then {a} c= rng B by AFINSQ_1:33;
    then a in rng B by ZFMISC_1:31;
    then reconsider a as Ordinal;
    A7: dom C + 1 = len C + len <% a %> by AFINSQ_1:34
      .= n+1 by A4, A5, AFINSQ_1:17;
    thus Sum^ (A^B) = Sum^ ((A^C)^<%a%>) by A5, AFINSQ_1:27
      .= Sum^ (A^C) +^ a by ORDINAL5:54
      .= Sum^ A +^ Sum^ C +^ a by A3, A7
      .= Sum^ A +^ (Sum^ C +^ a) by ORDINAL3:30
      .= Sum^ A +^ Sum^ B by A5, ORDINAL5:54;
  end;
  A8: for n being Nat holds P[n] from NAT_1:sch 2(A1,A2);
  let A, B be finite Ordinal-Sequence;
  dom B is Nat;
  hence thesis by A8;
end;

:: into ORDINAL5 ?
theorem Th25:
  for a, b being Ordinal holds Sum^ <% a, b %> = a +^ b
proof
  let a, b be Ordinal;
  thus Sum^ <% a, b %> = Sum^ (<%a%>^<%b%>) by AFINSQ_1:def 5
    .= Sum^ <%a%> +^ Sum^ <%b%> by Th24
    .= Sum^ <%a%> +^ b by ORDINAL5:53
    .= a +^ b by ORDINAL5:53;
end;

:: into ORDINAL5 ?
registration
  let A be non empty non-empty finite Ordinal-Sequence;
  cluster Sum^ A -> non empty;
  coherence
  proof
    0 c< dom A by XBOOLE_1:2, XBOOLE_0:def 8;
    then A1: 0 in dom A by ORDINAL1:11;
    A.0 c= Sum^ A by ORDINAL5:56;
    hence thesis by A1;
  end;
  let B be finite Ordinal-Sequence;
  cluster Sum^ (A^B) -> non empty;
  coherence
  proof
    Sum^ (A^B) = Sum^ A +^ Sum^ B by Th24;
    hence thesis;
  end;
  cluster Sum^ (B^A) -> non empty;
  coherence
  proof
    Sum^ (B^A) = Sum^ B +^ Sum^ A by Th24;
    hence thesis;
  end;
end;

:: into ORDINAL5 ?
theorem Th26:
  for a being Ordinal, n being Nat holds Sum^(n --> a) = n *^ a
proof
  let a be Ordinal, n be Nat;
  consider fi being Ordinal-Sequence such that
    A1: Sum^(n --> a) = last fi & dom fi = succ dom(n --> a) & fi.0 = 0 and
    A2: for k being Nat st k in dom(n --> a)
      holds fi.(k+1) = fi.k +^ (n --> a).k by ORDINAL5:def 8;
  A4: now
    let C be Ordinal;
    assume succ C in succ n;
    then A5: C in n by ORDINAL3:3;
    n in omega by ORDINAL1:def 12;
    then C in omega by A5, ORDINAL1:10;
    then reconsider k = C as Nat;
    A6: k in dom(n --> a) by A5;
    thus fi.succ C = fi.succ Segm C
      .= fi.Segm(k+1) by NAT_1:38
      .= fi.k +^ (n --> a).k by A2, A6
      .= fi.C +^ a by A5, FUNCOP_1:7;
  end;
  now
    let C be Ordinal;
    assume A7: C in succ n & C <> 0 & C is limit_ordinal;
    succ n in omega by ORDINAL1:def 12;
    then C in omega by A7, ORDINAL1:10;
    hence fi.C = union sup(fi|C) by A7; :: by contradiction
  end;
  hence thesis by A1, A4, ORDINAL2:def 15;
end;

:: into ORDINAL5 ?
Lm5:
  for n being Nat holds succ n = n+1
proof
  let n be Nat;
  thus succ n = succ Segm n
    .= Segm(n+1) by NAT_1:38
    .= n+1;
end;

:: into ORDINAL5 ?
theorem Th27:
  for A being finite Ordinal-Sequence, a being Ordinal holds
    Sum^ (A|a) c= Sum^ A
proof
  let A be finite Ordinal-Sequence, a be Ordinal;
  per cases;
  suppose dom A c= a;
    hence thesis by RELAT_1:68;
  end;
  suppose A1: a c= dom A;
    then reconsider a as finite Ordinal;
    consider f1 being Ordinal-Sequence such that
      A2: Sum^(A|a) = last f1 & dom f1 = succ dom(A|a) & f1.0 = 0 and
      A3: for n being Nat st n in dom(A|a) holds f1.(n+1) = f1.n +^ (A|a).n
      by ORDINAL5:def 8;
    consider f2 being Ordinal-Sequence such that
      A4: Sum^ A = last f2 & dom f2 = succ dom A & f2.0 = 0 and
      A5: for n being Nat st n in dom A holds f2.(n+1) = f2.n +^ A.n
      by ORDINAL5:def 8;
    defpred P[Nat] means $1 in dom f1 implies f1.$1 = f2.$1;
    A6: P[0] by A2, A4;
    A7: for n being Nat st P[n] holds P[n+1]
    proof
      let n be Nat;
      assume A8: P[n];
      assume n+1 in dom f1;
      then A9: succ n in dom f1 by Lm5;
      n in succ n by ORDINAL1:6;
      then A10: f1.n = f2.n by A8, A9, ORDINAL1:10;
      A11: n in dom(A|a) by A2, A9, ORDINAL3:3;
      then A12: n in dom A by RELAT_1:57;
      thus f1.(n+1) = f1.n +^ (A|a).n by A3, A11
        .= f2.n +^ A.n by A10, A11, FUNCT_1:47
        .= f2.(n+1) by A5, A12;
    end;
    A13: for n being Nat holds P[n] from NAT_1:sch 2(A6,A7);
    A14: last f1 = f1.dom(A|a) & last f2 = f2.dom A by A2, A4, ORDINAL2:6;
    then A15: last f1 = f2.dom(A|a) by A2, A13, ORDINAL1:6
      .= f2.a by A1, RELAT_1:62;
    Segm a c= Segm dom A by A1;
    then consider k being Nat such that
      A16: dom A = a + k by NAT_1:10, NAT_1:39;
    defpred Q[Nat] means a + $1 <= dom A implies f2.a c= f2.(a+$1);
    A17: Q[0];
    A18: for n being Nat st Q[n] holds Q[n+1]
    proof
      let n be Nat;
      assume A19: Q[n];
      assume A20: a + (n+1) <= dom A;
      then a + n + 1 < dom A + 1 by NAT_1:13;
      then A21: f2.a c= f2.(a+n) by A19, XREAL_1:6;
      Segm(a+(n+1)) c= Segm dom A by A20, NAT_1:39;
      then a+n+1 c= dom A;
      then succ(a+n) c= dom A by Lm5;
      then f2.(a+n+1) = f2.(a+n) +^ A.(a+n) by A5, ORDINAL1:21;
      then f2.(a+n) c= f2.(a+n+1) by ORDINAL3:24;
      hence thesis by A21, XBOOLE_1:1;
    end;
    for n being Nat holds Q[n] from NAT_1:sch 2(A17,A18);
    hence thesis by A2, A4, A14, A15, A16;
  end;
end;

:: into ORDINAL5 ?
theorem Th28:
  for A, B being finite Ordinal-Sequence
  st dom A c= dom B & for a being object st a in dom A holds A.a c= B.a
  holds Sum^ A c= Sum^ B
proof
  let A, B be finite Ordinal-Sequence;
  assume that A1: dom A c= dom B and
    A2: for a being object st a in dom A holds A.a c= B.a;
  set a = dom A;
  consider f1 being Ordinal-Sequence such that
    A3: Sum^ A = last f1 & dom f1 = succ dom A & f1.0 = 0 and
    A4: for n being Nat st n in dom A holds f1.(n+1) = f1.n +^ A.n
    by ORDINAL5:def 8;
  consider f2 being Ordinal-Sequence such that
    A5: Sum^(B|a) = last f2 & dom f2 = succ dom(B|a) & f2.0 = 0 and
    A6: for n being Nat st n in dom(B|a) holds f2.(n+1) = f2.n +^ (B|a).n
    by ORDINAL5:def 8;
  defpred P[Nat] means $1 in succ a implies f1.$1 c= f2.$1;
  A7: P[0] by A3;
  A8: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A9: P[n];
    assume n+1 in succ a;
    then A10: succ n in succ a by Lm5;
    then A11: n in a by ORDINAL3:3;
    n in succ n by ORDINAL1:6;
    then A12: f1.n c= f2.n by A9, A10, ORDINAL1:10;
    A13: f1.(n+1) = f1.n +^ A.n by A4, A10, ORDINAL3:3;
    A14: n in dom(B|a) by A1, A11, RELAT_1:62;
    then A15: f2.(n+1) = f2.n +^ (B|a).n by A6
      .= f2.n +^ B.n by A14, FUNCT_1:47;
    A.n c= B.n by A2, A10, ORDINAL3:3;
    hence thesis by A12, A13, A15, ORDINAL3:18;
  end;
  for n being Nat holds P[n] from NAT_1:sch 2(A7,A8);
  then f1.a c= f2.a by ORDINAL1:6;
  then last f1 c= f2.a by A3, ORDINAL2:6;
  then last f1 c= f2.dom(B|a) by A1, RELAT_1:62;
  then A17: Sum^ A c= Sum^(B|a) by A3, A5, ORDINAL2:6;
  Sum^(B|a) c= Sum^ B by Th27;
  hence thesis by A17, XBOOLE_1:1;
end;

:: into ORDINAL5 ?
:: the mirror theorem of ORDINAL5:67
theorem Th29:
  for A being Cantor-normal-form Ordinal-Sequence st A <> {}
  ex B being Cantor-normal-form Ordinal-Sequence,
    a being Cantor-component Ordinal
  st A = B ^ <% a %>
proof
  let A be Cantor-normal-form Ordinal-Sequence;
  assume A <> {};
  then consider B being XFinSequence, a being object such that
    A1: A = B ^ <% a %> by AFINSQ_1:40;
  reconsider B as finite Ordinal-Sequence by A1, Th10;
  <% a %> is Ordinal-Sequence by A1, Th10;
  then consider c being Ordinal such that
    A2: rng <% a %> c= c by ORDINAL2:def 4;
  {a} c= c by A2, AFINSQ_1:33;
  then a in c by ZFMISC_1:31;
  then reconsider a as Ordinal;
  len A = len B + len <% a %> by A1, AFINSQ_1:17
    .= Segm(len B + 1) by AFINSQ_1:34
    .= succ Segm len B by NAT_1:38
    .= succ len B;
  then len B in len A by ORDINAL1:6;
  then A.len B is Cantor-component by ORDINAL5:def 11;
  then reconsider a as Cantor-component Ordinal by A1, AFINSQ_1:36;
  dom B c= dom B +^ dom <% a %> by ORDINAL3:24;
  then A3: dom B c= dom A by A1, ORDINAL4:def 1;
  A4: now
    let b be Ordinal;
    assume A5: b in dom B;
    then A.b = B.b by A1, ORDINAL4:def 1;
    hence B.b is Cantor-component by A3, A5, ORDINAL5:def 11;
  end;
  now
    let b, c be Ordinal;
    assume A6: b in c & c in dom B;
    then b in dom B & c in dom B by ORDINAL1:10;
    then A.b = B.b & A.c = B.c by A1, ORDINAL4:def 1;
    hence omega-exponent(B.c)in omega-exponent(B.b) by A3, A6, ORDINAL5:def 11;
  end;
  then reconsider B as Cantor-normal-form Ordinal-Sequence
    by A4, ORDINAL5:def 11;
  take B, a;
  thus thesis by A1;
end;

:: into ORDINAL5 ?
registration
  let A be Cantor-normal-form Ordinal-Sequence, n be Nat;
  cluster A | n -> Cantor-normal-form;
  coherence
  proof
    A1: now
      let a be Ordinal;
      assume a in dom(A|n);
      then a in dom A & (A|n).a = A.a by RELAT_1:57, FUNCT_1:47;
      hence (A|n).a is Cantor-component by ORDINAL5:def 11;
    end;
    now
      let a, b be Ordinal;
      assume A2: a in b & b in dom(A|n);
      then A3: a in dom(A|n) & b in dom A by ORDINAL1:10, RELAT_1:57;
      then (A|n).a = A.a & (A|n).b = A.b by A2, FUNCT_1:47;
      hence omega-exponent((A|n).b) in omega-exponent((A|n).a)
        by A2, A3, ORDINAL5:def 11;
    end;
    hence thesis by A1, ORDINAL5:def 11;
  end;
end;

:: into ORDINAL5 or AFINSQ_2 ?
registration
  let A be Cantor-normal-form Ordinal-Sequence, n be Nat;
  cluster A /^ n -> Cantor-normal-form;
  coherence
  proof
    per cases;
    suppose n >= len A;
      hence thesis by AFINSQ_2:6;
    end;
    suppose A1: n < len A;
      A2: now
        let a be Ordinal;
        assume a in dom(A/^n);
        then (A/^n).a in rng(A/^n) by FUNCT_1:3;
        then (A/^n).a in rng A by AFINSQ_2:9, TARSKI:def 3;
        then consider b being object such that
          A3: b in dom A & A.b = (A/^n).a by FUNCT_1:def 3;
        thus (A/^n).a is Cantor-component by A3, ORDINAL5:def 11;
      end;
      now
        let a, b be Ordinal;
        assume A4: a in b & b in dom(A/^n);
        then A5: a in dom(A/^n) by ORDINAL1:10;
        then reconsider m = a, k = b as Nat by A4;
        (A/^n).a = A.(m+n) & (A/^n).b = A.(k+n) by A4, A5, AFINSQ_2:def 2;
        then A6: (A/^n).a = A.(a+^n) & (A/^n).b = A.(b+^n) by CARD_2:36;
        A7: dom A -n+n = len(A/^n)+n by A1, AFINSQ_2:7
          .= len(A/^n)+^n by CARD_2:36;
        m in Segm k by A4;
        then m+n < k+n by NAT_1:44, XREAL_1:6;
        then m+n in Segm(k+n) by NAT_1:44;
        then m+n in b+^n by CARD_2:36;
        then A8: a+^n in b+^n by CARD_2:36;
        k in Segm dom(A/^n) by A4;
        then k+n < dom(A/^n)+n by NAT_1:44, XREAL_1:6;
        then k+n in Segm(dom(A/^n)+n) by NAT_1:44;
        then b+^n in dom(A/^n)+n by CARD_2:36;
        then b+^n in dom A by A7, CARD_2:36;
        hence omega-exponent((A/^n).b) in omega-exponent((A/^n).a)
          by A6, A8, ORDINAL5:def 11;
      end;
      hence thesis by A2, ORDINAL5:def 11;
    end;
  end;
end;

registration
  cluster natural-valued -> Ordinal-yielding for Sequence;
  coherence by VALUED_0:def 6;
end;

registration
  cluster limit_ordinal -> zero for Nat;
  coherence;
  cluster non limit_ordinal for Ordinal;
  existence
  proof
    take the non zero Nat;
    thus thesis;
  end;
end;

registration
  let n, m be Nat;
  identify n \/ m with max(n,m);
  correctness
  proof
    per cases by ORDINAL1:14;
    suppose A1: n in m;
      then A2: n \/ m = m by ORDINAL1:def 2, XBOOLE_1:12;
      n in Segm m by A1;
      hence thesis by A2, NAT_1:44, XXREAL_0:def 10;
    end;
    suppose n = m;
      hence thesis;
    end;
    suppose A3: m in n;
      then A4: n \/ m = n by ORDINAL1:def 2, XBOOLE_1:12;
      m in Segm n by A3;
      hence thesis by A4, NAT_1:44, XXREAL_0:def 10;
    end;
  end;
  identify n /\ m with min(n,m);
  correctness
  proof
    per cases by ORDINAL1:14;
    suppose A5: n in m;
      then A6: n /\ m = n by ORDINAL1:def 2, XBOOLE_1:28;
      n in Segm m by A5;
      hence thesis by A6, NAT_1:44, XXREAL_0:def 9;
    end;
    suppose n = m;
      hence thesis;
    end;
    suppose A7: m in n;
      then A8: n /\ m = m by ORDINAL1:def 2, XBOOLE_1:28;
      m in Segm n by A7;
      hence thesis by A8, NAT_1:44, XXREAL_0:def 9;
    end;
  end;
end;

begin :: About the Cantor Normal Form

:: absorption law of ordinal numbers
theorem Th30:
  for a, b being Ordinal holds a +^ b = b iff omega *^ a c= b
proof
  let a, b be Ordinal;
  hereby
    assume A1: a +^ b = b;
    defpred P[Nat] means $1 *^ a +^ b = b;
    0 *^ a = 0 by ORDINAL2:35;
    then A2: P[0] by ORDINAL2:30;
    A3: for n being Nat st P[n] holds P[n+1]
    proof
      let n be Nat;
      assume A4: P[n];
      thus (n+1) *^ a +^ b = succ n *^ a +^ b by Lm5
        .= (n *^ a +^ a) +^ b by ORDINAL2:36
        .= b by A1, A4, ORDINAL3:30;
    end;
    A5: for n being Nat holds P[n] from NAT_1:sch 2(A2,A3);
    per cases;
    suppose a = {};
      then omega *^ a = {} by ORDINAL2:38;
      hence omega *^ a c= b;
    end;
    suppose A6: a <> {};
      reconsider fi = id omega as Ordinal-Sequence;
      A7: sup fi = sup rng fi by ORDINAL2:def 5
        .= omega by ORDINAL2:18;
      set psi = fi *^ a;
      A8: dom fi = dom psi by ORDINAL3:def 4;
      for A, B being Ordinal st A in dom fi & B = fi.A
        holds psi.A = B *^ a by ORDINAL3:def 4;
      then A9: sup psi = omega *^ a by A6, A7, A8, ORDINAL3:42;
      now
        let A be Ordinal;
        assume A in rng psi;
        then consider n being object such that
          A10: n in dom psi & psi.n = A by FUNCT_1:def 3;
        reconsider n as Nat by A8, A10;
        A = fi.n *^ a by A8, A10, ORDINAL3:def 4
          .= n *^ a by A8, A10, FUNCT_1:18;
        then A11: A +^ b = b by A5;
        then A12: A c= b by ORDINAL3:24;
        A <> b
        proof
          assume A = b;
          then 2 *^ b = A +^ b by Th2
            .= 1 *^ b by A11, ORDINAL2:39;
          hence contradiction by A1, A6, ORDINAL3:33;
        end;
        hence A in b by A12, XBOOLE_0:def 8, ORDINAL1:11;
      end;
      then sup rng psi c= b by ORDINAL2:20;
      hence omega *^ a c= b by A9, ORDINAL2:def 5;
    end;
  end;
  assume omega *^ a c= b;
  then consider c being Ordinal such that
    A13: b = omega *^ a +^ c by ORDINAL3:27;
  thus a +^ b = 1 *^ a +^ (omega *^ a +^ c) by A13, ORDINAL2:39
    .= (1 *^ a +^ omega *^ a) +^ c by ORDINAL3:30
    .= (1 +^ omega) *^ a +^ c by ORDINAL3:46
    .= b by A13, CARD_2:74;
end;

theorem Th31:
  for A being non empty Cantor-normal-form Ordinal-Sequence, a being object
  st a in dom A holds omega -exponent last A c= omega -exponent(A.a)
proof
  let A be non empty Cantor-normal-form Ordinal-Sequence, a be object;
  assume A1: a in dom A;
  consider A0 being Cantor-normal-form Ordinal-Sequence,
    a0 being Cantor-component Ordinal such that
    A2: A = A0 ^ <% a0 %> by Th29;
  per cases by A1, A2, AFINSQ_1:20;
  suppose A3: a in dom A0;
    0 in 1 by CARD_1:49, TARSKI:def 1;
    then 0 in dom <% a0 %> by AFINSQ_1:33;
    then len A0 + 0 in dom A by A2, AFINSQ_1:23;
    then omega -exponent(A.len A0) in omega -exponent(A.a)
      by A3, ORDINAL5:def 11;
    then omega -exponent a0 in omega -exponent(A.a) by A2, AFINSQ_1:36;
    then omega -exponent last A in omega -exponent(A.a) by A2, AFINSQ_1:92;
    hence thesis by ORDINAL1:def 2;
  end;
  suppose ex n being Nat st n in dom <% a0 %> & a = len A0 + n;
    then consider n being Nat such that
      A4: n in dom <% a0 %> & a = len A0 + n;
    n in Segm 1 by A4, AFINSQ_1:33;
    then n = 0 by CARD_1:49, TARSKI:def 1;
    then A.a = a0 by A2, A4, AFINSQ_1:36
      .= last A by A2, AFINSQ_1:92;
    hence thesis;
  end;
end;

theorem Th32:
  for A being non empty Cantor-normal-form Ordinal-Sequence, a being object
  st a in dom A holds omega -exponent(A.a) c= omega -exponent(A.0)
proof
  let A be non empty Cantor-normal-form Ordinal-Sequence, a be object;
  assume A1: a in dom A;
  consider a0 being Cantor-component Ordinal,
    A0 being Cantor-normal-form Ordinal-Sequence such that
    A2: A = <% a0 %> ^ A0 by ORDINAL5:67;
  per cases by A1, A2, AFINSQ_1:20;
  suppose a in dom <% a0 %>;
    then a in Segm 1 by AFINSQ_1:33;
    hence thesis by CARD_1:49, TARSKI:def 1;
  end;
  suppose ex n being Nat st n in dom A0 & a = len <% a0 %> + n;
    then consider n being Nat such that
      A3: n in dom A0 & a = len <% a0 %> + n;
    reconsider n1 = a as Nat by A3;
    n1 = n+1 by A3, AFINSQ_1:34;
    then 0 in Segm n1 by NAT_1:44;
    then A4: 0 in n1;
    n1 in dom A by A2, A3, AFINSQ_1:23;
    hence thesis by A4, ORDINAL5:def 11, ORDINAL1:def 2;
  end;
end;

:: this implies ORDINAL5:68
theorem Th33:
  for A, B being non empty Cantor-normal-form Ordinal-Sequence
  st omega -exponent(B.0) in omega -exponent last A
  holds A^B is Cantor-normal-form
proof
  let A, B be non empty Cantor-normal-form Ordinal-Sequence;
  assume A1: omega -exponent(B.0) in omega -exponent last A;
  A2: now
    let a be Ordinal;
    assume a in dom(A^B);
    then per cases by AFINSQ_1:20;
    suppose A3: a in dom A;
      then A.a = (A^B).a by AFINSQ_1:def 3;
      hence (A^B).a is Cantor-component by A3, ORDINAL5:def 11;
    end;
    suppose ex n being Nat st n in dom B & a = len A + n;
      then consider n being Nat such that
        A4: n in dom B & a = len A + n;
      B.n = (A^B).a by A4, AFINSQ_1:def 3;
      hence (A^B).a is Cantor-component by A4, ORDINAL5:def 11;
    end;
  end;
  for a,b being Ordinal st a in b & b in dom(A^B)
    holds omega -exponent((A^B).b) in omega-exponent((A^B).a)
  proof
    let a,b be Ordinal;
    assume A5: a in b & b in dom(A^B);
    then per cases by AFINSQ_1:20;
    suppose A6: b in dom A;
      then A7: (A^B).b = A.b & a in dom A by A5, ORDINAL1:10, AFINSQ_1:def 3;
      then (A^B).a = A.a by AFINSQ_1:def 3;
      hence thesis by A5, A6, A7, ORDINAL5:def 11;
    end;
    suppose ex n being Nat st n in dom B & b = len A + n;
      then consider n being Nat such that
        A8: n in dom B & b = len A + n;
      a in dom(A^B) by A5, ORDINAL1:10;
      then per cases by AFINSQ_1:20;
      suppose A9: a in dom A;
        then omega -exponent last A c= omega -exponent(A.a) by Th31;
        then A10: omega -exponent(B.0) in omega -exponent(A.a) by A1;
        omega -exponent(B.n) c= omega -exponent(B.0) by A8, Th32;
        then omega -exponent(B.n) in omega -exponent(A.a) by A10, ORDINAL1:12;
        then omega -exponent((A^B).b) in omega -exponent(A.a)
          by A8, AFINSQ_1:def 3;
        hence thesis by A9, AFINSQ_1:def 3;
      end;
      suppose ex m being Nat st m in dom B & a = len A + m;
        then consider m being Nat such that
          A11: m in dom B & a = len A + m;
        m in n
        proof
          assume not m in n;
          then len A +^ n c= len A +^ m by ORDINAL1:16, ORDINAL2:33;
          then b c= len A +^ m by A8, CARD_2:36;
          then b c= a by A11, CARD_2:36;
          then a in a by A5;
          hence contradiction;
        end;
        then omega -exponent(B.n) in omega -exponent(B.m)
          by A8, ORDINAL5:def 11;
        then omega -exponent((A^B).b) in omega -exponent(B.m)
          by A8, AFINSQ_1:def 3;
        hence thesis by A11, AFINSQ_1:def 3;
      end;
    end;
  end;
  hence thesis by A2, ORDINAL5:def 11;
end;

Lm6:
  for A being decreasing Ordinal-Sequence, n being Nat st len A = n+1
  holds rng(A|n) = rng A \ {A.n}
proof
  let A be decreasing Ordinal-Sequence, n be Nat;
  assume A1: len A = n+1;
  not A.n in rng(A|n)
  proof
    assume A.n in rng(A|n);
    then consider x being object such that
      A2: x in dom(A|n) & (A|n).x = A.n by FUNCT_1:def 3;
    A3: A.x = A.n by A2, FUNCT_1:47;
    A4: x in dom A & x in n by A2, RELAT_1:57;
    n+0 < n+1 by XREAL_1:8;
    then n in dom A by A1, AFINSQ_1:86;
    then n in n by A3, A4, FUNCT_1:def 4;
    hence contradiction;
  end;
  then A5: rng(A|n) c= rng A \ {A.n} by RELAT_1:70, ZFMISC_1:34;
  now
    let y be object;
    assume y in rng A \ {A.n};
    then A6: y in rng A & y <> A.n by ZFMISC_1:56;
    then consider x being object such that
      A7: x in dom A & A.x = y by FUNCT_1:def 3;
    dom A = succ n by A1, Lm5;
    then x in n by A6, A7, ORDINAL1:8;
    hence y in rng(A|n) by A7, FUNCT_1:50;
  end;
  then rng A \ {A.n} c= rng(A|n) by TARSKI:def 3;
  hence thesis by A5, XBOOLE_0:def 10;
end;

Lm7:
  for A, B being decreasing Ordinal-Sequence, n being Nat
  st len A = n+1 & rng A = rng B holds A.n = B.n
proof
  let A, B be decreasing Ordinal-Sequence, n be Nat;
  assume A1: len A = n+1 & rng A = rng B;
  A2: dom A = card dom A
    .= card rng B by A1, CARD_1:70
    .= card dom B by CARD_1:70
    .= dom B;
  n in succ n by ORDINAL1:6;
  then A3: n in n+1 by Lm5;
  then A.n in rng B by A1, FUNCT_1:3;
  then consider m being object such that
    A4: m in dom B & B.m = A.n by FUNCT_1:def 3;
  B.n in rng A by A1, A2, A3, FUNCT_1:3;
  then consider k being object such that
    A5: k in dom A & A.k = B.n by FUNCT_1:def 3;
  reconsider m, k as Nat by A4, A5;
  per cases by ORDINAL1:14;
  suppose m in k; :: leads to contradiction
    then A6: A.k in A.m & B.k in B.m by A2, A5, ORDINAL5:def 1;
    k in succ n by A1, A5, Lm5;
    then per cases by ORDINAL1:8;
    suppose k in n;
      then A.n in A.k & B.n in B.k by A1, A2, A3, ORDINAL5:def 1;
      hence thesis by A4, A5, A6, ORDINAL1:10;
    end;
    suppose k = n; :: is still nonsense, but leads to result faster
      hence thesis by A5;
    end;
  end;
  suppose A7: m = k;
    k in succ n by A1, A5, Lm5;
    then per cases by ORDINAL1:8;
    suppose k in n; :: leads to contradiction
      then A.n in A.k & B.n in B.k by A1, A2, A3, ORDINAL5:def 1;
      hence thesis by A4, A5, A7;
    end;
    suppose k = n;
      hence thesis by A4, A7;
    end;
  end;
  suppose k in m; :: leads to contradiction, same as above
    then A8: A.m in A.k & B.m in B.k by A2, A4, ORDINAL5:def 1;
    m in succ n by A1, A2, A4, Lm5;
    then per cases by ORDINAL1:8;
    suppose m in n;
      then A.n in A.m & B.n in B.m by A1, A2, A3, ORDINAL5:def 1;
      hence thesis by A4, A5, A8, ORDINAL1:10;
    end;
    suppose m = n;
      hence thesis by A4;
    end;
  end;
end;

theorem Th34:
  for A, B being decreasing Ordinal-Sequence st rng A = rng B holds A = B
proof
  defpred P[Nat] means for A, B being decreasing Ordinal-Sequence
    st len A = $1 & rng A = rng B holds A = B;
  A1: P[0]
  proof
    let A, B be decreasing Ordinal-Sequence;
    assume A2: len A = 0 & rng A = rng B;
    then A is empty;
    hence thesis by A2;
  end;
  A3: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A4: P[n];
    let A, B be decreasing Ordinal-Sequence;
    assume A5: len A = n+1 & rng A = rng B;
    dom A = card dom A
      .= card rng B by A5, CARD_1:70
      .= card dom B by CARD_1:70
      .= dom B;
    then A6: len B = n+1 by A5;
    set A0 = A | n, B0 = B | n;
    rng A0 = rng A \ {A.n} & rng B0 = rng B \ {B.n} by A5, A6, Lm6;
    then A7: rng A0 = rng B0 by A5, Lm7;
    A8: len A0 = dom A /\ n by RELAT_1:61
      .= (succ n) /\ n by A5, Lm5
      .= n by Th1;
    thus A = A0 ^ <% A.n %> by A5, AFINSQ_1:56
      .= B0 ^ <% A.n %> by A4, A7, A8
      .= B0 ^ <% B.n %> by A5, Lm7
      .= B by A6, AFINSQ_1:56;
  end;
  A9: for n being Nat holds P[n] from NAT_1:sch 2(A1,A3);
  let A, B be decreasing Ordinal-Sequence;
  assume A10: rng A = rng B;
  len A is Nat;
  hence thesis by A9, A10;
end;

registration
  let a be Ordinal;
  cluster exp(omega,a) -> Cantor-component;
  coherence
  proof
    0 in Segm 1 by CARD_1:49, TARSKI:def 1;
    then 1*^exp(omega,a) is Cantor-component by ORDINAL5:def 9;
    hence thesis by ORDINAL2:39;
  end;
  let n be non zero Nat;
  cluster n *^ exp(omega,a) -> Cantor-component;
  coherence
  proof
    0 in Segm n by ORDINAL3:8;
    hence thesis by ORDINAL5:def 9;
  end;
end;

registration
  cluster non zero -> Cantor-component for Nat;
  coherence
  proof
    let n be Nat;
    assume A1: n is non zero;
    n = n *^ 1 by ORDINAL2:39
      .= n *^ exp(omega qua Ordinal,0) by ORDINAL2:43;
    hence thesis by A1;
  end;
end;

registration
  let c be Cantor-component Ordinal;
  cluster <% c %> -> Cantor-normal-form;
  coherence
  proof
    A1: now
      let a be Ordinal;
      assume a in dom <% c %>;
      then a in Segm 1 by AFINSQ_1:33;
      then a = 0 by CARD_1:49, TARSKI:def 1;
      hence <% c %>.a is Cantor-component;
    end;
    now
      let a, b be Ordinal;
      assume A2: a in b & b in dom <% c %>;
      then b in Segm 1 by AFINSQ_1:33;
      hence omega-exponent(<%c%>.b) in omega-exponent(<%c%>.a)
        by A2, CARD_1:49, TARSKI:def 1;
    end;
    hence thesis by A1, ORDINAL5:def 11;
  end;
end;

theorem Th35:
  for c, d being Cantor-component Ordinal
  st omega -exponent d in omega -exponent c
  holds <% c, d %> is Cantor-normal-form
proof
  let c, d be Cantor-component Ordinal;
  assume omega -exponent d in omega -exponent c;
  then omega -exponent(<%d%>.0) in omega -exponent last({}^<%c%>)
    by AFINSQ_1:92;
  then <%c%>^<%d%> is Cantor-normal-form by Th33;
  hence thesis by AFINSQ_1:def 5;
end;

Lm8:
  for a being non empty Ordinal, n,m being non zero Nat
  holds <% n *^ exp(omega,a), m %> is Cantor-normal-form
proof
  let a be non empty Ordinal, n,m be non zero Nat;
  0 c< n by XBOOLE_1:2, XBOOLE_0:def 8;
  then 0 in n & n in omega by ORDINAL1:11, ORDINAL1:def 12;
  then A1: omega -exponent(n *^ exp(omega,a)) = a by ORDINAL5:58;
  A2: omega -exponent m = 0 by Th21, ORDINAL1:def 12;
  0 c< a by XBOOLE_1:2, XBOOLE_0:def 8;
  hence thesis by A1, A2, Th35, ORDINAL1:11;
end;

registration
  let a be non empty Ordinal, m be non zero Nat;
  cluster <% exp(omega,a), m %> -> Cantor-normal-form;
  coherence
  proof
    1 *^ exp(omega,a) = exp(omega,a) by ORDINAL2:39;
    hence thesis by Lm8;
  end;
  let n be non zero Nat;
  cluster <% n *^ exp(omega,a), m %> -> Cantor-normal-form;
  coherence by Lm8;
end;

theorem
  for c, d, e being Cantor-component Ordinal
  st omega -exponent d in omega -exponent c &
    omega -exponent e in omega -exponent d
  holds <% c, d, e %> is Cantor-normal-form
proof
  let c, d, e be Cantor-component Ordinal;
  assume that
    A1: omega -exponent d in omega -exponent c and
    A2: omega -exponent e in omega -exponent d;
  A3: <% d, e %> is Cantor-normal-form by A2, Th35;
  omega -exponent(<%d,e%>.0) in omega -exponent last({}^<%c%>)
    by A1, AFINSQ_1:92;
  then <%c%>^<%d,e%> is Cantor-normal-form by A3, Th33;
  hence thesis by AFINSQ_1:37;
end;

theorem Th37:
  for A being non empty Cantor-normal-form Ordinal-Sequence
  for b being Ordinal, n being non zero Nat
  st b in omega -exponent last A
  holds A ^ <% n*^exp(omega,b) %> is Cantor-normal-form
proof
  let A be non empty Cantor-normal-form Ordinal-Sequence;
  let b be Ordinal, n be non zero Nat;
  assume A1: b in omega -exponent last A;
  0 c< n by XBOOLE_1:2, XBOOLE_0:def 8;
  then 0 in n & n in omega by ORDINAL1:11, ORDINAL1:def 12;
  then omega-exponent(<% n *^ exp(omega,b) %>.0) in omega-exponent last A
    by A1, ORDINAL5:58;
  hence thesis by Th33;
end;

theorem
  for A being non empty Cantor-normal-form Ordinal-Sequence
  for b being Ordinal, n being non zero Nat
  st omega -exponent last A <> 0 holds A ^ <% n %> is Cantor-normal-form
proof
  let A be non empty Cantor-normal-form Ordinal-Sequence;
  let b be Ordinal, n be non zero Nat;
  assume omega -exponent last A <> 0;
  then 0 c< omega -exponent last A by XBOOLE_1:2, XBOOLE_0:def 8;
  then A1: 0 in omega -exponent last A by ORDINAL1:11;
  A ^ <% n*^exp(omega,0 qua Ordinal) %> = A ^ <% n*^1 %> by ORDINAL2:43
    .= A ^ <% n %> by ORDINAL2:39;
  hence thesis by A1, Th37;
end;

:: variant of ORDINAL5:68
theorem Th39:
  for A being non empty Cantor-normal-form Ordinal-Sequence
  for b being Ordinal, n being non zero Nat
  st omega -exponent(A.0) in b
  holds <% n*^exp(omega,b) %> ^ A is Cantor-normal-form
proof
  let A be non empty Cantor-normal-form Ordinal-Sequence;
  let b be Ordinal, n be non zero Nat;
  assume A1: omega -exponent(A.0) in b;
  0 c< n by XBOOLE_1:2, XBOOLE_0:def 8;
  then 0 in n & n in omega by ORDINAL1:11, ORDINAL1:def 12;
  then omega -exponent(A.0) in omega -exponent(n*^exp(omega,b))
    by A1, ORDINAL5:58;
  then omega -exponent(A.0) in omega -exponent last({}^<%n*^exp(omega,b)%>)
    by AFINSQ_1:92;
  hence thesis by Th33;
end;

:: closure of ordinal addition
theorem Th40:
  for a1, a2, b being Ordinal st a1 in exp(omega,b) & a2 in exp(omega,b)
  holds a1 +^ a2 in exp(omega,b)
proof
  let a1, a2, b be Ordinal;
  assume A1: a1 in exp(omega,b) & a2 in exp(omega,b);
  per cases;
  suppose A2: 0 in a1 & 0 in a2;
    set d1 = omega -exponent a1, d2 = omega -exponent a2;
    consider n1 being Nat, c1 being Ordinal such that
      A3: a1 = n1 *^ exp(omega, d1) +^ c1 & 0 in Segm n1 & c1 in exp(omega, d1)
      by A2, ORDINAL5:62;
    consider n2 being Nat, c2 being Ordinal such that
      A4: a2 = n2 *^ exp(omega, d2) +^ c2 & 0 in Segm n2 & c2 in exp(omega, d2)
      by A2, ORDINAL5:62;
    A5: d1 in b
    proof
      assume not d1 in b;
      then A6: exp(omega,b) c= exp(omega,d1) by ORDINAL1:16, ORDINAL4:27;
      1 c= n1 by ORDINAL1:21, Lm1, A3;
      then 1 *^ exp(omega,b) c= n1 *^ exp(omega,d1) by A6, ORDINAL3:20;
      then A7: exp(omega,b) c= n1 *^ exp(omega,d1) by ORDINAL2:39;
      0 c= c1;
      then exp(omega,b) +^ 0 c= a1 by A3, A7, ORDINAL3:18;
      then exp(omega,b) c= a1 by ORDINAL2:27;
      hence contradiction by A1, ORDINAL1:5;
    end;
    A8: d2 in b
    proof
      assume not d2 in b;
      then A9: exp(omega,b) c= exp(omega,d2) by ORDINAL1:16, ORDINAL4:27;
      1 c= n2 by ORDINAL1:21, Lm1, A4;
      then 1 *^ exp(omega,b) c= n2 *^ exp(omega,d2) by A9, ORDINAL3:20;
      then A10: exp(omega,b) c= n2 *^ exp(omega,d2) by ORDINAL2:39;
      0 c= c2;
      then exp(omega,b) +^ 0 c= a2 by A4, A10, ORDINAL3:18;
      then exp(omega,b) c= a2 by ORDINAL2:27;
      hence contradiction by A1, ORDINAL1:5;
    end;
    a1 in n1 *^ exp(omega, d1) +^ exp(omega, d1) by A3, ORDINAL2:32;
    then A11: a1 in (succ n1) *^ exp(omega, d1) by ORDINAL2:36;
    a2 in n2 *^ exp(omega, d2) +^ exp(omega, d2) by A4, ORDINAL2:32;
    then A12: a2 in (succ n2) *^ exp(omega, d2) by ORDINAL2:36;
    per cases by ORDINAL1:16;
    suppose d1 c= d2;
      then exp(omega,d1) c= exp(omega,d2) by ORDINAL4:27;
      then (succ n1) *^ exp(omega,d1) c= (succ n1) *^ exp(omega,d2)
        by ORDINAL2:42;
      then a1 +^ a2 in (succ n1) *^ exp(omega,d2) +^
        (succ n2) *^ exp(omega,d2) by A11, A12, ORDINAL3:17;
      then A13: a1 +^ a2 in (succ n1 +^ succ n2)*^exp(omega,d2) by ORDINAL3:46;
      (succ n1 +^ succ n2)*^exp(omega,d2) in exp(omega,b) by A8, ORDINAL5:7;
      hence thesis by A13, ORDINAL1:10;
    end;
    suppose d2 in d1;
      then exp(omega,d2) c= exp(omega,d1) by ORDINAL1:def 2, ORDINAL4:27;
      then (succ n2) *^ exp(omega,d2) c= (succ n2) *^ exp(omega,d1)
        by ORDINAL2:42;
      then a1 +^ a2 in (succ n1) *^ exp(omega,d1) +^
        (succ n2) *^ exp(omega,d1) by A11, A12, ORDINAL3:17;
      then A14: a1 +^ a2 in (succ n1 +^ succ n2)*^exp(omega,d1) by ORDINAL3:46;
      (succ n1 +^ succ n2)*^exp(omega,d1) in exp(omega,b) by A5, ORDINAL5:7;
      hence thesis by A14, ORDINAL1:10;
    end;
  end;
  suppose not 0 in a1;
    then a1 = 0 by ORDINAL1:16, XBOOLE_1:3;
    hence thesis by A1, ORDINAL2:30;
  end;
  suppose not 0 in a2;
    then a2 = 0 by ORDINAL1:16, XBOOLE_1:3;
    hence thesis by A1, ORDINAL2:27;
  end;
end;

theorem Th41:
  for A being finite Ordinal-Sequence, b being Ordinal
  st for a being Ordinal st a in dom A holds A.a in exp(omega,b)
  holds Sum^ A in exp(omega,b)
proof
  defpred P[Nat] means for A being finite Ordinal-Sequence, b being Ordinal
    st dom A = $1 & for a being Ordinal st a in dom A holds A.a in exp(omega,b)
    holds Sum^ A in exp(omega,b);
  A1: P[0]
  proof
    let A be finite Ordinal-Sequence, b be Ordinal;
    assume that A2: dom A = 0 and
      for a being Ordinal st a in dom A holds A.a in exp(omega,b);
    A = {} by A2;
    then Sum^ A in 1 by ORDINAL5:52, CARD_1:49, TARSKI:def 1;
    then A3: Sum^ A in exp(omega,0 qua Ordinal) by ORDINAL2:43;
    per cases;
    suppose 0 in b;
      then exp(omega,0 qua Ordinal) in exp(omega,b) by ORDINAL4:24;
      hence thesis by A3, ORDINAL1:10;
    end;
    suppose not 0 in b;
      hence thesis by A3, ORDINAL1:16, XBOOLE_1:3;
    end;
  end;
  A4: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A5: P[n];
    let A be finite Ordinal-Sequence, b be Ordinal;
    assume that A6: dom A = n+1 and
      A7: for a being Ordinal st a in dom A holds A.a in exp(omega,b);
    A <> {} by A6;
    then consider A0 being XFinSequence, a0 being object such that
      A8: A = A0 ^ <% a0 %> by AFINSQ_1:40;
    consider c being Ordinal such that
      A9: rng A c= c by ORDINAL2:def 4;
    rng A0 c= rng A by A8, AFINSQ_1:24;
    then reconsider A0 as finite Ordinal-Sequence
      by A9, XBOOLE_1:1, ORDINAL2:def 4;
    rng <% a0 %> c= rng A by A8, AFINSQ_1:25;
    then {a0} c= rng A by AFINSQ_1:33;
    then a0 in rng A by ZFMISC_1:31;
    then reconsider a0 as Ordinal;
    A10: len A0 + 1 = n+1 by A6, A8, AFINSQ_1:75;
    now
      let a be Ordinal;
      assume A11: a in dom A0;
      then A12: A0.a = A.a by A8, AFINSQ_1:def 3;
      dom A0 c= dom A by A8, AFINSQ_1:21;
      hence A0.a in exp(omega,b) by A7, A11, A12;
    end;
    then A13: Sum^ A0 in exp(omega,b) by A5, A10;
    n+0 < n+1 by XREAL_1:8;
    then A.n in exp(omega,b) by A7, AFINSQ_1:86, A6;
    then A14: a0 in exp(omega,b) by A8, A10, AFINSQ_1:36;
    Sum^ A = Sum^ A0 +^ a0 by A8, ORDINAL5:54;
    hence thesis by A13, A14, Th40;
  end;
  A15: for n being Nat holds P[n] from NAT_1:sch 2(A1,A4);
  let A be finite Ordinal-Sequence, b be Ordinal;
  thus thesis by A15;
end;

:: variant of ORDINAL5:7
theorem Th42:
  for a, b being Ordinal, n being Nat st a in exp(omega,b)
  holds n *^ a in exp(omega,b)
proof
  let a, b be Ordinal, n be Nat;
  assume a in exp(omega,b);
  then for c be Ordinal st c in dom(n --> a) holds
    (n --> a).c in exp(omega,b) by FUNCOP_1:7;
  then Sum^(n --> a) in exp(omega,b) by Th41;
  hence thesis by Th26;
end;

theorem Th43:
  for A being finite Ordinal-Sequence, a being Ordinal
  st <% a %> ^ A is Cantor-normal-form
  holds Sum^ A in exp(omega, omega -exponent a)
proof
  let A be finite Ordinal-Sequence, a be Ordinal;
  assume <% a %> ^ A is Cantor-normal-form;
  then reconsider B = <% a %> ^ A as Cantor-normal-form Ordinal-Sequence;
  now
    let c be Ordinal;
    assume A1: c in dom A;
    then reconsider n = c as Nat;
    len <% a %> + n in dom B by A1, AFINSQ_1:23;
    then A2: n + 1 in dom B by AFINSQ_1:34;
    B.(len <% a %> + n) = A.n by A1, AFINSQ_1:def 3;
    then A3: A.n = B.(n+1) by AFINSQ_1:34;
    0 in Segm (n+1) by NAT_1:44;
    then omega -exponent(B.(n+1)) in omega -exponent(B.0)
      by A2, ORDINAL5:def 11;
    then exp(omega,omega -exponent(A.n)) in exp(omega,omega -exponent(B.0))
      by A3, ORDINAL4:24;
    then A4: exp(omega,omega -exponent(A.n)) in exp(omega,omega -exponent a)
      by AFINSQ_1:35;
    B.(n+1) is Cantor-component by A2, ORDINAL5:def 11;
    then consider b being Ordinal, m being Nat such that
      A5: 0 in Segm m & A.n = m *^ exp(omega,b) by A3, ORDINAL5:def 9;
    0 in m & m in omega by A5, ORDINAL1:def 12;
    then omega -exponent(A.n) = b by A5, ORDINAL5:58;
    hence A.c in exp(omega,omega -exponent a) by A4, A5, Th42;
  end;
  hence Sum^ A in exp(omega,omega -exponent a) by Th41;
end;

theorem Th44:
  for A being Cantor-normal-form Ordinal-Sequence
  holds omega -exponent Sum^ A = omega -exponent (A.0)
proof
  defpred P[Nat] means for A being Cantor-normal-form Ordinal-Sequence
    st len A = $1 holds omega -exponent Sum^ A = omega -exponent (A.0);
  A1: P[0]
  proof
    let A be Cantor-normal-form Ordinal-Sequence;
    assume len A = 0;
    then A = {};
    hence omega -exponent Sum^ A = omega -exponent (A.0) by ORDINAL5:52;
  end;
  A3: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A4: P[n];
    let A be Cantor-normal-form Ordinal-Sequence;
    assume A5: len A = n+1;
    then A <> {};
    then consider c being Cantor-component Ordinal,
      B being Cantor-normal-form Ordinal-Sequence such that
      A6: A = <% c %> ^ B by ORDINAL5:67;
    per cases;
    suppose A7: B = {};
      Sum^ A = c +^ Sum^ B by A6, ORDINAL5:55
        .= A.0 by A6, A7, ORDINAL5:52, ORDINAL2:27;
      hence thesis;
    end;
    suppose A8: B <> {};
      then {} c< dom B by XBOOLE_1:2, XBOOLE_0:def 8;
      then A9: 0 in dom B by ORDINAL1:11;
      n+1 = len <% c %> + len B by A5, A6, AFINSQ_1:17
        .= len B + 1 by AFINSQ_1:34;
      then A10: omega -exponent Sum^ B = omega -exponent(B.0) by A4;
      A.(len<%c%>+0) = B.0 by A6, A9, AFINSQ_1:def 3;
      then A11: A.1 = B.0 by AFINSQ_1:34;
      len<%c%>+0 in dom A by A6, A9, AFINSQ_1:23;
      then A12: 1 in dom A by AFINSQ_1:34;
      0 in 1 by CARD_1:49, TARSKI:def 1;
      then A13: omega -exponent Sum^ B in omega -exponent(A.0)
        by A10, A11, A12, ORDINAL5:def 11;
      A14: omega -exponent(A.0) c= omega -exponent Sum^ A by Th22, ORDINAL5:56;
      consider d being Ordinal, m being Nat such that
        A15: 0 in Segm m & c = m *^ exp(omega,d) by ORDINAL5:def 9;
      0 in m & m in omega by A15, ORDINAL1:def 12;
      then omega -exponent c = d by A15, ORDINAL5:58;
      then A16: omega -exponent(A.0) = d by A6, AFINSQ_1:35;
      assume omega -exponent Sum^ A <> omega -exponent(A.0);
      then omega -exponent(A.0) in omega -exponent Sum^ A
        by A14, XBOOLE_0:def 8, ORDINAL1:11;
      then A17: exp(omega,d) in exp(omega, omega -exponent Sum^ A)
        by A16, ORDINAL4:24;
      then A18: c in exp(omega, omega -exponent Sum^ A) by A15, Th42;
      set e = omega -exponent Sum^ B;
      A19: 0 in Sum^ B
      proof
        assume not 0 in Sum^ B;
        then Sum^ B c= 0 by ORDINAL1:16;
        hence contradiction by A8;
      end;
      A20: Sum^ B in exp(omega, succ e)
      proof
        assume not Sum^ B in exp(omega, succ e);
        then exp(omega, succ e) c= Sum^ B by ORDINAL1:16;
        then succ e c= e by A19, ORDINAL5:def 10;
        hence contradiction by ORDINAL1:5, ORDINAL1:6;
      end;
      exp(omega,succ e) c= exp(omega,d) by A13, A16, ORDINAL1:21, ORDINAL4:27;
      then Sum^ B in exp(omega,omega-exponent Sum^ A) by A17, A20, ORDINAL1:10;
      then c +^ Sum^ B in exp(omega, omega -exponent Sum^ A) by A18, Th40;
      then A22: Sum^ A in exp(omega, omega-exponent Sum^ A) by A6, ORDINAL5:55;
      Sum^ B c= c +^ Sum^ B by ORDINAL3:24;
      then Sum^ B c= Sum^ A by A6, ORDINAL5:55;
      then exp(omega, omega-exponent Sum^ A) c= Sum^ A by A19, ORDINAL5:def 10;
      then Sum^ A in Sum^ A by A22;
      hence contradiction;
    end;
  end;
  A23: for n being Nat holds P[n] from NAT_1:sch 2(A1,A3);
  let A be Cantor-normal-form Ordinal-Sequence;
  len A is Nat;
  hence thesis by A23;
end;

theorem Th45:
  for A, B being Cantor-normal-form Ordinal-Sequence
  st Sum^ A = Sum^ B holds A = B
proof
  defpred P[Nat] means for A, B being Cantor-normal-form Ordinal-Sequence
    st dom A \/ dom B = $1 & Sum^ A = Sum^ B holds A = B;
  A1: P[0]
  proof
    let A, B be Cantor-normal-form Ordinal-Sequence;
    assume dom A \/ dom B = 0 & Sum^ A = Sum^ B;
    then A is empty & B is empty;
    hence thesis;
  end;
  A2: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A3: P[n];
    let A, B be Cantor-normal-form Ordinal-Sequence;
    assume A4: dom A \/ dom B = n+1 & Sum^ A = Sum^ B;
    :: A and B must be non empty
    dom A <> {}
    proof
      assume A5: dom A = {};
      then A is empty;
      then B = {} by A4, ORDINAL5:52;
      hence contradiction by A4, A5;
    end;
    then A6: A <> {};
    dom B <> {}
    proof
      assume dom B = {};
      then B is empty;
      hence contradiction by A4, A6, ORDINAL5:52;
    end;
    then B <> {};
    :: then we can split the sums and use the induction hypothesis
    then consider b being Cantor-component Ordinal,
      B0 being Cantor-normal-form Ordinal-Sequence such that
      A7: B = <% b %> ^ B0 by ORDINAL5:67;
    consider a being Cantor-component Ordinal,
      A0 being Cantor-normal-form Ordinal-Sequence such that
      A8: A = <% a %> ^ A0 by A6, ORDINAL5:67;
    A9: a +^ Sum^ A0 = Sum^ B by A4, A8, ORDINAL5:55
      .= b +^ Sum^ B0 by A7, ORDINAL5:55;
    A10: a = b
    proof
      A11: A.0 = a & B.0 = b by A7, A8, AFINSQ_1:35;
      then A12: omega -exponent a = omega -exponent Sum^ B by A4, Th44
        .= omega -exponent b by A11, Th44;
      consider d1 being Ordinal, n1 being Nat such that
        A13: 0 in Segm n1 & a = n1 *^ exp(omega,d1) by ORDINAL5:def 9;
      consider d2 being Ordinal, n2 being Nat such that
        A14: 0 in Segm n2 & b = n2 *^ exp(omega,d2) by ORDINAL5:def 9;
      0 in n1 & n1 in omega by A13, ORDINAL1:def 12;
      then A15: omega -exponent a = d1 by A13, ORDINAL5:58;
      0 in n2 & n2 in omega by A14, ORDINAL1:def 12;
      then A16: omega -exponent b = d2 by A14, ORDINAL5:58;
      then A17: d1 = d2 by A12, A15;
      assume a <> b;
      then per cases by ORDINAL1:14;
      suppose A18: a in b;
        then a +^ Sum^ A0 = (a +^ (b-^a)) +^ Sum^ B0 by A9, ORDINAL3:51
          .= a +^ (b-^a +^ Sum^ B0) by ORDINAL3:30;
        then A19: Sum^ A0 = b-^a +^ Sum^ B0 by ORDINAL3:21;
        A20: n1 in n2 by A13, A14, A17, A18, ORDINAL3:34;
        A21: b-^a = (n2-^n1) *^ exp(omega,d1) by A13, A14, A17, ORDINAL3:63;
        0 in (n2-^n1) & n2-^n1 in omega
          by A20, ORDINAL3:55, ORDINAL1:def 12;
        then A22: omega -exponent (b-^a) = d1 by A21, ORDINAL5:58;
        A23: b-^a c= b-^a +^ Sum^ B0 by ORDINAL3:24;
        then A24: d1 c= omega -exponent Sum^ A0 by A19, A22, Th22;
        0 in b-^a by A18, ORDINAL3:55;
        then A25: 0 in Sum^ A0 by A19, A23;
        Sum^ A0 in exp(omega, omega -exponent a) by A8, Th43;
        hence contradiction by A15, A24, A25, Th23, ORDINAL1:5;
      end;
      suppose A26: b in a;
        then b +^ Sum^ B0 = (b +^ (a-^b)) +^ Sum^ A0 by A9, ORDINAL3:51
          .= b +^ (a-^b +^ Sum^ A0) by ORDINAL3:30;
        then A27: Sum^ B0 = a-^b +^ Sum^ A0 by ORDINAL3:21;
        A28: n2 in n1 by A13, A14, A17, A26, ORDINAL3:34;
        A29: a-^b = (n1-^n2) *^ exp(omega,d1) by A13, A14, A17, ORDINAL3:63;
        0 in (n1-^n2) & n1-^n2 in omega
          by A28, ORDINAL3:55, ORDINAL1:def 12;
        then A30: omega -exponent (a-^b) = d1 by A29, ORDINAL5:58;
        A31: a-^b c= a-^b +^ Sum^ A0 by ORDINAL3:24;
        then A32: d1 c= omega -exponent Sum^ B0 by A27, A30, Th22;
        0 in a-^b by A26, ORDINAL3:55;
        then A33: 0 in Sum^ B0 by A27, A31;
        Sum^ B0 in exp(omega, omega -exponent b) by A7, Th43;
        hence contradiction by A16, A17, A32, A33, Th23, ORDINAL1:5;
      end;
    end;
    then A34: Sum^ A0 = Sum^ B0 by A9, ORDINAL3:21;
    dom A0 \/ dom B0 = max(len A0, len B0) +1 -1
      .= max(len A0+1, len B0+1) -1 by FUZZY_2:42
      .= max(len A0+len <%a%>, len B0+1) -1 by AFINSQ_1:34
      .= max(len A0+len <%a%>, len B0+len <%b%>) -1 by AFINSQ_1:34
      .= max(len A, len B0+len <%b%>) -1 by A8, AFINSQ_1:17
      .= max(len A, len B) -1 by A7, AFINSQ_1:17
      .= n by A4;
    hence thesis by A3, A7, A8, A10, A34;
  end;
  A35: for n being Nat holds P[n] from NAT_1:sch 2(A1, A2);
  let A, B be Cantor-normal-form Ordinal-Sequence;
  assume A36: Sum^ A = Sum^ B;
  dom A \/ dom B is natural;
  hence thesis by A35, A36;
end;

definition
  let A be Ordinal-Sequence, b be Ordinal;
  func b -exponent A -> Ordinal-Sequence means  :Def1:
  dom it = dom A & for a being object st a in dom A
    holds it.a = b -exponent (A.a);
  existence
  proof
    deffunc F(object) = b -exponent(A.$1);
    consider f being Function such that
      A1: dom f = dom A & for a being object st a in dom A holds f.a = F(a)
      from FUNCT_1:sch 3;
    reconsider f as Sequence by A1, ORDINAL1:31;
    now
      reconsider c = sup rng f as Ordinal;
      take c;
      now
        let y be object;
        assume A2: y in rng f;
        then consider x being object such that
          A3: x in dom f & f.x = y by FUNCT_1:def 3;
        f.x = b -exponent (A.x) by A1, A3;
        hence y in sup rng f by A2, A3, ORDINAL2:19;
      end;
      hence rng f c= sup rng f by TARSKI:def 3;
    end;
    then reconsider f as Ordinal-Sequence by ORDINAL2:def 4;
    take f;
    thus thesis by A1;
  end;
  uniqueness
  proof
    let f1, f2 be Ordinal-Sequence;
    assume that
      A4: dom f1 = dom A and
      A5: for a being object st a in dom A holds f1.a = b -exponent (A.a) and
      A6: dom f2 = dom A and
      A7: for a being object st a in dom A holds f2.a = b -exponent (A.a);
    now
      let a be object;
      assume A8: a in dom f1;
      hence f1.a = b -exponent (A.a) by A4, A5
        .= f2.a by A4, A7, A8;
    end;
    hence thesis by A4, A6, FUNCT_1:2;
  end;
end;

registration
  let A be empty Ordinal-Sequence, b be Ordinal;
  cluster b -exponent A -> empty;
  coherence
  proof
    dom A = dom(b -exponent A) by Def1;
    hence thesis;
  end;
end;

registration
  let A be non empty Ordinal-Sequence, b be Ordinal;
  cluster b -exponent A -> non empty;
  coherence
  proof
    dom A = dom(b -exponent A) by Def1;
    hence thesis;
  end;
end;

registration
  let A be finite Ordinal-Sequence, b be Ordinal;
  cluster b -exponent A -> finite;
  coherence
  proof
    dom A = dom(b -exponent A) by Def1;
    hence thesis by FINSET_1:10;
  end;
end;

registration
  let A be infinite Ordinal-Sequence, b be Ordinal;
  cluster b -exponent A -> infinite;
  coherence
  proof
    dom A = dom(b -exponent A) by Def1;
    hence thesis by FINSET_1:10;
  end;
end;

theorem Th46:
  for a, b being Ordinal holds b -exponent <% a %> = <% b -exponent a %>
proof
  let a, b be Ordinal;
  A1: dom(b -exponent <% a %>) = dom <% a %> by Def1
    .= 1 by AFINSQ_1:def 4;
  0 in 1 by TARSKI:def 1, CARD_1:49;
  then 0 in dom <% a %> by AFINSQ_1:def 4;
  then (b -exponent <% a %>).0 = b -exponent(<% a %>.0) by Def1
    .= b -exponent a;
  hence thesis by A1, AFINSQ_1:def 4;
end;

theorem Th47:
  for A, B being Ordinal-Sequence, b being Ordinal
  holds b -exponent (A ^ B) = (b -exponent A) ^ (b -exponent B)
proof
  let A, B be Ordinal-Sequence, b be Ordinal;
  A1: dom(b -exponent (A ^ B)) = dom(A^B) by Def1
    .= dom A +^ dom B by ORDINAL4:def 1
    .= dom A +^ dom(b -exponent B) by Def1
    .= dom(b -exponent A) +^ dom(b -exponent B) by Def1
    .= dom((b -exponent A) ^ (b -exponent B)) by ORDINAL4:def 1;
  now
    let x be object;
    assume x in dom(b -exponent (A ^ B));
    then A2: x in dom(A^B) by Def1;
    then A3: (b -exponent (A ^ B)).x = b -exponent ((A^B).x) by Def1;
    reconsider c = x as Ordinal by A2;
    c in dom A or (dom A c= c & c -^ dom A in dom B)
    proof
      assume not c in dom A;
      hence A4: dom A c= c by ORDINAL1:16;
      c in dom A +^ dom B by A2, ORDINAL4:def 1;
      then c -^ dom A in dom A +^ dom B -^ dom A by A4, ORDINAL3:53;
      hence thesis by ORDINAL3:52;
    end;
    then per cases;
    suppose A5: c in dom A;
      then A6: c in dom(b -exponent A) by Def1;
      (A^B).x = A.x by A5, ORDINAL4:def 1;
      hence (b -exponent (A ^ B)).x = (b -exponent A).x by A3, A5, Def1
        .= ((b -exponent A) ^ (b -exponent B)).x by A6, ORDINAL4:def 1;
    end;
    suppose A7: dom A c= c & c -^ dom A in dom B;
      then A8: c -^ dom A in dom(b -exponent B) by Def1;
      (A^B).x = (A^B).(dom A +^ (c -^ dom A)) by A7, ORDINAL3:def 5
        .= B.(c -^ dom A) by A7, ORDINAL4:def 1;
      hence (b -exponent (A ^ B)).x = (b -exponent B).(c -^ dom A)
          by A3, A7, Def1
        .= ((b -exponent A) ^ (b -exponent B)).
          (dom(b -exponent A) +^ (c -^ dom A)) by A8, ORDINAL4:def 1
        .= ((b -exponent A) ^ (b -exponent B)).(dom A +^ (c -^ dom A))
          by Def1
        .= ((b -exponent A) ^ (b -exponent B)).x by A7, ORDINAL3:def 5;
    end;
  end;
  hence thesis by A1, FUNCT_1:2;
end;

theorem Th48:
  for A being Ordinal-Sequence, b, c being Ordinal
  holds b -exponent (A | c) = (b -exponent A) | c
proof
  let A be Ordinal-Sequence, b, c be Ordinal;
  A1: dom(b -exponent (A | c)) = dom(A|c) by Def1
    .= dom A /\ c by RELAT_1:61
    .= dom(b -exponent A) /\ c by Def1
    .= dom((b -exponent A) | c) by RELAT_1:61;
  now
    let x be object;
    assume A2: x in dom(b -exponent (A | c));
    then A3: x in dom(A|c) by Def1;
    then A4: x in dom A by RELAT_1:57;
    thus (b -exponent (A | c)).x = b -exponent ((A|c).x) by A3, Def1
      .= b -exponent (A.x) by A3, FUNCT_1:47
      .= (b -exponent A).x by A4, Def1
      .= ((b -exponent A)|c).x by A1, A2, FUNCT_1:47;
  end;
  hence thesis by A1, FUNCT_1:2;
end;

theorem Th49:
  for A being finite Ordinal-Sequence, b being Ordinal, n being Nat
  holds b -exponent (A /^ n) = (b -exponent A) /^ n
proof
  let A be finite Ordinal-Sequence, b be Ordinal, n be Nat;
  A1: dom(b -exponent (A /^ n)) = len(A /^ n) by Def1
    .= len A -' n by AFINSQ_2:def 2
    .= len(b -exponent A) -' n by Def1
    .= dom((b -exponent A) /^ n) by AFINSQ_2:def 2;
  now
    let k be Nat;
    assume A2: k in dom(b -exponent (A /^ n));
    then A3: k in dom(A /^ n) by Def1;
    A4: b-exponent(A.(k+n)) = (b-exponent A).(k+n)
    proof
      per cases;
      suppose k+n in dom A;
        hence thesis by Def1;
      end;
      suppose A5: not k+n in dom A;
        then A.(k+n) = {} by FUNCT_1:def 2;
        then A6: b-exponent(A.(k+n)) = {} by ORDINAL5:def 10;
        not k+n in dom(b-exponent A) by A5, Def1;
        hence thesis by A6, FUNCT_1:def 2;
      end;
    end;
    thus (b -exponent (A /^ n)).k = b-exponent((A/^n).k) by A3, Def1
      .= b-exponent(A.(k+n)) by A3, AFINSQ_2:def 2
      .= ((b -exponent A) /^ n).k by A1, A2, A4, AFINSQ_2:def 2;
  end;
  hence thesis by A1, AFINSQ_1:8;
end;

registration
  let A be Cantor-normal-form Ordinal-Sequence;
  cluster omega -exponent A -> decreasing;
  coherence
  proof
    now
      let a, b be Ordinal;
      assume A1: a in b & b in dom(omega -exponent A);
      then A2: b in dom A by Def1;
      then (omega -exponent A).a = omega -exponent(A.a) &
        (omega -exponent A).b = omega -exponent(A.b) by A1, Def1, ORDINAL1:10;
      hence (omega -exponent A).b in (omega -exponent A).a
        by A1, A2, ORDINAL5:def 11;
    end;
    hence thesis by ORDINAL5:def 1;
  end;
end;

theorem
  for A, B being Ordinal-Sequence st A^B is Cantor-normal-form
  holds rng(omega -exponent A) misses rng(omega -exponent B)
proof
  let A, B be Ordinal-Sequence;
  assume A1: A^B is Cantor-normal-form;
  rng(omega -exponent A) /\ rng(omega -exponent B) = {}
  proof
    assume rng(omega -exponent A) /\ rng(omega -exponent B) <> {};
    then consider y being object such that
      A2: y in rng(omega -exponent A) /\ rng(omega -exponent B)
      by XBOOLE_0:def 1;
    A3: y in rng(omega -exponent A) & y in rng(omega -exponent B)
      by A2, XBOOLE_0:def 4;
    then consider x1 being object such that
      A4: x1 in dom(omega -exponent A) & (omega -exponent A).x1 = y
      by FUNCT_1:def 3;
    consider x2 being object such that
      A5: x2 in dom(omega -exponent B) & (omega -exponent B).x2 = y
      by A3, FUNCT_1:def 3;
    reconsider x1, x2 as Ordinal by A4, A5;
    A6: x1 in dom A by A4, Def1;
    then A7: A.x1 = (A^B).x1 by ORDINAL4:def 1;
    A8: x2 in dom B by A5, Def1;
    then A9: B.x2 = (A^B).(dom A +^ x2) by ORDINAL4:def 1;
    dom A c= dom A +^ x2 by ORDINAL3:24;
    then A10: x1 in dom A +^ x2 by A6;
    dom A +^ x2 in dom A +^ dom B by A8, ORDINAL2:32;
    then dom A +^ x2 in dom(A^B) by ORDINAL4:def 1;
    then omega -exponent((A^B).(dom A+^x2)) in omega -exponent((A^B).x1)
      by A1, A10, ORDINAL5:def 11;
    then (omega -exponent B).x2 in omega -exponent(A.x1) by A7, A8, A9, Def1;
    then (omega -exponent B).x2 in (omega -exponent A).x1 by A6, Def1;
    hence contradiction by A4, A5;
  end;
  hence thesis by XBOOLE_0:def 7;
end;

theorem Th51:
  for A being Cantor-normal-form Ordinal-Sequence
  holds 0 in rng(omega -exponent A) iff A <> {} & omega -exponent last A = 0
proof
  let A be Cantor-normal-form Ordinal-Sequence;
  hereby
    assume 0 in rng(omega -exponent A);
    then consider x being object such that
      A1: x in dom(omega -exponent A) & (omega -exponent A).x = 0
      by FUNCT_1:def 3;
    thus A2: A <> {} by A1;
    A3: x in dom A by A1, Def1;
    then omega -exponent last A c= omega -exponent(A.x) by A2, Th31;
    then omega -exponent last A c= 0 by A1, A3, Def1;
    hence omega -exponent last A = 0;
  end;
  assume A4: A <> {} & omega -exponent last A = 0;
  then consider A0 being Cantor-normal-form Ordinal-Sequence,
    a0 being Cantor-component Ordinal such that
    A5: A = A0 ^ <% a0 %> by Th29;
  0 in 1 by CARD_1:49, TARSKI:def 1;
  then 0 in dom <% a0 %> by AFINSQ_1:33;
  then A6: len A0 + 0 in dom A by A5, AFINSQ_1:23;
  then A7: len A0 in dom(omega -exponent A) by Def1;
  0 = omega -exponent a0 by A4, A5, AFINSQ_1:92
    .= omega -exponent(A.len A0) by A5, AFINSQ_1:36
    .= (omega -exponent A).len A0 by A6, Def1;
  hence thesis by A7, FUNCT_1:3;
end;

definition
  let a, b  be Ordinal;
  func b -leading_coeff a -> Ordinal equals
  a div^ exp(b, b -exponent a);
  coherence;
end;

:: This is the undefined case. One could have set the value simply to 0
:: in case that b = 0 just as well.
theorem Th52:
  for a being Ordinal holds 0 -leading_coeff a = a
proof
  let a be Ordinal;
  thus 0 -leading_coeff a = a div^ exp(0 qua Ordinal, 0) by ORDINAL5:def 10
    .= a div^ 1 by ORDINAL2:43
    .= a by ORDINAL3:71;
end;

:: this means that a = a *^ exp(1,0)
theorem Th53:
  for a being Ordinal holds 1 -leading_coeff a = a
proof
  let a be Ordinal;
  not 1 in 1;
  hence 1 -leading_coeff a = a div^ exp(1 qua Ordinal, 0) by ORDINAL5:def 10
    .= a div^ 1 by ORDINAL2:43
    .= a by ORDINAL3:71;
end;

:: this means that 0 = 0 *^ exp(b,0)
theorem
  for b being Ordinal holds b -leading_coeff 0 = 0 by ORDINAL3:70;

:: this means that a = a *^ exp(b,0)
theorem Th55:
  for a, b being Ordinal st a in b holds b -leading_coeff a = a
proof
  let a, b be Ordinal;
  assume A1: a in b;
  per cases;
  suppose 0 in a;
    thus b -leading_coeff a = a div^ exp(b, 0) by A1, Th21
      .= a div^ 1 by ORDINAL2:43
      .= a by ORDINAL3:71;
  end;
  suppose not 0 in a;
    then a = 0 or a in 0 by ORDINAL1:14;
    hence thesis by ORDINAL3:70;
  end;
end;

:: this means that 1 = 1 *^ exp(b,0)
theorem
  for b being Ordinal holds b -leading_coeff 1 = 1
proof
  let b be Ordinal;
  per cases by ORDINAL1:14;
  suppose 1 in b;
    hence thesis by Th55;
  end;
  suppose 1 = b;
    hence thesis by Th53;
  end;
  suppose b in 1;
    then b = 0 by TARSKI:def 1, CARD_1:49;
    hence thesis by Th52;
  end;
end;

theorem Th57:
  for a, b, c being Ordinal st c in b
  holds b -leading_coeff (c *^ exp(b,a)) = c
proof
  let a,b,c be Ordinal;
  assume A1: c in b;
  per cases;
  suppose A2: 0 in c;
    A3: 0 in exp(b,a) by A1, ORDINAL1:14;
    thus b -leading_coeff (c *^ exp(b,a))
       = (c *^ exp(b,a)) div^ exp(b, a) by A1, A2, ORDINAL5:58
      .= (c *^ exp(b,a) +^ 0) div^ exp(b, a) by ORDINAL2:27
      .= c by A3, ORDINAL3:66;
  end;
  suppose not 0 in c;
    then A4: c = 0 by ORDINAL1:14;
    hence b -leading_coeff (c *^ exp(b,a)) = b -leading_coeff 0 by ORDINAL2:35
      .= c by A4, ORDINAL3:70;
  end;
end;

theorem
  for a, b being Ordinal st 1 in b holds b -leading_coeff (exp(b,a)) = 1
proof
  let a, b be Ordinal;
  assume A1: 1 in b;
  thus b -leading_coeff (exp(b,a))
     = b -leading_coeff (1 *^ exp(b,a)) by ORDINAL2:39
    .= 1 by A1, Th57;
end;

registration
  let c be Cantor-component Ordinal;
  cluster omega -leading_coeff c -> natural non empty;
  coherence
  proof
    consider b being Ordinal, n being Nat such that
      A1: 0 in Segm n & c = n *^ exp(omega,b) by ORDINAL5:def 9;
    thus thesis by A1, Th57, ORDINAL1:def 12;
  end;
end;

theorem Th59:
  for c being Cantor-component Ordinal
  holds c = (omega -leading_coeff c) *^ exp(omega, omega -exponent c)
proof
  let c be Cantor-component Ordinal;
  consider b being Ordinal, n being Nat such that
    A1: 0 in Segm n & c = n*^exp(omega,b) by ORDINAL5:def 9;
  A2: omega -leading_coeff c = n by A1, Th57, ORDINAL1:def 12;
  0 in n & n in omega by A1, ORDINAL1:def 12;
  hence thesis by A1, A2, ORDINAL5:58;
end;

definition
  let A be Ordinal-Sequence, b be Ordinal;
  func b -leading_coeff A -> Ordinal-Sequence means
  :Def3:
  dom it = dom A &
  for a being object st a in dom A holds it.a = b -leading_coeff(A.a);
  existence
  proof
    deffunc F(object) = b -leading_coeff(A.$1);
    consider f being Function such that
      A1: dom f = dom A & for a being object st a in dom A holds f.a = F(a)
      from FUNCT_1:sch 3;
    reconsider f as Sequence by A1, ORDINAL1:31;
    now
      reconsider c = sup rng f as Ordinal;
      take c;
      now
        let y be object;
        assume A2: y in rng f;
        then consider x being object such that
          A3: x in dom f & f.x = y by FUNCT_1:def 3;
        f.x = b -leading_coeff (A.x) by A1, A3;
        hence y in sup rng f by A2, A3, ORDINAL2:19;
      end;
      hence rng f c= sup rng f by TARSKI:def 3;
    end;
    then reconsider f as Ordinal-Sequence by ORDINAL2:def 4;
    take f;
    thus thesis by A1;
  end;
  uniqueness
  proof
    let f1, f2 be Ordinal-Sequence;
    assume that
      A4: dom f1 = dom A and
      A5: for a being object st a in dom A holds f1.a = b -leading_coeff (A.a)
      and A6: dom f2 = dom A and
      A7: for a being object st a in dom A holds f2.a = b -leading_coeff (A.a);
    now
      let a be object;
      assume A8: a in dom f1;
      hence f1.a = b -leading_coeff (A.a) by A4, A5
        .= f2.a by A4, A7, A8;
    end;
    hence thesis by A4, A6, FUNCT_1:2;
  end;
end;

registration
  let A be empty Ordinal-Sequence, b be Ordinal;
  cluster b -leading_coeff A -> empty;
  coherence
  proof
    dom A = dom(b -leading_coeff A) by Def3;
    hence thesis;
  end;
end;

registration
  let A be non empty Ordinal-Sequence, b be Ordinal;
  cluster b -leading_coeff A -> non empty;
  coherence
  proof
    dom A = dom(b -leading_coeff A) by Def3;
    hence thesis;
  end;
end;

registration
  let A be finite Ordinal-Sequence, b be Ordinal;
  cluster b -leading_coeff A -> finite;
  coherence
  proof
    dom A = dom(b -leading_coeff A) by Def3;
    hence thesis by FINSET_1:10;
  end;
end;

registration
  let A be infinite Ordinal-Sequence, b be Ordinal;
  cluster b -leading_coeff A -> infinite;
  coherence
  proof
    dom A = dom(b -leading_coeff A) by Def3;
    hence thesis by FINSET_1:10;
  end;
end;

theorem Th60:
  for a, b being Ordinal
  holds b -leading_coeff <% a %> = <% b -leading_coeff a %>
proof
  let a, b be Ordinal;
  A1: dom(b -leading_coeff <% a %>) = dom <% a %> by Def3
    .= 1 by AFINSQ_1:def 4;
  0 in 1 by TARSKI:def 1, CARD_1:49;
  then 0 in dom <% a %> by AFINSQ_1:def 4;
  then (b -leading_coeff <% a %>).0 = b -leading_coeff(<% a %>.0) by Def3
    .= b -leading_coeff a;
  hence thesis by A1, AFINSQ_1:def 4;
end;

theorem
  for A, B being Ordinal-Sequence, b being Ordinal
  holds b -leading_coeff (A ^ B) = (b -leading_coeff A) ^ (b -leading_coeff B)
proof
  let A, B be Ordinal-Sequence, b be Ordinal;
  A1: dom(b -leading_coeff (A ^ B)) = dom(A^B) by Def3
    .= dom A +^ dom B by ORDINAL4:def 1
    .= dom A +^ dom(b -leading_coeff B) by Def3
    .= dom(b -leading_coeff A) +^ dom(b -leading_coeff B) by Def3
    .= dom((b -leading_coeff A) ^ (b -leading_coeff B)) by ORDINAL4:def 1;
  now
    let x be object;
    assume x in dom(b -leading_coeff (A ^ B));
    then A2: x in dom(A^B) by Def3;
    then A3: (b -leading_coeff (A ^ B)).x = b -leading_coeff ((A^B).x) by Def3;
    reconsider c = x as Ordinal by A2;
    c in dom A or (dom A c= c & c -^ dom A in dom B)
    proof
      assume not c in dom A;
      hence A4: dom A c= c by ORDINAL1:16;
      c in dom A +^ dom B by A2, ORDINAL4:def 1;
      then c -^ dom A in dom A +^ dom B -^ dom A by A4, ORDINAL3:53;
      hence thesis by ORDINAL3:52;
    end;
    then per cases;
    suppose A5: c in dom A;
      then A6: c in dom(b -leading_coeff A) by Def3;
      (A^B).x = A.x by A5, ORDINAL4:def 1;
      hence (b -leading_coeff (A ^ B)).x = (b -leading_coeff A).x
          by A3, A5, Def3
        .= ((b -leading_coeff A) ^ (b -leading_coeff B)).x
          by A6, ORDINAL4:def 1;
    end;
    suppose A7: dom A c= c & c -^ dom A in dom B;
      then A8: c -^ dom A in dom(b -leading_coeff B) by Def3;
      (A^B).x = (A^B).(dom A +^ (c -^ dom A)) by A7, ORDINAL3:def 5
        .= B.(c -^ dom A) by A7, ORDINAL4:def 1;
      hence (b -leading_coeff (A ^ B)).x = (b -leading_coeff B).(c -^ dom A)
          by A3, A7, Def3
        .= ((b -leading_coeff A) ^ (b -leading_coeff B)).
          (dom(b -leading_coeff A) +^ (c -^ dom A)) by A8, ORDINAL4:def 1
        .= ((b -leading_coeff A) ^ (b -leading_coeff B)).
          (dom A +^ (c -^ dom A)) by Def3
        .= ((b -leading_coeff A) ^ (b -leading_coeff B)).x
          by A7, ORDINAL3:def 5;
    end;
  end;
  hence thesis by A1, FUNCT_1:2;
end;

theorem
  for A being Ordinal-Sequence, b, c being Ordinal
  holds b -leading_coeff (A | c) = (b -leading_coeff A) | c
proof
  let A be Ordinal-Sequence, b, c be Ordinal;
  A1: dom(b -leading_coeff (A | c)) = dom(A|c) by Def3
    .= dom A /\ c by RELAT_1:61
    .= dom(b -leading_coeff A) /\ c by Def3
    .= dom((b -leading_coeff A) | c) by RELAT_1:61;
  now
    let x be object;
    assume A2: x in dom(b -leading_coeff (A | c));
    then A3: x in dom(A|c) by Def3;
    then A4: x in dom A by RELAT_1:57;
    thus (b -leading_coeff (A | c)).x = b -leading_coeff ((A|c).x) by A3, Def3
      .= b -leading_coeff (A.x) by A3, FUNCT_1:47
      .= (b -leading_coeff A).x by A4, Def3
      .= ((b -leading_coeff A)|c).x by A1, A2, FUNCT_1:47;
  end;
  hence thesis by A1, FUNCT_1:2;
end;

theorem
  for A being finite Ordinal-Sequence, b being Ordinal, n being Nat
  holds b -leading_coeff (A /^ n) = (b -leading_coeff A) /^ n
proof
  let A be finite Ordinal-Sequence, b be Ordinal, n be Nat;
  A1: dom(b -leading_coeff (A /^ n)) = len(A /^ n) by Def3
    .= len A -' n by AFINSQ_2:def 2
    .= len(b -leading_coeff A) -' n by Def3
    .= dom((b -leading_coeff A) /^ n) by AFINSQ_2:def 2;
  now
    let k be Nat;
    assume A2: k in dom(b -leading_coeff (A /^ n));
    then A3: k in dom(A /^ n) by Def3;
    A4: b-leading_coeff(A.(k+n)) = (b-leading_coeff A).(k+n)
    proof
      per cases;
      suppose k+n in dom A;
        hence thesis by Def3;
      end;
      suppose A5: not k+n in dom A;
        then A.(k+n) = {} by FUNCT_1:def 2;
        then A6: b-leading_coeff(A.(k+n)) = {} by ORDINAL3:70;
        not k+n in dom(b-leading_coeff A) by A5, Def3;
        hence thesis by A6, FUNCT_1:def 2;
      end;
    end;
    thus (b -leading_coeff (A /^ n)).k = b-leading_coeff((A/^n).k) by A3, Def3
      .= b-leading_coeff(A.(k+n)) by A3, AFINSQ_2:def 2
      .= ((b -leading_coeff A) /^ n).k by A1, A2, A4, AFINSQ_2:def 2;
  end;
  hence thesis by A1, AFINSQ_1:8;
end;

registration
  let A be Cantor-normal-form Ordinal-Sequence, a be object;
  cluster (omega -leading_coeff A).a -> natural;
  coherence
  proof
    per cases;
    suppose A1: a in dom A;
      then A2: (omega -leading_coeff A).a = omega -leading_coeff (A.a) by Def3;
      A.a is Cantor-component by A1, ORDINAL5:def 11;
      hence thesis by A2;
    end;
    suppose not a in dom A;
      then not a in dom (omega -leading_coeff A) by Def3;
      hence thesis by FUNCT_1:def 2;
    end;
  end;
end;

registration
  let A be Cantor-normal-form Ordinal-Sequence;
  cluster omega -leading_coeff A -> natural-valued non-empty;
  coherence
  proof
    now
      let y be object;
      assume y in rng(omega -leading_coeff A);
      then consider x being object such that
        A1: x in dom(omega -leading_coeff A) & (omega -leading_coeff A).x = y
        by FUNCT_1:def 3;
      thus y in NAT by A1, ORDINAL1:def 12;
    end;
    hence omega -leading_coeff A is natural-valued
      by TARSKI:def 3, VALUED_0:def 6;
    now
      let x be object;
      assume x in dom(omega -leading_coeff A);
      then A2: x in dom A by Def3;
      then A3: A.x is Cantor-component by ORDINAL5:def 11;
      (omega -leading_coeff A).x = omega -leading_coeff (A.x) by A2, Def3;
      hence (omega -leading_coeff A).x is non empty by A3;
    end;
    hence thesis by FUNCT_1:def 9;
  end;
end;

theorem Th64:
  for A being Cantor-normal-form Ordinal-Sequence, a being object st a in dom A
  holds A.a = (omega -leading_coeff(A.a)) *^ exp(omega, omega -exponent(A.a))
proof
  let A be Cantor-normal-form Ordinal-Sequence, a be object;
  assume a in dom A;
  then A.a is Cantor-component by ORDINAL5:def 11;
  hence thesis by Th59;
end;

theorem Th65:
  for A being Cantor-normal-form Ordinal-Sequence, a being object st a in dom A
  holds A.a = (omega -leading_coeff A).a *^ exp(omega, (omega -exponent A).a)
proof
  let A be Cantor-normal-form Ordinal-Sequence, a be object;
  assume A1: a in dom A;
  hence A.a = (omega -leading_coeff(A.a)) *^ exp(omega, omega -exponent(A.a))
      by Th64
    .= (omega -leading_coeff A).a *^ exp(omega, omega -exponent(A.a))
      by A1, Def3
    .= (omega -leading_coeff A).a *^ exp(omega, (omega -exponent A).a)
      by A1, Def1;
end;

theorem Th66:
  for A being decreasing Ordinal-Sequence
  for B being natural-valued non-empty Ordinal-Sequence st dom A = dom B
  ex C being Cantor-normal-form Ordinal-Sequence
  st omega -exponent C = A & omega -leading_coeff C = B
proof
  let A be decreasing Ordinal-Sequence;
  let B be natural-valued non-empty Ordinal-Sequence;
  assume A1: dom A = dom B;
  deffunc F(Ordinal) = B.$1 *^ exp(omega, A.$1);
  consider C being Ordinal-Sequence such that
    A2: dom C = dom A & for a being Ordinal st a in dom A holds C.a = F(a)
    from ORDINAL2:sch 3;
  A3: now
    let a be Ordinal;
    assume A4: a in dom C;
    then A5: C.a = B.a *^ exp(omega, A.a) by A2;
    B.a <> {} by A1, A2, A4, FUNCT_1:def 9;
    hence C.a is Cantor-component by A5;
  end;
  now
    let a, b be Ordinal;
    assume A6: a in b & b in dom C;
    then A7: C.a = B.a *^ exp(omega, A.a) & C.b = B.b *^ exp(omega, A.b)
      by A2, ORDINAL1:10;
XA: rng B c= NAT by VALUED_0:def 6;
X0: b in dom B by A6,A1,A2; then
    b c= dom B by ORDINAL1:def 2; then
xy: B.b in rng B & B.a in rng B by A6, X0, FUNCT_1:3;
    B.a <> {} & B.b <> {} by A1, A2, A6, ORDINAL1:10, FUNCT_1:def 9;
    then 0 c< B.a & 0 c< B.b by XBOOLE_1:2, XBOOLE_0:def 8;
    then 0 in B.a & 0 in B.b by ORDINAL1:11;
    then omega -exponent(C.b) = A.b & omega -exponent(C.a) = A.a
      by A7, ORDINAL5:58, XA, xy;
    hence omega -exponent(C.b) in omega -exponent(C.a)
      by A2, A6, ORDINAL5:def 1;
  end;
  then reconsider C as Cantor-normal-form Ordinal-Sequence
    by A3, ORDINAL5:def 11;
  take C;
  A9: dom(omega -exponent C) = dom A by A2, Def1;
  now
    let a be object;
    assume a in dom(omega -exponent C);
    then A10: a in dom C by Def1;
    then A11: C.a = B.a *^ exp(omega, A.a) by A2;
    B.a <> {} by A1, A2, A10, FUNCT_1:def 9;
    then 0 c< B.a by XBOOLE_1:2, XBOOLE_0:def 8;
    then A12: 0 in B.a by ORDINAL1:11;
Sa: B.a in rng B by FUNCT_1:3,A10,A1,A2;
    rng B c= NAT by VALUED_0:def 6; then
    omega -exponent(C.a) = A.a by A11, A12, ORDINAL5:58, Sa;
    hence (omega -exponent C).a = A.a by A10, Def1;
  end;
  hence omega -exponent C = A by A9, FUNCT_1:2;
  A13: dom(omega -leading_coeff C) = dom B by A1, A2, Def3;
  now
    let a be object;
    assume a in dom(omega -leading_coeff C);
    then A14: a in dom C by Def3;
    then C.a = B.a *^ exp(omega, A.a) by A2;
    then omega -leading_coeff(C.a) = B.a by Th57, ORDINAL1:def 12;
    hence (omega -leading_coeff C).a = B.a by A14, Def3;
  end;
  hence omega -leading_coeff C = B by A13, FUNCT_1:2;
end;

theorem Th67:
  for A, B being Cantor-normal-form Ordinal-Sequence
  st omega -exponent A = omega -exponent B &
    omega -leading_coeff A = omega -leading_coeff B
  holds A = B
proof
  let A, B be Cantor-normal-form Ordinal-Sequence;
  assume that A1: omega -exponent A = omega -exponent B and
  A2: omega -leading_coeff A = omega -leading_coeff B;
  A3: dom A = dom(omega -exponent A) by Def1
    .= dom B by A1, Def1;
  now
    let a be object;
    assume A4: a in dom A;
    hence A.a =
      (omega -leading_coeff A).a *^ exp(omega, (omega -exponent A).a) by Th65
      .= B.a by A1, A2, A3, A4, Th65;
  end;
  hence thesis by A3, FUNCT_1:2;
end;

definition
  let a be Ordinal;
  func CantorNF a -> Cantor-normal-form Ordinal-Sequence means
  :Def4:
  Sum^ it = a;
  existence by ORDINAL5:69;
  uniqueness by Th45;
end;

registration
  let a be Ordinal;
  reduce Sum^ CantorNF a to a;
  correctness by Def4;
end;

registration
  let A be Cantor-normal-form Ordinal-Sequence;
  reduce CantorNF Sum^ A to A;
  correctness by Def4;
end;

theorem
  CantorNF {} = {} by ORDINAL5:52;

registration
  let a be empty Ordinal;
  cluster CantorNF a -> empty;
  coherence by ORDINAL5:52;
end;

registration
  let a be non empty Ordinal;
  cluster CantorNF a -> non empty;
  coherence by ORDINAL5:52;
end;

theorem Th69:
  for a being Ordinal, n being non zero Nat
  holds CantorNF(n *^ exp(omega,a)) = <% n *^ exp(omega,a) %>
proof
  let a be Ordinal, n be non zero Nat;
  Sum^ <% n *^ exp(omega,a) %> = n *^ exp(omega,a) by ORDINAL5:53;
  hence thesis;
end;

theorem Th70:
  for a being Cantor-component Ordinal holds CantorNF a = <% a %>
proof
  let a be Cantor-component Ordinal;
  Sum^ <% a %> = a by ORDINAL5:53;
  hence thesis;
end;

theorem Th71:
  for n being non zero Nat holds CantorNF n = <% n %>
proof
  let n be non zero Nat;
  Sum^ <% n %> = n by ORDINAL5:53;
  hence thesis;
end;

theorem
  for a being non empty Ordinal, n, m being non zero Nat
  holds CantorNF(n *^ exp(omega,a) +^ m) = <% n *^ exp(omega,a), m %>
proof
  let a be non empty Ordinal, n, m be non zero Nat;
  Sum^ <% n *^ exp(omega,a), m %> = n *^ exp(omega,a) +^ m by Th25;
  hence thesis;
end;

theorem Th73:
  for a being non empty Ordinal, b being Ordinal, n being non zero Nat
  st b in omega -exponent last CantorNF a
  holds CantorNF(a +^ (n*^exp(omega, b))) = CantorNF a ^ <% n*^exp(omega,b) %>
proof
  let a be non empty Ordinal, b be Ordinal, n be non zero Nat;
  assume A1: b in omega -exponent last CantorNF a;
  set A = CantorNF a, B = <% n*^exp(omega,b) %>;
  A2: CantorNF a ^ <% n*^exp(omega,b) %> is Cantor-normal-form by A1, Th37;
  Sum^(A^B) = Sum^ A +^ (n*^exp(omega, b)) by ORDINAL5:54
    .= a +^ (n*^exp(omega, b));
  hence thesis by A2;
end;

theorem
  for a being non empty Ordinal, n being non zero Nat
  st omega -exponent last CantorNF a <> 0
  holds CantorNF(a +^ n) = CantorNF a ^ <% n %>
proof
  let a be non empty Ordinal, n be non zero Nat;
  assume omega -exponent last CantorNF a <> 0;
  then 0 c< omega -exponent last CantorNF a by XBOOLE_1:2, XBOOLE_0:def 8;
  then A1: 0 in omega -exponent last CantorNF a by ORDINAL1:11;
  thus CantorNF(a +^ n) = CantorNF(a +^ n*^1) by ORDINAL2:39
    .= CantorNF(a +^ (n*^exp(omega, 0 qua Ordinal))) by ORDINAL2:43
    .= CantorNF a ^ <% n*^exp(omega,0 qua Ordinal) %> by A1, Th73
    .= CantorNF a ^ <% n*^1 %> by ORDINAL2:43
    .= CantorNF a ^ <% n %> by ORDINAL2:39;
end;

theorem
  for a being non empty Ordinal, b being Ordinal, n being non zero Nat
  st omega -exponent((CantorNF a).0) in b
  holds CantorNF((n*^exp(omega, b)) +^ a) = <% n*^exp(omega,b) %> ^ CantorNF a
proof
  let a be non empty Ordinal, b be Ordinal, n be non zero Nat;
  assume omega -exponent((CantorNF a).0) in b;
  then A1: <% n*^exp(omega,b) %> ^ CantorNF a is Cantor-normal-form by Th39;
  set A = <% n*^exp(omega,b) %>, B = CantorNF a;
  Sum^(A^B) = (n*^exp(omega, b)) +^ Sum^ B by ORDINAL5:55
    .= (n*^exp(omega, b)) +^ a;
  hence thesis by A1;
end;

begin :: Natural Addition of Ordinals

definition
  let a, b be Ordinal;
  func a (+) b -> Ordinal means
  :Def5:
  ex C being Cantor-normal-form Ordinal-Sequence st
    it = Sum^ C & rng(omega -exponent C) = rng(omega -exponent CantorNF a) \/
      rng(omega -exponent CantorNF b) &
    for d being object st d in dom C holds
      (omega -exponent(C.d) in rng(omega -exponent CantorNF a) \
          rng(omega -exponent CantorNF b) implies
        omega -leading_coeff(C.d) = (omega -leading_coeff CantorNF a).
          ((omega -exponent CantorNF a)".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng(omega -exponent CantorNF b) \
          rng(omega -exponent CantorNF a) implies
        omega -leading_coeff(C.d) = (omega -leading_coeff CantorNF b).
          ((omega -exponent CantorNF b)".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng(omega -exponent CantorNF a) /\
          rng(omega -exponent CantorNF b) implies
        omega -leading_coeff(C.d) = (omega -leading_coeff CantorNF a).
            ((omega -exponent CantorNF a)".(omega -exponent(C.d))) +
          (omega -leading_coeff CantorNF b).
            ((omega -exponent CantorNF b)".(omega -exponent(C.d))));
  existence
  proof
    :: first we order the exponents of C
    set R = rng(omega -exponent CantorNF a) \/ rng(omega -exponent CantorNF b);
    set c = sup R;
    set RS = RelStr(# c, RelIncl c #);
    for x being object holds x in R implies x in the carrier of RS
      by ORDINAL2:19;
    then reconsider R as finite Subset of RS by TARSKI:def 3;
    now
      let x,y be object;
      assume A1: x in R & y in R & x <> y;
      then reconsider A = x, B = y as Ordinal;
      A c= B or B c= A;
      hence [x,y] in the InternalRel of RS or [y,x] in the InternalRel of RS
        by A1, WELLORD2:def 1;
    end;
    then consider e0 being FinSequence of RS such that
      A2: e0 is R-desc_ordering by RELAT_2:def 6, ORDERS_5:78;
    set e = FS2XFS e0;
    :: Now e is our sequence of ordered exponents, next showing some properties
    A3: rng e = rng e0 by Th15
      .= R by A2, ORDERS_5:def 26;
    reconsider e as Ordinal-Sequence;
    now
      let a,b be Ordinal;
      assume A4: a in b & b in dom e;
      then A5: a in dom e by ORDINAL1:10;
      dom e in omega by CARD_1:61;
      then a in omega & b in omega by A4, A5, ORDINAL1:10;
      then reconsider n = a, m = b as Nat;
      card Segm n in card Segm m by A4;
      then A6: n+1 < m+1 by NAT_1:41, XREAL_1:8;
      A7: n+1 in dom e0 & m+1 in dom e0 by A4, A5, Th13;
      then e0/.(m+1) < e0/.(n+1) by A2, A6, ORDERS_5:def 22;
      then A8: [e0/.(m+1),e0/.(n+1)] in the InternalRel of RS &
        e0/.(m+1) <> e0/.(n+1) by ORDERS_2:def 5, ORDERS_2:def 6;
      A9: e0/.(m+1) = e0.(m+1) & e0/.(n+1) = e0.(n+1) by A7, PARTFUN1:def 6;
      e0.(m+1) in rng e0 & e0.(n+1) in rng e0 by A7, FUNCT_1:3;
      then e0.(m+1) in R & e0.(n+1) in R by A2, ORDERS_5:def 26;
      then e0.(m+1) c= e0.(n+1) by A8, A9, WELLORD2:def 1;
      then A10: e0.(m+1) c< e0.(n+1) by A8, A9, XBOOLE_0:def 8;
      n+1 <= len e0 & m+1 <= len e0 by A7, FINSEQ_3:25;
      then n+1-1 < len e0-0 & m+1-1 < len e0-0 by XREAL_1:15;
      then e.n = e0.(n+1) & e.m = e0.(m+1) by AFINSQ_1:def 8;
      hence e.b in e.a by A10, ORDINAL1:11;
    end;
    then reconsider e as decreasing Ordinal-Sequence by ORDINAL5:def 1;
    :: next step is to define the sequence describing the coefficients
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    defpred P[object,object] means
      (e.$1 in rng E1 \ rng E2 implies $2 = L1.(E1".(e.$1))) &
      (e.$1 in rng E2 \ rng E1 implies $2 = L2.(E2".(e.$1))) &
      (e.$1 in rng E1 /\ rng E2
        implies $2 = L1.(E1".(e.$1)) + L2.(E2".(e.$1)));
    A11: now
      let x, y1, y2 be object;
      assume A12: x in dom e & P[x,y1] & P[x,y2];
      then e.x in R by A3, FUNCT_1:3;
      then per cases by XBOOLE_0:def 3;
      suppose e.x in rng E1 & not e.x in rng E2;
        hence y1 = y2 by A12, XBOOLE_0:def 5;
      end;
      suppose e.x in rng E2 & not e.x in rng E1;
        hence y1 = y2 by A12, XBOOLE_0:def 5;
      end;
      suppose e.x in rng E1 & e.x in rng E2;
        hence y1 = y2 by A12, XBOOLE_0:def 4;
      end;
    end;
    A13: for x being object st x in dom e ex y being object st P[x,y]
    proof
      let x be object;
      assume x in dom e;
      then e.x in R by A3, FUNCT_1:3;
      then per cases by XBOOLE_0:def 3;
      suppose A14: e.x in rng E1 & not e.x in rng E2;
        take L1.(E1".(e.x));
        thus thesis by A14, XBOOLE_0:def 4;
      end;
      suppose A15: e.x in rng E2 & not e.x in rng E1;
        take L2.(E2".(e.x));
        thus thesis by A15, XBOOLE_0:def 4;
      end;
      suppose A16: e.x in rng E1 & e.x in rng E2;
        take L1.(E1".(e.x)) + L2.(E2".(e.x));
        thus thesis by A16, XBOOLE_0:def 5;
      end;
    end;
    consider f being Function such that
      A17: dom f = dom e and
      A18: for x being object st x in dom e holds P[x,f.x]
      from FUNCT_1:sch 2(A11, A13);
    :: show naturality of the coeff sequence
    reconsider f as Sequence by A17, ORDINAL1:31;
    now
      let y be object;
      assume y in rng f;
      then consider x being object such that
        A19: x in dom f & f.x = y by FUNCT_1:def 3;
      e.x in rng e by A17, A19, FUNCT_1:3;
      then per cases by A3, XBOOLE_0:def 3;
      suppose e.x in rng E1 & not e.x in rng E2;
        then e.x in rng E1 \ rng E2 by XBOOLE_0:def 5;
        then f.x = L1.(E1".(e.x)) by A17, A18, A19;
        hence y in NAT by A19, ORDINAL1:def 12;
      end;
      suppose e.x in rng E2 & not e.x in rng E1;
        then e.x in rng E2 \ rng E1 by XBOOLE_0:def 5;
        then f.x = L2.(E2".(e.x)) by A17, A18, A19;
        hence y in NAT by A19, ORDINAL1:def 12;
      end;
      suppose e.x in rng E1 & e.x in rng E2;
        then e.x in rng E1 /\ rng E2 by XBOOLE_0:def 4;
        then f.x = L1.(E1".(e.x)) + L2.(E2".(e.x)) by A17, A18, A19;
        hence y in NAT by A19, ORDINAL1:def 12;
      end;
    end;
    then f is natural-valued by TARSKI:def 3, VALUED_0:def 6;
    then reconsider f as natural-valued Ordinal-Sequence;
    now
      let x be object;
      assume A20: x in dom f;
      A21: e.x in rng E1 implies E1".(e.x) in dom L1
      proof
        assume e.x in rng E1;
        then e.x in dom(E1") by FUNCT_1:33;
        then E1".(e.x) in rng(E1") by FUNCT_1:3;
        then E1".(e.x) in dom E1 by FUNCT_1:33;
        then E1".(e.x) in dom CantorNF a by Def1;
        hence E1".(e.x) in dom L1 by Def3;
      end;
      A22: e.x in rng E2 implies E2".(e.x) in dom L2
      proof
        assume e.x in rng E2;
        then e.x in dom(E2") by FUNCT_1:33;
        then E2".(e.x) in rng(E2") by FUNCT_1:3;
        then E2".(e.x) in dom E2 by FUNCT_1:33;
        then E2".(e.x) in dom CantorNF b by Def1;
        hence E2".(e.x) in dom L2 by Def3;
      end;
      e.x in rng e by A17, A20, FUNCT_1:3;
      then per cases by A3, XBOOLE_0:def 3;
      suppose A23: e.x in rng E1 & not e.x in rng E2;
        then e.x in rng E1 \ rng E2 by XBOOLE_0:def 5;
        then f.x = L1.(E1".(e.x)) by A17, A18, A20;
        hence f.x is non empty by A21, A23, FUNCT_1:def 9;
      end;
      suppose A24: e.x in rng E2 & not e.x in rng E1;
        then e.x in rng E2 \ rng E1 by XBOOLE_0:def 5;
        then f.x = L2.(E2".(e.x)) by A17, A18, A20;
        hence f.x is non empty by A22, A24, FUNCT_1:def 9;
      end;
      suppose A25: e.x in rng E1 & e.x in rng E2;
        then e.x in rng E1 /\ rng E2 by XBOOLE_0:def 4;
        then A26: f.x = L1.(E1".(e.x)) + L2.(E2".(e.x)) by A17, A18, A20;
        L1.(E1".(e.x)) <> {} & L2.(E2".(e.x)) <> {}
          by A21, A22, A25, FUNCT_1:def 9;
        hence f.x is non empty by A26;
      end;
    end;
    then reconsider f as natural-valued non-empty Ordinal-Sequence
      by FUNCT_1:def 9;
    :: Now the needed sequence can be produced from previous theorem
    consider C being Cantor-normal-form Ordinal-Sequence such that
      A27: omega -exponent C = e & omega -leading_coeff C = f by A17, Th66;
    :: at last, prove the needed properties
    take Sum^ C, C;
    thus Sum^ C = Sum^ C;
    thus rng(omega -exponent C) = rng(E1) \/ rng(E2) by A3, A27;
    let d be object;
    assume A28: d in dom C;
    hereby
      assume omega -exponent(C.d) in rng(E1) \ rng(E2);
      then A29: e.d in rng(E1) \ rng(E2) by A27, A28, Def1;
      d in dom(omega -exponent C) by A28, Def1;
      then f.d = L1.(E1".(e.d)) by A18, A27, A29
        .= L1.(E1".(omega -exponent (C.d))) by A27, A28, Def1;
      hence omega -leading_coeff (C.d) = L1.(E1".(omega -exponent (C.d)))
        by A27, A28, Def3;
    end;
    hereby
      assume omega -exponent(C.d) in rng(E2) \ rng(E1);
      then A30: e.d in rng(E2) \ rng(E1) by A27, A28, Def1;
      d in dom(omega -exponent C) by A28, Def1;
      then f.d = L2.(E2".(e.d)) by A18, A27, A30
        .= L2.(E2".(omega -exponent (C.d))) by A27, A28, Def1;
      hence omega -leading_coeff (C.d) = L2.(E2".(omega -exponent (C.d)))
        by A27, A28, Def3;
    end;
    assume omega -exponent(C.d) in rng(E1) /\ rng(E2);
    then A31: e.d in rng(E1) /\ rng(E2) by A27, A28, Def1;
    d in dom(omega -exponent C) by A28, Def1;
    then f.d = L1.(E1".(e.d)) + L2.(E2".(e.d)) by A18, A27, A31
      .= L1.(E1".(omega -exponent (C.d))) + L2.(E2".(e.d)) by A27, A28, Def1
      .= L1.(E1".(omega -exponent (C.d))) + L2.(E2".(omega -exponent (C.d)))
        by A27, A28, Def1;
    hence omega -leading_coeff (C.d) = L1.(E1".(omega -exponent (C.d)))
      + L2.(E2".(omega -exponent (C.d))) by A27, A28, Def3;
  end;
  uniqueness
  proof
    let s1, s2 being Ordinal;
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    :: the first part just gets C1 and C2
    assume that
      A32: ex C being Cantor-normal-form Ordinal-Sequence st
        s1 = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 &
        for d being object st d in dom C holds
          (omega -exponent(C.d) in rng E1 \ rng E2 implies
            omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
          (omega -exponent(C.d) in rng E2 \ rng E1 implies
            omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
          (omega -exponent(C.d) in rng E1 /\ rng E2 implies
            omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
              L2.(E2".(omega -exponent(C.d)))) and
      A33: ex C being Cantor-normal-form Ordinal-Sequence st
        s2 = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 &
        for d being object st d in dom C holds
          (omega -exponent(C.d) in rng E1 \ rng E2 implies
            omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
          (omega -exponent(C.d) in rng E2 \ rng E1 implies
            omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
          (omega -exponent(C.d) in rng E1 /\ rng E2 implies
            omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
              L2.(E2".(omega -exponent(C.d))));
    consider C1 being Cantor-normal-form Ordinal-Sequence such that
      A34: s1 = Sum^ C1 and
      A35: rng(omega -exponent C1) = rng E1 \/ rng E2 and
      A36: for d being object st d in dom C1 holds
        (omega -exponent(C1.d) in rng E1 \ rng E2 implies
          omega -leading_coeff(C1.d) = L1.(E1".(omega -exponent(C1.d)))) &
        (omega -exponent(C1.d) in rng E2 \ rng E1 implies
          omega -leading_coeff(C1.d) = L2.(E2".(omega -exponent(C1.d)))) &
        (omega -exponent(C1.d) in rng E1 /\ rng E2 implies
          omega -leading_coeff(C1.d) = L1.(E1".(omega -exponent(C1.d))) +
            L2.(E2".(omega -exponent(C1.d)))) by A32;
    consider C2 being Cantor-normal-form Ordinal-Sequence such that
      A37: s2 = Sum^ C2 and
      A38: rng(omega -exponent C2) = rng E1 \/ rng E2 and
      A39: for d being object st d in dom C2 holds
        (omega -exponent(C2.d) in rng E1 \ rng E2 implies
          omega -leading_coeff(C2.d) = L1.(E1".(omega -exponent(C2.d)))) &
        (omega -exponent(C2.d) in rng E2 \ rng E1 implies
          omega -leading_coeff(C2.d) = L2.(E2".(omega -exponent(C2.d)))) &
        (omega -exponent(C2.d) in rng E1 /\ rng E2 implies
          omega -leading_coeff(C2.d) = L1.(E1".(omega -exponent(C2.d))) +
            L2.(E2".(omega -exponent(C2.d)))) by A33;
    :: Now we show that C1 = C2
    A40: dom C1 = card dom(omega -exponent C1) by Def1
      .= card rng(omega -exponent C2) by A35, A38, CARD_1:70
      .= card dom(omega -exponent C2) by CARD_1:70
      .= dom C2 by Def1;
    for x being object st x in dom C1 holds C1.x = C2.x
    proof
      let x be object;
      set e1 = omega -exponent (C1.x), e2 = omega -exponent (C2.x);
      assume A41: x in dom C1;
      then A42: e1 = (omega -exponent C1).x by Def1
        .= (omega -exponent C2).x by A35, A38, Th34
        .= e2 by A40, A41, Def1;
      x in dom(omega -exponent C1) by A41, Def1;
      then (omega -exponent C1).x in rng(omega -exponent C1) by FUNCT_1:3;
      then A43: e1 in rng E1 \/ rng E2 by A35, A41, Def1;
      A44: omega -leading_coeff(C1.x) = omega -leading_coeff(C2.x)
      proof
        per cases by A43, XBOOLE_0:def 3;
        suppose e1 in rng E1 & not e1 in rng E2;
          then A45: e1 in rng E1 \ rng E2 by XBOOLE_0:def 5;
          hence omega -leading_coeff(C1.x) = L1.(E1".e2) by A36, A41, A42
            .= omega -leading_coeff(C2.x) by A39, A40, A41, A42, A45;
        end;
        suppose e1 in rng E2 & not e1 in rng E1;
          then A46: e1 in rng E2 \ rng E1 by XBOOLE_0:def 5;
          hence omega -leading_coeff(C1.x) = L2.(E2".e2) by A36, A41, A42
            .= omega -leading_coeff(C2.x) by A39, A40, A41, A42, A46;
        end;
        suppose e1 in rng E1 & e1 in rng E2;
          then A47: e1 in rng E1 /\ rng E2 by XBOOLE_0:def 4;
          hence omega -leading_coeff(C1.x)
             = L1.(E1".e2) + L2.(E2".e2) by A36, A41, A42
            .= omega -leading_coeff(C2.x) by A39, A40, A41, A42, A47;
        end;
      end;
      thus C1.x = (omega -leading_coeff(C1.x)) *^ exp(omega, e1) by A41, Th64
        .= C2.x by A40, A41, A42, A44, Th64;
    end;
    hence s1 = s2 by A34, A37, A40, FUNCT_1:2;
  end;
  commutativity
  proof
    let s, a, b be Ordinal;
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    given C being Cantor-normal-form Ordinal-Sequence such that
      A48: s = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
      A49: for d being object st d in dom C holds
        (omega -exponent(C.d) in rng E1 \ rng E2 implies
          omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
        (omega -exponent(C.d) in rng E2 \ rng E1 implies
          omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
        (omega -exponent(C.d) in rng E1 /\ rng E2 implies
          omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
            L2.(E2".(omega -exponent(C.d))));
    take C;
    thus s = Sum^ C & rng(omega -exponent C) = rng E2 \/ rng E1 by A48;
    thus thesis by A49;
  end;
end;

theorem Th76:
  for a, b being Ordinal holds rng(omega -exponent CantorNF(a(+)b))
    = rng(omega -exponent CantorNF a) \/ rng(omega -exponent CantorNF b)
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A1: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
    for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  thus thesis by A1;
end;

theorem Th77:
  for a, b being Ordinal holds dom CantorNF a c= dom CantorNF(a(+)b)
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set C0 = CantorNF(a(+)b);
  A1: dom CantorNF a = card dom E1 by Def1
    .= card rng E1 by CARD_1:70;
  card rng E1 c= card(rng E1 \/ rng E2) by XBOOLE_1:7, CARD_1:11;
  then card rng E1 c= card rng(omega -exponent C0) by Th76;
  then dom CantorNF a c= card dom(omega -exponent C0) by A1, CARD_1:70;
  hence dom CantorNF a c= dom C0 by Def1;
end;

theorem Th78:
  for a, b being Ordinal, d being object st d in dom CantorNF(a(+)b) &
    omega -exponent((CantorNF(a(+)b)).d)
      in rng(omega -exponent CantorNF a) \ rng(omega -exponent CantorNF b)
  holds omega -leading_coeff((CantorNF(a(+)b)).d) =
    (omega -leading_coeff CantorNF a).(
      (omega -exponent CantorNF a)".(omega -exponent((CantorNF(a(+)b)).d)))
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A1: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
    A2: for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  let d be object;
  assume d in dom CantorNF(a(+)b) &
    omega -exponent((CantorNF(a(+)b)).d)
      in rng(omega -exponent CantorNF a) \ rng(omega -exponent CantorNF b);
  hence thesis by A1, A2;
end;

theorem Th79:
  for a, b being Ordinal, d being object st d in dom CantorNF(a(+)b) &
    omega -exponent((CantorNF(a(+)b)).d)
      in rng(omega -exponent CantorNF b) \ rng(omega -exponent CantorNF a)
  holds omega -leading_coeff((CantorNF(a(+)b)).d) =
    (omega -leading_coeff CantorNF b).(
      (omega -exponent CantorNF b)".(omega -exponent((CantorNF(a(+)b)).d)))
  by Th78;

theorem Th80:
  for a, b being Ordinal, d being object st d in dom CantorNF(a(+)b) &
    omega -exponent((CantorNF(a(+)b)).d)
      in rng(omega -exponent CantorNF a) /\ rng(omega -exponent CantorNF b)
  holds omega -leading_coeff((CantorNF(a(+)b)).d) =
    (omega -leading_coeff CantorNF a).(
      (omega -exponent CantorNF a)".(omega -exponent((CantorNF(a(+)b)).d))) +
    (omega -leading_coeff CantorNF b).(
      (omega -exponent CantorNF b)".(omega -exponent((CantorNF(a(+)b)).d)))
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A1: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
    A2: for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  let d be object;
  assume d in dom CantorNF(a(+)b) &
    omega -exponent((CantorNF(a(+)b)).d)
      in rng(omega -exponent CantorNF a) /\ rng(omega -exponent CantorNF b);
  hence thesis by A1, A2;
end;

theorem Th81:
  for a, b, c being Ordinal holds (a (+) b) (+) c = a (+) (b (+) c)
proof
  let a, b, c be Ordinal;
  set s4 = a (+) b, s5 = b (+) c, s6 = s4 (+) c, s7 = a (+) s5;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set E3 = omega -exponent CantorNF c, E4 = omega -exponent CantorNF s4;
  set E5 = omega -exponent CantorNF s5;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  set L3 = omega -leading_coeff CantorNF c;
  set L4 = omega -leading_coeff CantorNF s4;
  set L5 = omega -leading_coeff CantorNF s5;
  :: get all sequences
  consider C4 being Cantor-normal-form Ordinal-Sequence such that
    A1: s4 = Sum^ C4 & rng(omega -exponent C4) = rng E1 \/ rng E2 and
    A2: for d being object st d in dom C4 holds
      (omega -exponent(C4.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C4.d) = L1.(E1".(omega -exponent(C4.d)))) &
      (omega -exponent(C4.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C4.d) = L2.(E2".(omega -exponent(C4.d)))) &
      (omega -exponent(C4.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C4.d) = L1.(E1".(omega -exponent(C4.d))) +
          L2.(E2".(omega -exponent(C4.d)))) by Def5;
  consider C5 being Cantor-normal-form Ordinal-Sequence such that
    A3: s5 = Sum^ C5 & rng(omega -exponent C5) = rng E2 \/ rng E3 and
    A4: for d being object st d in dom C5 holds
      (omega -exponent(C5.d) in rng E2 \ rng E3 implies
        omega -leading_coeff(C5.d) = L2.(E2".(omega -exponent(C5.d)))) &
      (omega -exponent(C5.d) in rng E3 \ rng E2 implies
        omega -leading_coeff(C5.d) = L3.(E3".(omega -exponent(C5.d)))) &
      (omega -exponent(C5.d) in rng E2 /\ rng E3 implies
        omega -leading_coeff(C5.d) = L2.(E2".(omega -exponent(C5.d))) +
          L3.(E3".(omega -exponent(C5.d)))) by Def5;
  consider C6 being Cantor-normal-form Ordinal-Sequence such that
    A5: s6 = Sum^ C6 & rng(omega -exponent C6) = rng E4 \/ rng E3 and
    A6: for d being object st d in dom C6 holds
      (omega -exponent(C6.d) in rng E4 \ rng E3 implies
        omega -leading_coeff(C6.d) = L4.(E4".(omega -exponent(C6.d)))) &
      (omega -exponent(C6.d) in rng E3 \ rng E4 implies
        omega -leading_coeff(C6.d) = L3.(E3".(omega -exponent(C6.d)))) &
      (omega -exponent(C6.d) in rng E4 /\ rng E3 implies
        omega -leading_coeff(C6.d) = L4.(E4".(omega -exponent(C6.d))) +
          L3.(E3".(omega -exponent(C6.d)))) by Def5;
  consider C7 being Cantor-normal-form Ordinal-Sequence such that
    A7: s7 = Sum^ C7 & rng(omega -exponent C7) = rng E1 \/ rng E5 and
    A8: for d being object st d in dom C7 holds
      (omega -exponent(C7.d) in rng E1 \ rng E5 implies
        omega -leading_coeff(C7.d) = L1.(E1".(omega -exponent(C7.d)))) &
      (omega -exponent(C7.d) in rng E5 \ rng E1 implies
        omega -leading_coeff(C7.d) = L5.(E5".(omega -exponent(C7.d)))) &
      (omega -exponent(C7.d) in rng E1 /\ rng E5 implies
        omega -leading_coeff(C7.d) = L1.(E1".(omega -exponent(C7.d))) +
          L5.(E5".(omega -exponent(C7.d)))) by Def5;
  :: show that the domains of C6 and C7 are the same
  A9: rng E4 = rng E1 \/ rng E2 by A1;
  A10: rng E5 = rng E2 \/ rng E3 by A3;
  A11: omega -exponent C6 = omega -exponent C7
    by A1, A3, A5, A7, Th34, XBOOLE_1:4;
  A12: dom C6 = dom(omega -exponent C6) by Def1
    .= dom C7 by A11, Def1;
  :: show that C6 and C7 hold the same values, that proves the thesis
  for x being object st x in dom C6 holds C6.x = C7.x
  proof
    let x be object;
    assume A13: x in dom C6;
    then A14: x in dom(omega -exponent C6) & x in dom C7 by A12, Def1;
    A15: rng E1 c= rng E4 & rng E2 c= rng E4 & rng E2 c= rng E5 &
      rng E3 c= rng E5 by A1, A3, XBOOLE_1:7;
    set e = omega -exponent(C6.x);
    set x1 = E4".(omega -exponent(C6.x)), y1 = E3".(omega -exponent(C6.x));
    set x2 = E1".(omega -exponent(C7.x)), y2 = E5".(omega -exponent(C7.x));
    A16: e = (omega -exponent C6).x by A13, Def1;
    then A17: e = omega -exponent(C7.x) by A11, A14, Def1;
    A18: omega -exponent(C6.x) in rng E4 implies
      x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
    proof
      assume A19: omega -exponent(C6.x) in rng E4;
      then omega -exponent(C6.x) in dom(E4") by FUNCT_1:33;
      then x1 in rng(E4") by FUNCT_1:3;
      then x1 in dom E4 by FUNCT_1:33;
      hence x1 in dom C4 by A1, Def1;
      hence omega -exponent(C4.x1) = E4.x1 by A1, Def1
        .= omega -exponent(C6.x) by A19, FUNCT_1:35;
    end;
    A20: omega -exponent(C7.x) in rng E5 implies
      y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
    proof
      assume A21: omega -exponent(C7.x) in rng E5;
      then omega -exponent(C7.x) in dom(E5") by FUNCT_1:33;
      then y2 in rng(E5") by FUNCT_1:3;
      then y2 in dom E5 by FUNCT_1:33;
      hence y2 in dom C5 by A3, Def1;
      hence omega -exponent(C5.y2) = E5.y2 by A3, Def1
        .= omega -exponent(C7.x) by A21, FUNCT_1:35;
    end;
    e in rng(omega -exponent C6) by A14, A16, FUNCT_1:3;
    then e in (rng E1 \/ rng E2) or e in rng E3 by A1, A5, XBOOLE_0:def 3;
    :: cover associativity for all cases
    then per cases by XBOOLE_0:def 3;
    suppose A22: e in rng E1 & e in rng E2 & e in rng E3;
      then A23: e in rng E1 /\ rng E2 & e in rng E2 /\ rng E3
        by XBOOLE_0:def 4;
      A24: e in rng E4 & e in rng E5 by A15, A22;
      then A25: e in rng E4 /\ rng E3 & e in rng E1 /\ rng E5
        by A22, XBOOLE_0:def 4;
      A26: x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
        by A18, A24;
      then A27: L4.x1 = omega -leading_coeff(C4.x1) by A1, Def3
        .= L1.(E1".e) + L2.(E2".e) by A2, A23, A26;
      A28: y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
        by A17, A20, A24;
      then A29: L5.y2 = omega -leading_coeff(C5.y2) by A3, Def3
        .= L2.(E2".(omega -exponent(C7.x))) + L3.(E3".(omega -exponent(C7.x)))
          by A4, A17, A23, A28;
      omega -leading_coeff(C6.x) = L4.x1 + L3.y1 by A6, A13, A25
        .= L1.(E1".e) + L5.y2 by A17, A27, A29
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A25;
      hence C6.x = (omega -leading_coeff(C7.x))*^exp(omega,e) by A13, Th64
        .= C7.x by A14, A17, Th64;
    end;
    suppose A31: e in rng E1 & e in rng E2 & not e in rng E3;
      then A32: e in rng E1 /\ rng E2 & e in rng E2 \ rng E3 by XBOOLE_0:def 4,
        XBOOLE_0:def 5;
      A33: e in rng E4 & e in rng E5 by A15, A31;
      then A34: e in rng E4 \ rng E3 & e in rng E1 /\ rng E5
        by A31, XBOOLE_0:def 4, XBOOLE_0:def 5;
      A35: x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
        by A18, A33;
      then A36: L4.x1 = omega -leading_coeff(C4.x1) by A1, Def3
        .= L1.(E1".e) + L2.(E2".e) by A2, A32, A35;
      A37: y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
        by A17, A20, A33;
      then A38: L5.y2 = omega -leading_coeff(C5.y2) by A3, Def3
        .= L2.(E2".(omega -exponent(C7.x))) by A4, A17, A32, A37;
      omega -leading_coeff(C6.x) = L4.x1 by A6, A13, A34
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A34, A36, A38;
      hence C6.x = (omega -leading_coeff(C7.x))*^exp(omega,e) by A13, Th64
        .= C7.x by A14, A17, Th64;
    end;
    suppose A40: e in rng E1 & not e in rng E2 & e in rng E3;
      then A41: e in rng E1 \ rng E2 & e in rng E3 \ rng E2 by XBOOLE_0:def 5;
      A42: e in rng E4 & e in rng E5 by A15, A40;
      then A43: e in rng E4 /\ rng E3 & e in rng E1 /\ rng E5
        by A40, XBOOLE_0:def 4;
      A44: x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
        by A18, A42;
      then A45: L4.x1 = omega -leading_coeff(C4.x1) by A1, Def3
        .= L1.(E1".e) by A2, A41, A44;
      A46: y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
        by A17, A20, A42;
      then A47: L5.y2 = omega -leading_coeff(C5.y2) by A3, Def3
        .= L3.(E3".(omega -exponent(C7.x))) by A4, A17, A41, A46;
      omega -leading_coeff(C6.x) = L4.x1 + L3.y1 by A6, A13, A43
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A43, A45, A47;
      hence C6.x = (omega -leading_coeff(C7.x))*^exp(omega,e) by A13, Th64
        .= C7.x by A14, A17, Th64;
    end;
    suppose A49: not e in rng E1 & e in rng E2 & e in rng E3;
      then A50: e in rng E2 \ rng E1 & e in rng E2 /\ rng E3 by XBOOLE_0:def 4,
        XBOOLE_0:def 5;
      A51: e in rng E4 & e in rng E5 by A15, A49;
      then A52: e in rng E4 /\ rng E3 & e in rng E5 \ rng E1
        by A49, XBOOLE_0:def 4, XBOOLE_0:def 5;
      A53: x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
        by A18, A51;
      then A54: L4.x1 = omega -leading_coeff(C4.x1) by A1, Def3
        .= L2.(E2".e) by A2, A50, A53;
      A55: y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
        by A17, A20, A51;
      then A56: L5.y2 = omega -leading_coeff(C5.y2) by A3, Def3
        .= L2.(E2".(omega -exponent(C7.x))) + L3.(E3".(omega -exponent(C7.x)))
          by A4, A17, A50, A55;
      A57: omega -leading_coeff(C6.x) = L2.(E2".e) + L3.y1 by A6, A13, A52, A54
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A52, A56;
      thus C6.x = (omega -leading_coeff(C6.x)) *^ exp(omega, e) by A13, Th64
        .= C7.x by A14, A17, A57, Th64;
    end;
    suppose A58: e in rng E1 & not e in rng E2 & not e in rng E3;
      then A59: e in rng E1 \ rng E2 & not e in rng E2 \/ rng E3
        by XBOOLE_0:def 3, XBOOLE_0:def 5;
      then A60: e in rng E4 & not e in rng E5 by A10, A15, TARSKI:def 3;
      then A61: e in rng E4 \ rng E3 & e in rng E1 \ rng E5
        by A58, XBOOLE_0:def 5;
      A62: x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
        by A18, A60;
      then A63: L4.x1 = omega -leading_coeff(C4.x1) by A1, Def3
        .= L1.(E1".e) by A2, A59, A62;
      omega -leading_coeff(C6.x) = L4.x1 by A6, A13, A61
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A61, A63;
      hence C6.x = (omega -leading_coeff(C7.x)) *^ exp(omega,e) by A13, Th64
        .= C7.x by A14, A17, Th64;
    end;
    suppose A65: not e in rng E1 & e in rng E2 & not e in rng E3;
      then A66: e in rng E2 \ rng E1 & e in rng E2 \ rng E3 by XBOOLE_0:def 5;
      A67: e in rng E4 & e in rng E5 by A15, A65;
      then A68: e in rng E4 \ rng E3 & e in rng E5 \ rng E1
        by A65, XBOOLE_0:def 5;
      A69: x1 in dom C4 & omega -exponent(C4.x1) = omega -exponent(C6.x)
        by A18, A67;
      then A70: L4.x1 = omega -leading_coeff(C4.x1) by A1, Def3
        .= L2.(E2".e) by A2, A66, A69;
      A71: y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
        by A17, A20, A67;
      then A72: L5.y2 = omega -leading_coeff(C5.y2) by A3, Def3
        .= L2.(E2".(omega -exponent(C7.x))) by A4, A17, A66, A71;
      omega -leading_coeff(C6.x) = L2.(E2".e) by A6, A13, A68, A70
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A68, A72;
      hence C6.x = (omega -leading_coeff(C7.x)) *^ exp(omega,e) by A13, Th64
        .= C7.x by A14, A17, Th64;
    end;
    suppose A74: not e in rng E1 & not e in rng E2 & e in rng E3;
      then A75: not e in rng E1 \/ rng E2 & e in rng E3 \ rng E2
        by XBOOLE_0:def 3, XBOOLE_0:def 5;
      then A76: not e in rng E4 & e in rng E5 by A9, A15, TARSKI:def 3;
      then A77: e in rng E3 \ rng E4 & e in rng E5 \ rng E1
        by A74, XBOOLE_0:def 5;
      A78: y2 in dom C5 & omega -exponent(C5.y2) = omega -exponent(C7.x)
        by A17, A20, A76;
      then A79: L5.y2 = omega -leading_coeff(C5.y2) by A3, Def3
        .= L3.(E3".(omega -exponent(C7.x))) by A4, A17, A75, A78;
      omega -leading_coeff(C6.x) = L3.y1 by A6, A13, A77
        .= omega -leading_coeff(C7.x) by A8, A14, A17, A77, A79;
      hence C6.x = (omega -leading_coeff(C7.x)) *^ exp(omega,e) by A13, Th64
        .= C7.x by A14, A17, Th64;
    end;
  end;
  hence thesis by A5, A7, A12, FUNCT_1:2;
end;

theorem Th82:
  for a being Ordinal holds a (+) 0 = a
proof
  let a be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF 0;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF 0;
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A1: a (+) 0 = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
    A2: for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  A3: rng E2 is empty;
  then A4: rng(omega -exponent C) = rng E1 by A1;
  A5: dom C = card dom(omega -exponent C) by Def1
    .= card rng(omega -exponent C) by CARD_1:70
    .= card dom E1 by A4, CARD_1:70
    .= dom CantorNF a by Def1;
  for x being object st x in dom C holds C.x = (CantorNF a).x
  proof
    let x be object;
    A6: omega -exponent C = E1 by A4, Th34;
    assume A7: x in dom C;
    then A8: x in dom(omega -exponent C) by Def1;
    then (omega -exponent C).x in rng E1 by A4, FUNCT_1:3;
    then omega -exponent(C.x) in rng E1 \ rng E2 by A3, A7, Def1;
    then A9: omega -leading_coeff(C.x) = L1.(E1".(omega -exponent(C.x)))
        by A2, A7
      .= L1.(E1".((omega -exponent C).x)) by A7, Def1
      .= L1.x by A6, A8, FUNCT_1:34;
    A10: x in dom CantorNF a by A6, A8, Def1;
    thus C.x = L1.x *^ exp(omega, omega -exponent(C.x)) by A7, A9, Th64
      .= L1.x *^ exp(omega, E1.x) by A6, A7, Def1
      .= L1.x *^ exp(omega, omega -exponent((CantorNF a).x)) by A10, Def1
      .= (omega -leading_coeff((CantorNF a).x)) *^
        exp(omega, omega -exponent((CantorNF a).x)) by A10, Def3
      .= (CantorNF a).x by A10, Th64;
  end;
  then C = CantorNF a by A5, FUNCT_1:2;
  hence thesis by A1;
end;

theorem Th83:
  for a, b being Ordinal, n being Nat st omega -exponent a c= b
  holds (n *^ exp(omega,b)) (+) a = n *^ exp(omega,b) +^ a
proof
  let a, b be Ordinal, n be Nat;
  set E1 = omega -exponent CantorNF (n *^ exp(omega, b));
  set E2 = omega -exponent CantorNF a;
  set L1 = omega -leading_coeff CantorNF (n *^ exp(omega, b));
  set L2 = omega -leading_coeff CantorNF a;
  assume omega -exponent a c= b;
  then omega -exponent Sum^ CantorNF a c= b;
  then A1: omega -exponent((CantorNF a).0) c= b by Th44;
  A2: E2.0 c= b
  proof
    per cases;
    suppose 0 in dom CantorNF a;
      hence thesis by A1, Def1;
    end;
    suppose not 0 in dom CantorNF a;
      then not 0 in dom E2 by Def1;
      then E2.0 = {} by FUNCT_1:def 2;
      hence thesis;
    end;
  end;
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A3: (n *^ exp(omega, b)) (+) a = Sum^ C and
    A4: rng(omega -exponent C) = rng E1 \/ rng E2 and
    A5: for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  per cases;
  suppose A6: a = 0;
    hence (n *^ exp(omega, b)) (+) a = n *^ exp(omega, b) by Th82
      .= (n *^ exp(omega,b)) +^ a by A6, ORDINAL2:27;
  end;
  suppose A7: n is zero;
    hence (n *^ exp(omega, b)) (+) a = 0 (+) a by ORDINAL2:35
      .= a by Th82
      .= 0 +^ a by ORDINAL2:30
      .= n *^ exp(omega,b) +^ a by A7, ORDINAL2:35;
  end;
  suppose A8: n is non zero & a <> 0 & E2.0 = b;
    then consider a0 being Cantor-component Ordinal,
      A0 being Cantor-normal-form Ordinal-Sequence such that
      A9: CantorNF a = <% a0 %> ^ A0 by ORDINAL5:67;
    0 c< n by A8, XBOOLE_1:2, XBOOLE_0:def 8;
    then A10: 0 in n & n in omega by ORDINAL1:11, ORDINAL1:def 12;
    A11: E1 = omega -exponent <% n *^ exp(omega, b) %> by A8, Th69
      .= <% omega -exponent(n *^ exp(omega, b)) %> by Th46
      .= <% b %> by A10, ORDINAL5:58;
    then A12: rng E1 = {b} by AFINSQ_1:33;
    0 c< dom CantorNF a by A8, XBOOLE_1:2, XBOOLE_0:def 8;
    then A13: 0 in dom CantorNF a by ORDINAL1:11;
    then A14: 0 in dom E2 by Def1;
    then rng E1 c= rng E2 by A8, A12, FUNCT_1:3, ZFMISC_1:31;
    then A15: omega -exponent C = E2 by A4, Th34, XBOOLE_1:12;
    A16: dom C = card dom(omega -exponent C) by Def1
      .= len(<% a0 %> ^ A0) by A15, A9, Def1
      .= len <% a0 %> + len A0 by AFINSQ_1:17
      .= 1 + len A0 by AFINSQ_1:34
      .= len <% (n *^ exp(omega,b)) +^ a0 %> + len A0 by AFINSQ_1:34
      .= dom(<% (n *^ exp(omega,b)) +^ a0 %> ^ A0) by AFINSQ_1:17;
    for x being object st x in dom C
      holds C.x = (<% (n *^ exp(omega,b)) +^ a0 %> ^ A0).x
    proof
      let x be object;
      assume A17: x in dom C;
      A18: dom C = dom E2 by Def1, A15;
      per cases;
      suppose A19: omega -exponent(C.x) = b;
        then b = E2.x by A15, A17, Def1;
        then A20: x = 0 by A8, A14, A17, A18, FUNCT_1:def 4;
        A21: omega -exponent(C.x) in rng E2 by A8, A14, A19, FUNCT_1:3;
        omega -exponent(C.x) in rng E1 by A12, A19, TARSKI:def 1;
        then A22: omega -exponent(C.x) in rng E1 /\ rng E2
          by A21, XBOOLE_0:def 4;
        A23: E1.0 = b by A11;
        dom E1 = 1 by A11, AFINSQ_1:34;
        then A24: 0 in dom E1 by CARD_1:49, TARSKI:def 1;
        A25: omega -leading_coeff(C.x)
           = L1.(E1".(omega -exponent(C.x))) + L2.(E2".b) by A5, A17, A19, A22
          .= L1.0 + L2.(E2".b) by A19, A23, A24, FUNCT_1:34
          .= L1.0 + L2.0 by A8, A14, FUNCT_1:34
          .= L1.0 +^ L2.0 by CARD_2:36;
        A26: L1.0 = (omega -leading_coeff <% n *^ exp(omega, b) %>).0
            by A8, Th69
          .= <% omega -leading_coeff(n *^ exp(omega, b))%>.0 by Th60
          .= n by Th57, ORDINAL1:def 12;
        thus C.x = (L1.0 +^ L2.0) *^ exp(omega, omega -exponent(C.x))
            by A17, A25, Th64
          .= L1.0 *^ exp(omega, b) +^ L2.0 *^ exp(omega, E2.0)
            by A8, A19, ORDINAL3:46
          .= n *^ exp(omega, b) +^ (CantorNF a).0 by A13, A26, Th65
          .= n *^ exp(omega, b) +^ a0 by A9, AFINSQ_1:35
          .= (<% (n *^ exp(omega,b)) +^ a0 %> ^ A0).x by A20, AFINSQ_1:35;
      end;
      suppose A27: omega -exponent(C.x) <> b;
        then A28: not omega -exponent(C.x) in rng E1 by A12, TARSKI:def 1;
        x in dom(omega -exponent C) by A17, Def1;
        then (omega -exponent C).x in rng(omega -exponent C) by FUNCT_1:3;
        then omega -exponent(C.x) in rng E1 \/ rng E2 by A4, A17, Def1;
        then omega -exponent(C.x) in rng E1 or
          omega -exponent(C.x) in rng E2 by XBOOLE_0:def 3;
        then omega -exponent(C.x) in rng E2\rng E1 by A28, XBOOLE_0:def 5;
        then A29: omega -leading_coeff(C.x) = L2.(E2".(omega -exponent(C.x)))
            by A5, A17
          .= L2.(E2".((omega -exponent C).x)) by A17, Def1
          .= L2.x by A15, A17, A18, FUNCT_1:34;
        (omega -exponent C).x <> b by A17, A27, Def1;
        then not x in 1 by A8, A15, CARD_1:49, TARSKI:def 1;
        then not x in len <% (n *^ exp(omega,b)) +^ a0 %> by AFINSQ_1:34;
        then consider m be Nat such that
          A30: m in dom A0 & x = len <% (n *^ exp(omega,b)) +^ a0 %> + m
          by A16, A17, AFINSQ_1:20;
        A31: x = 1 + m by A30, AFINSQ_1:34
          .= len <% a0 %> + m by AFINSQ_1:34;
        A32: x in dom CantorNF a by A17, A18, Def1;
        thus C.x = L2.x *^ exp(omega, omega -exponent(C.x)) by A17, A29, Th64
          .= L2.x *^ exp(omega, (omega -exponent C).x) by A17, Def1
          .= (CantorNF a).x by A15, A32, Th65
          .= A0.m by A9, A30, A31, AFINSQ_1:def 3
          .= (<% (n *^ exp(omega,b)) +^ a0 %> ^ A0).x by A30, AFINSQ_1:def 3;
      end;
    end;
    then C = <% (n *^ exp(omega,b)) +^ a0 %> ^ A0 by A16, FUNCT_1:2;
    hence (n *^ exp(omega, b)) (+) a
       = (n *^ exp(omega,b) +^ a0) +^ Sum^ A0 by A3, ORDINAL5:55
      .= n *^ exp(omega,b) +^ (a0 +^ Sum^ A0) by ORDINAL3:30
      .= n *^ exp(omega,b) +^ (Sum^ (<% a0 %>^A0)) by ORDINAL5:55
      .= n *^ exp(omega,b) +^ a by A9;
  end;
  suppose A33: n is non zero & a <> 0 & E2.0 <> b;
    then A34: E2.0 in b by A2, XBOOLE_0:def 8, ORDINAL1:11;
    0 c< n by A33, XBOOLE_1:2, XBOOLE_0:def 8;
    then A35: 0 in n & n in omega by ORDINAL1:11, ORDINAL1:def 12;
    A36: E1 = omega -exponent <% n *^ exp(omega, b) %> by A33, Th69
      .= <% omega -exponent(n *^ exp(omega, b)) %> by Th46
      .= <% b %> by A35, ORDINAL5:58;
    then A37: rng E1 = {b} by AFINSQ_1:33;
    rng E1 /\ rng E2 = {}
    proof
      assume rng E1 /\ rng E2 <> {};
      then consider y being object such that
        A38: y in rng E1 /\ rng E2 by XBOOLE_0:def 1;
      A39: y in rng E1 & y in rng E2 by A38, XBOOLE_0:def 4;
      then y = b by A37, TARSKI:def 1;
      then consider x being object such that
        A40: x in dom E2 & E2.x = b by A39, FUNCT_1:def 3;
      reconsider x as Ordinal by A40;
      x <> 0 by A34, A40;
      then 0 c< x by XBOOLE_1:2, XBOOLE_0:def 8;
      then A41: 0 in x by ORDINAL1:11;
      A42: x in dom CantorNF a by A40, Def1;
      then omega -exponent((CantorNF a).x) in omega -exponent((CantorNF a).0)
        by A41, ORDINAL5:def 11;
      then b in omega -exponent((CantorNF a).0) by A40, A42, Def1;
      hence contradiction by A34, A41, A42, Def1, ORDINAL1:10;
    end;
    then A43: rng E1 misses rng E2 by XBOOLE_0:def 7;
    A44: dom C = card dom(omega -exponent C) by Def1
      .= card rng(omega -exponent C) by CARD_1:70
      .= card rng E1 +` card rng E2 by A4, A43, CARD_2:35
      .= card dom E1 +` card rng E2 by CARD_1:70
      .= dom E1 +` card dom E2 by CARD_1:70
      .= len E1 + dom CantorNF a by Def1
      .= 1 + dom CantorNF a by A36, AFINSQ_1:34
      .= len <% (n *^ exp(omega,b)) %> + len CantorNF a by AFINSQ_1:34
      .= dom(<% (n *^ exp(omega,b)) %> ^ CantorNF a) by AFINSQ_1:17;
    for x being object st x in dom C
      holds C.x = (<% (n *^ exp(omega,b)) %> ^ CantorNF a).x
    proof
      let x be object;
      assume A45: x in dom C;
      for c, d be Ordinal st c in d & d in dom(E1^E2)
        holds (E1^E2).d in (E1^E2).c
      proof
        let c, d be Ordinal;
        assume A46: c in d & d in dom(E1^E2);
        then A47: c in dom(E1^E2) by ORDINAL1:10;
        then reconsider m1 = c, m2 = d as Nat by A46;
        per cases by A47, AFINSQ_1:20;
        suppose A48: m1 in dom E1;
          then m1 in 1 by A36, AFINSQ_1:34;
          then A49: m1 = 0 by CARD_1:49, TARSKI:def 1;
          A50: (E1^E2).m1 = E1.m1 by A48, AFINSQ_1:def 3
            .= b by A36, A49;
          not m2 in dom E1
          proof
            assume m2 in dom E1;
            then m2 in 1 by A36, AFINSQ_1:34;
            hence contradiction by A46, CARD_1:49, TARSKI:def 1;
          end;
          then consider k2 being Nat such that
            A51: k2 in dom E2 & m2 = len E1 + k2 by A46, AFINSQ_1:20;
          A52: (E1^E2).m2 = E2.k2 by A51, AFINSQ_1:def 3;
          per cases;
          suppose k2 = 0;
            hence thesis by A34, A50, A52;
          end;
          suppose k2 <> 0;
            then 0 c< k2 by XBOOLE_1:2, XBOOLE_0:def 8;
            then 0 in k2 by ORDINAL1:11;
            then E2.k2 in E2.0 by A51, ORDINAL5:def 1;
            hence thesis by A34, A50, A52, ORDINAL1:10;
          end;
        end;
        suppose ex k1 being Nat st k1 in dom E2 & m1 = len E1 + k1;
          then consider k1 being Nat such that
            A53: k1 in dom E2 & m1 = len E1 + k1;
          A54: (E1^E2).m1 = E2.k1 by A53, AFINSQ_1:def 3;
          not m2 in dom E1
          proof
            assume m2 in dom E1;
            then A55: m2 in 1 by A36, AFINSQ_1:34;
            per cases;
            suppose k1 = 0;
              hence contradiction by A46, A36, A53, A55, AFINSQ_1:34;
            end;
            suppose k1 <> 0;
              then len E1 < len E1 + k1 by NAT_1:16;
              then 1 < m1 by A36, A53, AFINSQ_1:34;
              then 1 in Segm m1 by NAT_1:44;
              hence contradiction by A46, A55, ORDINAL1:10;
            end;
          end;
          then consider k2 being Nat such that
            A56: k2 in dom E2 & m2 = len E1 + k2 by A46, AFINSQ_1:20;
          A57: (E1^E2).m2 = E2.k2 by A56, AFINSQ_1:def 3;
          m1 in Segm m2 by A46;
          then len E1 + k1 - len E1 < len E1 + k2 - len E1
            by A53, A56, NAT_1:44, XREAL_1:14;
          then k1 in Segm k2 by NAT_1:44;
          hence thesis by A54, A56, A57, ORDINAL5:def 1;
        end;
      end;
      then A58: E1 ^ E2 is decreasing by ORDINAL5:def 1;
      rng(E1^E2) = rng(omega -exponent C) by A4, AFINSQ_1:26;
      then A59: omega -exponent C = E1 ^ E2 by A58, Th34;
      per cases;
      suppose A60: x = 0;
        A61: omega -exponent(C.x) = (omega -exponent C).x by A45, Def1
          .= b by A36, A59, A60, AFINSQ_1:35;
        then omega -exponent(C.x) in rng E1 by A37, TARSKI:def 1;
        then A62: omega -exponent(C.x) in rng E1 \ rng E2 by A43, XBOOLE_1:83;
        A63: E1.0 = b by A36;
        dom E1 = 1 by A36, AFINSQ_1:34;
        then A64: 0 in dom E1 by CARD_1:49, TARSKI:def 1;
        omega -leading_coeff(C.x) = L1.(E1".(omega -exponent(C.x)))
            by A5, A45, A62
          .= L1.0 by A61, A63, A64, FUNCT_1:34
          .= (omega -leading_coeff <%n *^ exp(omega,b)%>).0 by A33, Th69
          .= <% omega -leading_coeff (n *^ exp(omega,b)) %>.0 by Th60
          .= n by Th57, ORDINAL1:def 12;
        hence C.x = n *^ exp(omega, b) by A45, A61, Th64
          .= (<% (n *^ exp(omega,b)) %> ^ CantorNF a).x by A60, AFINSQ_1:35;
      end;
      suppose A66: x <> 0;
        then not x in 1 by CARD_1:49, TARSKI:def 1;
        then A67: not x in len E1 by A36, AFINSQ_1:34;
        A68: x in dom(omega -exponent C) by A45, Def1;
        then consider k being Nat such that
          A69: k in dom E2 & x = len E1 + k by A59, A67, AFINSQ_1:20;
        omega -exponent(C.x) <> b
        proof
          0 in 1 by CARD_1:49, TARSKI:def 1;
          then A70: 0 in dom E1 by A36, AFINSQ_1:34;
          assume omega -exponent(C.x) = b;
          then A71: (omega -exponent C).x = E1.0 by A36, A45, Def1
            .= (omega -exponent C).0 by A59, A70, AFINSQ_1:def 3;
          0 in dom(omega -exponent C) by A59, A70, TARSKI:def 3, AFINSQ_1:21;
          hence contradiction by A66, A68, A71, FUNCT_1:def 4;
        end;
        then A72: not omega -exponent(C.x) in rng E1 by A37, TARSKI:def 1;
        A73: k in dom CantorNF a by A69, Def1;
        A74: x = 1 + k by A36, A69, AFINSQ_1:34
          .= len <%n *^ exp(omega,b)%> + k by AFINSQ_1:34;
        x in dom(omega -exponent C) by A45, Def1;
        then (omega -exponent C).x in rng(omega -exponent C) by FUNCT_1:3;
        then omega -exponent(C.x) in rng E1 \/ rng E2 by A4, A45, Def1;
        then omega -exponent(C.x) in rng E2 by A72, XBOOLE_0:def 3;
        then omega -exponent(C.x) in rng E2 \ rng E1 by A72, XBOOLE_0:def 5;
        then omega -leading_coeff(C.x)
           = L2.(E2".(omega -exponent(C.x))) by A5, A45
          .= L2.(E2".((omega -exponent C).x)) by A45, Def1
          .= L2.(E2".(E2.k)) by A59, A69, AFINSQ_1:def 3
          .= L2.k by A69, FUNCT_1:34;
        hence C.x = L2.k *^ exp(omega, omega -exponent(C.x)) by A45, Th64
          .= L2.k *^ exp(omega, (omega -exponent C).x) by A45, Def1
          .= L2.k *^ exp(omega, E2.k) by A59, A69, AFINSQ_1:def 3
          .= (CantorNF a).k by A73, Th65
          .= (<% n *^ exp(omega,b) %> ^ CantorNF a).x
            by A73, A74, AFINSQ_1:def 3;
      end;
    end;
    hence (n *^ exp(omega, b)) (+) a
       = Sum^ (<% (n *^ exp(omega,b)) %> ^ CantorNF a) by A3, A44, FUNCT_1:2
      .= n *^ exp(omega,b) +^ Sum^ CantorNF a by ORDINAL5:55
      .= n *^ exp(omega,b) +^ a;
  end;
end;

theorem Th84:
  for A, B being finite Ordinal-Sequence st A^B is Cantor-normal-form
  holds (Sum^ A) (+) (Sum^ B) = (Sum^ A) +^ (Sum^ B)
proof
  defpred P[Nat] means for A, B being finite Ordinal-Sequence
    st len A = $1 & A^B is Cantor-normal-form
    holds (Sum^ A) (+) (Sum^ B) = (Sum^ A) +^ (Sum^ B);
  A1: P[0]
  proof
    let A, B being finite Ordinal-Sequence;
    assume len A = 0 & A^B is Cantor-normal-form;
    then A is empty;
    then A2: Sum^ A = 0 by ORDINAL5:52;
    hence (Sum^ A) (+) (Sum^ B) = Sum^ B by Th82
      .= (Sum^ A) +^ (Sum^ B) by A2, ORDINAL2:30;
  end;
  A3: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume A4: P[n];
    let A, B being finite Ordinal-Sequence;
    assume A5: len A = n+1 & A^B is Cantor-normal-form;
    then A6: A <> {} & A is Cantor-normal-form by ORDINAL5:66;
    then consider a0 being Cantor-component Ordinal,
      A0 being Cantor-normal-form Ordinal-Sequence such that
      A7: A = <% a0 %> ^ A0 by ORDINAL5:67;
    A8: <% a0 %> ^ (A0 ^ B) is Cantor-normal-form by A5, A7, AFINSQ_1:27;
    then A9: A0 ^ B is Cantor-normal-form by ORDINAL5:66;
    n+1 = len <% a0 %> + len A0 by A5, A7, AFINSQ_1:17
      .= 1 + len A0 by AFINSQ_1:34;
    then A10: (Sum^ A0) (+) (Sum^ B) = (Sum^ A0) +^ (Sum^ B) by A4, A9;
    consider b being Ordinal, m being Nat such that
      A11: 0 in Segm m & a0 = m *^ exp(omega,b) by ORDINAL5:def 9;
    reconsider m as non zero Nat by A11;
    0 in m & m in omega by A11, ORDINAL1:def 12;
    then A12: omega -exponent a0 = b by A11, ORDINAL5:58;
    A13: omega -exponent Sum^ A0 c= b
    proof
      per cases;
      suppose A14: 0 in Sum^ A0;
        Sum^ A0 in exp(omega, omega -exponent a0) by A6, A7, Th43;
        hence thesis by A12, A14, Th23, ORDINAL1:def 2;
      end;
      suppose not 0 in Sum^ A0;
        then omega -exponent Sum^ A0 = 0 by ORDINAL5:def 10;
        hence thesis;
      end;
    end;
    A15: omega -exponent (Sum^ A0 (+) Sum^ B) c= b
    proof
      A16: Sum^ A0 (+) Sum^ B = Sum^ (A0^B) by A10, Th24;
      per cases;
      suppose A17: 0 in Sum^ (A0^B);
        Sum^ (A0^B) in exp(omega, omega -exponent a0) by A8, Th43;
        hence thesis by A12, A16, A17, Th23, ORDINAL1:def 2;
      end;
      suppose not 0 in Sum^ (A0^B);
        then omega -exponent Sum^ (A0^B) = 0 by ORDINAL5:def 10;
        hence thesis by A16;
      end;
    end;
    thus (Sum^ A) (+) (Sum^ B) = (a0 +^ Sum^ A0) (+) Sum^ B by A7, ORDINAL5:55
      .= (a0 (+) Sum^ A0) (+) Sum^ B by A11, A13, Th83
      .= a0 (+) (Sum^ A0 (+) Sum^ B) by Th81
      .= a0 +^ (Sum^ A0 (+) Sum^ B) by A11, A15, Th83
      .= a0 +^ Sum^ A0 +^ Sum^ B by A10, ORDINAL3:30
      .= Sum^ A +^ Sum^ B by A7, ORDINAL5:55;
  end;
  A18: for n being Nat holds P[n] from NAT_1:sch 2(A1,A3);
  let A, B being finite Ordinal-Sequence;
  assume A19: A^B is Cantor-normal-form;
  len A is Nat;
  hence thesis by A18, A19;
end;

theorem Th85:
  for a, b being Ordinal
  st a <> 0 implies omega -exponent b in omega -exponent last CantorNF a
  holds a (+) b = a +^ b
proof
  let a, b be Ordinal;
  assume A1: a <> 0 implies omega-exponent b in omega-exponent last CantorNF a;
  per cases;
  suppose a = 0;
    then a (+) b = b & a +^ b = b by Th82, ORDINAL2:30;
    hence thesis;
  end;
  suppose b = 0;
    then a (+) b = a & a +^ b = a by Th82, ORDINAL2:27;
    hence thesis;
  end;
  suppose A2: a <> 0 & b <> 0;
    then omega-exponent Sum^ CantorNF b in omega-exponent last CantorNF a
      by A1;
    then omega -exponent((CantorNF b).0) in omega -exponent last CantorNF a
      by Th44;
    then A3: CantorNF a ^ CantorNF b is Cantor-normal-form by A2, Th33;
    thus a (+) b = Sum^ CantorNF a (+) Sum^ CantorNF b
      .= a +^ b by A3, Th84;
  end;
end;

theorem Th86:
  for a, b being Ordinal, n being Nat
  st a <> 0 implies b c= omega -exponent last CantorNF a
  holds a (+) (n *^ exp(omega,b)) = a +^ n *^ exp(omega,b)
proof
  let a, b be Ordinal, n be Nat;
  set c = n *^ exp(omega, b);
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF c;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF c;
  assume A1: a <> 0 implies b c= omega -exponent last CantorNF a;
  per cases;
  suppose A2: a = 0;
    hence a (+) (n *^ exp(omega, b)) = n *^ exp(omega, b) by Th82
      .= a +^ n *^ exp(omega,b) by A2, ORDINAL2:30;
  end;
  suppose not 0 in n;
    then A3: n = 0 by ORDINAL1:16, XBOOLE_1:3;
    hence a (+) (n *^ exp(omega, b)) = a (+) 0 by ORDINAL2:35
      .= a by Th82
      .= a +^ 0 by ORDINAL2:27
      .= a +^ n *^ exp(omega,b) by A3, ORDINAL2:35;
  end;
  suppose A4: a <> 0 & 0 in n;
    then consider A0 being Cantor-normal-form Ordinal-Sequence,
      a0 being Cantor-component Ordinal such that
      A5: CantorNF a = A0 ^ <% a0 %> by Th29;
    A6: last CantorNF a = a0 by A5, AFINSQ_1:92;
    consider c being Ordinal, m being Nat such that
      A7: 0 in Segm m & a0 = m *^ exp(omega,c) by ORDINAL5:def 9;
    0 in m & m in omega by A7, ORDINAL1:def 12;
    then A8: omega -exponent a0 = c by A7, ORDINAL5:58;
    n in omega by ORDINAL1:def 12;
    then A9: omega -exponent (n *^ exp(omega,b)) = b by A4, ORDINAL5:58;
    then A10: a0 (+) (n *^ exp(omega,b)) = a0 +^ (n *^ exp(omega,b))
      by A1, A4, A6, A7, A8, Th83;
    A11: a (+) (n *^ exp(omega,b)) = (Sum^ CantorNF a) (+) (n *^ exp(omega,b))
      .= (Sum^ A0 +^ Sum^ <% a0 %>) (+) (n *^ exp(omega,b)) by A5, Th24
      .= (Sum^ A0 (+) Sum^ <% a0 %>) (+) (n *^ exp(omega,b)) by A5, Th84
      .= Sum^ A0 (+) (Sum^ <% a0 %> (+) (n *^ exp(omega,b))) by Th81
      .= Sum^ A0 (+) (a0 +^ n *^ exp(omega,b)) by A10, ORDINAL5:53;
    set A = CantorNF a;
    per cases;
    suppose A12: b = c;
      set B = A0 ^ <% a0 +^ n *^ exp(omega,b) %>;
      B is Cantor-normal-form
      proof
        A13: a0 +^ n *^ exp(omega,b) = (m +^ n) *^ exp(omega,c)
            by A7, A12, ORDINAL3:46
          .= (m+n) *^ exp(omega,c) by CARD_2:36;
        A14: 0 < m by A7, NAT_1:44;
        A15: now
          let d be Ordinal;
          assume d in dom B;
          then per cases by AFINSQ_1:20;
          suppose A16: d in dom A0;
            then A17: B.d = A0.d & A0.d = A.d by A5, ORDINAL4:def 1;
            d in dom A0 +^ dom <% a0 %> by A16, ORDINAL3:24, TARSKI:def 3;
            then d in dom A by A5, ORDINAL4:def 1;
            hence B.d is Cantor-component by A17, ORDINAL5:def 11;
          end;
          suppose ex k being Nat st k in dom <% a0 +^ n *^ exp(omega,b) %>
              & d = len A0 + k;
            then consider k being Nat such that
              A18: k in dom <% a0 +^ n *^ exp(omega,b) %> & d = len A0 + k;
            k in Segm 1 by A18, AFINSQ_1:33;
            then A19: k = 0 by NAT_1:44, NAT_1:14;
            B.d = <% a0 +^ n *^ exp(omega,b) %>.k by A18, AFINSQ_1:def 3
              .= (m+n) *^ exp(omega,c) by A13, A19;
            hence B.d is Cantor-component by A14;
          end;
        end;
        now
          let d, e being Ordinal;
          assume A20: d in e & e in dom B;
          then per cases by AFINSQ_1:20;
          suppose A21: e in dom A0;
            then A22: B.e = A0.e & A0.e = A.e by A5, ORDINAL4:def 1;
            e in dom A0 +^ dom <% a0 %> by A21, ORDINAL3:24, TARSKI:def 3;
            then e in dom A by A5, ORDINAL4:def 1;
            then A23: omega-exponent(B.e) in omega-exponent(A.d)
              by A20, A22, ORDINAL5:def 11;
            d in dom A0 by A20, A21, ORDINAL1:10;
            then B.d = A0.d & A0.d = A.d by A5, ORDINAL4:def 1;
            hence omega-exponent(B.e) in omega-exponent(B.d) by A23;
          end;
          suppose ex k being Nat st k in dom <% a0 +^ n *^ exp(omega,b) %>
              & e = len A0 + k;
            then consider k being Nat such that
              A24: k in dom <% a0 +^ n *^ exp(omega,b) %> & e = len A0 + k;
            A25: k in Segm 1 by A24, AFINSQ_1:33;
            then A26: k = 0 by NAT_1:44, NAT_1:14;
            A27: B.e = <% a0 +^ n *^ exp(omega,b) %>.k by A24, AFINSQ_1:def 3
              .= (m+n) *^ exp(omega,c) by A13, A26;
            0 c< m+n by A14, XBOOLE_1:2, XBOOLE_0:def 8;
            then 0 in m+n & m+n in omega by ORDINAL1:11, ORDINAL1:def 12;
            then A28: omega-exponent(B.e) = c by A27, ORDINAL5:58;
            A29: A.d = A0.d & B.d = A0.d by A5, A20, A24, A26, ORDINAL4:def 1;
            k in dom <% a0 %> by A25, AFINSQ_1:33;
            then A30: e in dom A by A5, A24, AFINSQ_1:23;
            omega-exponent(A.e) = omega-exponent(B.e)
              by A5, A8, A24, A26, A28, AFINSQ_1:36;
            hence omega-exponent(B.e) in omega-exponent(B.d)
              by A20, A29, A30, ORDINAL5:def 11;
          end;
        end;
        hence thesis by A15, ORDINAL5:def 11;
      end;
      then Sum^ A0 (+) Sum^ <% a0 +^ n *^ exp(omega,b) %>
         = Sum^ A0 +^ Sum^ <% a0 +^ n *^ exp(omega,b) %> by Th84
        .= Sum^ A0 +^ (a0 +^ n *^ exp(omega,b)) by ORDINAL5:53
        .= Sum^ A0 +^ a0 +^ n *^ exp(omega,b) by ORDINAL3:30
        .= Sum^ (A0 ^ <% a0 %>) +^ n *^ exp(omega,b) by ORDINAL5:54
        .= a +^ n *^ exp(omega,b) by A5;
      hence thesis by A11, ORDINAL5:53;
    end;
    suppose A31: b <> c;
      set B = A0 ^ <% a0, n *^ exp(omega,b) %>;
      B is Cantor-normal-form
      proof
        A32: now
          let d be Ordinal;
          assume d in dom B;
          then per cases by AFINSQ_1:20;
          suppose A33: d in dom A0;
            then A34: B.d = A0.d & A0.d = A.d by A5, ORDINAL4:def 1;
            d in dom A0 +^ dom <% a0 %> by A33, ORDINAL3:24, TARSKI:def 3;
            then d in dom A by A5, ORDINAL4:def 1;
            hence B.d is Cantor-component by A34, ORDINAL5:def 11;
          end;
          suppose ex k being Nat st k in dom <% a0, n *^ exp(omega,b) %>
              & d = len A0 + k;
            then consider k being Nat such that
              A35: k in dom <% a0, n *^ exp(omega,b) %> & d = len A0 + k;
            k in Segm 2 by AFINSQ_1:38, A35;
            then per cases by NAT_1:44, NAT_1:23;
            suppose A36: k = 0;
              B.d = <% a0, n *^ exp(omega,b) %>.k by A35, AFINSQ_1:def 3
                .= a0 by A36;
              hence B.d is Cantor-component;
            end;
            suppose A37: k = 1;
              A38: B.d = <% a0, n *^ exp(omega,b) %>.k by A35, AFINSQ_1:def 3
                .= n *^ exp(omega,b) by A37;
              0 <> n by A4;
              hence B.d is Cantor-component by A38;
            end;
          end;
        end;
        now
          let d, e be Ordinal;
          A39: b in c by A1, A4, A6, A8, A31, XBOOLE_0:def 8, ORDINAL1:11;
          assume A40: d in e & e in dom B;
          then per cases by AFINSQ_1:20;
          suppose A41: e in dom A0;
            then A42: B.e = A0.e & A0.e = A.e by A5, ORDINAL4:def 1;
            e in dom A0 +^ dom <% a0 %> by A41, ORDINAL3:24, TARSKI:def 3;
            then e in dom A by A5, ORDINAL4:def 1;
            then A43: omega-exponent(B.e) in omega-exponent(A.d)
              by A40, A42, ORDINAL5:def 11;
            d in dom A0 by A40, A41, ORDINAL1:10;
            then B.d = A0.d & A0.d = A.d by A5, ORDINAL4:def 1;
            hence omega-exponent(B.e) in omega-exponent(B.d) by A43;
          end;
          suppose ex k2 being Nat st k2 in dom <% a0, n *^ exp(omega,b) %>
              & e = len A0 + k2;
            then consider k2 being Nat such that
              A44: k2 in dom <% a0, n *^ exp(omega,b) %> & e = len A0 + k2;
            k2 in Segm 2 by AFINSQ_1:38, A44;
            then A45: k2 < 2 by NAT_1:44;
            d in dom B by A40, ORDINAL1:10;
            then per cases by AFINSQ_1:20;
            suppose A46: d in dom A0;
              then A47: B.d = A0.d & A0.d = A.d by A5, ORDINAL4:def 1;
              0 in Segm 1 by NAT_1:44;
              then 0 in dom <% a0 %> by AFINSQ_1:33;
              then len A0 + 0 in dom A by A5, AFINSQ_1:23;
              then omega-exponent(A.len A0) in omega-exponent(A.d)
                by A46, ORDINAL5:def 11;
              then A48: c in omega-exponent(B.d) by A5, A8, A47, AFINSQ_1:36;
              per cases by A45, NAT_1:23;
              suppose A49: k2 = 0;
                B.e = <% a0, n *^ exp(omega,b) %>.k2 by A44, AFINSQ_1:def 3
                  .= a0 by A49;
                hence omega-exponent(B.e) in omega-exponent(B.d) by A8, A48;
              end;
              suppose A50: k2 = 1;
                B.e = <% a0, n *^ exp(omega,b) %>.k2 by A44, AFINSQ_1:def 3
                  .= n *^ exp(omega,b) by A50;
                hence omega-exponent(B.e) in omega-exponent(B.d)
                  by A9, A39, A48, ORDINAL1:10;
              end;
            end;
            suppose ex k1 being Nat st k1 in dom <% a0, n *^ exp(omega,b) %>
                & d = len A0 + k1;
              then consider k1 being Nat such that
                A51: k1 in dom <% a0, n *^ exp(omega,b) %> & d = len A0 + k1;
              k1 in Segm 2 by AFINSQ_1:38, A51;
              then A52: k1 < 2 by NAT_1:44;
              A53: k1 = 0 & k2 = 1
              proof
                per cases by A45, A52, NAT_1:23;
                :: we lead everything else to a contradiction
                suppose k1 = 0 & k2 = 0;
                  hence thesis by A40, A44, A51;
                end;
                suppose k1 = 0 & k2 = 1;
                  hence thesis;
                end;
                suppose A54: k1 = 1 & k2 = 0;
                  reconsider e, d as finite Ordinal by A44, A51;
                  e < d by A44, A51, A54, XREAL_1:8;
                  then e in Segm d by NAT_1:44;
                  hence thesis by A40;
                end;
                suppose k1 = 1 & k2 = 1;
                  hence thesis by A40, A44, A51;
                end;
              end;
              B.d = <% a0, n *^ exp(omega,b) %>.k1 by A51, AFINSQ_1:def 3
                .= a0 by A53;
              then A55: omega-exponent(B.d) = c by A8;
              B.e = <% a0, n *^ exp(omega,b) %>.k2 by A44, AFINSQ_1:def 3
                .= n *^ exp(omega,b) by A53;
              hence omega-exponent(B.e) in omega-exponent(B.d) by A9, A39, A55;
            end;
          end;
        end;
        hence thesis by A32, ORDINAL5:def 11;
      end;
      then Sum^ A0 (+) Sum^ <% a0, n *^ exp(omega,b) %>
         = Sum^ A0 +^ Sum^ <% a0, n *^ exp(omega,b) %> by Th84
        .= Sum^ A0 +^ (a0 +^ n *^ exp(omega,b)) by Th25
        .= Sum^ A0 +^ a0 +^ n *^ exp(omega,b) by ORDINAL3:30
        .= Sum^ (A0 ^ <% a0 %>) +^ n *^ exp(omega,b) by ORDINAL5:54
        .= a +^ n *^ exp(omega,b) by A5;
      hence thesis by A11, Th25;
    end;
  end;
end;

theorem
  for a being Ordinal, n, m being Nat
  holds n*^exp(omega,a) (+) m*^exp(omega,a) = (n+m)*^exp(omega,a)
proof
  let a be Ordinal, n, m be Nat;
  per cases;
  suppose A1: n = 0;
    hence n*^exp(omega,a) (+) m*^exp(omega,a)
       = 0 (+) m*^exp(omega,a) by ORDINAL2:35
      .= (n+m)*^exp(omega,a) by A1, Th82;
  end;
  suppose A2: n <> 0;
    then A3: 0 in n & n in omega by XBOOLE_1:61, ORDINAL1:11, ORDINAL1:def 12;
    omega -exponent last CantorNF (n*^exp(omega,a))
       = omega -exponent last({}^<% n*^exp(omega,a) %>) by A2, Th69
      .= omega -exponent(n*^exp(omega,a)) by AFINSQ_1:92
      .= a by A3, ORDINAL5:58;
    hence n*^exp(omega,a) (+) m*^exp(omega,a)
       = n*^exp(omega,a) +^ m*^exp(omega,a) by Th86
      .= (n+^m)*^exp(omega,a) by ORDINAL3:46
      .= (n+m)*^exp(omega,a) by CARD_2:36;
  end;
end;

theorem Th88:
  for a being Ordinal, n being Nat holds a (+) n = a +^ n
proof
  let a be Ordinal, n be Nat;
  A1: 0 c= omega -exponent last CantorNF a;
  thus a (+) n = a (+) (n*^1) by ORDINAL2:39
    .= a (+) (n*^exp(omega,0 qua Ordinal)) by ORDINAL2:43
    .= a +^ (n*^exp(omega,0 qua Ordinal)) by A1, Th86
    .= a +^ (n*^1) by ORDINAL2:43
    .= a +^ n by ORDINAL2:39;
end;

theorem Th89:
  for n, m being Nat holds n (+) m = n + m
proof
  let n, m be Nat;
  thus n (+) m = n +^ m by Th88
    .= n + m by CARD_2:36;
end;

registration
  let n, m be Nat;
  identify n (+) m with n + m;
  correctness by Th89;
end;

theorem Th90:
  for a being Ordinal holds a (+) 1 = succ a
proof
  let a be Ordinal;
  thus a (+) 1 = a +^ 1 by Th88
    .= succ a by ORDINAL2:31;
end;

theorem
  for a, b being Ordinal holds a (+) succ b = succ(a (+) b)
proof
  let a, b be Ordinal;
  thus a (+) succ b = a (+) (b (+) 1) by Th90
    .= (a (+) b) (+) 1 by Th81
    .= succ(a (+) b) by Th90;
end;

registration
  let a be empty Ordinal;
  cluster a (+) a -> empty;
  coherence;
end;

registration
  let a be non empty Ordinal, b be Ordinal;
  cluster a (+) b -> non empty;
  coherence
  proof
    assume A1: a (+) b is empty;
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    consider C being Cantor-normal-form Ordinal-Sequence such that
      A2: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
      for d being object st d in dom C holds
        (omega -exponent(C.d) in rng E1 \ rng E2 implies
          omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
        (omega -exponent(C.d) in rng E2 \ rng E1 implies
          omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
        (omega -exponent(C.d) in rng E1 /\ rng E2 implies
          omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
            L2.(E2".(omega -exponent(C.d)))) by Def5;
    C is empty by A1, A2;
    hence contradiction by A2;
  end;
end;

theorem Th92:
  for a being Ordinal holds a is limit_ordinal
    iff not 0 in rng(omega -exponent CantorNF a)
proof
  let a be Ordinal;
  per cases;
  suppose a = 0;
    hence thesis by ORDINAL2:4;
  end;
  suppose a <> 0;
    then consider A0 being Cantor-normal-form Ordinal-Sequence,
      a0 be Cantor-component Ordinal such that
      A2: CantorNF a = A0 ^ <% a0 %> by Th29;
    hereby
      assume A3: a is limit_ordinal;
      omega -exponent last CantorNF a <> 0
      proof
        assume omega -exponent last CantorNF a = 0;
        then omega -exponent a0 = 0 by A2, AFINSQ_1:92;
        then a0
           = (omega -leading_coeff a0) *^ exp(omega, 0 qua Ordinal) by Th59
          .= (omega -leading_coeff a0) *^ 1 by ORDINAL2:43
          .= omega -leading_coeff a0 by ORDINAL2:39;
        then A6: Sum^ CantorNF a = Sum^ A0 +^ omega -leading_coeff a0
          by A2, ORDINAL5:54;
        then A7: Sum^ A0 c= a by ORDINAL3:24;
        Sum^ A0 <> a
        proof
          assume Sum^ A0 = a;
          then Sum^ A0 +^ 0 = Sum^ A0 +^ omega -leading_coeff a0
            by A6, ORDINAL2:27;
          hence contradiction by ORDINAL3:21;
        end;
        then Sum^ A0 in a by A7, XBOOLE_0:def 8, ORDINAL1:11;
        then Sum^ A0 +^ omega -leading_coeff a0 in a by A3, CARD_2:70;
        hence contradiction by A6;
      end;
      hence not 0 in rng(omega -exponent CantorNF a) by Th51;
    end;
    assume A8: not 0 in rng(omega -exponent CantorNF a);
    now
      let b be Ordinal;
      assume b in a;
      then A9: succ b in succ a by ORDINAL3:3;
      not succ b = a
      proof
        assume succ b = a;
        then A10: a = b (+) 1 by Th90;
        set E1 = omega -exponent CantorNF b, E2 = omega -exponent CantorNF 1;
        set L1 = omega -leading_coeff CantorNF b;
        set L2 = omega -leading_coeff CantorNF 1;
        consider C being Cantor-normal-form Ordinal-Sequence such that
          A11: b (+) 1 = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
          for d being object st d in dom C holds
            (omega -exponent(C.d) in rng E1 \ rng E2 implies
              omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
            (omega -exponent(C.d) in rng E2 \ rng E1 implies
              omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
            (omega -exponent(C.d) in rng E1 /\ rng E2 implies
              omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
                L2.(E2".(omega -exponent(C.d)))) by Def5;
        E2 = omega -exponent <% 1 %> by Th71
          .= <% omega -exponent 1 %> by Th46
          .= <% 0 %> by Th21;
        then rng E2 = {0} by AFINSQ_1:33;
        then 0 in rng E2 by TARSKI:def 1;
        hence contradiction by A8, A10, A11, XBOOLE_1:7, TARSKI:def 3;
      end;
      hence succ b in a by A9, ORDINAL1:8;
    end;
    hence thesis by ORDINAL1:28;
  end;
end;

registration
  let a, b be limit_ordinal Ordinal;
  cluster a (+) b -> limit_ordinal;
  coherence
  proof
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    A1: rng(omega -exponent CantorNF(a(+)b)) = rng E1 \/ rng E2 by Th76;
    not 0 in rng E1 & not 0 in rng E2 by Th92;
    then not 0 in rng(omega -exponent CantorNF(a(+)b)) by A1, XBOOLE_0:def 3;
    hence thesis by Th92;
  end;
end;

registration
  let a be Ordinal, b be non limit_ordinal Ordinal;
  cluster a (+) b -> non limit_ordinal;
  coherence
  proof
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    A1: rng(omega -exponent CantorNF(a(+)b)) = rng E1 \/ rng E2 by Th76;
    0 in rng E2 by Th92;
    then 0 in rng(omega -exponent CantorNF(a(+)b))
      by A1, XBOOLE_1:7, TARSKI:def 3;
    hence thesis by Th92;
  end;
end;

theorem
  for a, b being Ordinal, n being non zero Nat
  st n*^exp(omega,b) c= a & a in (n+1)*^exp(omega,b)
  holds (CantorNF a).0 = n*^exp(omega,b)
proof
  let a, b be Ordinal, n be non zero Nat;
  assume A1: n*^exp(omega,b) c= a & a in (n+1)*^exp(omega,b);
  then A2: a <> {};
  then consider a0 being Cantor-component Ordinal,
    A0 being Cantor-normal-form Ordinal-Sequence such that
    A3: CantorNF a = <% a0 %> ^ A0 by ORDINAL5:67;
  A4: 0 in n by XBOOLE_1:61, ORDINAL1:11;
  n in succ n by ORDINAL1:6;
  then 0 in succ n by A4, ORDINAL1:10;
  then A5: 0 in n+1 by Lm5;
  n in omega & n+1 in omega by ORDINAL1:def 12;
  then A7: omega-exponent(n*^exp(omega,b)) = b by A4, ORDINAL5:58;
  omega-exponent((n+1)*^exp(omega,b)) = b by A5, ORDINAL5:58;
  then b c= omega-exponent a & omega-exponent a c= b
    by A7, A1, Th22, ORDINAL1:def 2;
  then A9: b = omega-exponent Sum^ CantorNF a by XBOOLE_0:def 10
    .= omega-exponent((CantorNF a).0) by Th44;
  0 in dom CantorNF a by A2, XBOOLE_1:61, ORDINAL1:11;
  then A10: (CantorNF a).0 is Cantor-component by ORDINAL5:def 11;
  then reconsider m = omega -leading_coeff((CantorNF a).0) as Nat;
  A11: (CantorNF a).0 = m *^ exp(omega,b) by A9, A10, Th59;
  A12: (CantorNF a).0 = a0 by A3, AFINSQ_1:35;
  m = n
  proof
    assume m <> n;
    then per cases by XXREAL_0:1;
    suppose m < n;
      then m+1 <= n by NAT_1:13;
      then Segm(m+1) c= Segm n by NAT_1:39;
      then (m+1)*^exp(omega,b) c= n*^exp(omega,b) by ORDINAL2:41;
      then (m+^1)*^exp(omega,b) c= n*^exp(omega,b) by CARD_2:36;
      then A13: m*^exp(omega,b) +^ 1*^exp(omega,b) c= n*^exp(omega,b)
        by ORDINAL3:46;
      Sum^ A0 in exp(omega, b) by A3, A9, A12, Th43;
      then Sum^ A0 in 1*^exp(omega,b) by ORDINAL2:39;
      then m*^exp(omega,b) +^ Sum^ A0 in m*^exp(omega,b) +^ 1*^exp(omega,b)
        by ORDINAL2:32;
      then a0 +^ Sum^ A0 in n*^exp(omega,b) by A11, A12, A13;
      then Sum^ CantorNF a in n*^exp(omega,b) by A3, ORDINAL5:55;
      hence contradiction by A1, ORDINAL1:12;
    end;
    suppose n < m;
      then n+1 <= m by NAT_1:13;
      then Segm(n+1) c= Segm m by NAT_1:39;
      then A14: (n+1)*^exp(omega,b) c= (CantorNF a).0 by A11, ORDINAL2:41;
      (CantorNF a).0 c= Sum^ CantorNF a by ORDINAL5:56;
      then (n+1)*^exp(omega,b) c= Sum^ CantorNF a by A14, XBOOLE_1:1;
      hence contradiction by A1, ORDINAL1:12;
    end;
  end;
  hence thesis by A11;
end;

theorem
  for a, b being Ordinal
  st rng(omega -exponent CantorNF a) = rng(omega -exponent CantorNF b)
  for c being Ordinal st c in dom CantorNF a
  holds (omega -leading_coeff CantorNF (a(+)b)).c
    = (omega -leading_coeff CantorNF a).c + (omega -leading_coeff CantorNF b).c
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  assume A1: rng E1 = rng E2;
  then A2: E1 = E2 by Th34;
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A3: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
    A4: for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  let c be Ordinal;
  assume A5: c in dom CantorNF a;
  A6: dom CantorNF a = card dom E1 by Def1
    .= card rng E1 by CARD_1:70
    .= card dom(omega -exponent C) by A1, A3, CARD_1:70
    .= dom C by Def1;
  A7: rng(omega -exponent C) = rng E1 by A1, A3;
  then A8: rng(omega -exponent C) = rng E1 /\ rng E2 by A1;
  c in dom(omega -exponent C) by A5, A6, Def1;
  then (omega -exponent C).c in rng(omega -exponent C) by FUNCT_1:3;
  then A9: omega -exponent(C.c) in rng E1 /\ rng E2 by A5, A6, A8, Def1;
  A10: omega -exponent C = E1 by A7, Th34;
  A11: c in dom E1 by A5, Def1;
  thus (omega -leading_coeff CantorNF (a(+)b)).c
     = omega -leading_coeff(C.c) by A3, A5, A6, Def3
    .= L1.(E1".(omega -exponent(C.c))) + L2.(E2".(omega -exponent(C.c)))
      by A4, A5, A6, A9
    .= L1.(E1".(E1.c)) + L2.(E2".(omega -exponent(C.c))) by A5, A6, A10, Def1
    .= L1.(E1".(E1.c)) + L2.(E2".(E2.c)) by A2, A5, A6, A10, Def1
    .= L1.c + L2.(E2".(E2.c)) by A11, FUNCT_1:34
    .= L1.c + L2.c by A2, A11, FUNCT_1:34;
end;

theorem Th95:
  for a, b being Ordinal holds
    (omega -exponent((CantorNF(a(+)b)).0) in rng(omega -exponent CantorNF a)
      implies
        omega -exponent((CantorNF(a(+)b)).0) = (omega-exponent CantorNF a).0) &
    (omega -exponent((CantorNF(a(+)b)).0) in rng(omega -exponent CantorNF b)
      implies
        omega -exponent((CantorNF(a(+)b)).0) = (omega-exponent CantorNF b).0)
proof
  let a, b be Ordinal;
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set C0 = CantorNF(a (+) b);
    A2: rng(omega-exponent C0) = rng E1 \/ rng E2 by Th76;
    hereby
      assume omega -exponent(C0.0) in rng E1;
      then consider x being object such that
        A4: x in dom E1 & E1.x = omega -exponent(C0.0) by FUNCT_1:def 3;
      reconsider x as Ordinal by A4;
      x = 0
      proof
        assume A5: x <> 0;
        then 0 c< x by XBOOLE_1:2, XBOOLE_0:def 8;
        then A6: 0 in x by ORDINAL1:11;
        then A7: 0 in dom E1 by A4, ORDINAL1:10;
        then E1.0 in rng E1 by FUNCT_1:3;
        then E1.0 in rng(omega-exponent C0) by A2, XBOOLE_1:7, TARSKI:def 3;
        then consider y being object such that
          A8: y in dom(omega -exponent C0) & (omega -exponent C0).y = E1.0
          by FUNCT_1:def 3;
        reconsider y as Ordinal by A8;
        A9: y in dom C0 by A8, Def1;
        then A10: omega -exponent(C0.y) = E1.0 by A8, Def1;
        per cases;
        suppose y = 0;
          hence contradiction by A4, A5, A7, A10, FUNCT_1:def 4;
        end;
        suppose y <> 0;
          then 0 c< y by XBOOLE_1:2, XBOOLE_0:def 8;
          then 0 in y by ORDINAL1:11;
          then A11: E1.0 in E1.x by A4, A9, A10, ORDINAL5:def 11;
          A12: x in dom CantorNF a by A4, Def1;
          then omega -exponent((CantorNF a).0) in E1.x
            by A11, Def1, A6, ORDINAL1:10;
          then omega -exponent((CantorNF a).0)
            in omega -exponent((CantorNF a).x) by A12, Def1;
          hence contradiction by A6, A12, ORDINAL5:def 11;
        end;
      end;
      hence omega-exponent(C0.0) = E1.0 by A4;
    end;
    assume omega -exponent(C0.0) in rng E2;
    then consider x being object such that
      A14: x in dom E2 & E2.x = omega -exponent(C0.0) by FUNCT_1:def 3;
    reconsider x as Ordinal by A14;
    x = 0
    proof
      assume A15: x <> 0;
      then 0 c< x by XBOOLE_1:2, XBOOLE_0:def 8;
      then A16: 0 in x by ORDINAL1:11;
      then A17: 0 in dom E2 by A14, ORDINAL1:10;
      then E2.0 in rng E2 by FUNCT_1:3;
      then E2.0 in rng(omega-exponent C0) by A2, XBOOLE_1:7, TARSKI:def 3;
      then consider y being object such that
        A18: y in dom(omega -exponent C0) & (omega -exponent C0).y = E2.0
        by FUNCT_1:def 3;
      reconsider y as Ordinal by A18;
      A19: y in dom C0 by A18, Def1;
      then A20: omega -exponent(C0.y) = E2.0 by A18, Def1;
      per cases;
      suppose y = 0;
        hence contradiction by A14, A15, A17, A20, FUNCT_1:def 4;
      end;
      suppose y <> 0;
        then 0 c< y by XBOOLE_1:2, XBOOLE_0:def 8;
        then 0 in y by ORDINAL1:11;
        then A21: E2.0 in E2.x by A14, A19, A20, ORDINAL5:def 11;
        A22: x in dom CantorNF b by A14, Def1;
        then omega -exponent((CantorNF b).0) in E2.x
          by A21, Def1, A16, ORDINAL1:10;
        then omega -exponent((CantorNF b).0)
          in omega -exponent((CantorNF b).x) by A22, Def1;
        hence contradiction by A16, A22, ORDINAL5:def 11;
      end;
    end;
    hence omega-exponent(C0.0) = E2.0 by A14;
end;

theorem
  for a, b being Ordinal holds
    (omega -exponent((CantorNF(a(+)b)).0)
        in rng(omega -exponent CantorNF a) \ rng(omega -exponent CantorNF b)
      implies (CantorNF(a(+)b)).0 = (CantorNF a).0) &
    (omega -exponent((CantorNF(a(+)b)).0)
        in rng(omega -exponent CantorNF b) \ rng(omega -exponent CantorNF a)
      implies (CantorNF(a(+)b)).0 = (CantorNF b).0) &
    (omega -exponent((CantorNF(a(+)b)).0)
        in rng(omega -exponent CantorNF a) /\ rng(omega -exponent CantorNF b)
      implies (CantorNF(a(+)b)).0 = (CantorNF a).0 +^ (CantorNF b).0)
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  set C0 = CantorNF(a (+) b);
  per cases;
  suppose A1: a (+) b <> {};
    then 0 c< dom C0 by XBOOLE_1:2, XBOOLE_0:def 8;
    then A2: 0 in dom C0 by ORDINAL1:11;
    consider C being Cantor-normal-form Ordinal-Sequence such that
      A3: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
      A4: for d being object st d in dom C holds
        (omega -exponent(C.d) in rng E1 \ rng E2 implies
          omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
        (omega -exponent(C.d) in rng E2 \ rng E1 implies
          omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
        (omega -exponent(C.d) in rng E1 /\ rng E2 implies
          omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
            L2.(E2".(omega -exponent(C.d)))) by Def5;
    C <> {} by A1, A3, ORDINAL5:52;
    then 0 c< dom C by XBOOLE_1:2, XBOOLE_0:def 8;
    then A5: 0 in dom C by ORDINAL1:11;
    hereby
      assume A6: omega -exponent(C0.0) in rng E1 \ rng E2;
      then E1 <> {};
      then 0 c< dom E1 by XBOOLE_1:2, XBOOLE_0:def 8;
      then A7: 0 in dom E1 by ORDINAL1:11;
      A8: omega -leading_coeff(C.0)
         = L1.(E1".(omega -exponent(C.0))) by A3, A4, A5, A6
        .= L1.(E1".(E1.0)) by A3, A6, Th95
        .= L1.0 by A7, FUNCT_1:34;
      A9: 0 in dom CantorNF a by A7, Def1;
      thus C0.0 = (omega-leading_coeff(C0.0))*^exp(omega, omega-exponent(C0.0))
          by A2, Th64
        .= L1.0 *^ exp(omega, E1.0) by A3, A6, A8, Th95
        .= (CantorNF a).0 by A9, Th65;
    end;
    hereby
      assume A10: omega -exponent(C0.0) in rng E2 \ rng E1;
      then E2 <> {};
      then 0 c< dom E2 by XBOOLE_1:2, XBOOLE_0:def 8;
      then A11: 0 in dom E2 by ORDINAL1:11;
      A12: omega -leading_coeff(C.0)
         = L2.(E2".(omega -exponent(C.0))) by A3, A4, A5, A10
        .= L2.(E2".(E2.0)) by A3, A10, Th95
        .= L2.0 by A11, FUNCT_1:34;
      A13: 0 in dom CantorNF b by A11, Def1;
      thus C0.0 = (omega-leading_coeff(C0.0))*^exp(omega, omega-exponent(C0.0))
          by A2, Th64
        .= L2.0 *^ exp(omega, E2.0) by A3, A10, A12, Th95
        .= (CantorNF b).0 by A13, Th65;
    end;
    assume A14: omega -exponent(C0.0) in rng E1 /\ rng E2;
    then A15: omega -exponent(C0.0) in rng E1 &
      omega -exponent(C0.0) in rng E2 by XBOOLE_0:def 4;
    then E1 <> {} & E2 <> {};
    then 0 c< dom E1 & 0 c< dom E2 by XBOOLE_1:2, XBOOLE_0:def 8;
    then A16: 0 in dom E1 & 0 in dom E2 by ORDINAL1:11;
    A17: omega -leading_coeff(C.0) = L1.(E1".(omega -exponent(C.0)))
        + L2.(E2".(omega -exponent(C.0))) by A3, A4, A5, A14
      .= L1.(E1".(E1.0)) + L2.(E2".(omega -exponent(C0.0))) by A3, A15, Th95
      .= L1.(E1".(E1.0)) + L2.(E2".(E2.0)) by A15, Th95
      .= L1.0 + L2.(E2".(E2.0)) by A16, FUNCT_1:34
      .= L1.0 + L2.0 by A16, FUNCT_1:34;
    A18: 0 in dom CantorNF a & 0 in dom CantorNF b by A16, Def1;
    thus C0.0 = (omega -leading_coeff(C0.0))*^exp(omega, omega -exponent(C0.0))
        by A2, Th64
      .= (L1.0 +^ L2.0) *^ exp(omega, omega -exponent(C0.0))
        by A3, A17, CARD_2:36
      .= L1.0 *^ exp(omega, omega -exponent(C0.0))
        +^ L2.0 *^ exp(omega, omega -exponent(C0.0)) by ORDINAL3:46
      .= L1.0 *^ exp(omega, E1.0)
        +^ L2.0 *^ exp(omega, omega -exponent(C0.0)) by A15, Th95
      .= L1.0 *^ exp(omega, E1.0) +^ L2.0 *^ exp(omega, E2.0) by A15, Th95
      .= (CantorNF a).0 +^ L2.0 *^ exp(omega, E2.0) by A18, Th65
      .= (CantorNF a).0 +^ (CantorNF b).0 by A18, Th65;
  end;
  suppose a (+) b = {};
    then a = {} & b = {};
    hence thesis;
  end;
end;

theorem Th97:
  for a, b being Ordinal, x being object
  holds (omega -exponent CantorNF a).x c= (omega -exponent CantorNF(a(+)b)).x
proof
  let a, b be Ordinal, x be object;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  set C0 = CantorNF(a (+) b);
  assume not E1.x c= (omega -exponent C0).x;
  then A1: (omega -exponent C0).x in E1.x by ORDINAL1:16;
  then x in dom E1 by FUNCT_1:def 2;
  then reconsider x as Ordinal;
  defpred P[Ordinal] means (omega -exponent C0).$1 in E1.$1;
  A2: ex z being Ordinal st P[z]
  proof
    take x;
    thus thesis by A1;
  end;
  consider y being Ordinal such that
    A3: P[y] & for z being Ordinal st P[z] holds y c= z
    from ORDINAL1:sch 1(A2);
  A4: rng(omega -exponent C0) = rng E1 \/ rng E2 by Th76;
  A5: y in dom E1 by A3, FUNCT_1:def 2;
  then E1.y in rng E1 by FUNCT_1:3;
  then E1.y in rng(omega -exponent C0) by A4, XBOOLE_1:7, TARSKI:def 3;
  then consider z being object such that
    A6: z in dom(omega -exponent C0) & (omega -exponent C0).z = E1.y
    by FUNCT_1:def 3;
  reconsider z as Ordinal by A6;
  A7: z in dom C0 by A6, Def1;
  A8: z in y
  proof
    assume not z in y;
    then per cases by ORDINAL1:14;
    suppose z = y;
      hence contradiction by A3, A6;
    end;
    suppose A9: y in z;
      then omega-exponent(C0.z) in omega-exponent(C0.y) by A7, ORDINAL5:def 11;
      then E1.y in omega-exponent(C0.y) by A6, A7, Def1;
      hence contradiction by A3, A7, A9, Def1, ORDINAL1:10;
    end;
  end;
  A10: y in dom CantorNF a by A5, Def1;
  then omega -exponent((CantorNF a).y) in omega -exponent((CantorNF a).z)
    by A8, ORDINAL5:def 11;
  then E1.y in omega -exponent((CantorNF a).z) by A10, Def1;
  then E1.y in E1.z by A8, A10, Def1, ORDINAL1:10;
  then y c= z by A3, A6;
  then z in z by A8;
  hence contradiction;
end;

theorem Th98:
  for a, b being Ordinal, x being object
  holds (CantorNF a).x c= (CantorNF(a(+)b)).x
proof
  let a, b be Ordinal, x be object;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  set L1 = omega -leading_coeff CantorNF a;
  set L2 = omega -leading_coeff CantorNF b;
  set C0 = CantorNF(a (+) b);
  consider C being Cantor-normal-form Ordinal-Sequence such that
    A1: a (+) b = Sum^ C & rng(omega -exponent C) = rng E1 \/ rng E2 and
    A2: for d being object st d in dom C holds
      (omega -exponent(C.d) in rng E1 \ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E2 \ rng E1 implies
        omega -leading_coeff(C.d) = L2.(E2".(omega -exponent(C.d)))) &
      (omega -exponent(C.d) in rng E1 /\ rng E2 implies
        omega -leading_coeff(C.d) = L1.(E1".(omega -exponent(C.d))) +
          L2.(E2".(omega -exponent(C.d)))) by Def5;
  assume not (CantorNF a).x c= C0.x;
  then A3: C0.x in (CantorNF a).x by ORDINAL1:16;
  then A4: x in dom CantorNF a by FUNCT_1:def 2;
  then reconsider x as Ordinal;
  dom CantorNF a c= dom CantorNF(a(+)b) by Th77;
  then A5: x in dom C0 by A4;
  then
A6: C0.x = (omega -leading_coeff C0).x *^ exp(omega,(omega -exponent C0).x)
    by Th65;
  A7: (CantorNF a).x = L1.x *^ exp(omega,E1.x) by A4, Th65;
  A8: E1.x = (omega -exponent C0).x
  proof
    A9: E1.x c= (omega -exponent C0).x by Th97;
    assume E1.x <> (omega -exponent C0).x;
    then E1.x in (omega -exponent C0).x by A9, XBOOLE_0:def 8, ORDINAL1:11;
    then exp(omega,E1.x) in exp(omega,(omega -exponent C0).x) by ORDINAL4:24;
    then A10: (CantorNF a).x in exp(omega,(omega -exponent C0).x) by A7, Th42;
    x in dom(omega -leading_coeff C0) by A5, Def3;
    then (omega -leading_coeff C0).x <> {} by FUNCT_1:def 9;
    then 0 c< (omega -leading_coeff C0).x by XBOOLE_1:2, XBOOLE_0:def 8;
    then 0 in (omega -leading_coeff C0).x by ORDINAL1:11;
    then 1 *^ exp(omega,(omega -exponent C0).x) c= C0.x
      by A6, CARD_1:49, ZFMISC_1:31, ORDINAL2:41;
    then exp(omega,(omega -exponent C0).x) c= C0.x by ORDINAL2:39;
    hence contradiction by A3, A10;
  end;
  then (omega -leading_coeff C0).x in L1.x by A3, A6, A7, ORDINAL3:34;
  then A11: omega -leading_coeff(C0.x) in L1.x by A5, Def3;
  A12: x in dom E1 by A4, Def1;
  then (omega -exponent C0).x in rng E1 by A8, FUNCT_1:3;
  then A13: omega -exponent(C0.x) in rng E1 by A5, Def1;
  per cases;
  suppose omega -exponent(C0.x) in rng E2;
    then omega -exponent(C0.x) in rng E1 /\ rng E2 by A13, XBOOLE_0:def 4;
    then omega -leading_coeff(C0.x) = L1.(E1".(omega -exponent(C0.x))) +
        L2.(E2".(omega -exponent(C0.x))) by A1, A2, A5
      .= L1.(E1".(E1.x)) + L2.(E2".(omega -exponent(C0.x))) by A5, A8, Def1
      .= L1.x + L2.(E2".(omega -exponent(C0.x))) by A12, FUNCT_1:34;
    then Segm(L1.x) c= Segm(omega -leading_coeff(C0.x)) by NAT_1:11, NAT_1:39;
    then omega -leading_coeff(C0.x) in omega -leading_coeff(C0.x) by A11;
    hence contradiction;
  end;
  suppose not omega -exponent(C0.x) in rng E2;
    then omega -exponent(C0.x) in rng E1 \ rng E2 by A13, XBOOLE_0:def 5;
    then omega -leading_coeff(C0.x) = L1.(E1".(omega -exponent(C0.x)))
        by A1, A2, A5
      .= L1.(E1".(E1.x)) by A5, A8, Def1
      .= L1.x by A12, FUNCT_1:34;
    hence contradiction by A11;
  end;
end;

theorem Th99:
  for a, b being Ordinal holds a c= a (+) b
proof
  let a, b be Ordinal;
  set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
  A1: dom CantorNF a c= dom CantorNF(a(+)b) by Th77;
  for x being object st x in dom CantorNF a
    holds (CantorNF a).x c= (CantorNF(a(+)b)).x by Th98;
  then Sum^ CantorNF a c= Sum^ CantorNF(a(+)b) by A1, Th28;
  hence thesis;
end;

theorem Th100:
  for a, b being Ordinal
  holds omega -exponent(a (+) b) = omega -exponent a \/ omega -exponent b
proof
  let a, b be Ordinal;
  per cases;
  suppose A1: a (+) b <> {};
    omega -exponent a c= omega -exponent (a (+) b) &
      omega -exponent b c= omega -exponent (a (+) b) by Th22, Th99;
    then A2: omega -exponent a \/ omega -exponent b c= omega -exponent(a (+) b)
      by XBOOLE_1:8;
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set C0 = CantorNF(a(+)b);
    0 c< dom C0 by A1, XBOOLE_1:2, XBOOLE_0:def 8;
    then A3: 0 in dom C0 by ORDINAL1:11;
    then 0 in dom(omega -exponent C0) by Def1;
    then (omega -exponent C0).0 in rng(omega -exponent C0) by FUNCT_1:3;
    then (omega -exponent C0).0 in rng E1 \/ rng E2 by Th76;
    then per cases by XBOOLE_0:def 3;
    suppose A4: (omega -exponent C0).0 in rng E1;
      then omega -exponent(C0.0) in rng E1 by A3, Def1;
      then A5: omega -exponent(C0.0) = E1.0 by Th95;
      E1 <> {} by A4;
      then 0 c< dom E1 by XBOOLE_1:2, XBOOLE_0:def 8;
      then 0 in dom E1 by ORDINAL1:11;
      then A6: 0 in dom CantorNF a by Def1;
      omega -exponent(a (+) b) = omega -exponent Sum^ C0
        .= omega -exponent(C0.0) by Th44
        .= omega -exponent((CantorNF a).0) by A5, A6, Def1
        .= omega -exponent Sum^ CantorNF a by Th44
        .= omega -exponent a;
      then omega -exponent(a (+) b)
        c= omega -exponent a \/ omega -exponent b by XBOOLE_1:7;
      hence thesis by A2, XBOOLE_0:def 10;
    end;
    suppose A7: (omega -exponent C0).0 in rng E2;
      then omega -exponent(C0.0) in rng E2 by A3, Def1;
      then A8: omega -exponent(C0.0) = E2.0 by Th95;
      E2 <> {} by A7;
      then 0 c< dom E2 by XBOOLE_1:2, XBOOLE_0:def 8;
      then 0 in dom E2 by ORDINAL1:11;
      then A9: 0 in dom CantorNF b by Def1;
      omega -exponent(a (+) b) = omega -exponent Sum^ C0
        .= omega -exponent(C0.0) by Th44
        .= omega -exponent((CantorNF b).0) by A8, A9, Def1
        .= omega -exponent Sum^ CantorNF b by Th44
        .= omega -exponent b;
      then omega -exponent(a (+) b)
        c= omega -exponent a \/ omega -exponent b by XBOOLE_1:7;
      hence thesis by A2, XBOOLE_0:def 10;
    end;
  end;
  suppose a (+) b = {};
    then a = 0 & b = 0;
    hence thesis;
  end;
end;

:: closure of natural addition
theorem Th101:
  for a, b, c being Ordinal st a in exp(omega,c) & b in exp(omega,c)
  holds a (+) b in exp(omega,c)
proof
  let a, b, c be Ordinal;
  assume A1: a in exp(omega,c) & b in exp(omega,c);
  per cases;
  suppose a = 0;
    hence thesis by A1, Th82;
  end;
  suppose b = 0;
    hence thesis by A1, Th82;
  end;
  suppose A2: a <> {} & b <> {};
    then 0 c< a & 0 c< b by XBOOLE_1:2, XBOOLE_0:def 8;
    then 0 in a & 0 in b by ORDINAL1:11;
    then omega -exponent a in c & omega -exponent b in c by A1, Th23;
    then omega -exponent a \/ omega -exponent b in c by ORDINAL3:12;
    then A3: omega -exponent(a(+)b) in c by Th100;
    A4: not c c= omega -exponent(a(+)b)
    proof
      assume c c= omega -exponent(a(+)b);
      then omega-exponent(a(+)b) in omega-exponent(a(+)b) by A3;
      hence contradiction;
    end;
    0 c< a (+) b by A2, XBOOLE_1:2, XBOOLE_0:def 8;
    then 0 in a (+) b by ORDINAL1:11;
    then not exp(omega,c) c= a (+) b by A4, ORDINAL5:def 10;
    hence thesis by ORDINAL1:16;
  end;
end;

Lm9:
  for a being Ordinal, n being Nat holds (n *^ exp(omega, a)) +^ exp(omega,a)
    = (n *^ exp(omega,a)) (+) exp(omega,a)
proof
  let a be Ordinal, n be Nat;
  A1: exp(omega,a) = 1 *^ exp(omega,a) by ORDINAL2:39;
  0 in 1 & 1 in omega by CARD_1:49, TARSKI:def 1;
  then omega -exponent exp(omega,a) = a by A1, ORDINAL5:58;
  hence thesis by Th83;
end;

scheme
  OrdinalCNFIndA {P[non empty Ordinal]} : for a being non empty Ordinal
    holds P[a]
provided
  A1: for a being Ordinal, n being non zero Nat holds P[n*^exp(omega,a)] and
  A2: for a being Ordinal, b being non empty Ordinal, n being non zero Nat
    st P[b] & not a in rng(omega -exponent CantorNF b)
    holds P[b (+) n*^exp(omega,a)]
proof
  defpred R[Nat] means for a being non empty Ordinal st $1 = len CantorNF a
    holds P[a];
  A3: R[1]
  proof
    let a be non empty Ordinal;
    assume A4: 1 = len CantorNF a;
    then 0 in dom CantorNF a by CARD_1:49, TARSKI:def 1;
    then (CantorNF a).0 is Cantor-component by ORDINAL5:def 11;
    then consider b being Ordinal, n being Nat such that
      A5: 0 in Segm n & (CantorNF a).0 = n *^ exp(omega,b) by ORDINAL5:def 9;
    A6: n is non zero by A5;
    CantorNF a = <% (CantorNF a).0 %> by A4, AFINSQ_1:34;
    then Sum^ CantorNF a = n *^ exp(omega,b) by A5, ORDINAL5:53;
    hence thesis by A1, A6;
  end;
  A7: for k being non zero Nat st R[k] holds R[k+1]
  proof
    let k be non zero Nat;
    assume A8: R[k];
    let a be non empty Ordinal;
    assume A9: k+1 = len CantorNF a;
    consider c being Cantor-component Ordinal,
      A0 being Cantor-normal-form Ordinal-Sequence such that
      A10: CantorNF a = <% c %> ^ A0 by ORDINAL5:67;
    consider b being Ordinal, n being Nat such that
      A11: 0 in Segm n & c = n *^ exp(omega,b) by ORDINAL5:def 9;
    reconsider n as non zero Nat by A11;
    k+1 = len <% c %> + len A0 by A9, A10, AFINSQ_1:17
      .= 1 + len A0 by AFINSQ_1:34;
    then A12: len A0 = k;
    then A0 <> {};
    then reconsider a0 = Sum^ A0 as non empty Ordinal;
    not b in rng(omega -exponent CantorNF a0)
    proof
      0 in n & n in omega by A11, ORDINAL1:def 12;
      then omega -exponent c = b by A11, ORDINAL5:58;
      then A13: Sum^ A0 in exp(omega,b) by A10, Th43;
      A0 <> {} by A12;
      then 0 c< Sum^ A0 by XBOOLE_1:2, XBOOLE_0:def 8;
      then 0 in Sum^ A0 by ORDINAL1:11;
      then omega -exponent Sum^ A0 in b by A13, Th23;
      then A14: omega -exponent (A0.0) in b by Th44;
      assume b in rng(omega -exponent CantorNF a0);
      then consider x being object such that
        A15: x in dom(omega -exponent A0) & (omega -exponent A0).x = b
        by FUNCT_1:def 3;
      reconsider x as Ordinal by A15;
      A16: x in dom A0 by A15, Def1;
      then A17: b = omega -exponent(A0.x) by A15, Def1;
      per cases;
      suppose x = 0;
        hence contradiction by A14, A17;
      end;
      suppose x <> 0;
        then 0 c< x by XBOOLE_1:2, XBOOLE_0:def 8;
        then 0 in x by ORDINAL1:11;
        hence contradiction by A14, A16, A17, ORDINAL5:def 11;
      end;
    end;
    then P[a0 (+) (n *^ exp(omega,b))] by A2, A8, A12;
    then P[(Sum^ <% c %>) (+) a0] by A11, ORDINAL5:53;
    then P[(Sum^ <% c %>) +^ a0] by A10, Th84;
    then P[c +^ a0] by ORDINAL5:53;
    then P[Sum^ (<% c %> ^ A0)] by ORDINAL5:55;
    hence thesis by A10;
  end;
  A18: for k being non zero Nat holds R[k] from NAT_1:sch 10(A3, A7);
  let a be non empty Ordinal;
  len CantorNF a is non zero;
  hence thesis by A18;
end;

scheme
  OrdinalCNFIndB {P[non empty Ordinal]} : for a being non empty Ordinal
    holds P[a]
provided
  A1: for a being Ordinal holds P[exp(omega,a)] and
  A2: for a being Ordinal, n being non zero Nat st P[n*^exp(omega,a)]
    holds P[(n+1)*^exp(omega,a)] and
  A3: for a being Ordinal, b being non empty Ordinal, n being non zero Nat
    st P[b] & not a in rng(omega -exponent CantorNF b)
    holds P[b (+) n*^exp(omega,a)]
proof
  defpred Q[Nat] means for a being Ordinal, n being non zero Nat st $1 = n
    holds P[n*^exp(omega,a)];
  A4: Q[1]
  proof
    let a be Ordinal, n be non zero Nat;
    assume 1 = n;
    then n*^exp(omega,a) = exp(omega,a) by ORDINAL2:39;
    hence thesis by A1;
  end;
  A5: for k being non zero Nat st Q[k] holds Q[k+1]
  proof
    let k be non zero Nat;
    assume A6: Q[k];
    let a be Ordinal, n be non zero Nat;
    assume A7: k+1 = n;
    P[k*^exp(omega,a)] by A6;
    hence thesis by A2, A7;
  end;
  for k being non zero Nat holds Q[k] from NAT_1:sch 10(A4, A5);
  then A8: for a being Ordinal, n being non zero Nat holds P[n*^exp(omega,a)];
  for a being non empty Ordinal holds P[a] from OrdinalCNFIndA(A8,A3);
  hence thesis;
end;

scheme
  OrdinalCNFIndC {P[non empty Ordinal]} : for a being non empty Ordinal
    holds P[a]
provided
  A1: for a being Ordinal holds P[exp(omega,a)] and
  A2: for a being Ordinal, b being non empty Ordinal
    st P[b] holds P[b (+) exp(omega,a)]
proof
  defpred Q[Nat] means for a being Ordinal, n being non zero Nat st $1 = n
    holds P[n*^exp(omega,a)];
  A3: Q[1]
  proof
    let a be Ordinal, n be non zero Nat;
    assume 1 = n;
    then n*^exp(omega,a) = exp(omega,a) by ORDINAL2:39;
    hence thesis by A1;
  end;
  A4: for k being non zero Nat st Q[k] holds Q[k+1]
  proof
    let k be non zero Nat;
    assume A5: Q[k];
    let a be Ordinal, n be non zero Nat;
    assume k+1 = n;
    then n *^ exp(omega,a) = Segm(k+1) *^ exp(omega,a)
      .= (succ Segm k) *^ exp(omega,a) by NAT_1:38
      .= k *^ exp(omega,a) +^ exp(omega,a) by ORDINAL2:36
      .= k *^ exp(omega,a) (+) exp(omega,a) by Lm9;
    hence thesis by A2, A5;
  end;
  A7: for k being non zero Nat holds Q[k] from NAT_1:sch 10(A3, A4);
  defpred R[Nat] means for a being non empty Ordinal st $1 = len CantorNF a
    holds P[a];
  A8: R[1]
  proof
    let a be non empty Ordinal;
    assume A9: 1 = len CantorNF a;
    then 0 in dom CantorNF a by CARD_1:49, TARSKI:def 1;
    then (CantorNF a).0 is Cantor-component by ORDINAL5:def 11;
    then consider b being Ordinal, n being Nat such that
      A10: 0 in Segm n & (CantorNF a).0 = n *^ exp(omega,b) by ORDINAL5:def 9;
    A11: n is non zero by A10;
    CantorNF a = <% (CantorNF a).0 %> by A9, AFINSQ_1:34;
    then Sum^ CantorNF a = n *^ exp(omega,b) by A10, ORDINAL5:53;
    hence thesis by A7, A11;
  end;
  defpred S[Nat] means
    for a being Ordinal, b being non empty Ordinal, n being non zero Nat
    st $1 = n & P[b] holds P[b (+) (n *^ exp(omega,a))];
  A12: S[1]
  proof
    let a be Ordinal, b be non empty Ordinal, n be non zero Nat;
    assume A13: 1 = n & P[b];
    then P[b (+) exp(omega,a)] by A2;
    hence thesis by A13, ORDINAL2:39;
  end;
  A14: for k being non zero Nat st S[k] holds S[k+1]
  proof
    let k be non zero Nat;
    assume A15: S[k];
    let a be Ordinal, b be non empty Ordinal, n be non zero Nat;
    assume A16: k+1 = n & P[b];
    then P[b (+) (k *^ exp(omega,a))] by A15;
    then P[(b (+) (k *^ exp(omega,a))) (+) exp(omega,a)] by A2;
    then P[b (+) (k *^ exp(omega,a) (+) exp(omega,a))] by Th81;
    then P[b (+) (k *^ exp(omega,a) +^ exp(omega,a))] by Lm9;
    then P[b (+) ((succ k) *^ exp(omega,a))] by ORDINAL2:36;
    hence thesis by A16, Lm5;
  end;
  A17: for k being non zero Nat holds S[k] from NAT_1:sch 10(A12,A14);
  A18: for k being non zero Nat st R[k] holds R[k+1]
  proof
    let k be non zero Nat;
    assume A19: R[k];
    let a be non empty Ordinal;
    assume A20: k+1 = len CantorNF a;
    consider c being Cantor-component Ordinal,
      A0 being Cantor-normal-form Ordinal-Sequence such that
      A21: CantorNF a = <% c %> ^ A0 by ORDINAL5:67;
    consider b being Ordinal, n being Nat such that
      A22: 0 in Segm n & c = n *^ exp(omega,b) by ORDINAL5:def 9;
    reconsider n as non zero Nat by A22;
A23:k+1 = len <% c %> + len A0 by A20, A21, AFINSQ_1:17
      .= 1 + len A0 by AFINSQ_1:34;
    then A0 <> {};
    then reconsider a0 = Sum^ A0 as non empty Ordinal;
    len CantorNF a0 = k by A23;
    then P[a0 (+) (n *^ exp(omega,b))] by A17, A19;
    then P[(Sum^ <% c %>) (+) a0] by A22, ORDINAL5:53;
    then P[(Sum^ <% c %>) +^ a0] by A21, Th84;
    then P[c +^ a0] by ORDINAL5:53;
    then P[Sum^ (<% c %> ^ A0)] by ORDINAL5:55;
    hence thesis by A21;
  end;
  A24: for k being non zero Nat holds R[k] from NAT_1:sch 10(A8, A18);
  let a be non empty Ordinal;
  len CantorNF a is non zero;
  hence thesis by A24;
end;

theorem Th102:
  for a, b being Ordinal st omega -exponent a in omega -exponent b
  holds a in exp(omega, omega -exponent b)
proof
  defpred P[non empty Ordinal] means for b being Ordinal
    st omega -exponent $1 in omega -exponent b
    holds $1 in exp(omega, omega -exponent b);
  A1: for c being Ordinal, n being non zero Nat holds P[n*^exp(omega,c)]
  proof
    let c be Ordinal, n be non zero Nat, b be Ordinal;
    assume A2: omega -exponent(n*^exp(omega,c)) in omega -exponent b;
    0 in n & n in omega by XBOOLE_1:61, ORDINAL1:11, ORDINAL1:def 12;
    then c in omega -exponent b by A2, ORDINAL5:58;
    then exp(omega,c) in exp(omega, omega -exponent b) by ORDINAL4:24;
    hence thesis by Th42;
  end;
  A3: for c being Ordinal, d being non empty Ordinal, n being non zero Nat
    st P[d] & not c in rng(omega -exponent CantorNF d)
    holds P[d (+) n*^exp(omega,c)]
  proof
    let c be Ordinal, d be non empty Ordinal, n be non zero Nat;
    assume A4: P[d] & not c in rng(omega -exponent CantorNF d);
    let b be Ordinal;
    assume omega -exponent(d (+) n*^exp(omega,c)) in omega -exponent b;
    then omega -exponent d \/ omega -exponent(n*^exp(omega,c))
      in omega -exponent b by Th100;
    then omega -exponent d in omega -exponent b &
      omega -exponent(n*^exp(omega,c)) in omega -exponent b
      by XBOOLE_1:7, ORDINAL1:12;
    then d in exp(omega, omega -exponent b) &
      n*^exp(omega,c) in exp(omega, omega -exponent b) by A1, A4;
    hence d (+) n*^exp(omega,c) in exp(omega, omega -exponent b) by Th101;
  end;
  A5: for a being non empty Ordinal holds P[a] from OrdinalCNFIndA(A1,A3);
  let a, b be Ordinal;
  per cases;
  suppose a <> {};
    hence thesis by A5;
  end;
  suppose A6: a = {};
    assume omega -exponent a in omega -exponent b;
    thus thesis by A6, XBOOLE_1:61, ORDINAL1:11;
  end;
end;

theorem Th103:
  for a, b being non empty Ordinal
  holds omega *^ a c= b iff omega -exponent a in omega -exponent b
proof
  let a, b be non empty Ordinal;
  A1: 0 in a & 0 in b & 1 in omega by XBOOLE_1:61, ORDINAL1:11;
  hereby
    assume A2: omega *^ a c= b;
    exp(omega,omega-exponent a) c= a by A1, ORDINAL5:def 10;
    then omega*^exp(omega,omega-exponent a) c= omega*^a by ORDINAL2:42;
    then exp(omega,succ(omega-exponent a)) c= omega*^a by ORDINAL2:44;
    then exp(omega,succ(omega-exponent a)) c= b by A2, XBOOLE_1:1;
    then succ(omega-exponent a) c= omega-exponent b by A1, ORDINAL5:def 10;
    hence omega-exponent a in omega-exponent b by ORDINAL1:6, TARSKI:def 3;
  end;
  assume omega-exponent a in omega-exponent b;
  then A3: a in exp(omega, omega -exponent b) by Th102;
  reconsider fi = id omega as Ordinal-Sequence;
  A4: sup fi = sup rng fi by ORDINAL2:def 5
    .= omega by ORDINAL2:18;
  set psi = fi *^ a;
  A5: dom fi = dom psi by ORDINAL3:def 4;
  for A, B being Ordinal st A in dom fi & B = fi.A
    holds psi.A = B *^ a by ORDINAL3:def 4;
  then A6: sup psi = omega *^ a by A4, A5, ORDINAL3:42;
  now
    let A be Ordinal;
    assume A in rng psi;
    then consider n being object such that
      A7: n in dom psi & psi.n = A by FUNCT_1:def 3;
    reconsider n as Nat by A5, A7;
    A = fi.n *^ a by A5, A7, ORDINAL3:def 4
      .= n *^ a by A5, A7, FUNCT_1:18;
    hence A in exp(omega, omega -exponent b) by A3, Th42;
  end;
  then sup rng psi c= exp(omega, omega -exponent b) by ORDINAL2:20;
  then A8: omega *^ a c= exp(omega, omega -exponent b) by A6, ORDINAL2:def 5;
  0 in b & 1 in omega by XBOOLE_1:61, ORDINAL1:11;
  then exp(omega, omega -exponent b) c= b by ORDINAL5:def 10;
  hence thesis by A8, XBOOLE_1:1;
end;

theorem
  for a, b being Ordinal st omega -exponent a in omega -exponent b
  holds b -^ a = b
proof
  let a, b be Ordinal;
  assume A1: omega -exponent a in omega -exponent b;
  per cases;
  suppose a = 0;
    hence thesis by ORDINAL3:56;
  end;
  suppose A2: a <> 0;
    A3: 1 in omega & 0 in b by A1, ORDINAL5:def 10;
    then omega *^ a c= b by A1, A2, Th103;
    then A4: a +^ b = b by Th30;
    A5: a in exp(omega, omega -exponent b) by A1, Th102;
    exp(omega, omega -exponent b) c= b by A3, ORDINAL5:def 10;
    then a c= b by A5, ORDINAL1:def 2;
    hence thesis by A4, ORDINAL3:def 5;
  end;
end;

theorem
  for a, b being Ordinal holds a +^ b c= a (+) b
proof
  defpred P[Nat] means for a, b being non empty Ordinal
    st len CantorNF a = $1 holds a +^ b c= a (+) b;
  A1: P[1]
  proof
    let a, b be non empty Ordinal;
    assume len CantorNF a = 1;
    then A2: CantorNF a = <% (CantorNF a).0 %> by AFINSQ_1:34;
    0 in dom CantorNF a by XBOOLE_1:61, ORDINAL1:11;
    then (CantorNF a).0 is Cantor-component by ORDINAL5:def 11;
    then consider c being Ordinal, m being Nat such that
      A3: 0 in Segm m & (CantorNF a).0 = m*^exp(omega,c) by ORDINAL5:def 9;
    per cases by ORDINAL1:16;
    suppose A4: omega-exponent b c= c;
      a +^ b = Sum^ CantorNF a +^ b
        .= (CantorNF a).0 +^ b by A2, ORDINAL5:53
        .= m*^exp(omega,c) (+) b by A3, A4, Th83
        .= Sum^ CantorNF a (+) b by A2, A3, ORDINAL5:53
        .= a (+) b;
      hence thesis;
    end;
    suppose A5: c in omega-exponent b;
      0 in m & m in omega by A3, ORDINAL1:def 12;
      then omega -exponent((CantorNF a).0) in omega -exponent b
        by A3, A5, ORDINAL5:58;
      then omega -exponent Sum^ CantorNF a in omega -exponent b by Th44;
      then omega *^ a c= b by Th103;
      then a +^ b = b by Th30;
      hence a +^ b c= a (+) b by Th99;
    end;
  end;
  A6: for n being non zero Nat st P[n] holds P[n+1]
  proof
    let n be non zero Nat;
    assume A7: P[n];
    let a, b be non empty Ordinal;
    assume A8: len CantorNF a = n+1;
    consider a0 being Cantor-component Ordinal,
      A0 being Cantor-normal-form Ordinal-Sequence such that
      A9: CantorNF a = <% a0 %> ^ A0 by ORDINAL5:67;
A10:n+1 = len <% a0 %> + len A0 by A8, A9, AFINSQ_1:17
      .= len CantorNF Sum^ A0 + 1 by AFINSQ_1:34;
    then CantorNF Sum^ A0 <> {};
    then A11: Sum^ A0 +^ b c= Sum^ A0 (+) b by A7, A10;
    CantorNF a0 = <% a0 %> by Th70;
    then len CantorNF a0 = 1 by AFINSQ_1:34;
    then A12: a0 +^ (Sum^ A0 (+) b) c= a0 (+) (Sum^ A0 (+) b) by A1;
    A13: a = Sum^ CantorNF a
      .= a0 +^ Sum^ A0 by A9, ORDINAL5:55
      .= Sum^ <% a0 %> +^ Sum^ A0 by ORDINAL5:53
      .= Sum^ <% a0 %> (+) Sum^ A0 by A9, Th84
      .= a0 (+) Sum^ A0 by ORDINAL5:53;
    a +^ b = Sum^ CantorNF a +^ b
      .= a0 +^ Sum^ A0 +^ b by A9, ORDINAL5:55
      .= a0 +^ (Sum^ A0 +^ b) by ORDINAL3:30;
    then a +^ b c= a0 +^ (Sum^ A0 (+) b) by A11, ORDINAL2:33;
    then a +^ b c= a0 (+) (Sum^ A0 (+) b) by A12, XBOOLE_1:1;
    hence a +^ b c= a (+) b by A13, Th81;
  end;
  A14: for n being non zero Nat holds P[n] from NAT_1:sch 10(A1,A6);
  let a, b be Ordinal;
  per cases;
  suppose a = {};
    then a +^ b = b & a (+) b = b by Th82, ORDINAL2:30;
    hence thesis;
  end;
  suppose b = {};
    then a +^ b = a & a (+) b = a by Th82, ORDINAL2:27;
    hence thesis;
  end;
  suppose A15: a <> {} & b <> {};
    then len CantorNF a is non zero;
    hence thesis by A14, A15;
  end;
end;

:: cancelling rule for natural addition
theorem
  for a, b, c being Ordinal st a (+) b = a (+) c holds b = c
proof
  let a, b, c be Ordinal;
  assume A1: a (+) b = a (+) c;
  set C1 = CantorNF(a(+)b), C2 = CantorNF(a(+)c);
  set E1 = omega-exponent CantorNF a, E2 = omega-exponent CantorNF b;
  set E3 = omega-exponent CantorNF c, L1 = omega-leading_coeff CantorNF a;
  set L2 = omega-leading_coeff CantorNF b;
  set L3 = omega-leading_coeff CantorNF c;
  :: the ranges must be equal, else one of CNF b, CNF c would
  :: have a coefficient 0, which is impossible by definition
  A2: rng E2 = rng E3
  proof
    assume rng E2 <> rng E3;
    then per cases by XBOOLE_0:def 10;
    suppose not rng E2 c= rng E3;
      then consider y being object such that
        A3: y in rng E2 & not y in rng E3 by TARSKI:def 3;
      y in rng E1 \/ rng E2 by A3, XBOOLE_0:def 3;
      then A4: y in rng(omega-exponent C1) by Th76;
      then consider x being object such that
        A5: x in dom(omega-exponent C1) & (omega-exponent C1).x = y
        by FUNCT_1:def 3;
      A6: x in dom C1 by A5, Def1;
      then A7: y = omega-exponent(C1.x) by A5, Def1;
      A8: omega-exponent(C1.x) in rng E1
      proof
        assume not omega-exponent(C1.x) in rng E1;
        then not y in rng E1 \/ rng E3 by A3, A7, XBOOLE_0:def 3;
        hence contradiction by A1, A4, Th76;
      end;
      then omega-exponent(C1.x) in rng E1 /\ rng E2 by A3, A7, XBOOLE_0:def 4;
      then A9: omega-leading_coeff(C1.x)
        = L1.(E1".(omega-exponent(C1.x))) + L2.(E2".(omega-exponent(C1.x)))
        by A6, Th80;
      omega-exponent(C1.x) in rng E1 \ rng E3 by A3, A7, A8, XBOOLE_0:def 5;
      then omega-leading_coeff(C1.x) = L1.(E1".(omega-exponent(C1.x))) + 0
        by A1, A6, Th78;
      then A10: 0 = L2.(E2".y) by A7, A9;
      y in dom(E2") by A3, FUNCT_1:33;
      then E2".y in rng(E2") by FUNCT_1:3;
      then E2".y in dom E2 by FUNCT_1:33;
      then E2".y in dom CantorNF b by Def1;
      then E2".y in dom L2 by Def3;
      hence contradiction by A10, FUNCT_1:def 9;
    end;
    suppose not rng E3 c= rng E2;
      then consider y being object such that
        A11: y in rng E3 & not y in rng E2 by TARSKI:def 3;
      y in rng E1 \/ rng E3 by A11, XBOOLE_0:def 3;
      then A12: y in rng(omega-exponent C2) by Th76;
      then consider x being object such that
        A13: x in dom(omega-exponent C2) & (omega-exponent C2).x = y
        by FUNCT_1:def 3;
      A14: x in dom C2 by A13, Def1;
      then A15: y = omega-exponent(C2.x) by A13, Def1;
      A16: omega-exponent(C2.x) in rng E1
      proof
        assume not omega-exponent(C2.x) in rng E1;
        then not y in rng E1 \/ rng E2 by A11, A15, XBOOLE_0:def 3;
        hence contradiction by A1, A12, Th76;
      end;
      then omega-exponent(C2.x) in rng E1 /\ rng E3
        by A11, A15, XBOOLE_0:def 4;
      then A17: omega-leading_coeff(C2.x)
        = L1.(E1".(omega-exponent(C2.x))) + L3.(E3".(omega-exponent(C2.x)))
        by A14, Th80;
      omega-exponent(C2.x) in rng E1 \ rng E2 by A11, A15, A16, XBOOLE_0:def 5;
      then omega-leading_coeff(C2.x) = L1.(E1".(omega-exponent(C2.x))) + 0
        by A1, A14, Th78;
      then A18: 0 = L3.(E3".y) by A15, A17;
      y in dom(E3") by A11, FUNCT_1:33;
      then E3".y in rng(E3") by FUNCT_1:3;
      then E3".y in dom E3 by FUNCT_1:33;
      then E3".y in dom CantorNF c by Def1;
      then E3".y in dom L3 by Def3;
      hence contradiction by A18, FUNCT_1:def 9;
    end;
  end;
  then A19: E2 = E3 by Th34;
  A20: dom L2 = dom CantorNF b by Def3
    .= card dom E2 by Def1
    .= card rng E2 by CARD_1:70
    .= card dom E3 by A2, CARD_1:70
    .= dom CantorNF c by Def1
    .= dom L3 by Def3;
  for x being object st x in dom L2 holds L2.x = L3.x
  proof
    let x be object;
    assume x in dom L2;
    then x in dom CantorNF b by Def3;
    then A21: x in dom E2 by Def1;
    then A22: E2.x in rng E2 by FUNCT_1:3;
    then E2.x in rng E1 \/ rng E2 by XBOOLE_0:def 3;
    then E2.x in rng(omega-exponent C1) by Th76;
    then consider y being object such that
      A23: y in dom(omega-exponent C1) & (omega-exponent C1).y = E2.x
      by FUNCT_1:def 3;
    A24: y in dom C1 by A23, Def1;
    then A25: omega-exponent(C1.y) = E2.x by A23, Def1;
    per cases;
    suppose omega-exponent(C1.y) in rng E1;
      then A26: omega-exponent(C1.y) in rng E1 /\ rng E2
        by A22, A25, XBOOLE_0:def 4;
      then A27: omega-exponent(C2.y) in rng E1 /\ rng E3 by A1, A2;
      L1.(E1".(E2.x)) + L2.(E2".(E2.x))
         = omega-leading_coeff(C1.y) by A24, A25, A26, Th80
        .= L1.(E1".(E2.x)) + L3.(E3".(E2.x)) by A1, A24, A25, A27, Th80;
      hence L2.x = L3.(E3".(E2.x)) by A21, FUNCT_1:34
        .= L3.x by A19, A21, FUNCT_1:34;
    end;
    suppose not omega-exponent(C1.y) in rng E1;
      then A29: omega-exponent(C1.y) in rng E2 \ rng E1
        by A22, A25, XBOOLE_0:def 5;
      then A30: omega-exponent(C2.y) in rng E3 \ rng E1 by A1, A2;
      thus L2.x = L2.(E2".(E2.x)) by A21, FUNCT_1:34
        .= omega-leading_coeff(C1.y) by A24, A25, A29, Th79
        .= L3.(E3".(E2.x)) by A1, A24, A25, A30, Th79
        .= L3.x by A19, A21, FUNCT_1:34;
    end;
  end;
  then L2 = L3 by A20, FUNCT_1:2;
  then Sum^ CantorNF b = Sum^ CantorNF c by A19, Th67;
  hence thesis;
end;

Lm10:
  for A being Cantor-normal-form Ordinal-Sequence
  holds omega-exponent A is XFinSequence of sup(omega-exponent A)
proof
  let A be Cantor-normal-form Ordinal-Sequence;
  now
    let y be object;
    assume y in rng(omega-exponent A);
    then y in sup rng(omega-exponent A) by ORDINAL2:19;
    hence y in sup(omega-exponent A) by ORDINAL2:def 5;
  end;
  hence thesis by TARSKI:def 3, RELAT_1:def 19;
end;

Lm11:
  for a being non empty Ordinal, b,c being Ordinal
  st b in c & (CantorNF b).0 <> (CantorNF c).0 holds a (+) b in a (+) c
proof
  defpred P[non empty Ordinal] means for a being non empty Ordinal,
    b being Ordinal st b in $1 holds a (+) b in a (+) $1;
  let a be non empty Ordinal, b,d be Ordinal;
  assume A1: b in d & (CantorNF b).0 <> (CantorNF d).0;
  then A2: omega-exponent b c= omega-exponent d by Th22, ORDINAL1:def 2;
  set c = omega-exponent d;
  defpred Q[Nat] means $1 in dom CantorNF a &
    omega -exponent((CantorNF a).$1) c= c &
    for j being Nat st j < $1 holds c in omega -exponent((CantorNF a).j);
  per cases;
  suppose A3: for i being Nat holds not Q[i];
    defpred R[Nat] means $1 in dom CantorNF a
      implies c in omega -exponent((CantorNF a).$1);
    A4: for k being Nat st for j being Nat st j < k holds R[j] holds R[k]
    proof
      let k be Nat;
      assume that
        A5: for j being Nat st j < k holds R[j] and
        A6: k in dom CantorNF a and
        A7: not c in omega -exponent((CantorNF a).k);
      A8: omega -exponent((CantorNF a).k) c= c by A7, ORDINAL1:16;
      for j being Nat st j < k holds c in omega -exponent((CantorNF a).j)
      proof
        let j be Nat;
        assume A9: j < k;
        then j in Segm k by NAT_1:44;
        then j in dom CantorNF a by A6, ORDINAL1:10;
        hence thesis by A5, A9;
      end;
      hence contradiction by A3, A6, A8;
    end;
    A10: for k being Nat holds R[k] from NAT_1:sch 4(A4);
    consider A0 being Cantor-normal-form Ordinal-Sequence,
      a0 being Cantor-component Ordinal such that
      A11: CantorNF a = A0 ^ <% a0 %> by Th29;
    len CantorNF a = len A0 + len <%a0%> by A11, AFINSQ_1:17
      .= len A0 + 1 by AFINSQ_1:34;
    then len A0 < len CantorNF a by NAT_1:13;
    then len A0 in Segm len CantorNF a by NAT_1:44;
    then c in omega -exponent((CantorNF a).len A0) by A10;
    then c in omega -exponent a0 by A11, AFINSQ_1:36;
    then A12: c in omega -exponent last CantorNF a by A11, AFINSQ_1:92;
    then A13: a (+) d = a +^ d by Th85;
    a (+) b = a +^ b by A2, A12, Th85, ORDINAL1:12;
    hence thesis by A1, A13, ORDINAL2:32;
  end;
  suppose ex i being Nat st Q[i];
    then consider i being Nat such that
      A14: Q[i];
    :: abbreviations
    set C1 = CantorNF(a(+)b), C2 = CantorNF(a(+)d);
    set A1 = C1|i, A2 = C2|i, B1 = C1/^i, B2 = C2/^i;
    set E1 = omega -exponent CantorNF a, E2 = omega -exponent CantorNF b;
    set E3 = omega -exponent CantorNF d;
    set L1 = omega -leading_coeff CantorNF a;
    set L2 = omega -leading_coeff CantorNF b;
    set L3 = omega -leading_coeff CantorNF d;
    :: general properties
    A15: 0 in dom CantorNF d by A1, XBOOLE_1:61, ORDINAL1:11;
    then A16: 0 in dom E3 by Def1;
    then E3.0 in rng E3 by FUNCT_1:3;
    then omega-exponent((CantorNF d).0) in rng E3 by A15, Def1;
    then A17: omega-exponent Sum^ CantorNF d in rng E3 by Th44;
    then A18: c in rng E1 \/ rng E3 by XBOOLE_0:def 3;
    then A19: c in rng(omega-exponent C2) by Th76;
    A20: c = omega-exponent Sum^ CantorNF d
      .= omega-exponent((CantorNF d).0) by Th44
      .= E3.0 by A15, Def1;
    A21: i in dom E1 by A14, Def1;
    A22: i in dom C1 & i in dom C2 by A14, Th77, TARSKI:def 3;
    omega-exponent C2 = omega-exponent(A2^B2)
      .= (omega-exponent A2)^(omega-exponent B2) by Th47
      .= ((omega-exponent C2)|i)^(omega-exponent B2) by Th48
      .= ((omega-exponent C2)|i)^((omega-exponent C2)/^i) by Th49;
    then A23: rng(omega-exponent C2)
      = rng((omega-exponent C2)|i) \/ rng((omega-exponent C2)/^i) by Th9;
    (omega-exponent C2) is XFinSequence of sup(omega-exponent C2) by Lm10;
    then A24: rng((omega-exponent C2)|i) misses rng((omega-exponent C2)/^i)
      by Th19;
    A25: rng(omega-exponent B2) = rng((omega-exponent C2)/^i) by Th49
      .= rng(omega-exponent C2) \ rng((omega-exponent C2)|i)
        by A23, A24, XBOOLE_1:88
      .= (rng E1 \/ rng E3) \ rng((omega-exponent C2)|i) by Th76
      .= (rng E1 \/ rng E3) \ rng(omega-exponent A2) by Th48;
    omega-exponent C1 = omega-exponent(A1^B1)
      .= (omega-exponent A1)^(omega-exponent B1) by Th47
      .= ((omega-exponent C1)|i)^(omega-exponent B1) by Th48
      .= ((omega-exponent C1)|i)^((omega-exponent C1)/^i) by Th49;
    then A26: rng(omega-exponent C1)
      = rng((omega-exponent C1)|i) \/ rng((omega-exponent C1)/^i) by Th9;
    (omega-exponent C1) is XFinSequence of sup(omega-exponent C1) by Lm10;
    then A27: rng((omega-exponent C1)|i) misses rng((omega-exponent C1)/^i)
      by Th19;
    A28: rng(omega-exponent B1) = rng((omega-exponent C1)/^i) by Th49
      .= rng(omega-exponent C1) \ rng((omega-exponent C1)|i)
        by A26, A27, XBOOLE_1:88
      .= (rng E1 \/ rng E2) \ rng((omega-exponent C1)|i) by Th76
      .= (rng E1 \/ rng E2) \ rng(omega-exponent A1) by Th48;
    :: show that the summands until index i are the same
    A29: dom A1 = dom A2
    proof
      A30: i in dom C1 & i in dom C2 by A14, Th77, TARSKI:def 3;
      now
        let x be object;
        hereby
          assume x in dom A1;
          then A31: x in i by RELAT_1:57;
          then x in dom C2 by A30, ORDINAL1:10;
          hence x in dom A2 by A31, RELAT_1:57;
        end;
        assume x in dom A2;
        then A32: x in i by RELAT_1:57;
        then x in dom C1 by A30, ORDINAL1:10;
        hence x in dom A1 by A32, RELAT_1:57;
      end;
      hence thesis by TARSKI:2;
    end;
    A33: for n being Nat st n in dom A1 holds A1.n = (CantorNF a).n
    proof
      defpred R[Nat] means $1 in dom A1 & A1.$1 <> (CantorNF a).$1;
      assume A34: ex n being Nat st R[n];
      consider n being Nat such that
        A35: R[n] & for m being Nat st R[m] holds n <= m
        from NAT_1:sch 5(A34);
      A36: n in i by A35, RELAT_1:57;
      then A37: n in dom CantorNF a by A14, ORDINAL1:10;
      then A38: n in dom C1 by Th77, TARSKI:def 3;
      A39: not omega -exponent(C1.n) in rng E2
      proof
        assume omega -exponent(C1.n) in rng E2;
        then (omega -exponent C1).n in rng E2 by A38, Def1;
        then consider m being object such that
          A40: m in dom E2 & E2.m = (omega-exponent C1).n by FUNCT_1:def 3;
        reconsider m as Nat by A40;
        n in Segm i by A36;
        then c in omega -exponent((CantorNF a).n) by A14, NAT_1:44;
        then c in E1.n by A37, Def1;
        then omega -exponent Sum^ CantorNF b in E1.n by A2, ORDINAL1:12;
        then omega -exponent((CantorNF b).0) in E1.n by Th44;
        then A42: omega -exponent((CantorNF b).0) in E2.m
          by A40, Th97, TARSKI:def 3;
        A43: m in dom CantorNF b by A40, Def1;
        then A44: omega -exponent((CantorNF b).0) in
          omega -exponent((CantorNF b).m) by A42, Def1;
        then not 0 in m by A43, ORDINAL5:def 11;
        then m = 0 by ORDINAL1:16, XBOOLE_1:3;
        hence contradiction by A44;
      end;
      A45: omega -exponent(C1.n) = E1.n
      proof
        assume omega -exponent(C1.n) <> E1.n;
        then (omega -exponent C1).n <> E1.n by A38, Def1;
        then E1.n c< (omega -exponent C1).n by Th97, XBOOLE_0:def 8;
        then A46: E1.n in (omega -exponent C1).n by ORDINAL1:11;
        n in dom(omega -exponent C1) by A38, Def1;
        then (omega -exponent C1).n in rng(omega -exponent C1) by FUNCT_1:3;
        then A47: (omega -exponent C1).n in rng E1 \/ rng E2 by Th76;
        not (omega -exponent C1).n in rng E2 by A38, A39, Def1;
        then (omega -exponent C1).n in rng E1 by A47, XBOOLE_0:def 3;
        then consider m being object such that
          A48: m in dom E1 & E1.m = (omega -exponent C1).n
          by FUNCT_1:def 3;
        reconsider m as Nat by A48;
        A49: m in n
        proof
          assume not m in n;
          then per cases by ORDINAL1:14;
          suppose m = n;
            hence contradiction by A46, A48;
          end;
          suppose A50: n in m;
            A51: m in dom CantorNF a by A48, Def1;
            then omega -exponent((CantorNF a).m) in
              omega -exponent((CantorNF a).n) by A50, ORDINAL5:def 11;
            then E1.m in omega -exponent((CantorNF a).n) by A51, Def1;
            hence contradiction by A37, A46, A48, Def1;
          end;
        end;
        then A52: m in Segm n;
        A53: m in dom A1 by A35, A49, ORDINAL1:10;
        A54: m in dom CantorNF a by A37, A49, ORDINAL1:10;
        A55: m in dom C1 by A38, A49, ORDINAL1:10;
        A56: (omega -exponent C1).m
           = omega -exponent(C1.m) by A38, A49, Def1, ORDINAL1:10
          .= omega -exponent(A1.m) by A53, FUNCT_1:47
          .= omega -exponent((CantorNF a).m) by A35, A52, A53, NAT_1:44
          .= E1.m by A54, Def1;
        omega -exponent(C1.n) in omega -exponent(C1.m)
          by A38, A49, ORDINAL5:def 11;
        then (omega -exponent C1).n in omega -exponent(C1.m) by A38, Def1;
        then (omega -exponent C1).n in (omega -exponent C1).m by A55, Def1;
        hence contradiction by A48, A56;
      end;
      A57: n in dom E1 by A37, Def1;
      n in dom E1 by A37, Def1;
      then omega -exponent(C1.n) in rng E1 by A45, FUNCT_1:3;
      then omega -exponent(C1.n) in rng E1 \ rng E2
        by A39, XBOOLE_0:def 5;
      then A58: omega -leading_coeff(C1.n) = L1.(E1".(E1.n)) by A38, A45, Th78
        .= L1.n by A57, FUNCT_1:34;
      A1.n = C1.n by A36, FUNCT_1:49
        .= L1.n *^ exp(omega, omega -exponent(C1.n)) by A38, A58, Th64
        .= (CantorNF a).n by A37, A45, Th65;
      hence contradiction by A35;
    end;
    A59: for n being Nat st n in dom A2 holds A2.n = (CantorNF a).n
    proof
      defpred R[Nat] means $1 in dom A2 & A2.$1 <> (CantorNF a).$1;
      assume A60: ex n being Nat st R[n];
      consider n being Nat such that
        A61: R[n] & for m being Nat st R[m] holds n <= m
        from NAT_1:sch 5(A60);
      A62: n in i by A61, RELAT_1:57;
      then A63: n in dom CantorNF a by A14, ORDINAL1:10;
      then A64: n in dom C2 by Th77, TARSKI:def 3;
      A65: not omega -exponent(C2.n) in rng E3
      proof
        assume omega -exponent(C2.n) in rng E3;
        then (omega -exponent C2).n in rng E3 by A64, Def1;
        then consider m being object such that
          A66: m in dom E3 & E3.m = (omega-exponent C2).n by FUNCT_1:def 3;
        reconsider m as Nat by A66;
        n in Segm i by A62;
        then c in omega -exponent((CantorNF a).n) by A14, NAT_1:44;
        then omega -exponent Sum^ CantorNF d in E1.n by A63, Def1;
        then omega -exponent((CantorNF d).0) in E1.n by Th44;
        then A67: omega -exponent((CantorNF d).0) in E3.m
          by A66, Th97, TARSKI:def 3;
        A68: m in dom CantorNF d by A66, Def1;
        then A69: omega -exponent((CantorNF d).0) in
          omega -exponent((CantorNF d).m) by A67, Def1;
        then not 0 in m by A68, ORDINAL5:def 11;
        then m = 0 by ORDINAL1:16, XBOOLE_1:3;
        hence contradiction by A69;
      end;
      A70: omega -exponent(C2.n) = E1.n
      proof
        assume omega -exponent(C2.n) <> E1.n;
        then (omega -exponent C2).n <> E1.n by A64, Def1;
        then E1.n c< (omega -exponent C2).n by Th97, XBOOLE_0:def 8;
        then A71: E1.n in (omega -exponent C2).n by ORDINAL1:11;
        n in dom(omega -exponent C2) by A64, Def1;
        then (omega -exponent C2).n in rng(omega -exponent C2) by FUNCT_1:3;
        then A72: (omega -exponent C2).n in rng E1 \/ rng E3 by Th76;
        not (omega -exponent C2).n in rng E3 by A64, A65, Def1;
        then (omega -exponent C2).n in rng E1 by A72, XBOOLE_0:def 3;
        then consider m being object such that
          A73: m in dom E1 & E1.m = (omega -exponent C2).n
          by FUNCT_1:def 3;
        reconsider m as Nat by A73;
        A74: m in n
        proof
          assume not m in n;
          then per cases by ORDINAL1:14;
          suppose m = n;
            hence contradiction by A71, A73;
          end;
          suppose A75: n in m;
            A76: m in dom CantorNF a by A73, Def1;
            then omega -exponent((CantorNF a).m) in
              omega -exponent((CantorNF a).n) by A75, ORDINAL5:def 11;
            then E1.m in omega -exponent((CantorNF a).n) by A76, Def1;
            hence contradiction by A63, A71, A73, Def1;
          end;
        end;
        then m in Segm n;
        then A77: m < n by NAT_1:44;
        A78: m in dom A2 by A61, A74, ORDINAL1:10;
        A79: m in dom CantorNF a by A63, A74, ORDINAL1:10;
        A80: m in dom C2 by A64, A74, ORDINAL1:10;
        A81: (omega -exponent C2).m
           = omega -exponent(C2.m) by A64, A74, Def1, ORDINAL1:10
          .= omega -exponent(A2.m) by A78, FUNCT_1:47
          .= omega -exponent((CantorNF a).m) by A61, A77, A78
          .= E1.m by A79, Def1;
        omega -exponent(C2.n) in omega -exponent(C2.m)
          by A64, A74, ORDINAL5:def 11;
        then (omega -exponent C2).n in omega -exponent(C2.m) by A64, Def1;
        then (omega -exponent C2).n in (omega -exponent C2).m by A80, Def1;
        hence contradiction by A73, A81;
      end;
      A82: n in dom E1 by A63, Def1;
      n in dom E1 by A63, Def1;
      then omega -exponent(C2.n) in rng E1 by A70, FUNCT_1:3;
      then omega -exponent(C2.n) in rng E1 \ rng E3
        by A65, XBOOLE_0:def 5;
      then A83: omega -leading_coeff(C2.n)
         = L1.(E1".(omega -exponent(C2.n))) by A64, Th78
        .= L1.n by A70, A82, FUNCT_1:34;
      A2.n = C2.n by A62, FUNCT_1:49
        .= L1.n *^ exp(omega, omega -exponent(C2.n)) by A64, A83, Th64
        .= (CantorNF a).n by A63, A70, Th65;
      hence contradiction by A61;
    end;
    for x being object st x in dom A1 holds A1.x = A2.x
    proof
      let x be object;
      assume x in dom A1;
      then A1.x = (CantorNF a).x & A2.x = (CantorNF a).x by A29, A33, A59;
      hence thesis;
    end;
    then A85: Sum^ A1 = Sum^ A2 by A29, FUNCT_1:2;
    :: exp(omega,c) majorizes the rest of the summands
    A86: omega -exponent(C2.i) = c
    proof
      assume A87: omega -exponent(C2.i) <> c;
      A88: not omega -exponent(C2.i) in rng E3
      proof
        not omega -exponent(C2.i) in c
        proof
          assume A89: omega -exponent(C2.i) in c;
          consider j being object such that
            A90: j in dom(omega-exponent C2) & (omega-exponent C2).j = c
            by A19, FUNCT_1:def 3;
          reconsider j as Nat by A90;
          A91: j in dom C2 by A90, Def1;
          then A92: omega -exponent(C2.j) = c by A90, Def1;
          per cases by ORDINAL1:14;
          suppose A93: j in i;
            then A94: j in Segm i;
            (CantorNF a).j = A2.j by A59, A91, A93, RELAT_1:57
              .= C2.j by A93, FUNCT_1:49;
            then A95: c = omega-exponent((CantorNF a).j) by A92;
            c in omega -exponent((CantorNF a).j) by A14, A94, NAT_1:44;
            hence contradiction by A95;
          end;
          suppose j = i;
            hence contradiction by A89, A92;
          end;
          suppose i in j;
            hence contradiction by A89, A91, A92, ORDINAL5:def 11;
          end;
        end;
        then A96: c in omega -exponent(C2.i) by A87, ORDINAL1:14;
        assume omega -exponent(C2.i) in rng E3;
        then consider k being object such that
          A97: k in dom E3 & E3.k = omega -exponent(C2.i) by FUNCT_1:def 3;
        reconsider k as Nat by A97;
        omega-exponent Sum^ CantorNF d in E3.k by A96, A97;
        then omega-exponent((CantorNF d).0) in E3.k by Th44;
        then A98: E3.0 in E3.k by A15, Def1;
        per cases;
        suppose k = 0;
          hence contradiction by A98;
        end;
        suppose 0 < k;
          then 0 in Segm k by NAT_1:44;
          hence contradiction by A97, A98, ORDINAL5:def 1;
        end;
      end;
      omega -exponent(C2.i) = E1.i
      proof
        assume A100: omega -exponent(C2.i) <> E1.i;
        i in dom(omega -exponent C2) by A22, Def1;
        then (omega -exponent C2).i in rng(omega -exponent C2) by FUNCT_1:3;
        then omega-exponent(C2.i) in rng(omega-exponent C2) by A22, Def1;
        then omega-exponent(C2.i) in rng E1 \/ rng E3 by Th76;
        then omega-exponent(C2.i) in rng E1 by A88, XBOOLE_0:def 3;
        then consider j being object such that
          A101: j in dom E1 & E1.j = omega-exponent(C2.i) by FUNCT_1:def 3;
        reconsider j as Nat by A101;
        per cases by XXREAL_0:1;
        suppose j < i;
          then A102: j in Segm i by NAT_1:44;
          then A103: j in dom CantorNF a by A14, ORDINAL1:10;
          i in dom C1 & i in dom C2 by A14, Th77, TARSKI:def 3;
          then j in dom C1 & j in dom C2 by A102, ORDINAL1:10;
          then A104: j in dom A1 & j in dom A2 by A102, RELAT_1:57; then
A105:     omega-exponent(C2.j) = omega-exponent(A2.j) by FUNCT_1:47
            .= omega-exponent((CantorNF a).j) by A59, A104
            .= omega-exponent(C2.i) by A101, A103, Def1;
          i in dom C2 by A14, Th77, TARSKI:def 3;
          then omega-exponent(C2.i) in omega-exponent(C2.j)
            by A102, ORDINAL5:def 11;
          hence contradiction by A105;
        end;
        suppose j = i;
          hence contradiction by A100, A101;
        end;
        suppose j > i;
          then i in Segm j by NAT_1:44;
          then A106: i in j;
          A107: j in dom CantorNF a by A101, Def1;
          then omega-exponent((CantorNF a).j)
            in omega-exponent((CantorNF a).i) by A106, ORDINAL5:def 11;
          then E1.j in omega-exponent((CantorNF a).i) by A107, Def1;
          then A108: omega-exponent(C2.i) in E1.i by A14, A101, Def1;
          E1.i in rng E1 by A21, FUNCT_1:3;
          then A109: E1.i in rng E1 \/ rng E3 by XBOOLE_1:7, TARSKI:def 3;
          not E1.i in rng(omega-exponent A2)
          proof
            assume E1.i in rng(omega-exponent A2);
            then consider k being object such that
              A110: k in dom(omega-exponent A2) & (omega-exponent A2).k=E1.i
              by FUNCT_1:def 3;
            k in dom A2 by A110, Def1;
            then A111: k in i & k in dom C2 by RELAT_1:57;
            A112: E1.i = ((omega-exponent C2)|i).k by A110, Th48
              .= (omega-exponent C2).k by A111, FUNCT_1:49
              .= omega-exponent(C2.k) by A111, Def1;
            A113: omega-exponent(C2.i) in omega-exponent(C2.k)
              by A22, A111, ORDINAL5:def 11;
            E1.i c= (omega-exponent C2).i by Th97;
            then E1.i c= omega-exponent(C2.i) by A22, Def1;
            hence contradiction by A112, A113, ORDINAL1:12;
          end;
          then E1.i in rng(omega-exponent B2) by A25, A109, XBOOLE_0:def 5;
          then consider k being object such that
            A114: k in dom(omega-exponent B2) & (omega-exponent B2).k = E1.i
            by FUNCT_1:def 3;
          reconsider k as Nat by A114;
          A115: k in dom B2 by A114, Def1;
          then A116: E1.i = omega-exponent(B2.k) by A114, Def1
            .= omega-exponent(C2.(k+i)) by A115, AFINSQ_2:def 2;
          per cases;
          suppose k = 0;
            hence contradiction by A108, A116;
          end;
          suppose 0 < k;
            then 0+i < k+i by XREAL_1:8;
            then i in Segm(k+i) by NAT_1:44;
            then A117: i in k+i;
            k in Segm len B2 by A115;
            then k < len B2 by NAT_1:44;
            then k < len C2 -' i by AFINSQ_2:def 2;
            then A118: k+i < len C2 -' i + i by XREAL_1:8;
            i in Segm len C2 by A22;
            then i < len C2 by NAT_1:44;
            then k+i < len C2 by A118, XREAL_1:235;
            then k+i in Segm len C2 by NAT_1:44;
            hence contradiction by A108, A116, A117, ORDINAL5:def 11;
          end;
        end;
      end;
      then omega-exponent(C2.i) c= c by A14, Def1;
      then A119: omega-exponent(C2.i) in c by A87, XBOOLE_0:def 8, ORDINAL1:11;
      not c in rng(omega-exponent A2)
      proof
        assume c in rng(omega-exponent A2);
        then consider m being object such that
          A121: m in dom(omega-exponent A2) & (omega-exponent A2).m = c
          by FUNCT_1:def 3;
        reconsider m as Nat by A121;
        A122: m in dom A2 by A121, Def1;
        then A123: m in dom C2 & m in i by RELAT_1:57;
        c = omega-exponent(A2.m) by A121, A122, Def1
          .= omega-exponent(C2.m) by A122, FUNCT_1:47
          .= (omega-exponent C2).m by A123, Def1;
        then E1.m c= c by Th97;
        then A125: omega-exponent((CantorNF a).m) c= c
          by A14, A123, Def1, ORDINAL1:10;
        m in Segm i by A123;
        then c in omega -exponent((CantorNF a).m) by A14, NAT_1:44;
        then c in c by A125;
        hence contradiction;
      end;
      then c in rng(omega-exponent B2) by A18, A25, XBOOLE_0:def 5;
      then consider m being object such that
        A126: m in dom(omega-exponent B2) & (omega-exponent B2).m = c
        by FUNCT_1:def 3;
      reconsider m as Nat by A126;
      A127: m in dom B2 by A126, Def1;
      then A128: c = omega-exponent(B2.m) by A126, Def1
        .= omega-exponent(C2.(m+i)) by A127, AFINSQ_2:def 2;
      per cases;
      suppose m = 0;
        hence contradiction by A119, A128;
      end;
      suppose m > 0;
        then 0+i < m+i by XREAL_1:8;
        then i in Segm(m+i) by NAT_1:44;
        then A129: i in m+i;
        m in Segm len B2 by A127;
        then m < len B2 by NAT_1:44;
        then m < len C2 -' i by AFINSQ_2:def 2;
        then A130: m+i < len C2 -' i + i by XREAL_1:8;
        i in Segm len C2 by A22;
        then i < len C2 by NAT_1:44;
        then m+i < len C2 by A130, XREAL_1:235;
        then m+i in Segm len C2 by NAT_1:44;
        hence contradiction by A119, A128, A129, ORDINAL5:def 11;
      end;
    end;
    A131: omega-exponent b = c implies omega -exponent(C1.i) = c
    proof
      assume A132: omega-exponent b = c;
      per cases;
      suppose b <> {};
        then A133: 0 in dom CantorNF b by XBOOLE_1:61, ORDINAL1:11;
        then 0 in dom E2 by Def1;
        then E2.0 in rng E2 by FUNCT_1:3;
        then omega-exponent((CantorNF b).0) in rng E2 by A133, Def1;
        then omega-exponent Sum^ CantorNF b in rng E2 by Th44;
        then A134: c in rng E1 \/ rng E2 by A132, XBOOLE_0:def 3;
        then A135: c in rng(omega-exponent C1) by Th76;
        assume A136: omega -exponent(C1.i) <> c;
        A137: not omega -exponent(C1.i) in rng E2
        proof
          not omega -exponent(C1.i) in c
          proof
            assume A138: omega -exponent(C1.i) in c;
            consider j being object such that
              A139: j in dom(omega-exponent C1) & (omega-exponent C1).j = c
              by A135, FUNCT_1:def 3;
            reconsider j as Nat by A139;
            A140: j in dom C1 by A139, Def1;
            then A141: omega -exponent(C1.j) = c by A139, Def1;
            per cases by ORDINAL1:14;
            suppose A142: j in i;
              then A143: j in Segm i;
              (CantorNF a).j = A1.j by A33, A140, A142, RELAT_1:57
                .= C1.j by A142, FUNCT_1:49;
              then A144: c = omega-exponent((CantorNF a).j) by A141;
              c in omega -exponent((CantorNF a).j) by A14, A143, NAT_1:44;
              hence contradiction by A144;
            end;
            suppose j = i;
              hence contradiction by A138, A141;
            end;
            suppose i in j;
              hence contradiction by A138, A140, A141, ORDINAL5:def 11;
            end;
          end;
          then A145: c in omega -exponent(C1.i) by A136, ORDINAL1:14;
          assume omega -exponent(C1.i) in rng E2;
          then consider k being object such that
            A146: k in dom E2 & E2.k = omega -exponent(C1.i) by FUNCT_1:def 3;
          reconsider k as Nat by A146;
          0 in dom E2 by A146, XBOOLE_1:61, ORDINAL1:11;
          then A147: 0 in dom CantorNF b by Def1;
          omega-exponent Sum^ CantorNF b in E2.k by A132, A145, A146;
          then omega-exponent((CantorNF b).0) in E2.k by Th44;
          then A148: E2.0 in E2.k by A147, Def1;
          per cases;
          suppose k = 0;
            hence contradiction by A148;
          end;
          suppose 0 < k;
            then 0 in Segm k by NAT_1:44;
            hence contradiction by A146, A148, ORDINAL5:def 1;
          end;
        end;
        omega -exponent(C1.i) = E1.i
        proof
          assume A150: omega -exponent(C1.i) <> E1.i;
          i in dom(omega -exponent C1) by A22, Def1;
          then (omega -exponent C1).i in rng(omega -exponent C1) by FUNCT_1:3;
          then omega-exponent(C1.i) in rng(omega-exponent C1) by A22, Def1;
          then omega-exponent(C1.i) in rng E1 \/ rng E2 by Th76;
          then omega-exponent(C1.i) in rng E1 by A137, XBOOLE_0:def 3;
          then consider j being object such that
            A151: j in dom E1 & E1.j = omega-exponent(C1.i) by FUNCT_1:def 3;
          reconsider j as Nat by A151;
          per cases by XXREAL_0:1;
          suppose j < i;
            then A152: j in Segm i by NAT_1:44;
            then A153: j in dom CantorNF a by A14, ORDINAL1:10;
            i in dom C2 & i in dom C1 by A14, Th77, TARSKI:def 3;
            then j in dom C2 & j in dom C1 by A152, ORDINAL1:10;
            then A154: j in dom A1 & j in dom A2 by A152, RELAT_1:57;
            then A155: omega-exponent(C1.j)
               = omega-exponent(A1.j) by FUNCT_1:47
              .= omega-exponent((CantorNF a).j) by A33, A154
              .= omega-exponent(C1.i) by A151, A153, Def1;
            i in dom C1 by A14, Th77, TARSKI:def 3;
            then omega-exponent(C1.i) in omega-exponent(C1.j)
              by A152, ORDINAL5:def 11;
            hence contradiction by A155;
          end;
          suppose j = i;
            hence contradiction by A150, A151;
          end;
          suppose j > i;
            then i in Segm j by NAT_1:44;
            then A156: i in j;
            A157: j in dom CantorNF a by A151, Def1;
            then omega-exponent((CantorNF a).j)
              in omega-exponent((CantorNF a).i) by A156, ORDINAL5:def 11;
            then E1.j in omega-exponent((CantorNF a).i) by A157, Def1;
            then A158: omega-exponent(C1.i) in E1.i by A14, A151, Def1;
            E1.i in rng E1 by A21, FUNCT_1:3;
            then A159: E1.i in rng E1 \/ rng E2 by XBOOLE_1:7, TARSKI:def 3;
            not E1.i in rng(omega-exponent A1)
            proof
              assume E1.i in rng(omega-exponent A1);
              then consider k being object such that
                A160: k in dom(omega-exponent A1) & (omega-exponent A1).k=E1.i
                by FUNCT_1:def 3;
              k in dom A1 by A160, Def1;
              then A161: k in i & k in dom C1 by RELAT_1:57;
              A162: E1.i = ((omega-exponent C1)|i).k by A160, Th48
                .= (omega-exponent C1).k by A161, FUNCT_1:49
                .= omega-exponent(C1.k) by A161, Def1;
              A163: omega-exponent(C1.i) in omega-exponent(C1.k)
                by A22, A161, ORDINAL5:def 11;
              E1.i c= (omega-exponent C1).i by Th97;
              then E1.i c= omega-exponent(C1.i) by A22, Def1;
              hence contradiction by A162, A163, ORDINAL1:12;
            end;
            then E1.i in rng(omega-exponent B1) by A28, A159, XBOOLE_0:def 5;
            then consider k being object such that
              A164: k in dom(omega-exponent B1) & (omega-exponent B1).k = E1.i
              by FUNCT_1:def 3;
            reconsider k as Nat by A164;
            A165: k in dom B1 by A164, Def1;
            then A166: E1.i = omega-exponent(B1.k) by A164, Def1
              .= omega-exponent(C1.(k+i)) by A165, AFINSQ_2:def 2;
            per cases;
            suppose k = 0;
              hence contradiction by A158, A166;
            end;
            suppose 0 < k;
              then 0+i < k+i by XREAL_1:8;
              then i in Segm(k+i) by NAT_1:44;
              then A167: i in k+i;
              k in Segm len B1 by A165;
              then k < len B1 by NAT_1:44;
              then k < len C1 -' i by AFINSQ_2:def 2;
              then A168: k+i < len C1 -' i + i by XREAL_1:8;
              i in Segm len C1 by A22;
              then i < len C1 by NAT_1:44;
              then k+i < len C1 by A168, XREAL_1:235;
              then k+i in Segm len C1 by NAT_1:44;
              hence contradiction by A158, A166, A167, ORDINAL5:def 11;
            end;
          end;
        end;
        then omega-exponent(C1.i) c= c by A14, Def1;
        then A169: omega-exponent(C1.i) in c
          by ORDINAL1:11, A136, XBOOLE_0:def 8;
        not c in rng(omega-exponent A1)
        proof
          assume c in rng(omega-exponent A1);
          then consider m being object such that
            A171: m in dom(omega-exponent A1) & (omega-exponent A1).m = c
            by FUNCT_1:def 3;
          reconsider m as Nat by A171;
          A172: m in dom A1 by A171, Def1;
          then A173: m in dom C1 & m in i by RELAT_1:57;
          c = omega-exponent(A1.m) by A171, A172, Def1
            .= omega-exponent(C1.m) by A172, FUNCT_1:47
            .= (omega-exponent C1).m by A173, Def1;
          then E1.m c= c by Th97;
          then A175: omega-exponent((CantorNF a).m) c= c
            by Def1, A14, A173, ORDINAL1:10;
          m in Segm i by A173;
          then c in omega -exponent((CantorNF a).m) by A14, NAT_1:44;
          then c in c by A175;
          hence contradiction;
        end;
        then c in rng(omega-exponent B1) by A134, A28, XBOOLE_0:def 5;
        then consider m being object such that
          A176: m in dom(omega-exponent B1) & (omega-exponent B1).m = c
          by FUNCT_1:def 3;
        reconsider m as Nat by A176;
        A177: m in dom B1 by A176, Def1;
        then A178: c = omega-exponent(B1.m) by A176, Def1
          .= omega-exponent(C1.(m+i)) by A177, AFINSQ_2:def 2;
        per cases;
        suppose m = 0;
          hence contradiction by A169, A178;
        end;
        suppose m > 0;
          then 0+i < m+i by XREAL_1:8;
          then i in Segm(m+i) by NAT_1:44;
          then A179: i in m+i;
          m in Segm len B1 by A177;
          then m < len B1 by NAT_1:44;
          then m < len C1 -' i by AFINSQ_2:def 2;
          then A180: m+i < len C1 -' i + i by XREAL_1:8;
          i in Segm len C1 by A22;
          then i < len C1 by NAT_1:44;
          then m+i < len C1 by A180, XREAL_1:235;
          then m+i in Segm len C1 by NAT_1:44;
          hence contradiction by A169, A178, A179, ORDINAL5:def 11;
        end;
      end;
      suppose A181: b = {};
        then A182: c = 0 by A132, ORDINAL5:def 10;
        assume omega -exponent(C1.i) <> c;
        hence contradiction by A14, A182, A181, Th82;
      end;
    end;
    A183: Sum^ B1 in C2.i
    proof
      per cases by ORDINAL1:16;
      suppose A184: B1 <> {} & c c= omega -exponent((CantorNF a).i);
        then consider b0 being Cantor-component Ordinal,
          B0 being Cantor-normal-form Ordinal-Sequence such that
          A185: B1 = <% b0 %> ^ B0 by ORDINAL5:67;
        :: first find that C2.i = (CNF a).i + L3.0*^exp(omega,c)
        A186: omega -exponent(C2.i)
           = omega-exponent((CantorNF a).i) by A14, A86, A184, XBOOLE_0:def 10
          .= E1.i by A14, Def1;
        then omega -exponent(C2.i) in rng E1 by A21, FUNCT_1:3;
        then omega -exponent(C2.i) in rng E1 /\ rng E3
          by A17, A86, XBOOLE_0:def 4;
        then omega-leading_coeff(C2.i) = L1.(E1".(omega-exponent(C2.i)))
            + L3.(E3".(omega-exponent(C2.i))) by A22, Th80
          .= L1.i + L3.(E3".c) by A21, A86, A186, FUNCT_1:34
          .= L1.i + L3.0 by A16, A20, FUNCT_1:34;
        then A188: C2.i = (L1.i+L3.0)*^exp(omega,c) by A22, A86, Th64
          .= (L1.i+^L3.0)*^exp(omega,c) by CARD_2:36
          .= L1.i*^exp(omega,c) +^ L3.0*^exp(omega,c) by ORDINAL3:46;
        0 in dom L3 by A15, Def3;
        then L3.0 <> {} by FUNCT_1:def 9;
        then A189: 0 in L3.0 by XBOOLE_1:61, ORDINAL1:11;
        per cases by ORDINAL1:16;
        suppose A190: omega-exponent b in c;
          :: next find that C1.i = (CNF a).i
          c c= (omega-exponent C1).i by A86, A186, Th97;
          then A191: c c= omega-exponent(C1.i) by A22, Def1;
          A192: not omega-exponent(C1.i) in rng E2
          proof
            assume omega-exponent(C1.i) in rng E2;
            then consider j being object such that
              A193: j in dom E2 & E2.j = omega-exponent(C1.i) by FUNCT_1:def 3;
            reconsider j as Nat by A193;
            A194: j in dom CantorNF b by A193, Def1;
            per cases;
            suppose j = 0;
              then omega-exponent(C1.i) = omega-exponent((CantorNF b).0)
                  by A193, A194, Def1
                .= omega-exponent(Sum^ CantorNF b) by Th44
                .= omega-exponent b;
              hence contradiction by A190, A191, ORDINAL1:12;
            end;
            suppose 0 < j;
              then 0 in Segm j by NAT_1:44;
              then omega-exponent((CantorNF b).j) in
                omega-exponent((CantorNF b).0) by A194, ORDINAL5:def 11;
              then omega-exponent(C1.i) in omega-exponent((CantorNF b).0)
                by A193, A194, Def1;
              then omega-exponent(C1.i) in omega-exponent(Sum^ CantorNF b)
                by Th44;
              hence contradiction by A190, A191;
            end;
          end;
          i in dom(omega-exponent C1) by A22, Def1;
          then (omega-exponent C1).i in rng(omega-exponent C1) by FUNCT_1:3;
          then omega-exponent(C1.i) in rng(omega-exponent C1) by A22, Def1;
          then omega-exponent(C1.i) in rng E1 \/ rng E2 by Th76;
          then A195: omega-exponent(C1.i) in rng E1 by A192, XBOOLE_0:def 3;
          then consider j being object such that
            A196: j in dom E1 & E1.j = omega-exponent(C1.i) by FUNCT_1:def 3;
          reconsider j as Nat by A196;
          A197: j in dom CantorNF a by A196, Def1;
          A198: i = j
          proof
            assume i <> j;
            then per cases by XXREAL_0:1;
            suppose i < j;
              then i in Segm j by NAT_1:44;
              then omega-exponent((CantorNF a).j) in
                omega-exponent((CantorNF a).i) by A197, ORDINAL5:def 11;
              then E1.j in omega-exponent((CantorNF a).i) by A197, Def1;
              then omega-exponent(C1.i) in E1.i by A14, A196, Def1;
              then (omega-exponent C1).i in E1.i by A22, Def1;
              then (omega-exponent C1).i in (omega-exponent C1).i
                by Th97, TARSKI:def 3;
              hence contradiction;
            end;
            suppose j < i;
              then j in Segm i by NAT_1:44;
              then A199: j in i;
              j in dom C1 by A197, Th77, TARSKI:def 3;
              then (CantorNF a).j = A1.j by A33, A199, RELAT_1:57
                .= C1.j by A199, FUNCT_1:49;
              then A200: omega-exponent(C1.j) = omega-exponent(C1.i)
                by A196, A197, Def1;
              omega-exponent(C1.i) in omega-exponent(C1.j)
                by A22, A199, ORDINAL5:def 11;
              hence contradiction by A200;
            end;
          end;
          then A201: omega-exponent(C1.i)
             = omega-exponent((CantorNF a).i) by A14, A196, Def1
            .= c by A14, A184, XBOOLE_0:def 10;
          omega-exponent(C1.i) in rng E1 \ rng E2
            by A192, A195, XBOOLE_0:def 5;
          then omega-leading_coeff(C1.i)
             = L1.(E1".(omega-exponent(C1.i))) by A22, Th78
            .= L1.i by A196, A198, FUNCT_1:34;
          then A202: C1.i = L1.i*^exp(omega,c) by A22, A201, Th64;
          :: the conclusion follows
          A203: 0 in dom B1 by A184, XBOOLE_1:61, ORDINAL1:11;
          A204: b0 = B1.0 by A185, AFINSQ_1:35
            .= C1.(0+i) by A203, AFINSQ_2:def 2;
          then b0 +^ Sum^ B0 in b0 +^ exp(omega,c)
            by ORDINAL2:32, A185, A201, Th43;
          then A205: Sum^ B1 in L1.i*^exp(omega,c) +^ exp(omega,c)
            by A202, A185, A204, ORDINAL5:55;
          1 c= L3.0 by A189, CARD_1:49, ZFMISC_1:31;
          then 1*^exp(omega,c) c= L3.0*^exp(omega,c) by ORDINAL2:41;
          then exp(omega,c) c= L3.0*^exp(omega,c) by ORDINAL2:39;
          then L1.i*^exp(omega,c) +^ exp(omega,c)
            c= L1.i*^exp(omega,c) +^ L3.0*^exp(omega,c) by ORDINAL2:33;
          hence Sum^ B1 in C2.i by A188, A205;
        end;
        suppose c c= omega-exponent b;
          then A206: c = omega-exponent b by A2, XBOOLE_0:def 10;
          then A207: omega -exponent(C1.i) = c by A131;
          A208: 0 in dom B1 by A184, XBOOLE_1:61, ORDINAL1:11;
          exp(omega, omega-exponent b0)
             = exp(omega,omega-exponent(B1.0)) by A185, AFINSQ_1:35
            .= exp(omega,omega-exponent(C1.(0+i))) by A208, AFINSQ_2:def 2
            .= 1*^exp(omega,c) by A131, A206, ORDINAL2:39;
          then A209: Sum^ B0 in 1*^exp(omega,c) by A185, Th43;
          A210: omega -exponent(C1.i) = omega-exponent((CantorNF a).i)
               by A14, A131, A184, A206, XBOOLE_0:def 10
            .= E1.i by A14, Def1;
          then A211: omega -exponent(C1.i) in rng E1 by A21, FUNCT_1:3;
          per cases;
          suppose b <> {};
            then A212: 0 in dom CantorNF b by XBOOLE_1:61, ORDINAL1:11;
            then A213: 0 in dom E2 by Def1;
            then E2.0 in rng E2 by FUNCT_1:3;
            then omega-exponent((CantorNF b).0) in rng E2 by A212, Def1;
            then omega-exponent Sum^ CantorNF b in rng E2 by Th44;
            then A214: c in rng E2 by A206;
            A215: c = omega-exponent Sum^ CantorNF b by A206
              .= omega-exponent((CantorNF b).0) by Th44
              .= E2.0 by A212, Def1;
            :: next find that C1.i = (CNF a).i + L2.0*^exp(omega,c)
            omega -exponent(C1.i) in rng E1 /\ rng E2
              by A131, A206, A211, A214, XBOOLE_0:def 4;
            then omega-leading_coeff(C1.i) = L1.(E1".(omega-exponent(C1.i)))
                + L2.(E2".(omega-exponent(C1.i))) by A22, Th80
              .= L1.i + L2.(E2".c) by A21, A131, A206, A210, FUNCT_1:34
              .= L1.i + L2.0 by A213, A215, FUNCT_1:34;
            then A216: C1.i
               = (L1.i+L2.0)*^exp(omega,omega-exponent(C1.i)) by A22, Th64
              .= (L1.i+^L2.0)*^exp(omega,c) by A131, A206, CARD_2:36
              .= L1.i*^exp(omega,c) +^ L2.0*^exp(omega,c) by ORDINAL3:46;
            :: L2.0 must be smaller than L3.0
            L2.0 in L3.0
            proof
              assume not L2.0 in L3.0;
              then A217: L3.0 c= L2.0 by ORDINAL1:16;
              then 0 in dom L2 by FUNCT_1:def 2, A189;
              then A218: 0 in dom CantorNF b by Def3;
              L3.0 in L2.0
              proof
                assume not L3.0 in L2.0;
                then L2.0 c= L3.0 by ORDINAL1:16;
                then L2.0 = L3.0 by A217, XBOOLE_0:def 10;
                then (CantorNF d).0 = L2.0*^exp(omega,c) by A15, A20, Th65
                  .= (CantorNF b).0 by A215, A218, Th65;
                hence contradiction by A1;
              end;
              then L3.0 in Segm L2.0;
              then L3.0 < L2.0 by NAT_1:44;
              then L3.0 + 1 <= L2.0 by NAT_1:13;
              then Segm(L3.0+1) c= Segm(L2.0) by NAT_1:39;
              then (L3.0+1)*^exp(omega,c) c= L2.0*^exp(omega,c) by ORDINAL2:41;
              then (L3.0+1)*^exp(omega,c) c=(CantorNF b).0 by A215, A218, Th65;
              then (L3.0+^1)*^exp(omega,c) c= (CantorNF b).0 by CARD_2:36;
              then L3.0*^exp(omega,c) +^ 1*^exp(omega,c) c= (CantorNF b).0
                by ORDINAL3:46;
              then A220: (CantorNF d).0 +^ 1*^exp(omega,c) c= (CantorNF b).0
                by A15, A20, Th65;
              consider d0 being Cantor-component Ordinal,
                D0 being Cantor-normal-form Ordinal-Sequence such that
                A221: CantorNF d = <% d0 %> ^ D0 by A1, ORDINAL5:67;
              exp(omega, omega-exponent d0)
                 = exp(omega, omega-exponent((CantorNF d).0))
                   by A221, AFINSQ_1:35
                .= exp(omega, E3.0) by A15, Def1
                .= 1*^exp(omega, c) by A20, ORDINAL2:39;
              then (CantorNF d).0 +^ Sum^ D0 in
                (CantorNF d).0 +^ 1*^exp(omega,c) by A221, Th43, ORDINAL2:32;
              then (CantorNF d).0 +^ Sum^ D0 in (CantorNF b).0 by A220;
              then d0 +^ Sum^ D0 in (CantorNF b).0 by A221, AFINSQ_1:35;
              then Sum^ CantorNF d in (CantorNF b).0
                by A221, ORDINAL5:55;
              then d in Sum^ CantorNF b by ORDINAL5:56, TARSKI:def 3;
              hence contradiction by A1;
            end;
            :: we conclude with basically the same reasoning for L2.0 in L3.0
            then L2.0 in Segm L3.0;
            then L2.0 < L3.0 by NAT_1:44;
            then L2.0 + 1 <= L3.0 by NAT_1:13;
            then Segm(L2.0+1) c= Segm(L3.0) by NAT_1:39;
            then (L2.0+1)*^exp(omega,c) c= L3.0*^exp(omega,c) by ORDINAL2:41;
            then (L2.0+^1)*^exp(omega,c) c= L3.0*^exp(omega,c) by CARD_2:36;
            then L2.0*^exp(omega,c) +^ 1*^exp(omega,c) c= L3.0*^exp(omega,c)
              by ORDINAL3:46;
            then L1.i*^exp(omega,c) +^ (L2.0*^exp(omega,c) +^ 1*^exp(omega,c))
              c= C2.i by A188, ORDINAL2:33;
            then A222: C1.i +^ 1*^exp(omega,c) c= C2.i by A216, ORDINAL3:30;
            C1.i +^ Sum^ B0 in C1.i +^ 1*^exp(omega,c) by A209, ORDINAL2:32;
            then C1.(0+i) +^ Sum^ B0 in C2.i by A222;
            then B1.0 +^ Sum^ B0 in C2.i by A208, AFINSQ_2:def 2;
            then b0 +^ Sum^ B0 in C2.i by A185, AFINSQ_1:35;
            hence Sum^ B1 in C2.i by A185, ORDINAL5:55;
          end;
          suppose b = {};
            then A223: not omega -exponent(C1.i) in rng E2;
            i in dom(omega-exponent C1) by A22, Def1;
            then (omega-exponent C1).i in rng(omega-exponent C1) by FUNCT_1:3;
            then (omega-exponent C1).i in rng E1 \/ rng E2 by Th76;
            then omega-exponent(C1.i) in rng E1 \/ rng E2 by A22, Def1;
            then omega-exponent(C1.i) in rng E1 or
              omega-exponent(C1.i) in rng E2 by XBOOLE_0:def 3;
            then omega-exponent(C1.i) in rng E1 \ rng E2
              by A223, XBOOLE_0:def 5;
            then A224: omega -leading_coeff(C1.i)
               = L1.(E1".(omega-exponent(C1.i))) by A22, Th78
              .= L1.i by A21, A210, FUNCT_1:34;
            1 c= L3.0 by A189, ZFMISC_1:31, CARD_1:49;
            then 1*^exp(omega,c) c= L3.0*^exp(omega,c) by ORDINAL2:41;
            then L1.i*^exp(omega,c) +^ Sum^ B0 in C2.i
              by A209, A188, ORDINAL2:32;
            then C1.(0+i) +^ Sum^ B0 in C2.i by A22, A207, A224, Th64;
            then B1.0 +^ Sum^ B0 in C2.i by A208, AFINSQ_2:def 2;
            then b0 +^ Sum^ B0 in C2.i by A185, AFINSQ_1:35;
            hence Sum^ B1 in C2.i by A185, ORDINAL5:55;
          end;
        end;
      end;
      suppose A225: B1 <> {} & omega -exponent((CantorNF a).i) in c;
        A226: C2.i is Cantor-component by A22, ORDINAL5:def 11;
        per cases by ORDINAL1:16;
        suppose A227: omega-exponent b in c;
          A228: omega-exponent(C1.i) in c
          proof
            assume not omega-exponent(C1.i) in c;
            then A229: c c= omega-exponent(C1.i) by ORDINAL1:16;
            i in dom(omega-exponent C1) by A22, Def1;
            then (omega-exponent C1).i in rng(omega-exponent C1) by FUNCT_1:3;
            then omega-exponent(C1.i) in rng(omega-exponent C1) by A22, Def1;
            then omega-exponent(C1.i) in rng E1 \/ rng E2 by Th76;
            then per cases by XBOOLE_0:def 3;
            suppose omega-exponent(C1.i) in rng E1;
              then consider j being object such that
                A230: j in dom E1 & E1.j = omega-exponent(C1.i)
                by FUNCT_1:def 3;
              reconsider j as Nat by A230;
              A231: j in dom CantorNF a by A230, Def1;
              then A232: j in dom C1 by Th77, TARSKI:def 3;
              A233: omega-exponent(C1.i) = omega-exponent((CantorNF a).j)
                by A230, A231, Def1;
              per cases by ORDINAL1:14;
              suppose A234: j in i;
                then (CantorNF a).j = A1.j by A33, A232, RELAT_1:57
                  .= C1.j by A234, FUNCT_1:49;
                then A235: omega-exponent(C1.i) = omega-exponent(C1.j) by A233;
                omega-exponent(C1.i) in omega-exponent(C1.j)
                  by A22, A234, ORDINAL5:def 11;
                hence contradiction by A235;
              end;
              suppose j = i;
                hence contradiction by A225, A229, A233, ORDINAL1:12;
              end;
              suppose i in j;
                then omega-exponent((CantorNF a).j)
                  in omega-exponent((CantorNF a).i) by A231, ORDINAL5:def 11;
                hence contradiction by A229, A233, A225;
              end;
            end;
            suppose omega-exponent(C1.i) in rng E2;
              then consider j being object such that
                A236: j in dom E2 & E2.j = omega-exponent(C1.i)
                by FUNCT_1:def 3;
              reconsider j as Nat by A236;
              A237: j in dom CantorNF b by A236, Def1;
              then A238: omega-exponent(C1.i) = omega-exponent((CantorNF b).j)
                by A236, Def1;
              per cases;
              suppose j = 0;
                then omega-exponent(C1.i)
                   = omega-exponent Sum^ CantorNF b by A238, Th44
                  .= omega-exponent b;
                hence contradiction by A227, A229, ORDINAL1:12;
              end;
              suppose 0 < j;
                then 0 in Segm j by NAT_1:44;
                then omega-exponent(C1.i) in omega-exponent((CantorNF b).0)
                  by A237, A238, ORDINAL5:def 11;
                then omega-exponent(C1.i) in omega-exponent Sum^ CantorNF b
                  by Th44;
                hence contradiction by A227, A229;
              end;
            end;
          end;
          now
            let j be Ordinal;
            assume A239: j in dom B1;
            then reconsider m = j as Nat;
            A240: B1.j is Cantor-component by A239, ORDINAL5:def 11;
            per cases;
            suppose m = 0;
              then omega-exponent(B1.m) = omega-exponent(C1.(0+i))
                by A239, AFINSQ_2:def 2;
              then exp(omega,omega-exponent(B1.j)) in exp(omega,c)
                by A228, ORDINAL4:24;
              then omega-leading_coeff(B1.j) *^ exp(omega,omega-exponent(B1.j))
                in exp(omega,c) by A240, Th42;
              hence B1.j in exp(omega,c) by A240, Th59;
            end;
            suppose 0 < m;
              then 0 in Segm j by NAT_1:44;
              then A242: 0 in j;
              0 in dom B1 by A239, XBOOLE_1:61, ORDINAL1:11;
              then B1.0 = C1.(0+i) by AFINSQ_2:def 2;
              then omega-exponent(B1.j) in omega-exponent(C1.i)
                by A239, A242, ORDINAL5:def 11;
              then omega-exponent(B1.j) in c by A228, ORDINAL1:10;
              then exp(omega,omega-exponent(B1.j)) in exp(omega,c)
                by ORDINAL4:24;
              then omega-leading_coeff(B1.j) *^ exp(omega,omega-exponent(B1.j))
                in exp(omega,c) by A240, Th42;
              hence B1.j in exp(omega,c) by A240, Th59;
            end;
          end;
          then Sum^ B1 in exp(omega,omega -exponent(C2.i)) by A86, Th41;
          then Sum^ B1 in omega -leading_coeff(C2.i)
            *^ exp(omega,omega -exponent(C2.i)) by A226, ORDINAL3:32;
          hence Sum^ B1 in C2.i by A226, Th59;
        end;
        suppose c c= omega-exponent b;
          then A243: omega-exponent b = c by A2, XBOOLE_0:def 10;
          then A244: omega -exponent(C1.i) = c by A131;
          A245: not c in rng E1
          proof
            assume c in rng E1;
            then consider j being object such that
              A246: j in dom E1 & E1.j = c by FUNCT_1:def 3;
            reconsider j as Nat by A246;
            A247: j in dom CantorNF a by A246, Def1;
            then A248: omega -exponent((CantorNF a).j) = c by A246, Def1;
            per cases by ORDINAL1:14;
            suppose i in j;
              hence contradiction by A225, A247, A248, ORDINAL5:def 11;
            end;
            suppose i = j;
              hence contradiction by A225, A248;
            end;
            suppose j in i;
              then j in Segm i;
              then c in omega -exponent((CantorNF a).j) by A14, NAT_1:44;
              hence contradiction by A248;
            end;
          end;
          i in dom(omega-exponent C1) by A22, Def1;
          then (omega-exponent C1).i in rng(omega-exponent C1) by FUNCT_1:3;
          then omega-exponent(C1.i) in rng(omega-exponent C1) by A22, Def1;
          then A249: omega-exponent(C1.i) in rng E1 \/ rng E2 by Th76;
          then b <> {} by A244, A245, XBOOLE_0:def 3;
          then A250: 0 in dom CantorNF b by XBOOLE_1:61, ORDINAL1:11;
          then A251: 0 in dom E2 by Def1;
          A252: c = omega-exponent Sum^ CantorNF b by A243
            .= omega-exponent((CantorNF b).0) by Th44
            .= E2.0 by A250, Def1;
          omega-exponent(C1.i) in rng E1 or omega-exponent(C1.i) in rng E2
            by A249, XBOOLE_0:def 3;
          then omega-exponent(C1.i) in rng E2 \ rng E1
            by A244, A245, XBOOLE_0:def 5;
          then A253: omega -leading_coeff(C1.i)
             = L2.(E2".(E2.0)) by A22, A244, A252, Th79
            .= L2.0 by A251, FUNCT_1:34;
          omega -exponent(C2.i) in rng E1 or omega -exponent(C2.i) in rng E3
            by A18, A86, XBOOLE_0:def 3;
          then omega -exponent(C2.i) in rng E3 \ rng E1
            by A86, A245, XBOOLE_0:def 5;
          then A254: omega -leading_coeff(C2.i)
             = L3.(E3".(E3.0)) by A20, A22, A86, Th79
            .= L3.0 by A16, FUNCT_1:34;
          :: L2.0 must be smaller than L3.0
          L2.0 in L3.0
          proof
            assume not L2.0 in L3.0;
            then A255: L3.0 c= L2.0 by ORDINAL1:16;
            L3.0 in L2.0
            proof
              assume not L3.0 in L2.0;
              then L2.0 c= L3.0 by ORDINAL1:16;
              then A256: L2.0 = L3.0 by A255, XBOOLE_0:def 10;
              (CantorNF b).0 = L2.0*^exp(omega,E2.0) by A250, Th65
                .= (CantorNF d).0 by A15, A20, A252, A256, Th65;
              hence contradiction by A1;
            end;
            then L3.0 in Segm(L2.0);
            then L3.0 < L2.0 by NAT_1:44;
            then L3.0+1 <= L2.0 by NAT_1:13;
            then Segm(L3.0+1) c= Segm(L2.0) by NAT_1:39;
            then (L3.0+1)*^exp(omega,c) c= L2.0*^exp(omega,c) by ORDINAL2:41;
            then (L3.0+1)*^exp(omega,c) c= (CantorNF b).0 by A250, A252, Th65;
            then (L3.0+^1)*^exp(omega,c) c= (CantorNF b).0 by CARD_2:36;
            then A257: L3.0*^exp(omega,c) +^ 1*^exp(omega,c) c= (CantorNF b).0
              by ORDINAL3:46;
            consider d0 being Cantor-component Ordinal,
              D0 being Cantor-normal-form Ordinal-Sequence such that
              A258: CantorNF d = <% d0 %> ^ D0 by A1, ORDINAL5:67;
            exp(omega,omega-exponent d0)
               = exp(omega,omega-exponent((CantorNF d).0)) by A258, AFINSQ_1:35
              .= exp(omega,E3.0) by A15, Def1
              .= 1*^exp(omega,c) by A20, ORDINAL2:39;
            then L3.0*^exp(omega,c) +^ Sum^ D0
              in L3.0*^exp(omega,c) +^ 1*^exp(omega,c)
                by ORDINAL2:32, A258, Th43;
            then L3.0*^exp(omega,c) +^ Sum^ D0 in (CantorNF b).0 by A257;
            then (CantorNF d).0 +^ Sum^ D0 in (CantorNF b).0
              by A15, A20, Th65;
            then (CantorNF d).0 +^ Sum^ D0 in Sum^ CantorNF b
              by ORDINAL5:56, TARSKI:def 3;
            then d0 +^ Sum^ D0 in b by A258, AFINSQ_1:35;
            then Sum^ CantorNF d in b by A258, ORDINAL5:55;
            hence contradiction by A1;
          end;
          then L2.0 in Segm(L3.0);
          then L2.0 < L3.0 by NAT_1:44;
          then L2.0+1 <= L3.0 by NAT_1:13;
          then Segm(L2.0+1) c= Segm(L3.0) by NAT_1:39;
          then (L2.0+1)*^exp(omega,c) c= L3.0*^exp(omega,c) by ORDINAL2:41;
          then (L2.0+^1)*^exp(omega,c) c= L3.0*^exp(omega,c) by CARD_2:36;
          then A259: L2.0*^exp(omega,c) +^ 1*^exp(omega,c)
            c= L3.0*^exp(omega,c) by ORDINAL3:46;
          C2.i = L3.0*^exp(omega,c) by A22, A86, A254, Th64;
          then A260: L2.0*^exp(omega,c) +^ 1*^exp(omega,c) c= C2.i by A259;
          A261: C1.i = L2.0*^exp(omega,c) by A22, A244, A253, Th64;
          consider b0 being Cantor-component Ordinal,
            B0 being Cantor-normal-form Ordinal-Sequence such that
            A262: B1 = <% b0 %> ^ B0 by A225, ORDINAL5:67;
          A263: 0 in dom B1 by A225, XBOOLE_1:61, ORDINAL1:11;
          exp(omega,omega-exponent b0)
             = exp(omega,omega-exponent(B1.0)) by A262, AFINSQ_1:35
            .= exp(omega,omega-exponent(C1.(0+i))) by A263, AFINSQ_2:def 2
            .= 1*^exp(omega,c) by A244, ORDINAL2:39;
          then L2.0*^exp(omega,c) +^ Sum^ B0
            in L2.0*^exp(omega,c)+^1*^exp(omega,c) by A262, Th43, ORDINAL2:32;
          then C1.(0+i) +^ Sum^ B0 in C2.i by A260, A261;
          then B1.0 +^ Sum^ B0 in C2.i by A263, AFINSQ_2:def 2;
          then b0 +^ Sum^ B0 in C2.i by A262, AFINSQ_1:35;
          hence Sum^ B1 in C2.i by A262, ORDINAL5:55;
        end;
      end;
      suppose B1 = {};
        hence thesis by A22, XBOOLE_1:61, ORDINAL1:11, ORDINAL5:52;
      end;
    end;
    :: in conclusion, one sum is greater than the other
    i in Segm dom C2 by A14, Th77, TARSKI:def 3;
    then 0+i < len C2 by NAT_1:44;
    then Sum^ B1 in B2.0 by A183, AFINSQ_2:8;
    then Sum^ B1 in Sum^ B2 by ORDINAL5:56, TARSKI:def 3;
    then A265: Sum^ A1 +^ Sum^ B1 in Sum^ A2 +^ Sum^ B2 by A85, ORDINAL2:32;
    A266: a(+)b = Sum^(A1 ^ B1)
      .= Sum^ A1 +^ Sum^ B1 by Th24;
    a(+)d = Sum^(A2 ^ B2)
      .= Sum^ A2 +^ Sum^ B2 by Th24;
    hence thesis by A265, A266;
  end;
end;

:: monotonicity of natural addition
theorem Th107:
  for a, b, c being Ordinal st b in c holds a (+) b in a (+) c
proof
  let a, b, c be Ordinal;
  assume A1: b in c;
  per cases;
  suppose a = 0;
    then a (+) b = b & a (+) c = c by Th82;
    hence thesis by A1;
  end;
  suppose A2: a <> 0;
    :: the basic idea is to grab the first summands of the CNF of b and c
    :: that are equal, put them to a and use the lemma on the rest
    defpred P[Nat] means (CantorNF b).$1 <> (CantorNF c).$1;
    A3: ex i being Nat st P[i]
    proof
      assume A4: for i being Nat holds not P[i];
      A5: dom CantorNF b = dom CantorNF c
      proof
        assume dom CantorNF b <> dom CantorNF c;
        then per cases by XBOOLE_0:def 10;
        suppose not dom CantorNF b c= dom CantorNF c;
          then A6: (CantorNF b).(dom CantorNF c) <> {}
            by ORDINAL1:16, FUNCT_1:def 9;
          not dom CantorNF c in dom CantorNF c;
          then (CantorNF c).(dom CantorNF c) = {} by FUNCT_1:def 2;
          hence contradiction by A4, A6;
        end;
        suppose not dom CantorNF c c= dom CantorNF b;
          then A7: (CantorNF c).(dom CantorNF b) <> {}
            by ORDINAL1:16, FUNCT_1:def 9;
          not dom CantorNF b in dom CantorNF b;
          then (CantorNF b).(dom CantorNF b) = {} by FUNCT_1:def 2;
          hence contradiction by A4, A7;
        end;
      end;
      for x being object st x in dom CantorNF b
        holds (CantorNF b).x = (CantorNF c).x by A4;
      then Sum^ CantorNF b = Sum^ CantorNF c by A5, FUNCT_1:2;
      hence contradiction by A1;
    end;
    consider i being Nat such that
      A8: P[i] & for j being Nat st P[j] holds i <= j from NAT_1:sch 5(A3);
    set A1 = (CantorNF b)|i, A2 = (CantorNF c)|i;
    set B1 = (CantorNF b)/^i, B2 = (CantorNF c)/^i;
    A9: i c= dom CantorNF b & i c= dom CantorNF c
    proof
      assume not (i c= dom CantorNF b & i c= dom CantorNF c);
      then per cases;
      suppose A10: not i c= dom CantorNF b;
        then consider x being object such that
          A11: x in i & not x in dom CantorNF b by TARSKI:def 3;
        i in omega by ORDINAL1:def 12;
        then x in omega by A11, ORDINAL1:10;
        then reconsider x as Nat;
        A12: (CantorNF b).x = {} by A11, FUNCT_1:def 2;
        x in Segm i by A11;
        then (CantorNF b).x = (CantorNF c).x by A8, NAT_1:44;
        then dom CantorNF c c= x by A12, FUNCT_1:def 9, ORDINAL1:16;
        then dom CantorNF c in i by A11, ORDINAL1:12;
        then A13: (CantorNF c).i = {} by FUNCT_1:def 2;
        dom CantorNF b in i by A10, ORDINAL1:16;
        hence contradiction by A8, A13, FUNCT_1:def 2;
      end;
      suppose A14: not i c= dom CantorNF c;
        then consider x being object such that
          A15: x in i & not x in dom CantorNF c by TARSKI:def 3;
        i in omega by ORDINAL1:def 12;
        then x in omega by A15, ORDINAL1:10;
        then reconsider x as Nat;
        A16: (CantorNF c).x = {} by A15, FUNCT_1:def 2;
        x in Segm i by A15;
        then (CantorNF b).x = (CantorNF c).x by A8, NAT_1:44;
        then dom CantorNF b c= x by A16, FUNCT_1:def 9, ORDINAL1:16;
        then dom CantorNF b in i by A15, ORDINAL1:12;
        then A17: (CantorNF b).i = {} by FUNCT_1:def 2;
        dom CantorNF c in i by A14, ORDINAL1:16;
        hence contradiction by A8, A17, FUNCT_1:def 2;
      end;
    end;
    A18: dom A1 = dom(CantorNF b) /\ i by RELAT_1:61
      .= i by A9, XBOOLE_1:28
      .= dom(CantorNF c) /\ i by A9, XBOOLE_1:28
      .= dom A2 by RELAT_1:61;
    for x being object st x in dom A1 holds A1.x = A2.x
    proof
      let x be object;
      assume x in dom A1;
      then A19: x in i by RELAT_1:57;
      i in omega by ORDINAL1:def 12;
      then x in omega by A19, ORDINAL1:10;
      then reconsider m = x as Nat;
      m in Segm i by A19;
      then A20: m < i by NAT_1:44;
      thus A1.x = (CantorNF b).m by A19, FUNCT_1:49
        .= (CantorNF c).m by A8, A20
        .= A2.x by A19, FUNCT_1:49;
    end;
    then A21: A1 = A2 by A18, FUNCT_1:2;
    A22: Sum^ B1 in Sum^ B2
    proof
      Sum^ CantorNF b in Sum^ (A2 ^ B2) by A1;
      then Sum^ (A1 ^ B1) in Sum^ A2 +^ Sum^ B2 by Th24;
      then Sum^ A1 +^ Sum^ B1 in Sum^ A2 +^ Sum^ B2 by Th24;
      hence thesis by A21, ORDINAL3:22;
    end;
    A23: A1^B1 is Cantor-normal-form;
    A24: A2^B2 is Cantor-normal-form;
    A25: b = Sum^ (A1 ^ B1)
      .= Sum^ A1 +^ Sum^ B1 by Th24
      .= Sum^ A1 (+) Sum^ B1 by A23, Th84;
    A26: c = Sum^ (A2 ^ B2)
      .= Sum^ A2 +^ Sum^ B2 by Th24
      .= Sum^ A2 (+) Sum^ B2 by A24, Th84;
    A27: a(+)Sum^ A1 is non empty by A2;
    B1.0 <> B2.0
    proof
      0 in dom B1 or 0 in dom B2
      proof
        assume not 0 in dom B1 & not 0 in dom B2;
        then dom B1 c= {} & dom B2 c= {} by ORDINAL1:16;
        then B1 = {} & B2 = {};
        then A1^B1 = A1 & A2^B2 = A2;
        then A28: CantorNF b = A1 & CantorNF c = A2;
        not i in i;
        then not i in dom(CantorNF b)/\ i & not i in dom(CantorNF c)/\ i
          by XBOOLE_0:def 4;
        then A29: not i in dom A1 & not i in dom A2 by RELAT_1:61;
        then (CantorNF b).i = {} by A28, FUNCT_1:def 2
          .= (CantorNF c).i by A28, A29, FUNCT_1:def 2;
        hence contradiction by A8;
      end;
      then per cases;
      suppose 0 in dom B1 & 0 in dom B2;
        then B1.0 = (CantorNF b).(0+i) & B2.0 = (CantorNF c).(0+i)
          by AFINSQ_2:def 2;
        hence thesis by A8;
      end;
      suppose 0 in dom B1 & not 0 in dom B2;
        then B1.0 <> {} & B2.0 = {} by FUNCT_1:def 9, FUNCT_1:def 2;
        hence thesis;
      end;
      suppose not 0 in dom B1 & 0 in dom B2;
        then B1.0 = {} & B2.0 <> {} by FUNCT_1:def 9, FUNCT_1:def 2;
        hence thesis;
      end;
    end;
    then (CantorNF Sum^ B1).0 <> (CantorNF Sum^ B2).0;
    then (a(+)Sum^ A1)(+)Sum^ B1 in (a(+)Sum^ A2)(+)Sum^ B2
      by A21, A22, A27, Lm11;
    then a(+)b in (a(+)Sum^ A2)(+)Sum^ B2 by A25, Th81;
    hence thesis by A26, Th81;
  end;
end;

theorem
  for a, b, c being Ordinal st b c= c holds a (+) b c= a (+) c
proof
  let a, b, c be Ordinal;
  assume A1: b c= c;
  per cases by ORDINAL1:16;
  suppose c c= b;
    hence thesis by A1, XBOOLE_0:def 10;
  end;
  suppose b in c;
    hence thesis by Th107, ORDINAL1:def 2;
  end;
end;