reserve A,B for Ordinal,
        o for object,
        x,y,z for Surreal,
        n for Nat,
        r,r1,r2 for Real;

theorem Th54:
  x,No_omega^ y are_commensurate
      implies ex s be positive Real st
        |. x - (No_omega^ y * uReal.s) .| infinitely< x
proof
  assume
A1: x,No_omega^ y are_commensurate;
  set N= No_omega^ y;
  defpred L[object] means $1 is Real & for r be Real st r=$1 holds
  N * uReal.r <= x;
  defpred R[object] means $1 is Real & for r be Real st r=$1 holds
  x < N * uReal.r;
A2: for r,s being ExtReal st L[r] & R[s] holds r <= s
  proof
    let l,r be ExtReal such that
A3: L[l] & R[r];
    reconsider L=l,R=r as Real by A3;
A4: 0_No <= No_omega^ y by SURREALI:def 8;
    (No_omega^ y) * (uReal.L) <= x < No_omega^ y * uReal.R by A3;
    then No_omega^ y * uReal.L < No_omega^ y * uReal.R by SURREALO:4;
    hence thesis by SURREALN:51,A4,SURREALR:75;
  end;
  consider s be ExtReal such that
A5: for r be ExtReal st L[r] holds r <= s and
A6: for r be ExtReal st R[r] holds s <= r from XXREAL_1:sch 1(A2);
  consider n be positive Nat such that
A7: x < uInt.n * N & N < uInt.n * x by A1,Th7;
A8:uReal.n = uDyadic.n = uInt.n by SURREALN:46,def 5;
  0_No < uReal.(1/n) by SURREALI:def 8;
  then
A9: N * uReal.(1/n) < x * uReal.n * uReal.(1/n) by A7,A8,SURREALR:70;
  x * uReal.n*uReal.(1/n) == x by Lm2;
  then
A10: L[1/n] by A9,SURREALO:4;
  then
A11:1/n <= s by A5;
  R[n] by A7,A8;
  then
A12: s <= n by A6;
  n in REAL & 1/n in REAL by XREAL_0:def 1;
  then s in REAL by A11,A12,XXREAL_0:45;
  then reconsider s as Real;
  reconsider s as positive Real by A10,A5;
  per cases;
  suppose
A13: N * uReal.s <= x;
    set x1 = x - (N * uReal.s);
    take s;
A14: 0_No + N * uReal.s <= x by A13;
    then
A15: 0_No <= x1 by SURREALR:41;
    x1 infinitely< x
    proof
      given r be positive Real such that
A16:  x <= x1* uReal.r;
      consider n2 be Nat such that
A17:  r < n2 by SEQ_4:3;
      set n= n2+2;
      n2 <= n by NAT_1:11;
      then uReal.r <= uReal.n by SURREALN:51,A17,XXREAL_0:2;
      then x1*uReal.r <= x1*uReal.n by A15,SURREALR:75;
      then
A18:  x <= x1* uReal.n by A16,SURREALO:4;
A19:  - (x * uReal.n) = x * (-uReal.n) by SURREALR:58;
      x1* uReal.n == x * uReal.n+((-(N * uReal.s)) * uReal.n) by SURREALR:67;
      then x <= x * uReal.n + ((- (N * uReal.s)) * uReal.n) by A18,SURREALO:4;
      then x* (uReal.1 -uReal.n)
      == x*uReal.1 - (x * (uReal.n)) <= ((- (N * uReal.s)) * uReal.n)
      by A19,SURREALR:67,42,SURREALN:48;
      then x * (uReal.1 + -uReal.n) <= ((- (N * uReal.s)) * uReal.n)
      by SURREALO:4;
      then
A20:  - ((- (N * uReal.s)) * uReal.n) <= -(x * (uReal.1 + -uReal.n))
      by SURREALR:10;
      - uReal.n == uReal.-n by SURREALN:56;
      then uReal.1 + -uReal.n == uReal.1 + uReal.-n ==
      uReal.(1+-n) by SURREALR:43,SURREALN:55;
      then uReal.1 + -uReal.n == uReal.(1+-n) by SURREALO:4;
      then -(uReal.1 + -uReal.n) == -uReal.(1+-n) == uReal.-(1+-n)
      by SURREALR:10,SURREALN:56;
      then -(uReal.1 + -uReal.n) == uReal.-(1+-n) by SURREALO:4;
      then
A21:  -(x * (uReal.1 + -uReal.n)) = x * (-(uReal.1 + -uReal.n)) ==
      x * uReal.-(1+-n) by SURREALR:58,SURREALR:51;
A22:  n-1= n2+1;
      then
A23:  0_No <= uReal.(1/(n-1)) by SURREALI:def 8;
      - ((- (N * uReal.s)) * uReal.n) = - - (N * uReal.s * uReal.n)
        by SURREALR:58;
      then N * uReal.s * uReal.n = - -(N * uReal.s * uReal.n)
      <= x * uReal.-(1+-n) by A21,A20,SURREALO:4;
      then N * uReal.s * uReal.n *uReal.(1/(n-1))
      <= x * uReal.(n-1)*uReal.(1/(n-1)) == x by A23,SURREALR:75,A22,Lm2;
      then
A24:  N * uReal.s * uReal.n *uReal.(1/(n-1)) <= x by SURREALO:4;
      N * uReal.s * uReal.n *uReal.(1/(n-1)) ==
      N* (uReal.(s *n*(1/(n-1)))) by Lm3;
      then L [s* n * (1/(n-1))] by A24,SURREALO:4;
      then s* n * (1/(n-1)) <= s by A5;
      then (s* n) * ((1/(n-1)) * (n-1)) =
      s* n * (1/(n-1)) * (n-1) <= s*(n-1) & (1/(n-1)) * (n-1) = 1
      by A22,XCMPLX_1:106,XREAL_1:64;
      then n2+1+1 <= n2+1 by XREAL_1:68;
      hence thesis by NAT_1:13;
    end;
    hence |. x - (N * uReal.s) .| infinitely< x by A14,Def6,SURREALR:41;
  end;
  suppose
A25:x < N * uReal.s;
    set x1 = N * uReal.s - x;
    take s;
A26: x+0_No < N * uReal.s by A25;
    then
A27:0_No < x1 by SURREALR:42;
A28: x1 infinitely< x
    proof
      given r be positive Real such that
A29:  x <= x1* uReal.r;
      consider n be Nat such that
A30:  r < n by SEQ_4:3;
      x1*uReal.r < x1*uReal.n by A30,SURREALN:51,A27,SURREALR:70;
      then
A31:  x < x1* uReal.n by A29,SURREALO:4;
A32:  - (-x)* uReal.n = - - (x* uReal.n) by SURREALR:58;
      x*uReal.1 + x* uReal.n == x * (uReal.1+uReal.n) ==
      x*uReal.(1+n) by SURREALN:55,SURREALR:67,SURREALR:51;
      then
A33:  x*uReal.1 + x* uReal.n == x*uReal.(1+n) by SURREALO:4;
      x1* uReal.n == (N * uReal.s * uReal.n) + (-x)* uReal.n by SURREALR:67;
      then x < (N * uReal.s * uReal.n) + (-x)* uReal.n by A31,SURREALO:4;
      then x*uReal.1 - (-x)* uReal.n < N * uReal.s * uReal.n
      by SURREALR:41,SURREALN:48;
      then
A34:  x*uReal.(1+n) < N * uReal.s * uReal.n by A32,A33,SURREALO:4;
      0_No < uReal.(1/(n+1)) by SURREALI:def 8;
      then
A35:  x*uReal.(1+n) * uReal.(1/(n+1)) <
      N * uReal.s * uReal.n * uReal.(1/(n+1)) by A34,SURREALR:70;
      x*uReal.(1+n) * uReal.(1/(n+1)) == x by Lm2;
      then
A36:  x < N * uReal.s * uReal.n * uReal.(1/(n+1)) by A35,SURREALO:4;
      N * uReal.s * uReal.n *uReal.(1/(n+1)) ==
      N* (uReal.(s *n*(1/(n+1)))) by Lm3;
      then R [s* n * (1/(n+1))] by A36,SURREALO:4;
      then (s* n) * ((1/(n+1)) * (n+1)) = s* n * (1/(n+1)) * (n+1)
        >= s*(n+1) & (1/(n+1)) * (n+1) = 1 by A6,XCMPLX_1:106,XREAL_1:64;
      then n >= n+1 by XREAL_1:68;
      hence thesis by NAT_1:13;
    end;
A37:not x1 == 0_No by A26,SURREALR:42;
    - x1 = -(N * uReal.s) + - - x by SURREALR:40
    .= x +-(N * uReal.s);
    then x1 = |. x1 .| = |. x +-(N * uReal.s) .|
    by A26,SURREALR:42,A37,Th39,Def6;
    hence thesis by A28;
  end;
end;
