Article ARYTM_2, MML version 4.99.1005

:: ARYTM_2:funcnot 1 => ARYTM_2:func 1
definition
  func DEDEKIND_CUTS -> Element of bool bool RAT+ equals
    {b1 where b1 is Element of bool RAT+: for b2 being Element of RAT+
          st b2 in b1
       holds (for b3 being Element of RAT+
              st b3 <=' b2
           holds b3 in b1) &
        (ex b3 being Element of RAT+ st
           b3 in b1 & b2 < b3)} \ {RAT+};
end;

:: ARYTM_2:def 1
theorem
DEDEKIND_CUTS = {b1 where b1 is Element of bool RAT+: for b2 being Element of RAT+
      st b2 in b1
   holds (for b3 being Element of RAT+
          st b3 <=' b2
       holds b3 in b1) &
    (ex b3 being Element of RAT+ st
       b3 in b1 & b2 < b3)} \ {RAT+};

:: ARYTM_2:funcreg 1
registration
  cluster DEDEKIND_CUTS -> non empty;
end;

:: ARYTM_2:funcnot 2 => ARYTM_2:func 2
definition
  func REAL+ -> set equals
    (RAT+ \/ DEDEKIND_CUTS) \ {{b2 where b2 is Element of RAT+: b2 < b1} where b1 is Element of RAT+: b1 <> {}};
end;

:: ARYTM_2:def 2
theorem
REAL+ = (RAT+ \/ DEDEKIND_CUTS) \ {{b2 where b2 is Element of RAT+: b2 < b1} where b1 is Element of RAT+: b1 <> {}};

:: ARYTM_2:th 1
theorem
RAT+ c= REAL+;

:: ARYTM_2:th 2
theorem
omega c= REAL+;

:: ARYTM_2:funcreg 2
registration
  cluster REAL+ -> non empty;
end;

:: ARYTM_2:funcnot 3 => ARYTM_2:func 3
definition
  let a1 be Element of REAL+;
  func DEDEKIND_CUT A1 -> Element of DEDEKIND_CUTS means
    ex b1 being Element of RAT+ st
       a1 = b1 & it = {b2 where b2 is Element of RAT+: b2 < b1}
    if a1 in RAT+
    otherwise it = a1;
end;

:: ARYTM_2:def 3
theorem
for b1 being Element of REAL+
for b2 being Element of DEDEKIND_CUTS holds
   (b1 in RAT+ implies    (b2 = DEDEKIND_CUT b1
    iff
       ex b3 being Element of RAT+ st
          b1 = b3 & b2 = {b4 where b4 is Element of RAT+: b4 < b3})) &
    (b1 in RAT+ or    (b2 = DEDEKIND_CUT b1
    iff
       b2 = b1));

:: ARYTM_2:th 3
theorem
for b1 being set holds
   not [{},b1] in REAL+;

:: ARYTM_2:funcnot 4 => ARYTM_2:func 4
definition
  let a1 be Element of DEDEKIND_CUTS;
  func GLUED A1 -> Element of REAL+ means
    ex b1 being Element of RAT+ st
       it = b1 &
        (for b2 being Element of RAT+ holds
              b2 in a1
           iff
              b2 < b1)
    if ex b1 being Element of RAT+ st
       for b2 being Element of RAT+ holds
             b2 in a1
          iff
             b2 < b1
    otherwise it = a1;
end;

:: ARYTM_2:def 4
theorem
for b1 being Element of DEDEKIND_CUTS
for b2 being Element of REAL+ holds
   (for b3 being Element of RAT+ holds
       ex b4 being Element of RAT+ st
          (b4 in b1 & b3 <=' b4 or b4 < b3 & not b4 in b1) or    (b2 = GLUED b1
    iff
       ex b3 being Element of RAT+ st
          b2 = b3 &
           (for b4 being Element of RAT+ holds
                 b4 in b1
              iff
                 b4 < b3))) &
    (for b3 being Element of RAT+ holds
       ex b4 being Element of RAT+ st
          (b4 in b1 & b3 <=' b4 or b4 < b3 & not b4 in b1) implies    (b2 = GLUED b1
    iff
       b2 = b1));

:: ARYTM_2:prednot 1 => ARYTM_2:pred 1
definition
  let a1, a2 be Element of REAL+;
  pred A1 <=' A2 means
    ex b1, b2 being Element of RAT+ st
       a1 = b1 & a2 = b2 & b1 <=' b2
    if a1 in RAT+ & a2 in RAT+,
a1 in a2
    if a1 in RAT+ & not a2 in RAT+,
not a2 in a1
    if not a1 in RAT+ & a2 in RAT+
    otherwise a1 c= a2;
  connectedness;
::  for a1, a2 being Element of REAL+
::        st a2 < a1
::     holds a2 <=' a1;
end;

:: ARYTM_2:dfs 5
definiens
  let a1, a2 be Element of REAL+;
To prove
     a1 <=' a2
it is sufficient to prove
  per cases;
  case a1 in RAT+ & a2 in RAT+;
    thus ex b1, b2 being Element of RAT+ st
       a1 = b1 & a2 = b2 & b1 <=' b2;
  end;
  case a1 in RAT+ & not a2 in RAT+;
    thus a1 in a2;
  end;
  case not a1 in RAT+ & a2 in RAT+;
    thus not a2 in a1;
  end;
  case (a1 in RAT+ implies not a2 in RAT+) & (a1 in RAT+ implies a2 in RAT+) & (not a1 in RAT+ implies not a2 in RAT+);
    thus a1 c= a2;
  end;

:: ARYTM_2:def 5
theorem
for b1, b2 being Element of REAL+ holds
(b1 in RAT+ & b2 in RAT+ implies    (b1 <=' b2
 iff
    ex b3, b4 being Element of RAT+ st
       b1 = b3 & b2 = b4 & b3 <=' b4)) &
 (b1 in RAT+ & not b2 in RAT+ implies    (b1 <=' b2
 iff
    b1 in b2)) &
 (not b1 in RAT+ & b2 in RAT+ implies    (b1 <=' b2
 iff
    not b2 in b1)) &
 ((b1 in RAT+ implies not b2 in RAT+) & (b1 in RAT+ implies b2 in RAT+) & (not b1 in RAT+ implies not b2 in RAT+) implies    (b1 <=' b2
 iff
    b1 c= b2));

:: ARYTM_2:prednot 2 => not ARYTM_2:pred 1
notation
  let a1, a2 be Element of REAL+;
  antonym a2 < a1 for a1 <=' a2;
end;

:: ARYTM_2:funcnot 5 => ARYTM_2:func 5
definition
  let a1, a2 be Element of DEDEKIND_CUTS;
  func A1 + A2 -> Element of DEDEKIND_CUTS equals
    {b1 + b2 where b1 is Element of RAT+, b2 is Element of RAT+: b1 in a1 & b2 in a2};
  commutativity;
::  for a1, a2 being Element of DEDEKIND_CUTS holds
::  a1 + a2 = a2 + a1;
end;

:: ARYTM_2:def 6
theorem
for b1, b2 being Element of DEDEKIND_CUTS holds
b1 + b2 = {b3 + b4 where b3 is Element of RAT+, b4 is Element of RAT+: b3 in b1 & b4 in b2};

:: ARYTM_2:funcnot 6 => ARYTM_2:func 6
definition
  let a1, a2 be Element of DEDEKIND_CUTS;
  func A1 *' A2 -> Element of DEDEKIND_CUTS equals
    {b1 *' b2 where b1 is Element of RAT+, b2 is Element of RAT+: b1 in a1 & b2 in a2};
  commutativity;
::  for a1, a2 being Element of DEDEKIND_CUTS holds
::  a1 *' a2 = a2 *' a1;
end;

:: ARYTM_2:def 7
theorem
for b1, b2 being Element of DEDEKIND_CUTS holds
b1 *' b2 = {b3 *' b4 where b3 is Element of RAT+, b4 is Element of RAT+: b3 in b1 & b4 in b2};

:: ARYTM_2:funcnot 7 => ARYTM_2:func 7
definition
  let a1, a2 be Element of REAL+;
  func A1 + A2 -> Element of REAL+ equals
    a1
    if a2 = {},
a2
    if a1 = {}
    otherwise GLUED ((DEDEKIND_CUT a1) + DEDEKIND_CUT a2);
  commutativity;
::  for a1, a2 being Element of REAL+ holds
::  a1 + a2 = a2 + a1;
end;

:: ARYTM_2:def 8
theorem
for b1, b2 being Element of REAL+ holds
(b2 = {} implies b1 + b2 = b1) &
 (b1 = {} implies b1 + b2 = b2) &
 (b2 <> {} & b1 <> {} implies b1 + b2 = GLUED ((DEDEKIND_CUT b1) + DEDEKIND_CUT b2));

:: ARYTM_2:funcnot 8 => ARYTM_2:func 8
definition
  let a1, a2 be Element of REAL+;
  func A1 *' A2 -> Element of REAL+ equals
    GLUED ((DEDEKIND_CUT a1) *' DEDEKIND_CUT a2);
  commutativity;
::  for a1, a2 being Element of REAL+ holds
::  a1 *' a2 = a2 *' a1;
end;

:: ARYTM_2:def 9
theorem
for b1, b2 being Element of REAL+ holds
b1 *' b2 = GLUED ((DEDEKIND_CUT b1) *' DEDEKIND_CUT b2);

:: ARYTM_2:th 4
theorem
for b1, b2 being Element of REAL+
      st b1 = {}
   holds b1 *' b2 = {};

:: ARYTM_2:th 6
theorem
for b1, b2 being Element of REAL+
      st b1 + b2 = {}
   holds b1 = {};

:: ARYTM_2:th 7
theorem
for b1, b2, b3 being Element of REAL+ holds
b1 + (b2 + b3) = (b1 + b2) + b3;

:: ARYTM_2:th 8
theorem
{b1 where b1 is Element of bool RAT+: for b2 being Element of RAT+
      st b2 in b1
   holds (for b3 being Element of RAT+
          st b3 <=' b2
       holds b3 in b1) &
    (ex b3 being Element of RAT+ st
       b3 in b1 & b2 < b3)} is c=-linear;

:: ARYTM_2:th 9
theorem
for b1, b2 being Element of bool REAL+
      st (ex b3 being Element of REAL+ st
            b3 in b1) &
         (ex b3 being Element of REAL+ st
            b3 in b2) &
         (for b3, b4 being Element of REAL+
               st b3 in b1 & b4 in b2
            holds b3 <=' b4)
   holds ex b3 being Element of REAL+ st
      for b4, b5 being Element of REAL+
            st b4 in b1 & b5 in b2
         holds b4 <=' b3 & b3 <=' b5;

:: ARYTM_2:th 10
theorem
for b1, b2 being Element of REAL+
      st b1 <=' b2
   holds ex b3 being Element of REAL+ st
      b1 + b3 = b2;

:: ARYTM_2:th 11
theorem
for b1, b2 being Element of REAL+ holds
ex b3 being Element of REAL+ st
   (b1 + b3 = b2 or b2 + b3 = b1);

:: ARYTM_2:th 12
theorem
for b1, b2, b3 being Element of REAL+
      st b1 + b2 = b1 + b3
   holds b2 = b3;

:: ARYTM_2:th 13
theorem
for b1, b2, b3 being Element of REAL+ holds
b1 *' (b2 *' b3) = (b1 *' b2) *' b3;

:: ARYTM_2:th 14
theorem
for b1, b2, b3 being Element of REAL+ holds
b1 *' (b2 + b3) = (b1 *' b2) + (b1 *' b3);

:: ARYTM_2:th 15
theorem
for b1 being Element of REAL+
      st b1 <> {}
   holds ex b2 being Element of REAL+ st
      b1 *' b2 = one;

:: ARYTM_2:th 16
theorem
for b1, b2 being Element of REAL+
      st b1 = one
   holds b1 *' b2 = b2;

:: ARYTM_2:th 17
theorem
for b1, b2 being Element of REAL+
      st b1 in omega & b2 in omega
   holds b2 + b1 in omega;

:: ARYTM_2:th 18
theorem
for b1 being Element of bool REAL+
      st {} in b1 &
         (for b2, b3 being Element of REAL+
               st b2 in b1 & b3 = one
            holds b2 + b3 in b1)
   holds omega c= b1;

:: ARYTM_2:th 19
theorem
for b1 being Element of REAL+
   st b1 in omega
for b2 being Element of REAL+ holds
      b2 in b1
   iff
      b2 in omega & b2 <> b1 & b2 <=' b1;

:: ARYTM_2:th 20
theorem
for b1, b2, b3 being Element of REAL+
      st b1 = b2 + b3
   holds b3 <=' b1;

:: ARYTM_2:th 21
theorem
{} in REAL+ & one in REAL+;

:: ARYTM_2:th 22
theorem
for b1, b2 being Element of REAL+
      st b1 in RAT+ & b2 in RAT+
   holds ex b3, b4 being Element of RAT+ st
      b1 = b3 & b2 = b4 & b1 *' b2 = b3 *' b4;