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:
S1[1]
proof
let k be
Nat;
:: thesis: ( 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 A2:
k >= 2
;
:: thesis: 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 );
:: thesis: ( ( 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) )
assume A3:
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 ) )
;
:: thesis: (SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
A4:
1
in Seg 1
by FINSEQ_1:3;
A5:
SDDec (tz '+' tw) =
DigA (tz '+' tw),1
by Th4
.=
Add tz,
tw,1,
k
by A4, 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 A2, A4, 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:234
.=
(SD_Add_Data ((DigA tz,1) + (DigA tw,1)),k) + (SD_Add_Carry ((DigA tz,0 ) + (DigA tw,0 )))
by XREAL_1:234
.=
(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
;
A6:
SDDec (tx '+' ty) =
DigA (tx '+' ty),1
by Th4
.=
Add tx,
ty,1,
k
by A4, 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 A2, A4, 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:234
.=
(SD_Add_Data ((DigA tx,1) + (DigA ty,1)),k) + (SD_Add_Carry ((DigA tx,0 ) + (DigA ty,0 )))
by XREAL_1:234
.=
(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
;
A7:
( (
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 A3, A4;
A8:
(
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 )
;
:: thesis: (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 A2, A5, A6, RADIX_2:11;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A2, RADIX_2:11;
:: thesis: verum
end;
(
DigA ty,1
= DigA tz,1 &
DigA tx,1
= DigA tw,1 implies
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty) )
proof
assume
(
DigA ty,1
= DigA tz,1 &
DigA tx,1
= DigA tw,1 )
;
:: thesis: (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 A2, A5, A6, A7, RADIX_2:11;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A2, RADIX_2:11;
:: thesis: verum
end;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A3, A4, A8;
:: 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 A10:
(
n >= 1 &
S1[
n] )
;
:: thesis: S1[n + 1]
let k be
Nat;
:: thesis: ( 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 A11:
k >= 2
;
:: thesis: 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 );
:: thesis: ( ( 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 A12:
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 ) )
;
:: thesis: (SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
deffunc H1(
Nat)
-> Element of
K404() =
DigB tx,$1;
consider txn being
FinSequence of
INT such that A13:
len txn = n
and A14:
for
i being
Nat st
i in dom txn holds
txn . i = H1(
i)
from FINSEQ_2:sch 1();
A15:
dom txn = Seg n
by A13, FINSEQ_1:def 3;
rng txn c= k -SD
then reconsider txn =
txn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A20:
for
i being
Nat st
i in Seg n holds
txn . i = tx . i
deffunc H2(
Nat)
-> Element of
K404() =
DigB ty,$1;
consider tyn being
FinSequence of
INT such that A23:
len tyn = n
and A24:
for
i being
Nat st
i in dom tyn holds
tyn . i = H2(
i)
from FINSEQ_2:sch 1();
A25:
dom tyn = Seg n
by A23, FINSEQ_1:def 3;
rng tyn c= k -SD
then reconsider tyn =
tyn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A30:
for
i being
Nat st
i in Seg n holds
tyn . i = ty . i
deffunc H3(
Nat)
-> Element of
K404() =
DigB tz,$1;
consider tzn being
FinSequence of
INT such that A33:
len tzn = n
and A34:
for
i being
Nat st
i in dom tzn holds
tzn . i = H3(
i)
from FINSEQ_2:sch 1();
A35:
dom tzn = Seg n
by A33, FINSEQ_1:def 3;
rng tzn c= k -SD
then reconsider tzn =
tzn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A40:
for
i being
Nat st
i in Seg n holds
tzn . i = tz . i
deffunc H4(
Nat)
-> Element of
K404() =
DigB tw,$1;
consider twn being
FinSequence of
INT such that A43:
len twn = n
and A44:
for
i being
Nat st
i in dom twn holds
twn . i = H4(
i)
from FINSEQ_2:sch 1();
A45:
dom twn = Seg n
by A43, FINSEQ_1:def 3;
rng twn c= k -SD
then reconsider twn =
twn as
FinSequence of
k -SD by FINSEQ_1:def 4;
A50:
for
i being
Nat st
i in Seg n holds
twn . i = tw . i
reconsider n =
n as
Element of
NAT by ORDINAL1:def 13;
reconsider txn =
txn as
Tuple of
n,
(k -SD ) by A13, FINSEQ_2:110;
reconsider tyn =
tyn as
Tuple of
n,
(k -SD ) by A23, FINSEQ_2:110;
reconsider tzn =
tzn as
Tuple of
n,
(k -SD ) by A33, FINSEQ_2:110;
reconsider twn =
twn as
Tuple of
n,
(k -SD ) by A43, FINSEQ_2:110;
A53:
(SDDec txn) + (((Radix k) |^ n) * (DigA tx,(n + 1))) = SDDec tx
by A20, RADIX_2:10;
A54:
(SDDec tyn) + (((Radix k) |^ n) * (DigA ty,(n + 1))) = SDDec ty
by A30, RADIX_2:10;
A55:
(SDDec tzn) + (((Radix k) |^ n) * (DigA tz,(n + 1))) = SDDec tz
by A40, RADIX_2:10;
A56:
(SDDec twn) + (((Radix k) |^ n) * (DigA tw,(n + 1))) = SDDec tw
by A50, RADIX_2:10;
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;
:: thesis: ( 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 A57:
i in Seg n
;
:: thesis: ( ( 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 A58:
( 1
<= i &
i <= n )
by FINSEQ_1:3;
then
i <= n + 1
by NAT_1:12;
then A59:
i in Seg (n + 1)
by A58, FINSEQ_1:3;
then A60:
DigA tx,
i =
tx . i
by RADIX_1:def 3
.=
txn . i
by A20, A57
.=
DigA txn,
i
by A57, RADIX_1:def 3
;
A61:
DigA ty,
i =
ty . i
by A59, RADIX_1:def 3
.=
tyn . i
by A30, A57
.=
DigA tyn,
i
by A57, RADIX_1:def 3
;
A62:
DigA tz,
i =
tz . i
by A59, RADIX_1:def 3
.=
tzn . i
by A40, A57
.=
DigA tzn,
i
by A57, RADIX_1:def 3
;
DigA tw,
i =
tw . i
by A59, RADIX_1:def 3
.=
twn . i
by A50, A57
.=
DigA twn,
i
by A57, 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 A12, A59, A60, A61, A62;
:: thesis: verum
end;
then A63:
(SDDec tzn) + (SDDec twn) = (SDDec txn) + (SDDec tyn)
by A10, A11;
n + 1
in Seg (n + 1)
by FINSEQ_1:5;
then
( (
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 A12;
hence
(SDDec tz) + (SDDec tw) = (SDDec tx) + (SDDec ty)
by A53, A54, A55, A56, A63;
:: 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 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)
; :: thesis: verum