let n be non zero Nat; for x, y being Tuple of n, BOOLEAN st x = 0* n & y = 0* n holds
x + y = 0* n
let x, y be Tuple of n, BOOLEAN ; ( x = 0* n & y = 0* n implies x + y = 0* n )
assume that
A1:
x = 0* n
and
A2:
y = 0* n
; x + y = 0* n
for k being Nat st k in Seg n holds
(x + y) . k = (0* n) . k
proof
let k be
Nat;
( k in Seg n implies (x + y) . k = (0* n) . k )
assume A3:
k in Seg n
;
(x + y) . k = (0* n) . k
reconsider k =
k as
Nat ;
A4:
(0* n) . k = FALSE
;
A5:
1
<= k
by A3, FINSEQ_1:1;
len x = n
by CARD_1:def 7;
then
k <= len x
by A3, FINSEQ_1:1;
then A6:
y /. k = FALSE
by A1, A2, A4, A5, FINSEQ_4:15;
len (carry (x,y)) = n
by CARD_1:def 7;
then
k <= len (carry (x,y))
by A3, FINSEQ_1:1;
then A7:
(carry (x,y)) /. k =
(carry (x,y)) . k
by A5, FINSEQ_4:15
.=
FALSE
by A1, A2, A4, Th5
;
len (x + y) = n
by CARD_1:def 7;
then
k <= len (x + y)
by A3, FINSEQ_1:1;
then (x + y) . k =
(x + y) /. k
by A5, FINSEQ_4:15
.=
FALSE 'xor' FALSE
by A1, A2, A3, A6, A7, BINARITH:def 5
.=
FALSE
;
hence
(x + y) . k = (0* n) . k
;
verum
end;
hence
x + y = 0* n
by A1, FINSEQ_2:119; verum