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

theorem Th25:
  (for y st y in L_NonNegativePart x \/ R_NonNegativePart x holds y==0_No)
     implies
  sqrt x = sqrt_0 x
proof
  assume
A1: for y st y in L_NonNegativePart x \/ R_NonNegativePart x holds y==0_No;
  defpred P[Nat] means sqrtL(sqrt_0 x,x).$1=L_sqrt_0 x &
                       sqrtR(sqrt_0 x,x).$1=R_sqrt_0 x;
A2:P[0] by Th6;
A3:P[n] implies P[n+1]
  proof
    assume
A4: P[n];
    set S0=sqrt_0 x;
    set n1=n+1;
    sqrtL(S0,x).0 c= sqrtL(S0,x).n1 by Th7;
    then
A5: L_S0 c= sqrtL(S0,x).n1 by Th6;
    sqrtL(S0,x).n1 c= L_S0
    proof
      let o such that
A6:   o in sqrtL(S0,x).n1 & not o in L_S0;
      o in sqrtL(S0,x).n \/ sqrt(x,sqrtL(S0,x).n,sqrtR(S0,x).n) by A6,Th8;
      then o in sqrt(x,sqrtL(S0,x).n,sqrtR(S0,x).n) by A4,A6,XBOOLE_0:def 3;
      then consider x1,y1 be Surreal such that
A7:   x1 in sqrtL(S0,x).n & y1 in sqrtR(S0,x).n &
      not x1 + y1 == 0_No & o = (x +'(x1 * y1)) * (x1+y1)" by Def2;
      consider l be Surreal such that
A8:   x1 = sqrt l & l in L_NonNegativePart x by A4,A7,Def9;
      l in L_NonNegativePart x\/R_NonNegativePart x by A8,XBOOLE_0:def 3;
      then l==0_No by A1;
      then
A9:   x1 == 0_No by A8,Th19;
      consider r be Surreal such that
A10:   y1 = sqrt r & r in R_NonNegativePart x by A4,A7,Def9;
      r in L_NonNegativePart x\/R_NonNegativePart x by A10,XBOOLE_0:def 3;
      then r==0_No by A1;
      then y1 == 0_No by A10,Th19;
      then x1+y1 == 0_No + 0_No by A9,SURREALR:66;
      hence thesis by A7;
    end;
    hence sqrtL(S0,x).n1 = L_S0 by A5,XBOOLE_0:def 10;
    sqrtR(S0,x).0 c= sqrtR(S0,x).n1 by Th7;
    then A11:R_S0 c= sqrtR(S0,x).n1 by Th6;
    sqrtR(S0,x).n1 c= R_S0
    proof
      let o such that
A12:  o in sqrtR(S0,x).n1 & not o in R_S0;
      o in sqrtR(S0,x).n \/ sqrt(x,sqrtL(S0,x).n,sqrtL(S0,x).n)\/
      sqrt(x,sqrtR(S0,x).n,sqrtR(S0,x).n) by A12,Th8;
      then o in sqrtR(S0,x).n \/ sqrt(x,sqrtL(S0,x).n,sqrtL(S0,x).n) or
      o in sqrt(x,sqrtR(S0,x).n,sqrtR(S0,x).n) by XBOOLE_0:def 3;
      then per cases by A4,A12,XBOOLE_0:def 3;
      suppose o in sqrt(x,sqrtL(S0,x).n,sqrtL(S0,x).n);
        then consider x1,y1 be Surreal such that
A13:    x1 in sqrtL(S0,x).n & y1 in sqrtL(S0,x).n &
        not x1 + y1 == 0_No & o = (x +'(x1 * y1)) * (x1+y1)" by Def2;
        consider l be Surreal such that
A14:    x1 = sqrt l & l in L_NonNegativePart x by Def9,A4,A13;
        l in L_NonNegativePart x\/R_NonNegativePart x by A14,XBOOLE_0:def 3;
        then l==0_No by A1;
        then
A15:    x1 == 0_No by A14,Th19;
        consider r be Surreal such that
A16:    y1 = sqrt r & r in L_NonNegativePart x by Def9,A4,A13;
        r in L_NonNegativePart x\/R_NonNegativePart x by A16,XBOOLE_0:def 3;
        then r==0_No by A1;
        then y1 == 0_No by A16,Th19;
        then x1+y1 == 0_No + 0_No by A15,SURREALR:66;
        hence thesis by A13;
      end;
      suppose o in sqrt(x,sqrtR(S0,x).n,sqrtR(S0,x).n);
        then consider x1,y1 be Surreal such that
A17:    x1 in sqrtR(S0,x).n & y1 in sqrtR(S0,x).n &
        not x1 + y1 == 0_No & o = (x +'(x1 * y1)) * (x1+y1)" by Def2;
        consider l be Surreal such that
A18:    x1 = sqrt l & l in R_NonNegativePart x by Def9,A4,A17;
        l in L_NonNegativePart x\/R_NonNegativePart x by A18,XBOOLE_0:def 3;
        then l==0_No by A1;
        then
A19:    x1 == 0_No by A18,Th19;
        consider r be Surreal such that
A20:    y1 = sqrt r & r in R_NonNegativePart x by Def9,A4,A17;
        r in L_NonNegativePart x\/R_NonNegativePart x by A20,XBOOLE_0:def 3;
        then r==0_No by A1;
        then y1 == 0_No by A20,Th19;
        then x1+y1 == 0_No + 0_No by A19,SURREALR:66;
        hence thesis by A17;
      end;
    end;
    hence thesis by A11,XBOOLE_0:def 10;
  end;
A21:P[n] from NAT_1:sch 2(A2,A3);
A22:sqrt x = [Union sqrtL(sqrt_0 x,x),Union sqrtR (sqrt_0 x,x)] by Th15;
A23:L_sqrt x = L_sqrt_0 x
  proof
    thus L_sqrt x c= L_sqrt_0 x
    proof
      let o;
      assume o in L_sqrt x;
      then consider n be object such that
A24:  n in dom sqrtL(sqrt_0 x,x) & o in sqrtL(sqrt_0 x,x).n
      by A22,CARD_5:2;
      dom sqrtL(sqrt_0 x,x)=NAT by Def4;
      then reconsider n as Nat by A24;
      sqrtL(sqrt_0 x,x).n = L_sqrt_0 x by A21;
      hence thesis by A24;
    end;
    thus thesis by A2,A22,ABCMIZ_1:1;
  end;
  R_sqrt x = R_sqrt_0 x
  proof
    thus R_sqrt x c= R_sqrt_0 x
    proof
      let o;
      assume o in R_sqrt x;
      then consider n be object such that
A25:  n in dom sqrtR(sqrt_0 x,x) & o in sqrtR(sqrt_0 x,x).n
      by A22,CARD_5:2;
      dom sqrtR(sqrt_0 x,x)=NAT by Def5;
      then reconsider n as Nat by A25;
      sqrtR(sqrt_0 x,x).n = R_sqrt_0 x by A21;
      hence thesis by A25;
    end;
    thus thesis by A2,A22,ABCMIZ_1:1;
  end;
  hence thesis by A23, XTUPLE_0:2;
end;
