let h, i be Integer; for n being non zero Nat st - (2 to_power (n -' 1)) <= h & h <= (2 to_power (n -' 1)) - 1 & - (2 to_power (n -' 1)) <= i & i <= (2 to_power (n -' 1)) - 1 & - (2 to_power (n -' 1)) <= h + i & h + i <= (2 to_power (n -' 1)) - 1 & ( ( h >= 0 & i < 0 ) or ( h < 0 & i >= 0 ) ) holds
Intval ((2sComplement (n,h)) + (2sComplement (n,i))) = h + i
defpred S1[ non zero Nat] means ( - (2 to_power ($1 -' 1)) <= h & h <= (2 to_power ($1 -' 1)) - 1 & - (2 to_power ($1 -' 1)) <= i & i <= (2 to_power ($1 -' 1)) - 1 & - (2 to_power ($1 -' 1)) <= h + i & h + i <= (2 to_power ($1 -' 1)) - 1 & ( ( h >= 0 & i < 0 ) or ( h < 0 & i >= 0 ) ) implies Intval ((2sComplement ($1,h)) + (2sComplement ($1,i))) = h + i );
A1:
for n being non zero Nat st S1[n] holds
S1[n + 1]
proof
let n be non
zero Nat;
( S1[n] implies S1[n + 1] )
assume
(
- (2 to_power (n -' 1)) <= h &
h <= (2 to_power (n -' 1)) - 1 &
- (2 to_power (n -' 1)) <= i &
i <= (2 to_power (n -' 1)) - 1 &
- (2 to_power (n -' 1)) <= h + i &
h + i <= (2 to_power (n -' 1)) - 1 & ( (
h >= 0 &
i < 0 ) or (
h < 0 &
i >= 0 ) ) implies
Intval ((2sComplement (n,h)) + (2sComplement (n,i))) = h + i )
;
S1[n + 1]
assume that A2:
- (2 to_power ((n + 1) -' 1)) <= h
and A3:
h <= (2 to_power ((n + 1) -' 1)) - 1
and A4:
- (2 to_power ((n + 1) -' 1)) <= i
and A5:
i <= (2 to_power ((n + 1) -' 1)) - 1
and
- (2 to_power ((n + 1) -' 1)) <= h + i
and
h + i <= (2 to_power ((n + 1) -' 1)) - 1
and A6:
( (
h >= 0 &
i < 0 ) or (
h < 0 &
i >= 0 ) )
;
Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + i
set H =
2sComplement (
n,
h);
set I =
2sComplement (
n,
i);
set H1 =
2sComplement (
(n + 1),
h);
set I1 =
2sComplement (
(n + 1),
i);
set n2 = 2
to_power n;
set F =
FALSE ;
set T =
TRUE ;
A7:
(n + 1) - 1
= n
;
then A8:
- (2 to_power n) <= h
by A2, XREAL_0:def 2;
A9:
i <= (2 to_power n) - 1
by A5, A7, XREAL_0:def 2;
A10:
( ex
a being
Element of
BOOLEAN st
2sComplement (
(n + 1),
h)
= (2sComplement (n,h)) ^ <*a*> & ex
b being
Element of
BOOLEAN st
2sComplement (
(n + 1),
i)
= (2sComplement (n,i)) ^ <*b*> )
by Th33;
A11:
- (2 to_power n) <= i
by A4, A7, XREAL_0:def 2;
A12:
h <= (2 to_power n) - 1
by A3, A7, XREAL_0:def 2;
now Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + iper cases
( ( h >= 0 & i < 0 ) or ( h < 0 & i >= 0 ) )
by A6;
suppose A13:
(
h >= 0 &
i < 0 )
;
Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + i(2 to_power (n + 1)) + (- (2 to_power n)) =
(- (2 to_power n)) + ((2 to_power 1) * (2 to_power n))
by POWER:27
.=
(- (2 to_power n)) + (2 * (2 to_power n))
by POWER:25
.=
2
to_power n
;
then A14:
2
to_power n <= (2 to_power (n + 1)) + i
by A11, XREAL_1:6;
then reconsider NI =
(2 to_power (n + 1)) + i as
Element of
NAT by INT_1:3;
n < n + 1
by XREAL_1:29;
then A15:
2
to_power n < 2
to_power (n + 1)
by POWER:39;
|.i.| = - i
by A13, ABSVALUE:def 1;
then
|.i.| <= - (- (2 to_power n))
by A11, XREAL_1:24;
then A16:
MajP (
(n + 1),
|.i.|)
= n + 1
by A15, Th24, XXREAL_0:2;
then A17:
2sComplement (
(n + 1),
i) =
(n + 1) -BinarySequence |.((2 to_power (n + 1)) + i).|
by A13, Def2
.=
(n + 1) -BinarySequence NI
by ABSVALUE:def 1
;
A18:
(2 to_power (n + 1)) + i < (2 to_power (n + 1)) + 0
by A13, XREAL_1:8;
reconsider h =
h as
Element of
NAT by A13, INT_1:3;
A19:
h < 2
to_power n
by A12, XREAL_1:146, XXREAL_0:2;
A20:
2sComplement (
(n + 1),
h) =
(n + 1) -BinarySequence |.h.|
by Def2
.=
(n + 1) -BinarySequence h
by ABSVALUE:def 1
;
then A21:
(2sComplement ((n + 1),h)) . (n + 1) = FALSE
by A19, BINARI_3:26;
n + 0 < n + 1
by XREAL_1:8;
then
2
to_power n < 2
to_power (n + 1)
by POWER:39;
then A22:
h < 2
to_power (n + 1)
by A19, XXREAL_0:2;
A23:
1
<= n + 1
by NAT_1:11;
len (2sComplement ((n + 1),i)) = n + 1
by CARD_1:def 7;
then A24:
(2sComplement ((n + 1),i)) /. (n + 1) = (2sComplement ((n + 1),i)) . (n + 1)
by A23, FINSEQ_4:15;
A25:
(2sComplement ((n + 1),i)) . (n + 1) =
((n + 1) -BinarySequence |.((2 to_power (n + 1)) + i).|) . (n + 1)
by A13, A16, Def2
.=
((n + 1) -BinarySequence NI) . (n + 1)
by ABSVALUE:def 1
.=
TRUE
by A18, A14, BINARI_3:29
;
then A26:
Intval (2sComplement ((n + 1),i)) =
(Absval (2sComplement ((n + 1),i))) - (2 to_power (n + 1))
by A24, BINARI_2:def 3
.=
NI - (2 to_power (n + 1))
by A18, A17, BINARI_3:35
.=
i
;
len (2sComplement ((n + 1),h)) = n + 1
by CARD_1:def 7;
then A27:
(2sComplement ((n + 1),h)) /. (n + 1) = (2sComplement ((n + 1),h)) . (n + 1)
by A23, FINSEQ_4:15;
then A28:
Int_add_ovfl (
(2sComplement ((n + 1),h)),
(2sComplement ((n + 1),i))) =
(('not' FALSE) '&' ('not' TRUE)) '&' ((carry ((2sComplement ((n + 1),h)),(2sComplement ((n + 1),i)))) /. (n + 1))
by A21, A25, A24, BINARI_2:def 4
.=
FALSE
;
A29:
Int_add_udfl (
(2sComplement ((n + 1),h)),
(2sComplement ((n + 1),i))) =
(FALSE '&' TRUE) '&' ('not' ((carry ((2sComplement ((n + 1),h)),(2sComplement ((n + 1),i)))) /. (n + 1)))
by A21, A25, A27, A24, BINARI_2:def 5
.=
FALSE
;
Intval (2sComplement ((n + 1),h)) =
Absval (2sComplement ((n + 1),h))
by A21, A27, BINARI_2:def 3
.=
h
by A20, A22, BINARI_3:35
;
then Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) =
((h + i) - (IFEQ (FALSE,FALSE,0,(2 to_power (n + 1))))) + (IFEQ (FALSE,FALSE,0,(2 to_power (n + 1))))
by A10, A26, A28, A29, BINARI_2:12
.=
((h + i) - 0) + 0
;
hence
Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + i
;
verum end; suppose A30:
(
h < 0 &
i >= 0 )
;
Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + i(2 to_power (n + 1)) + (- (2 to_power n)) =
(- (2 to_power n)) + ((2 to_power 1) * (2 to_power n))
by POWER:27
.=
(- (2 to_power n)) + (2 * (2 to_power n))
by POWER:25
.=
2
to_power n
;
then A31:
2
to_power n <= (2 to_power (n + 1)) + h
by A8, XREAL_1:6;
then reconsider NH =
(2 to_power (n + 1)) + h as
Element of
NAT by INT_1:3;
n < n + 1
by XREAL_1:29;
then A32:
2
to_power n < 2
to_power (n + 1)
by POWER:39;
|.h.| = - h
by A30, ABSVALUE:def 1;
then
|.h.| <= - (- (2 to_power n))
by A8, XREAL_1:24;
then A33:
MajP (
(n + 1),
|.h.|)
= n + 1
by A32, Th24, XXREAL_0:2;
then A34:
2sComplement (
(n + 1),
h) =
(n + 1) -BinarySequence |.((2 to_power (n + 1)) + h).|
by A30, Def2
.=
(n + 1) -BinarySequence NH
by ABSVALUE:def 1
;
A35:
(2 to_power (n + 1)) + h < (2 to_power (n + 1)) + 0
by A30, XREAL_1:8;
reconsider i =
i as
Element of
NAT by A30, INT_1:3;
A36:
i < 2
to_power n
by A9, XREAL_1:146, XXREAL_0:2;
A37:
2sComplement (
(n + 1),
i) =
(n + 1) -BinarySequence |.i.|
by Def2
.=
(n + 1) -BinarySequence i
by ABSVALUE:def 1
;
then A38:
(2sComplement ((n + 1),i)) . (n + 1) = FALSE
by A36, BINARI_3:26;
n + 0 < n + 1
by XREAL_1:8;
then
2
to_power n < 2
to_power (n + 1)
by POWER:39;
then A39:
i < 2
to_power (n + 1)
by A36, XXREAL_0:2;
A40:
1
<= n + 1
by NAT_1:11;
len (2sComplement ((n + 1),h)) = n + 1
by CARD_1:def 7;
then A41:
(2sComplement ((n + 1),h)) /. (n + 1) = (2sComplement ((n + 1),h)) . (n + 1)
by A40, FINSEQ_4:15;
A42:
(2sComplement ((n + 1),h)) . (n + 1) =
((n + 1) -BinarySequence |.((2 to_power (n + 1)) + h).|) . (n + 1)
by A30, A33, Def2
.=
((n + 1) -BinarySequence NH) . (n + 1)
by ABSVALUE:def 1
.=
TRUE
by A35, A31, BINARI_3:29
;
then A43:
Intval (2sComplement ((n + 1),h)) =
(Absval (2sComplement ((n + 1),h))) - (2 to_power (n + 1))
by A41, BINARI_2:def 3
.=
NH - (2 to_power (n + 1))
by A35, A34, BINARI_3:35
.=
h
;
len (2sComplement ((n + 1),i)) = n + 1
by CARD_1:def 7;
then A44:
(2sComplement ((n + 1),i)) /. (n + 1) = (2sComplement ((n + 1),i)) . (n + 1)
by A40, FINSEQ_4:15;
then A45:
Int_add_ovfl (
(2sComplement ((n + 1),h)),
(2sComplement ((n + 1),i))) =
(('not' TRUE) '&' ('not' FALSE)) '&' ((carry ((2sComplement ((n + 1),h)),(2sComplement ((n + 1),i)))) /. (n + 1))
by A38, A42, A41, BINARI_2:def 4
.=
FALSE
;
A46:
Int_add_udfl (
(2sComplement ((n + 1),h)),
(2sComplement ((n + 1),i))) =
(TRUE '&' FALSE) '&' ('not' ((carry ((2sComplement ((n + 1),h)),(2sComplement ((n + 1),i)))) /. (n + 1)))
by A38, A42, A44, A41, BINARI_2:def 5
.=
FALSE
;
Intval (2sComplement ((n + 1),i)) =
Absval (2sComplement ((n + 1),i))
by A38, A44, BINARI_2:def 3
.=
i
by A37, A39, BINARI_3:35
;
then Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) =
((h + i) - (IFEQ (FALSE,FALSE,0,(2 to_power (n + 1))))) + (IFEQ (FALSE,FALSE,0,(2 to_power (n + 1))))
by A10, A43, A45, A46, BINARI_2:12
.=
((h + i) - 0) + 0
;
hence
Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + i
;
verum end; end; end;
hence
Intval ((2sComplement ((n + 1),h)) + (2sComplement ((n + 1),i))) = h + i
;
verum
end;
A47:
S1[1]
proof
A48:
|.(- 1).| =
- (- 1)
by ABSVALUE:def 1
.=
1
;
( 2
to_power 1
= 2 & ( for
k being
Nat st 2
to_power k >= 1 &
k >= 1 holds
k >= 1 ) )
by POWER:25;
then
MajP (1,
|.(- 1).|)
= 1
by A48, Def1;
then A49:
2sComplement (1,
(- 1)) =
1
-BinarySequence |.((2 to_power 1) + (- 1)).|
by Def2
.=
1
-BinarySequence |.(2 + (- 1)).|
by POWER:25
.=
1
-BinarySequence 1
by ABSVALUE:def 1
.=
(0 + 1) -BinarySequence (2 to_power 0)
by POWER:24
.=
(0* 0) ^ <*1*>
by BINARI_3:28
.=
<*TRUE*>
by FINSEQ_1:34
;
assume that A50:
- (2 to_power (1 -' 1)) <= h
and A51:
h <= (2 to_power (1 -' 1)) - 1
and A52:
- (2 to_power (1 -' 1)) <= i
and A53:
i <= (2 to_power (1 -' 1)) - 1
and
- (2 to_power (1 -' 1)) <= h + i
and
h + i <= (2 to_power (1 -' 1)) - 1
and A54:
( (
h >= 0 &
i < 0 ) or (
h < 0 &
i >= 0 ) )
;
Intval ((2sComplement (1,h)) + (2sComplement (1,i))) = h + i
A55: 1
-' 1 =
1
- 1
by XREAL_0:def 2
.=
0
;
then A56:
h <= 1
- 1
by A51, POWER:24;
A57:
i <= 1
- 1
by A53, A55, POWER:24;
A58:
- 1
<= i
by A52, A55, POWER:24;
A59:
2sComplement (1,
0) =
1
-BinarySequence |.0.|
by Def2
.=
1
-BinarySequence 0
by ABSVALUE:def 1
.=
0* 1
by BINARI_3:25
.=
<*FALSE*>
by FINSEQ_2:59
;
A60:
- 1
<= h
by A50, A55, POWER:24;
hence
Intval ((2sComplement (1,h)) + (2sComplement (1,i))) = h + i
;
verum
end;
thus
for n being non zero Nat holds S1[n]
from NAT_1:sch 10(A47, A1); verum