defpred S1[ Nat] means for k being Nat st k >= 2 holds
for tx, ty, tz, tw being Tuple of $1,k -SD st ( for i being Nat holds
( not i in Seg $1 or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) holds
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty);
A1:
for n being Nat st n >= 1 & S1[n] holds
S1[n + 1]
proof
let n be
Nat;
( n >= 1 & S1[n] implies S1[n + 1] )
assume that
n >= 1
and A2:
S1[
n]
;
S1[n + 1]
let k be
Nat;
( k >= 2 implies for tx, ty, tz, tw being Tuple of n + 1,k -SD st ( for i being Nat holds
( not i in Seg (n + 1) or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) holds
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
assume A3:
k >= 2
;
for tx, ty, tz, tw being Tuple of n + 1,k -SD st ( for i being Nat holds
( not i in Seg (n + 1) or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) holds
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
let tx,
ty,
tz,
tw be
Tuple of
n + 1,
k -SD ;
( ( for i being Nat holds
( not i in Seg (n + 1) or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) implies (SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
assume A4:
for
i being
Nat holds
( not
i in Seg (n + 1) or (
DigA (
tx,
i)
= DigA (
tz,
i) &
DigA (
ty,
i)
= DigA (
tw,
i) ) or (
DigA (
ty,
i)
= DigA (
tz,
i) &
DigA (
tx,
i)
= DigA (
tw,
i) ) )
;
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
deffunc H1(
Nat)
-> Element of
K367() =
DigB (
tx,$1);
consider txn being
FinSequence of
INT such that A5:
len txn = n
and A6:
for
i being
Nat st
i in dom txn holds
txn . i = H1(
i)
from FINSEQ_2:sch 1();
A7:
dom txn = Seg n
by A5, FINSEQ_1:def 3;
rng txn c= k -SD
then reconsider txn =
txn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A11:
for
i being
Nat st
i in Seg n holds
txn . i = tx . i
deffunc H2(
Nat)
-> Element of
K367() =
DigB (
ty,$1);
consider tyn being
FinSequence of
INT such that A14:
len tyn = n
and A15:
for
i being
Nat st
i in dom tyn holds
tyn . i = H2(
i)
from FINSEQ_2:sch 1();
A16:
dom tyn = Seg n
by A14, FINSEQ_1:def 3;
rng tyn c= k -SD
then reconsider tyn =
tyn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A20:
for
i being
Nat st
i in Seg n holds
tyn . i = ty . i
deffunc H3(
Nat)
-> Element of
K367() =
DigB (
tz,$1);
consider tzn being
FinSequence of
INT such that A23:
len tzn = n
and A24:
for
i being
Nat st
i in dom tzn holds
tzn . i = H3(
i)
from FINSEQ_2:sch 1();
A25:
dom tzn = Seg n
by A23, FINSEQ_1:def 3;
rng tzn c= k -SD
then reconsider tzn =
tzn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A29:
for
i being
Nat st
i in Seg n holds
tzn . i = tz . i
deffunc H4(
Nat)
-> Element of
K367() =
DigB (
tw,$1);
consider twn being
FinSequence of
INT such that A32:
len twn = n
and A33:
for
i being
Nat st
i in dom twn holds
twn . i = H4(
i)
from FINSEQ_2:sch 1();
A34:
dom twn = Seg n
by A32, FINSEQ_1:def 3;
rng twn c= k -SD
then reconsider twn =
twn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A38:
for
i being
Nat st
i in Seg n holds
twn . i = tw . i
reconsider n =
n as
Element of
NAT by ORDINAL1:def 12;
twn is
Element of
n -tuples_on (k -SD)
by A32, FINSEQ_2:92;
then reconsider twn =
twn as
Tuple of
n,
k -SD ;
tzn is
Element of
n -tuples_on (k -SD)
by A23, FINSEQ_2:92;
then reconsider tzn =
tzn as
Tuple of
n,
k -SD ;
tyn is
Element of
n -tuples_on (k -SD)
by A14, FINSEQ_2:92;
then reconsider tyn =
tyn as
Tuple of
n,
k -SD ;
A41:
(SDDec tyn) + (((Radix k) |^ n) * (DigA (ty,(n + 1)))) = SDDec ty
by A20, RADIX_2:10;
n + 1
in Seg (n + 1)
by FINSEQ_1:3;
then A42:
( (
DigA (
tx,
(n + 1))
= DigA (
tz,
(n + 1)) &
DigA (
ty,
(n + 1))
= DigA (
tw,
(n + 1)) ) or (
DigA (
ty,
(n + 1))
= DigA (
tz,
(n + 1)) &
DigA (
tx,
(n + 1))
= DigA (
tw,
(n + 1)) ) )
by A4;
A43:
(SDDec twn) + (((Radix k) |^ n) * (DigA (tw,(n + 1)))) = SDDec tw
by A38, RADIX_2:10;
A44:
(SDDec tzn) + (((Radix k) |^ n) * (DigA (tz,(n + 1)))) = SDDec tz
by A29, RADIX_2:10;
txn is
Element of
n -tuples_on (k -SD)
by A5, FINSEQ_2:92;
then reconsider txn =
txn as
Tuple of
n,
k -SD ;
for
i being
Nat holds
( not
i in Seg n or (
DigA (
txn,
i)
= DigA (
tzn,
i) &
DigA (
tyn,
i)
= DigA (
twn,
i) ) or (
DigA (
tyn,
i)
= DigA (
tzn,
i) &
DigA (
txn,
i)
= DigA (
twn,
i) ) )
proof
let i be
Nat;
( not i in Seg n or ( DigA (txn,i) = DigA (tzn,i) & DigA (tyn,i) = DigA (twn,i) ) or ( DigA (tyn,i) = DigA (tzn,i) & DigA (txn,i) = DigA (twn,i) ) )
assume A45:
i in Seg n
;
( ( DigA (txn,i) = DigA (tzn,i) & DigA (tyn,i) = DigA (twn,i) ) or ( DigA (tyn,i) = DigA (tzn,i) & DigA (txn,i) = DigA (twn,i) ) )
then
i <= n
by FINSEQ_1:1;
then A46:
i <= n + 1
by NAT_1:12;
1
<= i
by A45, FINSEQ_1:1;
then A47:
i in Seg (n + 1)
by A46, FINSEQ_1:1;
then A48:
DigA (
ty,
i) =
ty . i
by RADIX_1:def 3
.=
tyn . i
by A20, A45
.=
DigA (
tyn,
i)
by A45, RADIX_1:def 3
;
A49:
DigA (
tw,
i) =
tw . i
by A47, RADIX_1:def 3
.=
twn . i
by A38, A45
.=
DigA (
twn,
i)
by A45, RADIX_1:def 3
;
A50:
DigA (
tz,
i) =
tz . i
by A47, RADIX_1:def 3
.=
tzn . i
by A29, A45
.=
DigA (
tzn,
i)
by A45, RADIX_1:def 3
;
DigA (
tx,
i) =
tx . i
by A47, RADIX_1:def 3
.=
txn . i
by A11, A45
.=
DigA (
txn,
i)
by A45, RADIX_1:def 3
;
hence
( (
DigA (
txn,
i)
= DigA (
tzn,
i) &
DigA (
tyn,
i)
= DigA (
twn,
i) ) or (
DigA (
tyn,
i)
= DigA (
tzn,
i) &
DigA (
txn,
i)
= DigA (
twn,
i) ) )
by A4, A47, A48, A50, A49;
verum
end;
then A51:
(SDDec tzn) + (SDDec twn) = (SDDec txn) + (SDDec tyn)
by A2, A3;
(SDDec txn) + (((Radix k) |^ n) * (DigA (tx,(n + 1)))) = SDDec tx
by A11, RADIX_2:10;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A41, A44, A43, A51, A42;
verum
end;
A52:
S1[1]
proof
let k be
Nat;
( k >= 2 implies for tx, ty, tz, tw being Tuple of 1,k -SD st ( for i being Nat holds
( not i in Seg 1 or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) holds
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
assume A53:
k >= 2
;
for tx, ty, tz, tw being Tuple of 1,k -SD st ( for i being Nat holds
( not i in Seg 1 or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) holds
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
let tx,
ty,
tz,
tw be
Tuple of 1,
k -SD ;
( ( for i being Nat holds
( not i in Seg 1 or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) implies (SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
A54:
1
in Seg 1
by FINSEQ_1:1;
A55:
SDDec (tx '+' ty) =
DigA (
(tx '+' ty),1)
by Th4
.=
Add (
tx,
ty,1,
k)
by A54, RADIX_1:def 14
.=
(SD_Add_Data (((DigA (tx,1)) + (DigA (ty,1))),k)) + (SD_Add_Carry ((DigA (tx,(1 -' 1))) + (DigA (ty,(1 -' 1)))))
by A53, A54, RADIX_1:def 13
.=
(SD_Add_Data (((DigA (tx,1)) + (DigA (ty,1))),k)) + (SD_Add_Carry ((DigA (tx,0)) + (DigA (ty,(1 -' 1)))))
by XREAL_1:232
.=
(SD_Add_Data (((DigA (tx,1)) + (DigA (ty,1))),k)) + (SD_Add_Carry ((DigA (tx,0)) + (DigA (ty,0))))
by XREAL_1:232
.=
(SD_Add_Data (((DigA (tx,1)) + (DigA (ty,1))),k)) + (SD_Add_Carry ((DigA (tx,0)) + 0))
by RADIX_1:def 3
.=
(SD_Add_Data (((DigA (tx,1)) + (DigA (ty,1))),k)) + (SD_Add_Carry (0 + 0))
by RADIX_1:def 3
.=
(SD_Add_Data (((DigA (tx,1)) + (DigA (ty,1))),k)) + 0
by RADIX_1:def 10
;
A56:
SDDec (tz '+' tw) =
DigA (
(tz '+' tw),1)
by Th4
.=
Add (
tz,
tw,1,
k)
by A54, RADIX_1:def 14
.=
(SD_Add_Data (((DigA (tz,1)) + (DigA (tw,1))),k)) + (SD_Add_Carry ((DigA (tz,(1 -' 1))) + (DigA (tw,(1 -' 1)))))
by A53, A54, RADIX_1:def 13
.=
(SD_Add_Data (((DigA (tz,1)) + (DigA (tw,1))),k)) + (SD_Add_Carry ((DigA (tz,0)) + (DigA (tw,(1 -' 1)))))
by XREAL_1:232
.=
(SD_Add_Data (((DigA (tz,1)) + (DigA (tw,1))),k)) + (SD_Add_Carry ((DigA (tz,0)) + (DigA (tw,0))))
by XREAL_1:232
.=
(SD_Add_Data (((DigA (tz,1)) + (DigA (tw,1))),k)) + (SD_Add_Carry ((DigA (tz,0)) + 0))
by RADIX_1:def 3
.=
(SD_Add_Data (((DigA (tz,1)) + (DigA (tw,1))),k)) + (SD_Add_Carry (0 + 0))
by RADIX_1:def 3
.=
(SD_Add_Data (((DigA (tz,1)) + (DigA (tw,1))),k)) + 0
by RADIX_1:def 10
;
A57:
(
DigA (
tx,1)
= DigA (
tz,1) &
DigA (
ty,1)
= DigA (
tw,1) implies
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
proof
assume
(
DigA (
tx,1)
= DigA (
tz,1) &
DigA (
ty,1)
= DigA (
tw,1) )
;
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
then
(SDDec tz) + (SDDec tw) = (SDDec (tx '+' ty)) + ((SD_Add_Carry ((DigA (tx,1)) + (DigA (ty,1)))) * ((Radix k) |^ 1))
by A53, A56, A55, RADIX_2:11;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A53, RADIX_2:11;
verum
end;
assume A58:
for
j being
Nat holds
( not
j in Seg 1 or (
DigA (
tx,
j)
= DigA (
tz,
j) &
DigA (
ty,
j)
= DigA (
tw,
j) ) or (
DigA (
ty,
j)
= DigA (
tz,
j) &
DigA (
tx,
j)
= DigA (
tw,
j) ) )
;
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
then A59:
( (
DigA (
tx,1)
= DigA (
tz,1) &
DigA (
ty,1)
= DigA (
tw,1) ) or (
DigA (
ty,1)
= DigA (
tz,1) &
DigA (
tx,1)
= DigA (
tw,1) ) )
by A54;
(
DigA (
ty,1)
= DigA (
tz,1) &
DigA (
tx,1)
= DigA (
tw,1) implies
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
proof
assume that
DigA (
ty,1)
= DigA (
tz,1)
and
DigA (
tx,1)
= DigA (
tw,1)
;
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
(SDDec tz) + (SDDec tw) = (SDDec (tx '+' ty)) + ((SD_Add_Carry ((DigA (tx,1)) + (DigA (ty,1)))) * ((Radix k) |^ 1))
by A53, A56, A55, A59, RADIX_2:11;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A53, RADIX_2:11;
verum
end;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A58, A54, A57;
verum
end;
for n being Nat st n >= 1 holds
S1[n]
from NAT_1:sch 8(A52, A1);
hence
for n being Nat st n >= 1 holds
for k being Nat st k >= 2 holds
for tx, ty, tz, tw being Tuple of n,k -SD st ( for i being Nat holds
( not i in Seg n or ( DigA (tx,i) = DigA (tz,i) & DigA (ty,i) = DigA (tw,i) ) or ( DigA (ty,i) = DigA (tz,i) & DigA (tx,i) = DigA (tw,i) ) ) ) holds
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
; verum