Metamath Proof Explorer


Theorem bitsshft

Description: Shifting a bit sequence to the left (toward the more significant bits) causes the number to be multiplied by a power of two. (Contributed by Mario Carneiro, 22-Sep-2016)

Ref Expression
Assertion bitsshft A N 0 n 0 | n N bits A = bits A 2 N

Proof

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