
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;
