let k be Nat; :: thesis: for n being Nat st n >= 1 holds
for x, y being 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)
defpred S1[ Nat] means for x, y being 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:
S1[1]
proof
let x,
y be
Tuple of 1,
(k -SD );
:: thesis: ( k >= 2 implies (SDDec (x '+' y)) + ((SD_Add_Carry ((DigA x,1) + (DigA y,1))) * ((Radix k) |^ 1)) = (SDDec x) + (SDDec y) )
assume A2:
k >= 2
;
:: thesis: (SDDec (x '+' y)) + ((SD_Add_Carry ((DigA x,1) + (DigA y,1))) * ((Radix k) |^ 1)) = (SDDec x) + (SDDec y)
A3:
1
in Seg 1
by FINSEQ_1:4, TARSKI:def 1;
1
- 1
= 0
;
then A4:
1
-' 1
= 0
by XREAL_0:def 2;
A5:
DigA (x '+' y),1 =
Add x,
y,1,
k
by A3, RADIX_1:def 14
.=
(SD_Add_Data ((DigA x,1) + (DigA y,1)),k) + (SD_Add_Carry ((DigA x,0 ) + (DigA y,0 )))
by A2, A3, A4, 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:21, RADIX_1:def 3
;
A6:
SDDec y = DigA y,1
by Th7;
A7:
SDDec (x '+' y) = SD_Add_Data ((DigA x,1) + (DigA y,1)),
k
by A5, Th7;
A8:
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 RADIX_1:def 11;
thus (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))
by A7, NEWTON:10
.=
(SDDec x) + (SDDec y)
by A6, A8, Th7
;
:: thesis: verum
end;
A9:
for n being Nat st n >= 1 & S1[n] holds
S1[n + 1]
proof
let n be
Nat;
:: thesis: ( n >= 1 & S1[n] implies S1[n + 1] )
assume that A10:
n >= 1
and A11:
S1[
n]
;
:: thesis: S1[n + 1]
let x,
y be
Tuple of
(n + 1),
(k -SD );
:: thesis: ( k >= 2 implies (SDDec (x '+' y)) + ((SD_Add_Carry ((DigA x,(n + 1)) + (DigA y,(n + 1)))) * ((Radix k) |^ (n + 1))) = (SDDec x) + (SDDec y) )
assume A12:
k >= 2
;
:: thesis: (SDDec (x '+' y)) + ((SD_Add_Carry ((DigA x,(n + 1)) + (DigA y,(n + 1)))) * ((Radix k) |^ (n + 1))) = (SDDec x) + (SDDec y)
deffunc H1(
Nat)
-> Element of
K485() =
DigB x,$1;
consider xn being
FinSequence of
INT such that A13:
len xn = n
and A14:
for
i being
Nat st
i in dom xn holds
xn . i = H1(
i)
from FINSEQ_2:sch 1();
A15:
dom xn = Seg n
by A13, FINSEQ_1:def 3;
rng xn c= k -SD
then reconsider xn =
xn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A20:
for
i being
Nat st
i in Seg n holds
xn . i = x . i
deffunc H2(
Nat)
-> Element of
K485() =
DigB y,$1;
consider yn being
FinSequence of
INT such that A23:
len yn = n
and A24:
for
i being
Nat st
i in dom yn holds
yn . i = H2(
i)
from FINSEQ_2:sch 1();
A25:
dom yn = Seg n
by A23, FINSEQ_1:def 3;
rng yn c= k -SD
then reconsider yn =
yn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A30:
for
i being
Nat st
i in Seg n holds
yn . i = y . i
reconsider xn =
xn as
Tuple of
n,
(k -SD ) by A13, FINSEQ_2:110;
reconsider yn =
yn as
Tuple of
n,
(k -SD ) by A23, FINSEQ_2:110;
A33:
for
i being
Element of
NAT st
i in Seg n holds
DigA x,
i = DigA xn,
i
A35:
for
i being
Nat st
i in Seg n holds
DigA y,
i = DigA yn,
i
A37:
Sum (DigitSD (x '+' y)) = Sum ((DigitSD (xn '+' yn)) ^ <*(SubDigit (x '+' y),(n + 1),k)*>)
proof
for
i being
Nat st
i in Seg n holds
(x '+' y) . i = (xn '+' yn) . i
proof
let i be
Nat;
:: thesis: ( i in Seg n implies (x '+' y) . i = (xn '+' yn) . i )
assume A38:
i in Seg n
;
:: thesis: (x '+' y) . i = (xn '+' yn) . i
then A39:
i in Seg (n + 1)
by FINSEQ_2:9;
(x '+' y) . i = (xn '+' yn) . i
proof
A40:
(
i >= 1 &
i <= n + 1 )
by A39, FINSEQ_1:3;
now per cases
( i > 1 or i = 1 )
by A40, XXREAL_0:1;
suppose A41:
i > 1
;
:: thesis: (x '+' y) . i = (xn '+' yn) . ithen
i -' 1
> 1
-' 1
by NAT_D:57;
then A42:
i -' 1
>= 1
by NAT_1:14;
i - 1
> 1
- 1
by A41, XREAL_1:11;
then A43:
i -' 1
= i - 1
by XREAL_0:def 2;
i - 1
<= (n + 1) - 1
by A40, XREAL_1:11;
then A44:
i -' 1
in Seg n
by A42, A43, FINSEQ_1:3;
(x '+' y) . i =
DigA (x '+' y),
i
by A39, RADIX_1:def 3
.=
Add x,
y,
i,
k
by A39, 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 A12, A39, 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 A33, A38
.=
(SD_Add_Data ((DigA xn,i) + (DigA y,i)),k) + (SD_Add_Carry ((DigA xn,(i -' 1)) + (DigA y,(i -' 1))))
by A33, A44
.=
(SD_Add_Data ((DigA xn,i) + (DigA yn,i)),k) + (SD_Add_Carry ((DigA xn,(i -' 1)) + (DigA y,(i -' 1))))
by A35, A38
.=
(SD_Add_Data ((DigA xn,i) + (DigA yn,i)),k) + (SD_Add_Carry ((DigA xn,(i -' 1)) + (DigA yn,(i -' 1))))
by A35, A44
.=
Add xn,
yn,
i,
k
by A12, A38, RADIX_1:def 13
.=
DigA (xn '+' yn),
i
by A38, RADIX_1:def 14
;
hence
(x '+' y) . i = (xn '+' yn) . i
by A38, RADIX_1:def 3;
:: thesis: verum end; suppose A45:
i = 1
;
:: thesis: (x '+' y) . i = (xn '+' yn) . i(x '+' y) . i =
DigA (x '+' y),
i
by A39, RADIX_1:def 3
.=
Add x,
y,
i,
k
by A39, 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 A12, A39, A45, 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:234
.=
(SD_Add_Data ((DigA x,i) + (DigA y,i)),k) + (SD_Add_Carry ((DigA x,0 ) + (DigA y,0 )))
by XREAL_1:234
.=
(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 A33, A38
.=
(SD_Add_Data ((DigA xn,i) + (DigA yn,i)),k) + (SD_Add_Carry ((DigA xn,0 ) + (DigA yn,0 )))
by A35, A38
.=
(SD_Add_Data ((DigA xn,i) + (DigA yn,i)),k) + (SD_Add_Carry ((DigA xn,(1 -' 1)) + (DigA yn,0 )))
by XREAL_1:234
.=
(SD_Add_Data ((DigA xn,i) + (DigA yn,i)),k) + (SD_Add_Carry ((DigA xn,(i -' 1)) + (DigA yn,(i -' 1))))
by A45, XREAL_1:234
.=
Add xn,
yn,
i,
k
by A12, A38, RADIX_1:def 13
.=
DigA (xn '+' yn),
i
by A38, RADIX_1:def 14
;
hence
(x '+' y) . i = (xn '+' yn) . i
by A38, RADIX_1:def 3;
:: thesis: verum end; end; end;
hence
(x '+' y) . i = (xn '+' yn) . i
;
:: thesis: verum
end;
hence
(x '+' y) . i = (xn '+' yn) . i
;
:: thesis: verum
end;
hence
Sum (DigitSD (x '+' y)) = Sum ((DigitSD (xn '+' yn)) ^ <*(SubDigit (x '+' y),(n + 1),k)*>)
by Th9;
:: thesis: verum
end;
A46:
n + 1
in Seg (n + 1)
by FINSEQ_1:5;
A47:
n in Seg n
by A10, FINSEQ_1:5;
SDDec (x '+' y) =
Sum ((DigitSD (xn '+' yn)) ^ <*(SubDigit (x '+' y),(n + 1),k)*>)
by A37, RADIX_1:def 7
.=
(Sum (DigitSD (xn '+' yn))) + (SubDigit (x '+' y),(n + 1),k)
by RVSUM_1:104
.=
(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 A46, 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 A12, A46, 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 A33, A47
.=
((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 A10, A35, FINSEQ_1:5
.=
((SDDec xn) + (SDDec yn)) + (((Radix k) |^ n) * (SD_Add_Data ((DigA x,(n + 1)) + (DigA y,(n + 1))),k))
by A11, A12
;
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:11
.=
((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 A20, Th10
;
hence
(SDDec (x '+' y)) + ((SD_Add_Carry ((DigA x,(n + 1)) + (DigA y,(n + 1)))) * ((Radix k) |^ (n + 1))) = (SDDec x) + (SDDec y)
by A30, Th10;
:: thesis: verum
end;
for n being Nat st n >= 1 holds
S1[n]
from NAT_1:sch 8(A1, A9);
hence
for n being Nat st n >= 1 holds
for x, y being 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)
; :: thesis: verum