reserve k for Nat;

theorem
  for n be Nat st n >= 1 holds for x,y be Tuple of n,k-SD st k >= 2
  holds SDDec(x '+' y) + SD_Add_Carry(DigA(x,n) + DigA(y,n)) *(Radix(k) |^ n) =
  SDDec(x) + SDDec(y)
proof
  defpred PP[Nat] means for x,y be Tuple of $1,k-SD st k >= 2 holds SDDec(x
  '+' y) + SD_Add_Carry(DigA(x,$1)+DigA(y,$1))*(Radix(k) |^ $1) = SDDec(x) +
  SDDec(y);
A1: for n be Nat st n >= 1 & PP[n] holds PP[n+1]
  proof
    let n be Nat;
    assume that
A2: n >= 1 and
A3: PP[n];
A4: n in Seg n by A2,FINSEQ_1:3;
    let x,y be Tuple of (n+1),k-SD;
    assume
A5: k >= 2;
    deffunc F(Nat) = DigB(x,$1);
    consider xn being FinSequence of INT such that
A6: len xn = n and
A7: for i be Nat st i in dom xn holds xn.i = F(i) from FINSEQ_2:sch 1;
A8: dom xn = Seg n by A6,FINSEQ_1:def 3;
    rng xn c= k-SD
    proof
      let z be object;
      assume z in rng xn;
      then consider xx be object such that
A9:   xx in dom xn and
A10:  z = xn.xx by FUNCT_1:def 3;
      reconsider xx as Element of NAT by A9;
      dom xn = Seg n by A6,FINSEQ_1:def 3;
      then xx in Seg (n+1) by A9,FINSEQ_2:8;
      then
A11:  DigA(x,xx) is Element of k-SD by RADIX_1:16;
      z = DigB(x,xx) by A7,A9,A10
        .= DigA(x,xx) by RADIX_1:def 4;
      hence thesis by A11;
    end;
    then reconsider xn as FinSequence of k-SD by FINSEQ_1:def 4;
A12: for i be Nat st i in Seg n holds xn.i = x.i
    proof
      let i be Nat;
      assume
A13:  i in Seg n;
      then
A14:  i in Seg (n+1) by FINSEQ_2:8;
      xn.i = DigB(x,i) by A7,A8,A13
        .= DigA(x,i) by RADIX_1:def 4;
      hence thesis by A14,RADIX_1:def 3;
    end;
    reconsider xn as Tuple of n,(k-SD) by A6,CARD_1:def 7;
    deffunc F(Nat)=DigB(y,$1);
    consider yn being FinSequence of INT such that
A15: len yn = n and
A16: for i be Nat st i in dom yn holds yn.i = F(i) from FINSEQ_2:sch 1;
A17: dom yn = Seg n by A15,FINSEQ_1:def 3;
    rng yn c= k-SD
    proof
      let z be object;
      assume z in rng yn;
      then consider yy be object such that
A18:  yy in dom yn and
A19:  z = yn.yy by FUNCT_1:def 3;
      reconsider yy as Element of NAT by A18;
      dom yn = Seg n by A15,FINSEQ_1:def 3;
      then yy in Seg (n+1) by A18,FINSEQ_2:8;
      then
A20:  DigA(y,yy) is Element of k-SD by RADIX_1:16;
      z = DigB(y,yy) by A16,A18,A19
        .= DigA(y,yy) by RADIX_1:def 4;
      hence thesis by A20;
    end;
    then reconsider yn as FinSequence of k-SD by FINSEQ_1:def 4;
A21: for i be Nat st i in Seg n holds yn.i = y.i
    proof
      let i be Nat;
      assume
A22:  i in Seg n;
      then
A23:  i in Seg (n+1) by FINSEQ_2:8;
      yn.i = DigB(y,i) by A16,A17,A22
        .= DigA(y,i) by RADIX_1:def 4;
      hence thesis by A23,RADIX_1:def 3;
    end;
    reconsider yn as Tuple of n,(k-SD) by A15,CARD_1:def 7;
A24: for i be Nat st i in Seg n holds DigA(y,i) = DigA(yn,i)
    proof
      let i be Nat;
      assume
A25:  i in Seg n;
      then i in Seg (n+1) by FINSEQ_2:8;
      then DigA(y,i) = y.i by RADIX_1:def 3
        .= yn.i by A21,A25;
      hence thesis by A25,RADIX_1:def 3;
    end;
A26: n+1 in Seg (n+1) by FINSEQ_1:3;
A27: for i be Element of NAT st i in Seg n holds DigA(x,i) = DigA(xn,i)
    proof
      let i be Element of NAT;
      assume
A28:  i in Seg n;
      then i in Seg (n+1) by FINSEQ_2:8;
      then DigA(x,i) = x.i by RADIX_1:def 3
        .= xn.i by A12,A28;
      hence thesis by A28,RADIX_1:def 3;
    end;
    for i be Nat st i in Seg n holds (x '+' y).i = (xn '+' yn).i
    proof
      let i be Nat;
      assume
A29:  i in Seg n;
      then
A30:  i in Seg (n+1) by FINSEQ_2:8;
      (x '+' y).i = (xn '+' yn).i
      proof
A31:    i <= n+1 by A30,FINSEQ_1:1;
A32:    i >= 1 by A29,FINSEQ_1:1;
        now
          per cases by A32,XXREAL_0:1;
          suppose
A33:        i > 1;
            then i - 1 > 1 - 1 by XREAL_1:9;
            then
A34:        i -'1 = i - 1 by XREAL_0:def 2;
            i -'1 > 1 -'1 by A33,NAT_D:57;
            then
A35:        i -'1 >= 1 by NAT_1:14;
            i - 1 <= n + 1 - 1 by A31,XREAL_1:9;
            then
A36:        i -'1 in Seg n by A35,A34,FINSEQ_1:1;
            (x '+' y).i = DigA(x '+' y,i) by A30,RADIX_1:def 3
              .= Add(x,y,i,k) by A30,RADIX_1:def 14
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(DigA(x,i
            -'1)+DigA(y,i -'1)) by A5,A30,RADIX_1:def 13
              .= SD_Add_Data(DigA(xn,i)+DigA(y,i),k) + SD_Add_Carry(DigA(x,i
            -'1)+DigA(y,i -'1)) by A27,A29
              .= SD_Add_Data(DigA(xn,i)+DigA(y,i),k) + SD_Add_Carry(DigA(xn,
            i -'1)+DigA(y,i -'1)) by A27,A36
              .= SD_Add_Data(DigA(xn,i)+DigA(yn,i),k) + SD_Add_Carry(DigA(xn
            ,i -'1)+DigA(y,i -'1)) by A24,A29
              .= SD_Add_Data(DigA(xn,i)+DigA(yn,i),k) + SD_Add_Carry(DigA(xn
            ,i -'1)+DigA(yn,i -'1)) by A24,A36
              .= Add(xn,yn,i,k) by A5,A29,RADIX_1:def 13
              .= DigA(xn '+' yn,i) by A29,RADIX_1:def 14;
            hence thesis by A29,RADIX_1:def 3;
          end;
          suppose
A37:        i = 1;
            (x '+' y).i = DigA(x '+' y,i) by A30,RADIX_1:def 3
              .= Add(x,y,i,k) by A30,RADIX_1:def 14
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(DigA(x,1
            -'1)+DigA(y,1 -'1)) by A5,A30,A37,RADIX_1:def 13
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(DigA(x,0)
            +DigA(y,1 -'1)) by XREAL_1:232
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(DigA(x,0)
            +DigA(y,0)) by XREAL_1:232
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(0+DigA(y,
            0)) by RADIX_1:def 3
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(0+0) by
RADIX_1:def 3
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(DigA(xn,0
            )+0) by RADIX_1:def 3
              .= SD_Add_Data(DigA(x,i)+DigA(y,i),k) + SD_Add_Carry(DigA(xn,0
            )+DigA(yn,0)) by RADIX_1:def 3
              .= SD_Add_Data(DigA(xn,i)+DigA(y,i),k) + SD_Add_Carry(DigA(xn,
            0)+DigA(yn,0)) by A27,A29
              .= SD_Add_Data(DigA(xn,i)+DigA(yn,i),k) + SD_Add_Carry(DigA(xn
            ,0)+DigA(yn,0)) by A24,A29
              .= SD_Add_Data(DigA(xn,i)+DigA(yn,i),k) + SD_Add_Carry(DigA(xn
            ,1-'1)+DigA(yn,0)) by XREAL_1:232
              .= SD_Add_Data(DigA(xn,i)+DigA(yn,i),k) + SD_Add_Carry(DigA(xn
            ,i-'1)+DigA(yn,i-'1)) by A37,XREAL_1:232
              .= Add(xn,yn,i,k) by A5,A29,RADIX_1:def 13
              .= DigA(xn '+' yn,i) by A29,RADIX_1:def 14;
            hence thesis by A29,RADIX_1:def 3;
          end;
        end;
        hence thesis;
      end;
      hence thesis;
    end;
    then
    Sum DigitSD(x '+' y) = Sum(DigitSD(xn '+' yn) ^ <*SubDigit(x '+' y,n+
    1,k) *>) by Th9;
    then SDDec(x '+' y) = Sum(DigitSD(xn '+' yn)^<*SubDigit(x '+' y,n+1,k)*>)
    by RADIX_1:def 7
      .= Sum DigitSD(xn '+' yn) + SubDigit(x '+' y,n+1,k) by RVSUM_1:74
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ (n+1-'1)*DigB(x '+' y,n+1))
    by RADIX_1:def 5
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)*DigB(x '+' y,n+1) by NAT_D:34
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)*DigA(x '+' y,n+1) by
RADIX_1:def 4
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)*Add(x,y,n+1,k) by A26,
RADIX_1:def 14
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)* (SD_Add_Data(DigA(x,n+1)+
    DigA(y,n+1),k) + SD_Add_Carry(DigA(x,n+1-'1)+DigA(y,n+1-'1))) by A5,A26,
RADIX_1:def 13
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)* (SD_Add_Data(DigA(x,n+1)+
    DigA(y,n+1),k) + SD_Add_Carry(DigA(x,n)+DigA(y,n+1-'1))) by NAT_D:34
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)* (SD_Add_Data(DigA(x,n+1)+
    DigA(y,n+1),k) + SD_Add_Carry(DigA(x,n)+DigA(y,n))) by NAT_D:34
      .= Sum DigitSD(xn '+' yn) + (Radix(k) |^ n)*SD_Add_Carry(DigA(x,n)+
    DigA(y,n)) + (Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+DigA(y,n+1),k)
      .= SDDec(xn '+' yn) + (Radix(k) |^ n)*SD_Add_Carry(DigA(x,n)+DigA(y,n)
    ) + (Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+DigA(y,n+1),k) by RADIX_1:def 7
      .= SDDec(xn '+' yn) + (Radix(k) |^ n)*SD_Add_Carry(DigA(xn,n)+DigA(y,n
    )) + (Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+DigA(y,n+1),k) by A27,A4
      .= SDDec(xn '+' yn) + (Radix(k) |^ n)*SD_Add_Carry(DigA(xn,n)+DigA(yn,
    n)) + (Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+DigA(y,n+1),k) by A2,A24,
FINSEQ_1:3
      .= SDDec(xn) + SDDec(yn) + (Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+
    DigA(y,n+1),k) by A3,A5;
    then
    SDDec(x '+' y) + SD_Add_Carry(DigA(x,n+1)+DigA(y,n+1))*(Radix(k) |^ (
n+1)) = SDDec(xn) + SDDec(yn) + ((Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+DigA(y
    ,n+1),k) + SD_Add_Carry(DigA(x,n+1)+DigA(y,n+1))*(Radix(k) |^ (n+1)))
      .= SDDec(xn) + SDDec(yn) + ((Radix(k) |^ n)*SD_Add_Data(DigA(x,n+1)+
DigA(y,n+1),k) + SD_Add_Carry(DigA(x,n+1)+DigA(y,n+1))*((Radix(k) |^ n)*Radix(k
    ))) by NEWTON:6
      .= SDDec(xn) + SDDec(yn) + ((Radix(k) |^ n) *(SD_Add_Data(DigA(x,n+1)+
    DigA(y,n+1),k) + (SD_Add_Carry(DigA(x,n+1)+DigA(y,n+1))*Radix(k))))
      .= SDDec(xn) + SDDec(yn) + ((Radix(k) |^ n)*(DigA(x,n+1) + DigA(y,n+1)
    )) by Th8
      .= (SDDec(xn) + (Radix(k) |^ n)*DigA(x,n+1)) + (SDDec(yn) + (Radix(k)
    |^ n)*DigA(y,n+1))
      .= SDDec(x) + (SDDec(yn) + (Radix(k) |^ n)*DigA(y,n+1)) by A12,Th10;
    hence thesis by A21,Th10;
  end;
A38: PP[1]
  proof
    1 - 1 = 0;
    then
A39: 1 -' 1 = 0 by XREAL_0:def 2;
    let x,y be Tuple of 1,k-SD;
    assume
A40: k >= 2;
A41: SDDec(y) = DigA(y,1) & SD_Add_Data(DigA(x,1) + DigA(y,1),k) = DigA(x,1
) + DigA(y,1) - SD_Add_Carry(DigA(x,1)+DigA(y,1))*Radix(k) by Th7,
RADIX_1:def 11;
A42: 1 in Seg 1 by FINSEQ_1:2,TARSKI:def 1;
    then DigA(x '+' y,1) = Add(x,y,1,k) by RADIX_1:def 14
      .= SD_Add_Data(DigA(x,1)+DigA(y,1),k) + SD_Add_Carry(DigA(x,0)+DigA(y,
    0)) by A40,A42,A39,RADIX_1:def 13
      .= SD_Add_Data(DigA(x,1)+DigA(y,1),k) + SD_Add_Carry(0+DigA(y,0)) by
RADIX_1:def 3
      .= SD_Add_Data(DigA(x,1)+DigA(y,1),k) + 0 by RADIX_1:18,def 3;
    then SDDec(x '+' y) = SD_Add_Data(DigA(x,1)+DigA(y,1),k) by Th7;
    hence SDDec(x '+' y) + SD_Add_Carry(DigA(x,1)+DigA(y,1))*(Radix(k) |^ 1) =
SD_Add_Data(DigA(x,1)+DigA(y,1),k) + SD_Add_Carry(DigA(x,1)+DigA(y,1))*Radix(k)
      .= SDDec(x) + SDDec(y) by A41,Th7;
  end;
  for n be Nat st n >= 1 holds PP[n] from NAT_1:sch 8(A38,A1);
  hence thesis;
end;
