 reserve n,m for Nat,
      o for object,
      p for pair object,
      x,y,z for Surreal;

theorem Th28:
  0_No <= x == y*y implies y == sqrt x or y == - sqrt x
proof
  set s = sqrt x;
  assume
A1: 0_No <= x == y*y;
  then
A2: s*s ==x by Th19;
  (s + -y)*s == s*s + (-y)*s & (s + -y)*y == s*y + (-y)*y by SURREALR:67;
  then (s + -y)*(s + y) == (s + -y)*s + (s + -y)*y ==
  s*s + (-y)*s + (s*y + (-y)*y) by SURREALR:67,66;
  then A3: (s + -y)*(s + y) == s*s + (-y)*s + (s*y + (-y)*y)
  by SURREALO:4;
  (-y)*s + s*y == (-(s*y)) + (s*y) = s*y - s*y == 0_No by SURREALR:39,58;
  then
A4: (-y)*s + s*y == 0_No by SURREALO:4;
A5: s*s + (-y)*y == s*s +- (y*y) by SURREALR:58;
A6: -(y*y) == -x by A1,SURREALR:65;
  s*s + (-y)*s + (s*y + (-y)*y)
   = s*s + ((-y)*s + (s*y + (-y)*y)) by SURREALR:37
  .= s*s + (((-y)*s + s*y) + (-y)*y) by SURREALR:37
  .= s*s + (-y)*y + ((-y)*s + s*y) by SURREALR:37;
  then s*s + (-y)*s + (s*y + (-y)*y) == s*s +- (y*y) +0_No
  by A4,A5,SURREALR:66;
  then (s + -y)*(s + y) == s*s +- (y*y) == x - x
  by SURREALR:66,A3,A6,SURREALO:4,A2;
  then (s + -y)*(s + y) ==x - x ==0_No by SURREALO:4,SURREALR:39;
  then (s + -y)*(s + y) == 0_No by SURREALO:4;
  then s  - y == 0_No or s - (- y) == 0_No by SURREALR:72,74;
  then s == y or s == - y by SURREALR:47;
  then s == y or - s == - - y by SURREALR:10;
  hence thesis;
end;
