Step |
Hyp |
Ref |
Expression |
1 |
|
simpl |
|- ( ( N e. ZZ /\ M e. NN0 ) -> N e. ZZ ) |
2 |
|
2nn |
|- 2 e. NN |
3 |
2
|
a1i |
|- ( ( N e. ZZ /\ M e. NN0 ) -> 2 e. NN ) |
4 |
|
simpr |
|- ( ( N e. ZZ /\ M e. NN0 ) -> M e. NN0 ) |
5 |
3 4
|
nnexpcld |
|- ( ( N e. ZZ /\ M e. NN0 ) -> ( 2 ^ M ) e. NN ) |
6 |
1 5
|
zmodcld |
|- ( ( N e. ZZ /\ M e. NN0 ) -> ( N mod ( 2 ^ M ) ) e. NN0 ) |
7 |
6
|
nn0zd |
|- ( ( N e. ZZ /\ M e. NN0 ) -> ( N mod ( 2 ^ M ) ) e. ZZ ) |
8 |
7
|
biantrurd |
|- ( ( 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 ) ) ) ) ) ) ) |
9 |
1
|
ad2antrr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> N e. ZZ ) |
10 |
|
simplr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> x e. NN0 ) |
11 |
|
bitsval2 |
|- ( ( N e. ZZ /\ x e. NN0 ) -> ( x e. ( bits ` N ) <-> -. 2 || ( |_ ` ( N / ( 2 ^ x ) ) ) ) ) |
12 |
9 10 11
|
syl2anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( x e. ( bits ` N ) <-> -. 2 || ( |_ ` ( N / ( 2 ^ x ) ) ) ) ) |
13 |
|
simpr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> x < M ) |
14 |
13
|
biantrud |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( x e. ( bits ` N ) <-> ( x e. ( bits ` N ) /\ x < M ) ) ) |
15 |
|
2z |
|- 2 e. ZZ |
16 |
15
|
a1i |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 2 e. ZZ ) |
17 |
9
|
zred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> N e. RR ) |
18 |
2
|
a1i |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 2 e. NN ) |
19 |
18 10
|
nnexpcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ x ) e. NN ) |
20 |
17 19
|
nndivred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( N / ( 2 ^ x ) ) e. RR ) |
21 |
20
|
flcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( |_ ` ( N / ( 2 ^ x ) ) ) e. ZZ ) |
22 |
7
|
ad2antrr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( N mod ( 2 ^ M ) ) e. ZZ ) |
23 |
22
|
zred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( N mod ( 2 ^ M ) ) e. RR ) |
24 |
23 19
|
nndivred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) e. RR ) |
25 |
24
|
flcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) e. ZZ ) |
26 |
19
|
nnzd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ x ) e. ZZ ) |
27 |
26 16
|
zmulcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( 2 ^ x ) x. 2 ) e. ZZ ) |
28 |
5
|
ad2antrr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ M ) e. NN ) |
29 |
28
|
nnzd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ M ) e. ZZ ) |
30 |
9 22
|
zsubcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( N - ( N mod ( 2 ^ M ) ) ) e. ZZ ) |
31 |
|
2cnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 2 e. CC ) |
32 |
31 10
|
expp1d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ ( x + 1 ) ) = ( ( 2 ^ x ) x. 2 ) ) |
33 |
|
1nn0 |
|- 1 e. NN0 |
34 |
33
|
a1i |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 1 e. NN0 ) |
35 |
10 34
|
nn0addcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( x + 1 ) e. NN0 ) |
36 |
35
|
nn0zd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( x + 1 ) e. ZZ ) |
37 |
|
simplr |
|- ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) -> M e. NN0 ) |
38 |
37
|
adantr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> M e. NN0 ) |
39 |
38
|
nn0zd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> M e. ZZ ) |
40 |
|
nn0ltp1le |
|- ( ( x e. NN0 /\ M e. NN0 ) -> ( x < M <-> ( x + 1 ) <_ M ) ) |
41 |
10 38 40
|
syl2anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( x < M <-> ( x + 1 ) <_ M ) ) |
42 |
13 41
|
mpbid |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( x + 1 ) <_ M ) |
43 |
|
eluz2 |
|- ( M e. ( ZZ>= ` ( x + 1 ) ) <-> ( ( x + 1 ) e. ZZ /\ M e. ZZ /\ ( x + 1 ) <_ M ) ) |
44 |
36 39 42 43
|
syl3anbrc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> M e. ( ZZ>= ` ( x + 1 ) ) ) |
45 |
|
dvdsexp |
|- ( ( 2 e. ZZ /\ ( x + 1 ) e. NN0 /\ M e. ( ZZ>= ` ( x + 1 ) ) ) -> ( 2 ^ ( x + 1 ) ) || ( 2 ^ M ) ) |
46 |
16 35 44 45
|
syl3anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ ( x + 1 ) ) || ( 2 ^ M ) ) |
47 |
32 46
|
eqbrtrrd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( 2 ^ x ) x. 2 ) || ( 2 ^ M ) ) |
48 |
28
|
nnrpd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ M ) e. RR+ ) |
49 |
|
moddifz |
|- ( ( N e. RR /\ ( 2 ^ M ) e. RR+ ) -> ( ( N - ( N mod ( 2 ^ M ) ) ) / ( 2 ^ M ) ) e. ZZ ) |
50 |
17 48 49
|
syl2anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( N - ( N mod ( 2 ^ M ) ) ) / ( 2 ^ M ) ) e. ZZ ) |
51 |
|
2ne0 |
|- 2 =/= 0 |
52 |
51
|
a1i |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 2 =/= 0 ) |
53 |
31 52 39
|
expne0d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ M ) =/= 0 ) |
54 |
|
dvdsval2 |
|- ( ( ( 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 ) ) |
55 |
29 53 30 54
|
syl3anc |
|- ( ( ( ( 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 ) ) |
56 |
50 55
|
mpbird |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ M ) || ( N - ( N mod ( 2 ^ M ) ) ) ) |
57 |
27 29 30 47 56
|
dvdstrd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( 2 ^ x ) x. 2 ) || ( N - ( N mod ( 2 ^ M ) ) ) ) |
58 |
30
|
zcnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( N - ( N mod ( 2 ^ M ) ) ) e. CC ) |
59 |
19
|
nncnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ x ) e. CC ) |
60 |
10
|
nn0zd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> x e. ZZ ) |
61 |
31 52 60
|
expne0d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ x ) =/= 0 ) |
62 |
58 59 61
|
divcan2d |
|- ( ( ( ( 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 ) ) ) ) |
63 |
57 62
|
breqtrrd |
|- ( ( ( ( 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 ) ) ) ) |
64 |
10
|
nn0red |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> x e. RR ) |
65 |
38
|
nn0red |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> M e. RR ) |
66 |
64 65 13
|
ltled |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> x <_ M ) |
67 |
|
eluz2 |
|- ( M e. ( ZZ>= ` x ) <-> ( x e. ZZ /\ M e. ZZ /\ x <_ M ) ) |
68 |
60 39 66 67
|
syl3anbrc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> M e. ( ZZ>= ` x ) ) |
69 |
|
dvdsexp |
|- ( ( 2 e. ZZ /\ x e. NN0 /\ M e. ( ZZ>= ` x ) ) -> ( 2 ^ x ) || ( 2 ^ M ) ) |
70 |
16 10 68 69
|
syl3anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ x ) || ( 2 ^ M ) ) |
71 |
26 29 30 70 56
|
dvdstrd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 ^ x ) || ( N - ( N mod ( 2 ^ M ) ) ) ) |
72 |
|
dvdsval2 |
|- ( ( ( 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 ) ) |
73 |
26 61 30 72
|
syl3anc |
|- ( ( ( ( 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 ) ) |
74 |
71 73
|
mpbid |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( N - ( N mod ( 2 ^ M ) ) ) / ( 2 ^ x ) ) e. ZZ ) |
75 |
|
dvdscmulr |
|- ( ( 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 ) ) ) ) |
76 |
16 74 26 61 75
|
syl112anc |
|- ( ( ( ( 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 ) ) ) ) |
77 |
63 76
|
mpbid |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 2 || ( ( N - ( N mod ( 2 ^ M ) ) ) / ( 2 ^ x ) ) ) |
78 |
25
|
zcnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) e. CC ) |
79 |
74
|
zcnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( N - ( N mod ( 2 ^ M ) ) ) / ( 2 ^ x ) ) e. CC ) |
80 |
22
|
zcnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( N mod ( 2 ^ M ) ) e. CC ) |
81 |
9
|
zcnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> N e. CC ) |
82 |
80 81
|
pncan3d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( N mod ( 2 ^ M ) ) + ( N - ( N mod ( 2 ^ M ) ) ) ) = N ) |
83 |
82
|
oveq1d |
|- ( ( ( ( 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 ) ) ) |
84 |
80 58 59 61
|
divdird |
|- ( ( ( ( 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 ) ) ) ) |
85 |
83 84
|
eqtr3d |
|- ( ( ( ( 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 ) ) ) ) |
86 |
85
|
fveq2d |
|- ( ( ( ( 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 ) ) ) ) ) |
87 |
|
fladdz |
|- ( ( ( ( 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 ) ) ) ) |
88 |
24 74 87
|
syl2anc |
|- ( ( ( ( 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 ) ) ) ) |
89 |
86 88
|
eqtrd |
|- ( ( ( ( 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 |
78 79 89
|
mvrladdd |
|- ( ( ( ( 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 ) ) ) |
91 |
77 90
|
breqtrrd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> 2 || ( ( |_ ` ( N / ( 2 ^ x ) ) ) - ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
92 |
|
dvdssub2 |
|- ( ( ( 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 ) ) ) ) ) |
93 |
16 21 25 91 92
|
syl31anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( 2 || ( |_ ` ( N / ( 2 ^ x ) ) ) <-> 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
94 |
93
|
notbid |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( -. 2 || ( |_ ` ( N / ( 2 ^ x ) ) ) <-> -. 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
95 |
12 14 94
|
3bitr3d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ x < M ) -> ( ( x e. ( bits ` N ) /\ x < M ) <-> -. 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
96 |
|
z0even |
|- 2 || 0 |
97 |
1
|
ad2antrr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> N e. ZZ ) |
98 |
97
|
zred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> N e. RR ) |
99 |
|
2rp |
|- 2 e. RR+ |
100 |
99
|
a1i |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 2 e. RR+ ) |
101 |
37
|
nn0zd |
|- ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) -> M e. ZZ ) |
102 |
101
|
adantr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> M e. ZZ ) |
103 |
100 102
|
rpexpcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 ^ M ) e. RR+ ) |
104 |
98 103
|
modcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( N mod ( 2 ^ M ) ) e. RR ) |
105 |
|
simplr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> x e. NN0 ) |
106 |
105
|
nn0zd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> x e. ZZ ) |
107 |
100 106
|
rpexpcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 ^ x ) e. RR+ ) |
108 |
6
|
ad2antrr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( N mod ( 2 ^ M ) ) e. NN0 ) |
109 |
108
|
nn0ge0d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 0 <_ ( N mod ( 2 ^ M ) ) ) |
110 |
104 107 109
|
divge0d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 0 <_ ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) |
111 |
103
|
rpred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 ^ M ) e. RR ) |
112 |
107
|
rpred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 ^ x ) e. RR ) |
113 |
|
modlt |
|- ( ( N e. RR /\ ( 2 ^ M ) e. RR+ ) -> ( N mod ( 2 ^ M ) ) < ( 2 ^ M ) ) |
114 |
98 103 113
|
syl2anc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( N mod ( 2 ^ M ) ) < ( 2 ^ M ) ) |
115 |
100
|
rpred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 2 e. RR ) |
116 |
|
1le2 |
|- 1 <_ 2 |
117 |
116
|
a1i |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 1 <_ 2 ) |
118 |
102
|
zred |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> M e. RR ) |
119 |
105
|
nn0red |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> x e. RR ) |
120 |
|
simpr |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> -. x < M ) |
121 |
118 119 120
|
nltled |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> M <_ x ) |
122 |
|
eluz2 |
|- ( x e. ( ZZ>= ` M ) <-> ( M e. ZZ /\ x e. ZZ /\ M <_ x ) ) |
123 |
102 106 121 122
|
syl3anbrc |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> x e. ( ZZ>= ` M ) ) |
124 |
115 117 123
|
leexp2ad |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 ^ M ) <_ ( 2 ^ x ) ) |
125 |
104 111 112 114 124
|
ltletrd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( N mod ( 2 ^ M ) ) < ( 2 ^ x ) ) |
126 |
107
|
rpcnd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 ^ x ) e. CC ) |
127 |
126
|
mulid1d |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( ( 2 ^ x ) x. 1 ) = ( 2 ^ x ) ) |
128 |
125 127
|
breqtrrd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( N mod ( 2 ^ M ) ) < ( ( 2 ^ x ) x. 1 ) ) |
129 |
|
1red |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 1 e. RR ) |
130 |
104 129 107
|
ltdivmuld |
|- ( ( ( ( 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 ) ) ) |
131 |
128 130
|
mpbird |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) < 1 ) |
132 |
|
1e0p1 |
|- 1 = ( 0 + 1 ) |
133 |
131 132
|
breqtrdi |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) < ( 0 + 1 ) ) |
134 |
104 107
|
rerpdivcld |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) e. RR ) |
135 |
|
0z |
|- 0 e. ZZ |
136 |
|
flbi |
|- ( ( ( ( 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 ) ) ) ) |
137 |
134 135 136
|
sylancl |
|- ( ( ( ( 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 ) ) ) ) |
138 |
110 133 137
|
mpbir2and |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) = 0 ) |
139 |
96 138
|
breqtrrid |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) |
140 |
120
|
intnand |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> -. ( x e. ( bits ` N ) /\ x < M ) ) |
141 |
139 140
|
2thd |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) <-> -. ( x e. ( bits ` N ) /\ x < M ) ) ) |
142 |
141
|
con2bid |
|- ( ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) /\ -. x < M ) -> ( ( x e. ( bits ` N ) /\ x < M ) <-> -. 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
143 |
95 142
|
pm2.61dan |
|- ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) -> ( ( x e. ( bits ` N ) /\ x < M ) <-> -. 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
144 |
101
|
biantrurd |
|- ( ( ( N e. ZZ /\ M e. NN0 ) /\ x e. NN0 ) -> ( ( x e. ( bits ` N ) /\ x < M ) <-> ( M e. ZZ /\ ( x e. ( bits ` N ) /\ x < M ) ) ) ) |
145 |
143 144
|
bitr3d |
|- ( ( ( 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 ) ) ) ) |
146 |
|
an12 |
|- ( ( M e. ZZ /\ ( x e. ( bits ` N ) /\ x < M ) ) <-> ( x e. ( bits ` N ) /\ ( M e. ZZ /\ x < M ) ) ) |
147 |
145 146
|
bitrdi |
|- ( ( ( 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 ) ) ) ) |
148 |
147
|
pm5.32da |
|- ( ( 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 ) ) ) ) ) |
149 |
8 148
|
bitr3d |
|- ( ( 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 ) ) ) ) ) |
150 |
|
3anass |
|- ( ( ( 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 ) ) ) ) ) ) |
151 |
|
elfzo2 |
|- ( x e. ( 0 ..^ M ) <-> ( x e. ( ZZ>= ` 0 ) /\ M e. ZZ /\ x < M ) ) |
152 |
|
elnn0uz |
|- ( x e. NN0 <-> x e. ( ZZ>= ` 0 ) ) |
153 |
152
|
3anbi1i |
|- ( ( x e. NN0 /\ M e. ZZ /\ x < M ) <-> ( x e. ( ZZ>= ` 0 ) /\ M e. ZZ /\ x < M ) ) |
154 |
|
3anass |
|- ( ( x e. NN0 /\ M e. ZZ /\ x < M ) <-> ( x e. NN0 /\ ( M e. ZZ /\ x < M ) ) ) |
155 |
151 153 154
|
3bitr2i |
|- ( x e. ( 0 ..^ M ) <-> ( x e. NN0 /\ ( M e. ZZ /\ x < M ) ) ) |
156 |
155
|
anbi2i |
|- ( ( x e. ( bits ` N ) /\ x e. ( 0 ..^ M ) ) <-> ( x e. ( bits ` N ) /\ ( x e. NN0 /\ ( M e. ZZ /\ x < M ) ) ) ) |
157 |
|
an12 |
|- ( ( x e. ( bits ` N ) /\ ( x e. NN0 /\ ( M e. ZZ /\ x < M ) ) ) <-> ( x e. NN0 /\ ( x e. ( bits ` N ) /\ ( M e. ZZ /\ x < M ) ) ) ) |
158 |
156 157
|
bitri |
|- ( ( x e. ( bits ` N ) /\ x e. ( 0 ..^ M ) ) <-> ( x e. NN0 /\ ( x e. ( bits ` N ) /\ ( M e. ZZ /\ x < M ) ) ) ) |
159 |
149 150 158
|
3bitr4g |
|- ( ( 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 ) ) ) ) |
160 |
|
bitsval |
|- ( x e. ( bits ` ( N mod ( 2 ^ M ) ) ) <-> ( ( N mod ( 2 ^ M ) ) e. ZZ /\ x e. NN0 /\ -. 2 || ( |_ ` ( ( N mod ( 2 ^ M ) ) / ( 2 ^ x ) ) ) ) ) |
161 |
|
elin |
|- ( x e. ( ( bits ` N ) i^i ( 0 ..^ M ) ) <-> ( x e. ( bits ` N ) /\ x e. ( 0 ..^ M ) ) ) |
162 |
159 160 161
|
3bitr4g |
|- ( ( N e. ZZ /\ M e. NN0 ) -> ( x e. ( bits ` ( N mod ( 2 ^ M ) ) ) <-> x e. ( ( bits ` N ) i^i ( 0 ..^ M ) ) ) ) |
163 |
162
|
eqrdv |
|- ( ( N e. ZZ /\ M e. NN0 ) -> ( bits ` ( N mod ( 2 ^ M ) ) ) = ( ( bits ` N ) i^i ( 0 ..^ M ) ) ) |