MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  bitsmod Unicode version

Theorem bitsmod 12877
Description: Truncating the bit sequence after some  M is equivalent to reducing the argument  mod  2 ^ M. (Contributed by Mario Carneiro, 6-Sep-2016.)
Assertion
Ref Expression
bitsmod  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
(bits `  ( N  mod  ( 2 ^ M
) ) )  =  ( (bits `  N
)  i^i  ( 0..^ M ) ) )

Proof of Theorem bitsmod
Dummy variable  x is distinct from all other variables.
StepHypRef Expression
1 simpl 444 . . . . . . . 8  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  ->  N  e.  ZZ )
2 2nn 10067 . . . . . . . . . 10  |-  2  e.  NN
32a1i 11 . . . . . . . . 9  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
2  e.  NN )
4 simpr 448 . . . . . . . . 9  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  ->  M  e.  NN0 )
53, 4nnexpcld 11473 . . . . . . . 8  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( 2 ^ M
)  e.  NN )
61, 5zmodcld 11196 . . . . . . 7  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( N  mod  (
2 ^ M ) )  e.  NN0 )
76nn0zd 10307 . . . . . 6  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( N  mod  (
2 ^ M ) )  e.  ZZ )
87biantrurd 495 . . . . 5  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( ( x  e. 
NN0  /\  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) )  <->  ( ( N  mod  ( 2 ^ M ) )  e.  ZZ  /\  ( x  e.  NN0  /\  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) ) ) ) )
91ad2antrr 707 . . . . . . . . . . 11  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  N  e.  ZZ )
10 simplr 732 . . . . . . . . . . 11  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  x  e.  NN0 )
11 bitsval2 12866 . . . . . . . . . . 11  |-  ( ( N  e.  ZZ  /\  x  e.  NN0 )  -> 
( x  e.  (bits `  N )  <->  -.  2  ||  ( |_ `  ( N  /  ( 2 ^ x ) ) ) ) )
129, 10, 11syl2anc 643 . . . . . . . . . 10  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
x  e.  (bits `  N )  <->  -.  2  ||  ( |_ `  ( N  /  ( 2 ^ x ) ) ) ) )
13 simpr 448 . . . . . . . . . . 11  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  x  <  M )
1413biantrud 494 . . . . . . . . . 10  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
x  e.  (bits `  N )  <->  ( x  e.  (bits `  N )  /\  x  <  M ) ) )
15 2z 10246 . . . . . . . . . . . . 13  |-  2  e.  ZZ
1615a1i 11 . . . . . . . . . . . 12  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  2  e.  ZZ )
179zred 10309 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  N  e.  RR )
182a1i 11 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  2  e.  NN )
1918, 10nnexpcld 11473 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ x )  e.  NN )
2017, 19nndivred 9982 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  /  ( 2 ^ x ) )  e.  RR )
2120flcld 11136 . . . . . . . . . . . 12  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( |_ `  ( N  / 
( 2 ^ x
) ) )  e.  ZZ )
227ad2antrr 707 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  mod  ( 2 ^ M ) )  e.  ZZ )
2322zred 10309 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  mod  ( 2 ^ M ) )  e.  RR )
2423, 19nndivred 9982 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) )  e.  RR )
2524flcld 11136 . . . . . . . . . . . 12  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) )  e.  ZZ )
26 2cn 10004 . . . . . . . . . . . . . . . . . . 19  |-  2  e.  CC
2726a1i 11 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  2  e.  CC )
2827, 10expp1d 11453 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ ( x  +  1 ) )  =  ( ( 2 ^ x )  x.  2 ) )
29 1nn0 10171 . . . . . . . . . . . . . . . . . . . 20  |-  1  e.  NN0
3029a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  1  e.  NN0 )
3110, 30nn0addcld 10212 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
x  +  1 )  e.  NN0 )
3231nn0zd 10307 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
x  +  1 )  e.  ZZ )
33 simplr 732 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( N  e.  ZZ  /\  M  e.  NN0 )  /\  x  e.  NN0 )  ->  M  e.  NN0 )
3433adantr 452 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  M  e.  NN0 )
3534nn0zd 10307 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  M  e.  ZZ )
36 nn0ltp1le 10266 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( x  e.  NN0  /\  M  e.  NN0 )  -> 
( x  <  M  <->  ( x  +  1 )  <_  M ) )
3710, 34, 36syl2anc 643 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
x  <  M  <->  ( x  +  1 )  <_  M ) )
3813, 37mpbid 202 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
x  +  1 )  <_  M )
39 eluz2 10428 . . . . . . . . . . . . . . . . . . 19  |-  ( M  e.  ( ZZ>= `  (
x  +  1 ) )  <->  ( ( x  +  1 )  e.  ZZ  /\  M  e.  ZZ  /\  ( x  +  1 )  <_  M ) )
4032, 35, 38, 39syl3anbrc 1138 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  M  e.  ( ZZ>= `  ( x  +  1 ) ) )
41 dvdsexp 12834 . . . . . . . . . . . . . . . . . 18  |-  ( ( 2  e.  ZZ  /\  ( x  +  1
)  e.  NN0  /\  M  e.  ( ZZ>= `  ( x  +  1
) ) )  -> 
( 2 ^ (
x  +  1 ) )  ||  ( 2 ^ M ) )
4216, 31, 40, 41syl3anc 1184 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ ( x  +  1 ) ) 
||  ( 2 ^ M ) )
4328, 42eqbrtrrd 4177 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ x
)  x.  2 ) 
||  ( 2 ^ M ) )
445ad2antrr 707 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ M )  e.  NN )
4544nnrpd 10581 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ M )  e.  RR+ )
46 moddifz 11189 . . . . . . . . . . . . . . . . . 18  |-  ( ( N  e.  RR  /\  ( 2 ^ M
)  e.  RR+ )  ->  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ M ) )  e.  ZZ )
4717, 45, 46syl2anc 643 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ M ) )  e.  ZZ )
4844nnzd 10308 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ M )  e.  ZZ )
49 2ne0 10017 . . . . . . . . . . . . . . . . . . . 20  |-  2  =/=  0
5049a1i 11 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  2  =/=  0 )
5127, 50, 35expne0d 11458 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ M )  =/=  0 )
529, 22zsubcld 10314 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  -  ( N  mod  ( 2 ^ M
) ) )  e.  ZZ )
53 dvdsval2 12784 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( 2 ^ M
)  e.  ZZ  /\  ( 2 ^ M
)  =/=  0  /\  ( N  -  ( N  mod  ( 2 ^ M ) ) )  e.  ZZ )  -> 
( ( 2 ^ M )  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) )  <->  ( ( N  -  ( N  mod  ( 2 ^ M
) ) )  / 
( 2 ^ M
) )  e.  ZZ ) )
5448, 51, 52, 53syl3anc 1184 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ M
)  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) )  <->  ( ( N  -  ( N  mod  ( 2 ^ M
) ) )  / 
( 2 ^ M
) )  e.  ZZ ) )
5547, 54mpbird 224 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ M ) 
||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )
5619nnzd 10308 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ x )  e.  ZZ )
5756, 16zmulcld 10315 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ x
)  x.  2 )  e.  ZZ )
58 dvdstr 12812 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( 2 ^ x )  x.  2 )  e.  ZZ  /\  ( 2 ^ M
)  e.  ZZ  /\  ( N  -  ( N  mod  ( 2 ^ M ) ) )  e.  ZZ )  -> 
( ( ( ( 2 ^ x )  x.  2 )  ||  ( 2 ^ M
)  /\  ( 2 ^ M )  ||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )  ->  ( (
2 ^ x )  x.  2 )  ||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) ) )
5957, 48, 52, 58syl3anc 1184 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( ( ( 2 ^ x )  x.  2 )  ||  (
2 ^ M )  /\  ( 2 ^ M )  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) ) )  ->  ( ( 2 ^ x )  x.  2 )  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) ) ) )
6043, 55, 59mp2and 661 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ x
)  x.  2 ) 
||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )
6152zcnd 10310 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  -  ( N  mod  ( 2 ^ M
) ) )  e.  CC )
6219nncnd 9950 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ x )  e.  CC )
6310nn0zd 10307 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  x  e.  ZZ )
6427, 50, 63expne0d 11458 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ x )  =/=  0 )
6561, 62, 64divcan2d 9726 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ x
)  x.  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )  =  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )
6660, 65breqtrrd 4181 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ x
)  x.  2 ) 
||  ( ( 2 ^ x )  x.  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
6710nn0red 10209 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  x  e.  RR )
6834nn0red 10209 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  M  e.  RR )
6967, 68, 13ltled 9155 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  x  <_  M )
70 eluz2 10428 . . . . . . . . . . . . . . . . . . 19  |-  ( M  e.  ( ZZ>= `  x
)  <->  ( x  e.  ZZ  /\  M  e.  ZZ  /\  x  <_  M ) )
7163, 35, 69, 70syl3anbrc 1138 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  M  e.  ( ZZ>= `  x )
)
72 dvdsexp 12834 . . . . . . . . . . . . . . . . . 18  |-  ( ( 2  e.  ZZ  /\  x  e.  NN0  /\  M  e.  ( ZZ>= `  x )
)  ->  ( 2 ^ x )  ||  ( 2 ^ M
) )
7316, 10, 71, 72syl3anc 1184 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ x ) 
||  ( 2 ^ M ) )
74 dvdstr 12812 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( 2 ^ x
)  e.  ZZ  /\  ( 2 ^ M
)  e.  ZZ  /\  ( N  -  ( N  mod  ( 2 ^ M ) ) )  e.  ZZ )  -> 
( ( ( 2 ^ x )  ||  ( 2 ^ M
)  /\  ( 2 ^ M )  ||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )  ->  ( 2 ^ x )  ||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) ) )
7556, 48, 52, 74syl3anc 1184 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( ( 2 ^ x )  ||  (
2 ^ M )  /\  ( 2 ^ M )  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) ) )  ->  ( 2 ^ x )  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) ) ) )
7673, 55, 75mp2and 661 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2 ^ x ) 
||  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )
77 dvdsval2 12784 . . . . . . . . . . . . . . . . 17  |-  ( ( ( 2 ^ x
)  e.  ZZ  /\  ( 2 ^ x
)  =/=  0  /\  ( N  -  ( N  mod  ( 2 ^ M ) ) )  e.  ZZ )  -> 
( ( 2 ^ x )  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) )  <->  ( ( N  -  ( N  mod  ( 2 ^ M
) ) )  / 
( 2 ^ x
) )  e.  ZZ ) )
7856, 64, 52, 77syl3anc 1184 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( 2 ^ x
)  ||  ( N  -  ( N  mod  ( 2 ^ M
) ) )  <->  ( ( N  -  ( N  mod  ( 2 ^ M
) ) )  / 
( 2 ^ x
) )  e.  ZZ ) )
7976, 78mpbid 202 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) )  e.  ZZ )
80 dvdscmulr 12807 . . . . . . . . . . . . . . 15  |-  ( ( 2  e.  ZZ  /\  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) )  e.  ZZ  /\  (
( 2 ^ x
)  e.  ZZ  /\  ( 2 ^ x
)  =/=  0 ) )  ->  ( (
( 2 ^ x
)  x.  2 ) 
||  ( ( 2 ^ x )  x.  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )  <->  2  ||  (
( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
8116, 79, 56, 64, 80syl112anc 1188 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( ( 2 ^ x )  x.  2 )  ||  ( ( 2 ^ x )  x.  ( ( N  -  ( N  mod  ( 2 ^ M
) ) )  / 
( 2 ^ x
) ) )  <->  2  ||  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
8266, 81mpbid 202 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  2  ||  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )
8322zcnd 10310 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  mod  ( 2 ^ M ) )  e.  CC )
849zcnd 10310 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  N  e.  CC )
8583, 84pncan3d 9348 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( N  mod  (
2 ^ M ) )  +  ( N  -  ( N  mod  ( 2 ^ M
) ) ) )  =  N )
8685oveq1d 6037 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( ( N  mod  ( 2 ^ M
) )  +  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )  /  ( 2 ^ x ) )  =  ( N  / 
( 2 ^ x
) ) )
8783, 61, 62, 64divdird 9762 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( ( N  mod  ( 2 ^ M
) )  +  ( N  -  ( N  mod  ( 2 ^ M ) ) ) )  /  ( 2 ^ x ) )  =  ( ( ( N  mod  ( 2 ^ M ) )  /  ( 2 ^ x ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
8886, 87eqtr3d 2423 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( N  /  ( 2 ^ x ) )  =  ( ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
8988fveq2d 5674 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( |_ `  ( N  / 
( 2 ^ x
) ) )  =  ( |_ `  (
( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) ) )
90 fladdz 11156 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  e.  RR  /\  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) )  e.  ZZ )  -> 
( |_ `  (
( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )  =  ( ( |_ `  ( ( N  mod  ( 2 ^ M ) )  /  ( 2 ^ x ) ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M
) ) )  / 
( 2 ^ x
) ) ) )
9124, 79, 90syl2anc 643 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( |_ `  ( ( ( N  mod  ( 2 ^ M ) )  /  ( 2 ^ x ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )  =  ( ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
9289, 91eqtrd 2421 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( |_ `  ( N  / 
( 2 ^ x
) ) )  =  ( ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) ) )
9392oveq1d 6037 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( |_ `  ( N  /  ( 2 ^ x ) ) )  -  ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) ) )  =  ( ( ( |_
`  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )  -  ( |_
`  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) ) ) )
9425zcnd 10310 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) )  e.  CC )
9579zcnd 10310 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) )  e.  CC )
9694, 95pncan2d 9347 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) )  +  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )  -  ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) ) )  =  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )
9793, 96eqtrd 2421 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( |_ `  ( N  /  ( 2 ^ x ) ) )  -  ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) ) )  =  ( ( N  -  ( N  mod  ( 2 ^ M ) ) )  /  ( 2 ^ x ) ) )
9882, 97breqtrrd 4181 . . . . . . . . . . . 12  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  2  ||  ( ( |_ `  ( N  /  (
2 ^ x ) ) )  -  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) ) ) )
99 dvdssub2 12816 . . . . . . . . . . . 12  |-  ( ( ( 2  e.  ZZ  /\  ( |_ `  ( N  /  ( 2 ^ x ) ) )  e.  ZZ  /\  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) )  e.  ZZ )  /\  2  ||  ( ( |_ `  ( N  /  (
2 ^ x ) ) )  -  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) ) ) )  ->  ( 2 
||  ( |_ `  ( N  /  (
2 ^ x ) ) )  <->  2  ||  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  /  ( 2 ^ x ) ) ) ) )
10016, 21, 25, 98, 99syl31anc 1187 . . . . . . . . . . 11  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
2  ||  ( |_ `  ( N  /  (
2 ^ x ) ) )  <->  2  ||  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  /  ( 2 ^ x ) ) ) ) )
101100notbid 286 . . . . . . . . . 10  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  ( -.  2  ||  ( |_
`  ( N  / 
( 2 ^ x
) ) )  <->  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) ) )
10212, 14, 1013bitr3d 275 . . . . . . . . 9  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  x  <  M )  ->  (
( x  e.  (bits `  N )  /\  x  <  M )  <->  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) ) )
103 dvds0 12794 . . . . . . . . . . . . 13  |-  ( 2  e.  ZZ  ->  2  ||  0 )
10415, 103ax-mp 8 . . . . . . . . . . . 12  |-  2  ||  0
1051ad2antrr 707 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  N  e.  ZZ )
106105zred 10309 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  N  e.  RR )
107 2rp 10551 . . . . . . . . . . . . . . . . 17  |-  2  e.  RR+
108107a1i 11 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
2  e.  RR+ )
10933nn0zd 10307 . . . . . . . . . . . . . . . . 17  |-  ( ( ( N  e.  ZZ  /\  M  e.  NN0 )  /\  x  e.  NN0 )  ->  M  e.  ZZ )
110109adantr 452 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  M  e.  ZZ )
111108, 110rpexpcld 11475 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2 ^ M
)  e.  RR+ )
112106, 111modcld 11183 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( N  mod  (
2 ^ M ) )  e.  RR )
113 simplr 732 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  x  e.  NN0 )
114113nn0zd 10307 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  x  e.  ZZ )
115108, 114rpexpcld 11475 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2 ^ x
)  e.  RR+ )
1166ad2antrr 707 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( N  mod  (
2 ^ M ) )  e.  NN0 )
117116nn0ge0d 10211 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
0  <_  ( N  mod  ( 2 ^ M
) ) )
118112, 115, 117divge0d 10618 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
0  <_  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) )
119111rpred 10582 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2 ^ M
)  e.  RR )
120115rpred 10582 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2 ^ x
)  e.  RR )
121 modlt 11187 . . . . . . . . . . . . . . . . . 18  |-  ( ( N  e.  RR  /\  ( 2 ^ M
)  e.  RR+ )  ->  ( N  mod  (
2 ^ M ) )  <  ( 2 ^ M ) )
122106, 111, 121syl2anc 643 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( N  mod  (
2 ^ M ) )  <  ( 2 ^ M ) )
123108rpred 10582 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
2  e.  RR )
124 1re 9025 . . . . . . . . . . . . . . . . . . . 20  |-  1  e.  RR
125 2re 10003 . . . . . . . . . . . . . . . . . . . 20  |-  2  e.  RR
126 1lt2 10076 . . . . . . . . . . . . . . . . . . . 20  |-  1  <  2
127124, 125, 126ltleii 9129 . . . . . . . . . . . . . . . . . . 19  |-  1  <_  2
128127a1i 11 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
1  <_  2 )
129 simpr 448 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  -.  x  <  M )
130110zred 10309 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  M  e.  RR )
131113nn0red 10209 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  x  e.  RR )
132130, 131lenltd 9153 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( M  <_  x  <->  -.  x  <  M ) )
133129, 132mpbird 224 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  M  <_  x )
134 eluz2 10428 . . . . . . . . . . . . . . . . . . 19  |-  ( x  e.  ( ZZ>= `  M
)  <->  ( M  e.  ZZ  /\  x  e.  ZZ  /\  M  <_  x ) )
135110, 114, 133, 134syl3anbrc 1138 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  x  e.  ( ZZ>= `  M ) )
136123, 128, 135leexp2ad 11484 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2 ^ M
)  <_  ( 2 ^ x ) )
137112, 119, 120, 122, 136ltletrd 9164 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( N  mod  (
2 ^ M ) )  <  ( 2 ^ x ) )
138115rpcnd 10584 . . . . . . . . . . . . . . . . 17  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2 ^ x
)  e.  CC )
139138mulid1d 9040 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( 2 ^ x )  x.  1 )  =  ( 2 ^ x ) )
140137, 139breqtrrd 4181 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( N  mod  (
2 ^ M ) )  <  ( ( 2 ^ x )  x.  1 ) )
141124a1i 11 . . . . . . . . . . . . . . . 16  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
1  e.  RR )
142112, 141, 115ltdivmuld 10629 . . . . . . . . . . . . . . 15  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) )  <  1  <->  ( N  mod  ( 2 ^ M ) )  <  ( ( 2 ^ x )  x.  1 ) ) )
143140, 142mpbird 224 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  <  1 )
144 1e0p1 10344 . . . . . . . . . . . . . 14  |-  1  =  ( 0  +  1 )
145143, 144syl6breq 4194 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  <  ( 0  +  1 ) )
146112, 115rerpdivcld 10609 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  e.  RR )
147 0z 10227 . . . . . . . . . . . . . 14  |-  0  e.  ZZ
148 flbi 11152 . . . . . . . . . . . . . 14  |-  ( ( ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) )  e.  RR  /\  0  e.  ZZ )  ->  ( ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) )  =  0  <-> 
( 0  <_  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) )  /\  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) )  <  (
0  +  1 ) ) ) )
149146, 147, 148sylancl 644 . . . . . . . . . . . . 13  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) )  =  0  <-> 
( 0  <_  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) )  /\  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) )  <  (
0  +  1 ) ) ) )
150118, 145, 149mpbir2and 889 . . . . . . . . . . . 12  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) )  =  0 )
151104, 150syl5breqr 4191 . . . . . . . . . . 11  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
2  ||  ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) ) )
152129intnand 883 . . . . . . . . . . 11  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  ->  -.  ( x  e.  (bits `  N )  /\  x  <  M ) )
153151, 1522thd 232 . . . . . . . . . 10  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( 2  ||  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) )  <->  -.  (
x  e.  (bits `  N )  /\  x  <  M ) ) )
154153con2bid 320 . . . . . . . . 9  |-  ( ( ( ( N  e.  ZZ  /\  M  e. 
NN0 )  /\  x  e.  NN0 )  /\  -.  x  <  M )  -> 
( ( x  e.  (bits `  N )  /\  x  <  M )  <->  -.  2  ||  ( |_
`  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) ) ) )
155102, 154pm2.61dan 767 . . . . . . . 8  |-  ( ( ( N  e.  ZZ  /\  M  e.  NN0 )  /\  x  e.  NN0 )  ->  ( ( x  e.  (bits `  N
)  /\  x  <  M )  <->  -.  2  ||  ( |_ `  ( ( N  mod  ( 2 ^ M ) )  /  ( 2 ^ x ) ) ) ) )
156109biantrurd 495 . . . . . . . 8  |-  ( ( ( N  e.  ZZ  /\  M  e.  NN0 )  /\  x  e.  NN0 )  ->  ( ( x  e.  (bits `  N
)  /\  x  <  M )  <->  ( M  e.  ZZ  /\  ( x  e.  (bits `  N
)  /\  x  <  M ) ) ) )
157155, 156bitr3d 247 . . . . . . 7  |-  ( ( ( N  e.  ZZ  /\  M  e.  NN0 )  /\  x  e.  NN0 )  ->  ( -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) )  <->  ( M  e.  ZZ  /\  ( x  e.  (bits `  N
)  /\  x  <  M ) ) ) )
158 an12 773 . . . . . . 7  |-  ( ( M  e.  ZZ  /\  ( x  e.  (bits `  N )  /\  x  <  M ) )  <->  ( x  e.  (bits `  N )  /\  ( M  e.  ZZ  /\  x  <  M ) ) )
159157, 158syl6bb 253 . . . . . 6  |-  ( ( ( N  e.  ZZ  /\  M  e.  NN0 )  /\  x  e.  NN0 )  ->  ( -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) )  <->  ( x  e.  (bits `  N )  /\  ( M  e.  ZZ  /\  x  <  M ) ) ) )
160159pm5.32da 623 . . . . 5  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( ( x  e. 
NN0  /\  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) )  <->  ( x  e.  NN0  /\  ( x  e.  (bits `  N
)  /\  ( M  e.  ZZ  /\  x  < 
M ) ) ) ) )
1618, 160bitr3d 247 . . . 4  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( ( ( N  mod  ( 2 ^ M ) )  e.  ZZ  /\  ( x  e.  NN0  /\  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) ) )  <->  ( x  e.  NN0  /\  ( x  e.  (bits `  N
)  /\  ( M  e.  ZZ  /\  x  < 
M ) ) ) ) )
162 3anass 940 . . . 4  |-  ( ( ( N  mod  (
2 ^ M ) )  e.  ZZ  /\  x  e.  NN0  /\  -.  2  ||  ( |_ `  ( ( N  mod  ( 2 ^ M
) )  /  (
2 ^ x ) ) ) )  <->  ( ( N  mod  ( 2 ^ M ) )  e.  ZZ  /\  ( x  e.  NN0  /\  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) ) ) )
163 elfzo2 11075 . . . . . . 7  |-  ( x  e.  ( 0..^ M )  <->  ( x  e.  ( ZZ>= `  0 )  /\  M  e.  ZZ  /\  x  <  M ) )
164 elnn0uz 10457 . . . . . . . 8  |-  ( x  e.  NN0  <->  x  e.  ( ZZ>=
`  0 ) )
1651643anbi1i 1144 . . . . . . 7  |-  ( ( x  e.  NN0  /\  M  e.  ZZ  /\  x  <  M )  <->  ( x  e.  ( ZZ>= `  0 )  /\  M  e.  ZZ  /\  x  <  M ) )
166 3anass 940 . . . . . . 7  |-  ( ( x  e.  NN0  /\  M  e.  ZZ  /\  x  <  M )  <->  ( x  e.  NN0  /\  ( M  e.  ZZ  /\  x  <  M ) ) )
167163, 165, 1663bitr2i 265 . . . . . 6  |-  ( x  e.  ( 0..^ M )  <->  ( x  e. 
NN0  /\  ( M  e.  ZZ  /\  x  < 
M ) ) )
168167anbi2i 676 . . . . 5  |-  ( ( x  e.  (bits `  N )  /\  x  e.  ( 0..^ M ) )  <->  ( x  e.  (bits `  N )  /\  ( x  e.  NN0  /\  ( M  e.  ZZ  /\  x  <  M ) ) ) )
169 an12 773 . . . . 5  |-  ( ( x  e.  (bits `  N )  /\  (
x  e.  NN0  /\  ( M  e.  ZZ  /\  x  <  M ) ) )  <->  ( x  e.  NN0  /\  ( x  e.  (bits `  N
)  /\  ( M  e.  ZZ  /\  x  < 
M ) ) ) )
170168, 169bitri 241 . . . 4  |-  ( ( x  e.  (bits `  N )  /\  x  e.  ( 0..^ M ) )  <->  ( x  e. 
NN0  /\  ( x  e.  (bits `  N )  /\  ( M  e.  ZZ  /\  x  <  M ) ) ) )
171161, 162, 1703bitr4g 280 . . 3  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( ( ( N  mod  ( 2 ^ M ) )  e.  ZZ  /\  x  e. 
NN0  /\  -.  2  ||  ( |_ `  (
( N  mod  (
2 ^ M ) )  /  ( 2 ^ x ) ) ) )  <->  ( x  e.  (bits `  N )  /\  x  e.  (
0..^ M ) ) ) )
172 bitsval 12865 . . 3  |-  ( x  e.  (bits `  ( N  mod  ( 2 ^ M ) ) )  <-> 
( ( N  mod  ( 2 ^ M
) )  e.  ZZ  /\  x  e.  NN0  /\  -.  2  ||  ( |_
`  ( ( N  mod  ( 2 ^ M ) )  / 
( 2 ^ x
) ) ) ) )
173 elin 3475 . . 3  |-  ( x  e.  ( (bits `  N )  i^i  (
0..^ M ) )  <-> 
( x  e.  (bits `  N )  /\  x  e.  ( 0..^ M ) ) )
174171, 172, 1733bitr4g 280 . 2  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
( x  e.  (bits `  ( N  mod  (
2 ^ M ) ) )  <->  x  e.  ( (bits `  N )  i^i  ( 0..^ M ) ) ) )
175174eqrdv 2387 1  |-  ( ( N  e.  ZZ  /\  M  e.  NN0 )  -> 
(bits `  ( N  mod  ( 2 ^ M
) ) )  =  ( (bits `  N
)  i^i  ( 0..^ M ) ) )
Colors of variables: wff set class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 177    /\ wa 359    /\ w3a 936    = wceq 1649    e. wcel 1717    =/= wne 2552    i^i cin 3264   class class class wbr 4155   ` cfv 5396  (class class class)co 6022   CCcc 8923   RRcr 8924   0cc0 8925   1c1 8926    + caddc 8928    x. cmul 8930    < clt 9055    <_ cle 9056    - cmin 9225    / cdiv 9611   NNcn 9934   2c2 9983   NN0cn0 10155   ZZcz 10216   ZZ>=cuz 10422   RR+crp 10546  ..^cfzo 11067   |_cfl 11130    mod cmo 11179   ^cexp 11311    || cdivides 12781  bitscbits 12860
This theorem is referenced by:  sadaddlem  12907  sadadd  12908  bitsres  12914  smumul  12934
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1552  ax-5 1563  ax-17 1623  ax-9 1661  ax-8 1682  ax-13 1719  ax-14 1721  ax-6 1736  ax-7 1741  ax-11 1753  ax-12 1939  ax-ext 2370  ax-sep 4273  ax-nul 4281  ax-pow 4320  ax-pr 4346  ax-un 4643  ax-cnex 8981  ax-resscn 8982  ax-1cn 8983  ax-icn 8984  ax-addcl 8985  ax-addrcl 8986  ax-mulcl 8987  ax-mulrcl 8988  ax-mulcom 8989  ax-addass 8990  ax-mulass 8991  ax-distr 8992  ax-i2m1 8993  ax-1ne0 8994  ax-1rid 8995  ax-rnegex 8996  ax-rrecex 8997  ax-cnre 8998  ax-pre-lttri 8999  ax-pre-lttrn 9000  ax-pre-ltadd 9001  ax-pre-mulgt0 9002  ax-pre-sup 9003
This theorem depends on definitions:  df-bi 178  df-or 360  df-an 361  df-3or 937  df-3an 938  df-tru 1325  df-ex 1548  df-nf 1551  df-sb 1656  df-eu 2244  df-mo 2245  df-clab 2376  df-cleq 2382  df-clel 2385  df-nfc 2514  df-ne 2554  df-nel 2555  df-ral 2656  df-rex 2657  df-reu 2658  df-rmo 2659  df-rab 2660  df-v 2903  df-sbc 3107  df-csb 3197  df-dif 3268  df-un 3270  df-in 3272  df-ss 3279  df-pss 3281  df-nul 3574  df-if 3685  df-pw 3746  df-sn 3765  df-pr 3766  df-tp 3767  df-op 3768  df-uni 3960  df-iun 4039  df-br 4156  df-opab 4210  df-mpt 4211  df-tr 4246  df-eprel 4437  df-id 4441  df-po 4446  df-so 4447  df-fr 4484  df-we 4486  df-ord 4527  df-on 4528  df-lim 4529  df-suc 4530  df-om 4788  df-xp 4826  df-rel 4827  df-cnv 4828  df-co 4829  df-dm 4830  df-rn 4831  df-res 4832  df-ima 4833  df-iota 5360  df-fun 5398  df-fn 5399  df-f 5400  df-f1 5401  df-fo 5402  df-f1o 5403  df-fv 5404  df-ov 6025  df-oprab 6026  df-mpt2 6027  df-1st 6290  df-2nd 6291  df-riota 6487  df-recs 6571  df-rdg 6606  df-er 6843  df-en 7048  df-dom 7049  df-sdom 7050  df-sup 7383  df-pnf 9057  df-mnf 9058  df-xr 9059  df-ltxr 9060  df-le 9061  df-sub 9227  df-neg 9228  df-div 9612  df-nn 9935  df-2 9992  df-n0 10156  df-z 10217  df-uz 10423  df-rp 10547  df-fz 10978  df-fzo 11068  df-fl 11131  df-mod 11180  df-seq 11253  df-exp 11312  df-dvds 12782  df-bits 12863
  Copyright terms: Public domain W3C validator