Article RADIX_4, MML version 4.99.1005

:: RADIX_4:th 1
theorem
for b1 being natural set
      st 2 <= b1
   holds 2 < Radix b1;

:: RADIX_4:th 2
theorem
for b1, b2 being integer set
for b3 being natural set
      st 3 <= b3
   holds SDSub_Add_Carry((SDSub_Add_Carry(b1,b3)) + SDSub_Add_Carry(b2,b3),b3) = 0;

:: RADIX_4:th 3
theorem
for b1, b2, b3 being natural set
      st 2 <= b1
   holds DigA_SDSub(SD2SDSub DecSD(b2,b3,b1),b3 + 1) = SDSub_Add_Carry(DigA(DecSD(b2,b3,b1),b3),b1);

:: RADIX_4:th 4
theorem
for b1, b2 being natural set
      st 2 <= b1 & b2 is_represented_by 1,b1
   holds DigA_SDSub(SD2SDSub DecSD(b2,1,b1),1 + 1) = SDSub_Add_Carry(b2,b1);

:: RADIX_4:th 5
theorem
for b1, b2, b3 being natural set
      st 1 <= b3 & 3 <= b1 & b2 is_represented_by b3 + 1,b1
   holds DigA_SDSub(SD2SDSub DecSD(b2 mod ((Radix b1) |^ b3),b3,b1),b3 + 1) = SDSub_Add_Carry(DigA(DecSD(b2,b3,b1),b3),b1);

:: RADIX_4:th 6
theorem
for b1, b2 being natural set
      st 2 <= b1 & b2 is_represented_by 1,b1
   holds DigA_SDSub(SD2SDSub DecSD(b2,1,b1),1) = b2 - ((SDSub_Add_Carry(b2,b1)) * Radix b1);

:: RADIX_4:th 7
theorem
for b1, b2, b3 being natural set
      st 1 <= b3 & 2 <= b1 & b2 is_represented_by b3 + 1,b1
   holds ((Radix b1) |^ b3) * DigA_SDSub(SD2SDSub DecSD(b2,b3 + 1,b1),b3 + 1) = ((((Radix b1) |^ b3) * DigA(DecSD(b2,b3 + 1,b1),b3 + 1)) - (((Radix b1) |^ (b3 + 1)) * SDSub_Add_Carry(DigA(DecSD(b2,b3 + 1,b1),b3 + 1),b1))) + (((Radix b1) |^ b3) * SDSub_Add_Carry(DigA(DecSD(b2,b3 + 1,b1),b3),b1));

:: RADIX_4:funcnot 1 => RADIX_4:func 1
definition
  let a1, a2, a3 be natural set;
  let a4, a5 be Element of a2 -tuples_on (a3 -SD_Sub);
  assume a1 in Seg a2 & 2 <= a3;
  func SDSubAddDigit(A4,A5,A1,A3) -> Element of a3 -SD_Sub equals
    (SDSub_Add_Data((DigA_SDSub(a4,a1)) + DigA_SDSub(a5,a1),a3)) + SDSub_Add_Carry((DigA_SDSub(a4,a1 -' 1)) + DigA_SDSub(a5,a1 -' 1),a3);
end;

:: RADIX_4:def 1
theorem
for b1, b2, b3 being natural set
for b4, b5 being Element of b2 -tuples_on (b3 -SD_Sub)
      st b1 in Seg b2 & 2 <= b3
   holds SDSubAddDigit(b4,b5,b1,b3) = (SDSub_Add_Data((DigA_SDSub(b4,b1)) + DigA_SDSub(b5,b1),b3)) + SDSub_Add_Carry((DigA_SDSub(b4,b1 -' 1)) + DigA_SDSub(b5,b1 -' 1),b3);

:: RADIX_4:funcnot 2 => RADIX_4:func 2
definition
  let a1, a2 be natural set;
  let a3, a4 be Element of a1 -tuples_on (a2 -SD_Sub);
  func A3 '+' A4 -> Element of a1 -tuples_on (a2 -SD_Sub) means
    for b1 being natural set
          st b1 in Seg a1
       holds DigA_SDSub(it,b1) = SDSubAddDigit(a3,a4,b1,a2);
end;

:: RADIX_4:def 2
theorem
for b1, b2 being natural set
for b3, b4, b5 being Element of b1 -tuples_on (b2 -SD_Sub) holds
   b5 = b3 '+' b4
iff
   for b6 being natural set
         st b6 in Seg b1
      holds DigA_SDSub(b5,b6) = SDSubAddDigit(b3,b4,b6,b2);

:: RADIX_4:th 8
theorem
for b1, b2, b3, b4, b5 being natural set
      st b5 in Seg b1 & 2 <= b2
   holds SDSubAddDigit(SD2SDSub DecSD(b3,b1 + 1,b2),SD2SDSub DecSD(b4,b1 + 1,b2),b5,b2) = SDSubAddDigit(SD2SDSub DecSD(b3 mod ((Radix b2) |^ b1),b1,b2),SD2SDSub DecSD(b4 mod ((Radix b2) |^ b1),b1,b2),b5,b2);

:: RADIX_4:th 9
theorem
for b1 being natural set
   st 1 <= b1
for b2, b3, b4 being natural set
      st 3 <= b2 & b3 is_represented_by b1,b2 & b4 is_represented_by b1,b2
   holds b3 + b4 = SDSub2IntOut ((SD2SDSub DecSD(b3,b1,b2)) '+' SD2SDSub DecSD(b4,b1,b2));