:: RADIX_4 semantic presentation
theorem Th1: :: RADIX_4:1
Lemma2:
for b1 being Nat
for b2 being Integer st b2 in b1 -SD_Sub_S holds
( b2 >= - (Radix (b1 -' 1)) & b2 <= (Radix (b1 -' 1)) - 1 )
Lemma3:
for b1, b2, b3, b4 being Nat st b4 in Seg b1 holds
DigA (DecSD b2,(b1 + 1),b3),b4 = DigA (DecSD b2,b1,b3),b4
Lemma4:
for b1, b2, b3 being Nat st b3 >= 1 & b2 is_represented_by b3 + 1,b1 holds
DigA (DecSD (b2 mod ((Radix b1) |^ b3)),b3,b1),b3 = DigA (DecSD b2,b3,b1),b3
theorem Th2: :: RADIX_4:2
theorem Th3: :: RADIX_4:3
theorem Th4: :: RADIX_4:4
theorem Th5: :: RADIX_4:5
for
b1,
b2,
b3 being
Nat st
b3 >= 1 &
b1 >= 3 &
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
theorem Th6: :: RADIX_4:6
theorem Th7: :: RADIX_4:7
for
b1,
b2,
b3 being
Nat st
b3 >= 1 &
b1 >= 2 &
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))
definition
let c1,
c2,
c3 be
Nat;
let c4,
c5 be
Tuple of
c2,
(c3 -SD_Sub );
assume E11:
(
c1 in Seg c2 &
c3 >= 2 )
;
func SDSubAddDigit c4,
c5,
c1,
c3 -> Element of
a3 -SD_Sub equals :
Def1:
:: RADIX_4:def 1
(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);
coherence
(SDSub_Add_Data ((DigA_SDSub c4,c1) + (DigA_SDSub c5,c1)),c3) + (SDSub_Add_Carry ((DigA_SDSub c4,(c1 -' 1)) + (DigA_SDSub c5,(c1 -' 1))),c3) is Element of c3 -SD_Sub
end;
:: deftheorem Def1 defines SDSubAddDigit RADIX_4:def 1 :
for
b1,
b2,
b3 being
Nat for
b4,
b5 being
Tuple of
b2,
(b3 -SD_Sub ) st
b1 in Seg b2 &
b3 >= 2 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);
definition
let c1,
c2 be
Nat;
let c3,
c4 be
Tuple of
c1,
(c2 -SD_Sub );
func c3 '+' c4 -> Tuple of
a1,
(a2 -SD_Sub ) means :
Def2:
:: RADIX_4:def 2
for
b1 being
Nat st
b1 in Seg a1 holds
DigA_SDSub a5,
b1 = SDSubAddDigit a3,
a4,
b1,
a2;
existence
ex b1 being Tuple of c1,(c2 -SD_Sub ) st
for b2 being Nat st b2 in Seg c1 holds
DigA_SDSub b1,b2 = SDSubAddDigit c3,c4,b2,c2
uniqueness
for b1, b2 being Tuple of c1,(c2 -SD_Sub ) st ( for b3 being Nat st b3 in Seg c1 holds
DigA_SDSub b1,b3 = SDSubAddDigit c3,c4,b3,c2 ) & ( for b3 being Nat st b3 in Seg c1 holds
DigA_SDSub b2,b3 = SDSubAddDigit c3,c4,b3,c2 ) holds
b1 = b2
end;
:: deftheorem Def2 defines '+' RADIX_4:def 2 :
theorem Th8: :: RADIX_4:8
for
b1,
b2,
b3,
b4,
b5 being
Nat 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
theorem Th9: :: RADIX_4:9