Step |
Hyp |
Ref |
Expression |
1 |
|
simpll |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> A e. ZZ ) |
2 |
|
2nn |
|- 2 e. NN |
3 |
2
|
a1i |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> 2 e. NN ) |
4 |
|
simplr |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> N e. NN0 ) |
5 |
3 4
|
nnexpcld |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( 2 ^ N ) e. NN ) |
6 |
5
|
nnzd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( 2 ^ N ) e. ZZ ) |
7 |
|
dvdsmul2 |
|- ( ( A e. ZZ /\ ( 2 ^ N ) e. ZZ ) -> ( 2 ^ N ) || ( A x. ( 2 ^ N ) ) ) |
8 |
1 6 7
|
syl2anc |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( 2 ^ N ) || ( A x. ( 2 ^ N ) ) ) |
9 |
1 6
|
zmulcld |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( A x. ( 2 ^ N ) ) e. ZZ ) |
10 |
|
bitsuz |
|- ( ( ( A x. ( 2 ^ N ) ) e. ZZ /\ N e. NN0 ) -> ( ( 2 ^ N ) || ( A x. ( 2 ^ N ) ) <-> ( bits ` ( A x. ( 2 ^ N ) ) ) C_ ( ZZ>= ` N ) ) ) |
11 |
9 4 10
|
syl2anc |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( ( 2 ^ N ) || ( A x. ( 2 ^ N ) ) <-> ( bits ` ( A x. ( 2 ^ N ) ) ) C_ ( ZZ>= ` N ) ) ) |
12 |
8 11
|
mpbid |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( bits ` ( A x. ( 2 ^ N ) ) ) C_ ( ZZ>= ` N ) ) |
13 |
12
|
sseld |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) -> n e. ( ZZ>= ` N ) ) ) |
14 |
|
uznn0sub |
|- ( n e. ( ZZ>= ` N ) -> ( n - N ) e. NN0 ) |
15 |
13 14
|
syl6 |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) -> ( n - N ) e. NN0 ) ) |
16 |
|
bitsss |
|- ( bits ` A ) C_ NN0 |
17 |
16
|
a1i |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( bits ` A ) C_ NN0 ) |
18 |
17
|
sseld |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( ( n - N ) e. ( bits ` A ) -> ( n - N ) e. NN0 ) ) |
19 |
|
2cnd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> 2 e. CC ) |
20 |
2
|
a1i |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> 2 e. NN ) |
21 |
20
|
nnne0d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> 2 =/= 0 ) |
22 |
|
simplr |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> N e. NN0 ) |
23 |
22
|
nn0zd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> N e. ZZ ) |
24 |
|
simprl |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> n e. NN0 ) |
25 |
24
|
nn0zd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> n e. ZZ ) |
26 |
19 21 23 25
|
expsubd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ ( n - N ) ) = ( ( 2 ^ n ) / ( 2 ^ N ) ) ) |
27 |
26
|
oveq2d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( A / ( 2 ^ ( n - N ) ) ) = ( A / ( ( 2 ^ n ) / ( 2 ^ N ) ) ) ) |
28 |
|
simpl |
|- ( ( A e. ZZ /\ N e. NN0 ) -> A e. ZZ ) |
29 |
28
|
zcnd |
|- ( ( A e. ZZ /\ N e. NN0 ) -> A e. CC ) |
30 |
29
|
adantr |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> A e. CC ) |
31 |
20 24
|
nnexpcld |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ n ) e. NN ) |
32 |
31
|
nncnd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ n ) e. CC ) |
33 |
20 22
|
nnexpcld |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ N ) e. NN ) |
34 |
33
|
nncnd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ N ) e. CC ) |
35 |
31
|
nnne0d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ n ) =/= 0 ) |
36 |
33
|
nnne0d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 ^ N ) =/= 0 ) |
37 |
30 32 34 35 36
|
divdiv2d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( A / ( ( 2 ^ n ) / ( 2 ^ N ) ) ) = ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) ) |
38 |
27 37
|
eqtr2d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) = ( A / ( 2 ^ ( n - N ) ) ) ) |
39 |
38
|
fveq2d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( |_ ` ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) ) = ( |_ ` ( A / ( 2 ^ ( n - N ) ) ) ) ) |
40 |
39
|
breq2d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( 2 || ( |_ ` ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) ) <-> 2 || ( |_ ` ( A / ( 2 ^ ( n - N ) ) ) ) ) ) |
41 |
40
|
notbid |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( -. 2 || ( |_ ` ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) ) <-> -. 2 || ( |_ ` ( A / ( 2 ^ ( n - N ) ) ) ) ) ) |
42 |
9
|
adantrr |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( A x. ( 2 ^ N ) ) e. ZZ ) |
43 |
|
bitsval2 |
|- ( ( ( A x. ( 2 ^ N ) ) e. ZZ /\ n e. NN0 ) -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) <-> -. 2 || ( |_ ` ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) ) ) ) |
44 |
42 24 43
|
syl2anc |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) <-> -. 2 || ( |_ ` ( ( A x. ( 2 ^ N ) ) / ( 2 ^ n ) ) ) ) ) |
45 |
|
bitsval2 |
|- ( ( A e. ZZ /\ ( n - N ) e. NN0 ) -> ( ( n - N ) e. ( bits ` A ) <-> -. 2 || ( |_ ` ( A / ( 2 ^ ( n - N ) ) ) ) ) ) |
46 |
45
|
ad2ant2rl |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( ( n - N ) e. ( bits ` A ) <-> -. 2 || ( |_ ` ( A / ( 2 ^ ( n - N ) ) ) ) ) ) |
47 |
41 44 46
|
3bitr4d |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ ( n e. NN0 /\ ( n - N ) e. NN0 ) ) -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) <-> ( n - N ) e. ( bits ` A ) ) ) |
48 |
47
|
expr |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( ( n - N ) e. NN0 -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) <-> ( n - N ) e. ( bits ` A ) ) ) ) |
49 |
15 18 48
|
pm5.21ndd |
|- ( ( ( A e. ZZ /\ N e. NN0 ) /\ n e. NN0 ) -> ( n e. ( bits ` ( A x. ( 2 ^ N ) ) ) <-> ( n - N ) e. ( bits ` A ) ) ) |
50 |
49
|
rabbi2dva |
|- ( ( A e. ZZ /\ N e. NN0 ) -> ( NN0 i^i ( bits ` ( A x. ( 2 ^ N ) ) ) ) = { n e. NN0 | ( n - N ) e. ( bits ` A ) } ) |
51 |
|
bitsss |
|- ( bits ` ( A x. ( 2 ^ N ) ) ) C_ NN0 |
52 |
|
sseqin2 |
|- ( ( bits ` ( A x. ( 2 ^ N ) ) ) C_ NN0 <-> ( NN0 i^i ( bits ` ( A x. ( 2 ^ N ) ) ) ) = ( bits ` ( A x. ( 2 ^ N ) ) ) ) |
53 |
51 52
|
mpbi |
|- ( NN0 i^i ( bits ` ( A x. ( 2 ^ N ) ) ) ) = ( bits ` ( A x. ( 2 ^ N ) ) ) |
54 |
50 53
|
eqtr3di |
|- ( ( A e. ZZ /\ N e. NN0 ) -> { n e. NN0 | ( n - N ) e. ( bits ` A ) } = ( bits ` ( A x. ( 2 ^ N ) ) ) ) |