reserve A,B,O for Ordinal,
        o for object,
        x,y,z for Surreal,
        n,m for Nat;
reserve d,d1,d2 for Dyadic;
reserve i,j for Integer,
        n,m,p for Nat;

theorem Th39:
  uDyadic.d1 + uDyadic.d2 == uDyadic.(d1+d2)
proof
  defpred P[Nat] means for n1,n2 be Nat st n1+n2 <= $1 & n1 <= n2
    for d1,d2 st d1 in DYADIC(n1) & d2 in DYADIC(n2) holds
      uDyadic.d1 + uDyadic.d2 == uDyadic.(d1+d2);
A1: P[0]
  proof
    let n1,n2 be Nat such that
A2: n1+n2 <= 0 & n1 <= n2;
A3: n1=0 = n2 by A2;
    let d1,d2 such that
A4: d1 in DYADIC(n1) & d2 in DYADIC(n2);
    reconsider i1=d1,i2=d2 as Integer by A4,A3,Th21;
    uDyadic.d1 = uInt.i1 & uDyadic.d2 = uInt.i2 &
    uDyadic.(d1+d2) = uInt.(i1+i2) by Def5;
    hence thesis by Th14;
  end;
A5: P[m] implies P[m+1]
  proof
    assume
A6: P[m];
    set m1=m+1;
    let n1,n2 be Nat such that
A7: n1+n2 <= m1 & n1 <= n2;
    let d1,d2 such that
A8: d1 in DYADIC(n1) & d2 in DYADIC(n2);
    per cases;
    suppose n1=0;
      then reconsider i1=d1 as Integer by A8,Th21;
      uDyadic.i1 + uDyadic.d2 == uDyadic.(i1+d2) by Lm8;
      hence thesis;
    end;
    suppose
A9:   n1 <>0;
      then reconsider N1=n1-1 as Nat by NAT_1:20;
      N1+n2+1 <= m1 by A7;
      then
A10:  N1+n2 <= m by XREAL_1:6;
      n2 <>0 by A7,A9;
      then reconsider N2=n2-1 as Nat by NAT_1:20;
A11:  N1+n2 = n1+N2;
A12:  (N1 <= n2 or n2 <= N1) & (n1 <= N2 or N2 <= n1);
      per cases;
      suppose d1 in DYADIC(N1) or  d2 in DYADIC(N2);
        hence thesis by A11,A10,A8,A6,A12;
      end;
      suppose
A13:    not d1 in DYADIC(N1) & not d2 in DYADIC(N2);
        then d1 in DYADIC(N1+1)\DYADIC(N1) by A8,XBOOLE_0:def 5;
        then consider i1 be Integer such that
A14:    d1 = (2*i1+1) / 2|^(N1+1) by Th20;
        d2 in DYADIC(N2+1)\DYADIC(N2) by A8,A13,XBOOLE_0:def 5;
        then consider i2 be Integer such that
A15:    d2 = (2*i2+1) / 2|^(N2+1) by Th20;
A16:    uDyadic.d1 =
        [{uDyadic.(i1/(2|^N1))},{uDyadic.((i1+1)/(2|^N1))}] by A14,Def5;
A17:    uDyadic.d2 =
        [{uDyadic.(i2/(2|^N2))},{uDyadic.((i2+1)/(2|^N2))}] by A15,Def5;
        i1/(2|^N1) in DYADIC(N1) by Def4;
        then
A18:    uDyadic.(i1/(2|^N1)) + uDyadic.d2 == uDyadic.(i1/(2|^N1)+d2)
        by A10,A8,A6,A12;
        L_(uDyadic.d1) ++ {uDyadic.d2} = {uDyadic.(i1/(2|^N1)) + uDyadic.d2}
        by A16,SURREALR:36;
        then
A19:    L_(uDyadic.d1) ++ {uDyadic.d2} <==> {uDyadic.(i1/(2|^N1)+d2)}
        by A18,SURREALO:32;
        i2/(2|^N2) in DYADIC(N2) by Def4;
        then
A20:    uDyadic.d1 + uDyadic.(i2/(2|^N2))== uDyadic.(d1 +i2/(2|^N2))
        by A11,A10,A8,A6,A12;
        {uDyadic.d1} ++ L_(uDyadic.d2)
        = {uDyadic.d1 + uDyadic.(i2/(2|^N2))} by A17,SURREALR:36;
        then
A21:    {uDyadic.d1} ++ L_(uDyadic.d2) <==>{uDyadic.(d1+i2/(2|^N2))}
        by A20,SURREALO:32;
        (i1+1)/(2|^N1) in DYADIC(N1) by Def4;
        then
A22:    uDyadic.((i1+1)/(2|^N1)) + uDyadic.d2 ==
        uDyadic.((i1+1)/(2|^N1)+d2) by A10,A8,A6,A12;
        R_(uDyadic.d1) ++ {uDyadic.d2}
        = {uDyadic.((i1+1)/(2|^N1)) + uDyadic.d2} by A16,SURREALR:36;
        then
A23:    R_(uDyadic.d1) ++ {uDyadic.d2} <==>
        {uDyadic.((i1+1)/(2|^N1)+d2)} by A22,SURREALO:32;
        (i2+1)/(2|^N2) in DYADIC(N2) by Def4;
        then
A24:    uDyadic.d1 + uDyadic.((i2+1)/(2|^N2)) ==
        uDyadic.(d1 +(i2+1)/(2|^N2)) by A11,A10,A8,A6,A12;
        {uDyadic.d1} ++ R_(uDyadic.d2) =
        {uDyadic.d1 + uDyadic.((i2+1)/(2|^N2))} by A17,SURREALR:36;
        then
A25:    {uDyadic.d1} ++ R_(uDyadic.d2) <==>
        {uDyadic.(d1 +(i2+1)/(2|^N2))} by A24,SURREALO:32;
A26:    (L_(uDyadic.d1) ++ {uDyadic.d2})\/
        ({uDyadic.d1} ++ L_(uDyadic.d2)) <==>
        {uDyadic.(i1/(2|^N1)+d2)}\/{uDyadic.(d1 +i2/(2|^N2))} =
        {uDyadic.(i1/(2|^N1)+d2),uDyadic.(d1 +i2/(2|^N2))}
        by A19,A21,SURREALO:31,ENUMSET1:1;
A27:    (R_(uDyadic.d1) ++ {uDyadic.d2}) \/({uDyadic.d1} ++ R_(uDyadic.d2))
        <==> {uDyadic.((i1+1)/(2|^N1)+d2)} \/ {uDyadic.(d1 +(i2+1)/(2|^N2))}=
        {uDyadic.((i1+1)/(2|^N1)+d2),uDyadic.(d1 +(i2+1)/(2|^N2))}
        by A23,A25,SURREALO:31,ENUMSET1:1;
A28:    uDyadic.d1 + uDyadic.d2 = [(L_(uDyadic.d1) ++ {uDyadic.d2})\/
        ({uDyadic.d1} ++ L_(uDyadic.d2)),
        (R_(uDyadic.d1) ++ {uDyadic.d2}) \/({uDyadic.d1} ++ R_(uDyadic.d2))]
        by SURREALR:28;
        reconsider DD=[{uDyadic.(i1/(2|^N1)+d2),uDyadic.(d1 +i2/(2|^N2))},
        {uDyadic.((i1+1)/(2|^N1)+d2),uDyadic.(d1 +(i2+1)/(2|^N2))}] as Surreal
        by A28,TARSKI:1,A26,A27,SURREALI:37;
        DD=DD;
        then reconsider DD1 = [ {uDyadic.(d1 +i2/(2|^N2))},
        {uDyadic.((i1+1)/(2|^N1)+d2),uDyadic.(d1 +(i2+1)/(2|^N2))}]
        as Surreal by SURREALO:26;
        DD1=DD1;
        then reconsider DD2 = [ {uDyadic.(d1 +i2/(2|^N2))},
        {uDyadic.(d1 +(i2+1)/(2|^N2))}] as Surreal by SURREALO:28;
        N1+1 <= n2 by A7;
        then N1 < n2=N2+1 by NAT_1:13;
        then N1 <= N2 by NAT_1:13;
        then reconsider N=N2-N1 as Nat by NAT_1:21;
        set 2N1 = 2|^N1,2N2=2|^N2,P=2|^N;
A29:    2|^(N1+1) = 2*2N1 & 2|^(N2+1) = 2*2N2 by NEWTON:6;
        N2 = N1+N;
        then
A30:    2N2 = 2N1*P by NEWTON:8;
A31:    i1/(2|^N1)+d2 = (i1*(P*2))/(2N1*(P*2)) + (2*i2+1) / (2*2N2)
        by A15,A29,XCMPLX_1:91
        .= (i1*(P*2)+(2*i2+1))/(2*2N2)by XCMPLX_1:62,A30
        .= (2*(P*i1+i2)+1)/(2*2N2);
A32:    d1 +i2/(2|^N2)
        = ((2*i1+1)*P) / (2N1*2*P) + i2/2N2 by A14,A29,XCMPLX_1:91
        .= ((2*i1+1)*P) / (2N2*2) + (i2*2)/(2N2*2)
        by A30,XCMPLX_1:91
        .=((2*i1+1)*P + (i2*2))/(2N2*2) by XCMPLX_1:62
        .= (2*(P*i1+i2)+P)/(2*2N2);
        2*(P*i1+i2)+1 <= 2*(P*i1+i2)+P by NAT_1:14,XREAL_1:6;
        then i1/(2|^N1)+d2 <= d1 +i2/(2|^N2) by A31,A32,XREAL_1:72;
        then
A33:    DD==DD1 by Th24,SURREALO:25;
A34:    (i1+1)/(2|^N1)+d2
        = ((i1+1)*(P*2))/(2N1*(P*2)) + (2*i2+1) / (2*2N2) by A15,
        A29,XCMPLX_1:91
        .= ((i1+1)*(P*2)+(2*i2+1))/(2*2N2) by XCMPLX_1:62,A30
        .= (2*(P*i1+i2)+(2*P+1))/(2*2N2);
A35:    d1 +(i2+1)/(2|^N2)
        = ((2*i1+1)*P) / (2N1*2*P) + (i2+1)/2N2 by A29,XCMPLX_1:91,A14
        .= ((2*i1+1)*P) / (2N2*2) + ((i2+1)*2)/(2N2*2)
        by A30,XCMPLX_1:91
        .=((2*i1+1)*P + ((i2+1)*2))/(2N2*2) by XCMPLX_1:62
        .= (2*(P*i1+i2)+(P+2))/(2*2N2);
        1+(P+1) <= P +(P+1) by NAT_1:14,XREAL_1:6;
        then 2*(P*i1+i2)+(P+2) <= 2*(P*i1+i2)+(2*P+1) by XREAL_1:6;
        then d1 +(i2+1)/(2|^N2) <= (i1+1)/(2|^N1)+d2 by A34,A35,XREAL_1:72;
        then
A36:    DD1==DD2 by Th24,SURREALO:27;
        uDyadic.d1 + uDyadic.d2 == DD by A28,A26,A27,SURREALO:29;
        then uDyadic.d1 + uDyadic.d2 == DD1 by A33,SURREALO:4;
        then
A37:    uDyadic.d1 + uDyadic.d2 == DD2 by A36,SURREALO:4;
        d1 = ((2*i1+1)*P) / ((2*2N1)*P) by A29,XCMPLX_1:91,A14;
        then
A38:    d1+d2 = ((2*i1+1)*P+(2*i2+1)) / (2*2N2)
        by XCMPLX_1:62,A29,A30,A15
        .= (2*(i1*P+i2)+(P+1)) / (2*2N2);
        per cases;
        suppose N1 <> N2;
          then N<>0;
          then reconsider nn=N-1 as Nat by NAT_1:14,21;
          set 2n = 2|^nn;
          N=nn+1;
          then
A39:      P =2*2n by NEWTON:6;
A40:      d1 +i2/(2|^N2)
          = (2*(P*i1+i2+2n))/(2*2N2) by A39,A32
          .=(P*i1+i2+2n)/2N2 by XCMPLX_1:91;
A41:      d1 +(i2+1)/(2|^N2)
          = (2*(P*i1+i2+2n+1)) /(2*2N2) by A35,A39
          .=(P*i1+i2+2n+1)/2N2 by XCMPLX_1:91;
          d1+d2 = (2*(i1*P+i2+2n)+1) / (2|^(N2+1)) by NEWTON:6,A39,A38;
          hence thesis by A37,A40,A41,Def5;
        end;
        suppose N1=N2;
          then
A42:      P=1 by NEWTON:4;
          then
A43:      d1+d2 = (2*(i1+i2)+1+1)/(2|^(N2+1)) by NEWTON:6,A38;
A44:      d1 +i2/(2|^N2) = (2*(i1+i2)+1)/(2|^(N2+1)) by A42,A32,NEWTON:6;
          d1 +(i2+1)/(2|^N2)
          = (2*(i1+i2)+1+2)/(2|^(N2+1)) by NEWTON:6,A42,A35;
          then DD2 == uDyadic.(d1+d2) by A43,A44,Th38;
          hence thesis by A37,SURREALO:4;
        end;
      end;
    end;
  end;
A45: P[m] from NAT_1:sch 2(A1,A5);
  consider i1 be Integer, n1 be Nat such that
A46: d1 = i1 / (2|^n1) by Th18;
  consider i2 be Integer, n2 be Nat such that
A47: d2 = i2 / (2|^n2) by Th18;
A48: d2 in DYADIC(n2) c= DYADIC(n1+n2) by A47,Def4,Th19,NAT_1:11;
A49: d1 in DYADIC(n1) by A46,Def4;
A50: n1 <= n1+n2 by NAT_1:11;
  P[n1+(n1+n2)] by A45;
  hence thesis by A48,A49,A50;
end;
