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 ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โ†’ { ๐‘› โˆˆ โ„•0 โˆฃ ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) } = ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) )

Proof

Step Hyp Ref Expression
1 simpll โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ๐ด โˆˆ โ„ค )
2 2nn โŠข 2 โˆˆ โ„•
3 2 a1i โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ 2 โˆˆ โ„• )
4 simplr โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ๐‘ โˆˆ โ„•0 )
5 3 4 nnexpcld โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( 2 โ†‘ ๐‘ ) โˆˆ โ„• )
6 5 nnzd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( 2 โ†‘ ๐‘ ) โˆˆ โ„ค )
7 dvdsmul2 โŠข ( ( ๐ด โˆˆ โ„ค โˆง ( 2 โ†‘ ๐‘ ) โˆˆ โ„ค ) โ†’ ( 2 โ†‘ ๐‘ ) โˆฅ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) )
8 1 6 7 syl2anc โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( 2 โ†‘ ๐‘ ) โˆฅ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) )
9 1 6 zmulcld โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) โˆˆ โ„ค )
10 bitsuz โŠข ( ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โ†’ ( ( 2 โ†‘ ๐‘ ) โˆฅ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) โ†” ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โŠ† ( โ„คโ‰ฅ โ€˜ ๐‘ ) ) )
11 9 4 10 syl2anc โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ( 2 โ†‘ ๐‘ ) โˆฅ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) โ†” ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โŠ† ( โ„คโ‰ฅ โ€˜ ๐‘ ) ) )
12 8 11 mpbid โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โŠ† ( โ„คโ‰ฅ โ€˜ ๐‘ ) )
13 12 sseld โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†’ ๐‘› โˆˆ ( โ„คโ‰ฅ โ€˜ ๐‘ ) ) )
14 uznn0sub โŠข ( ๐‘› โˆˆ ( โ„คโ‰ฅ โ€˜ ๐‘ ) โ†’ ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 )
15 13 14 syl6 โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†’ ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) )
16 bitsss โŠข ( bits โ€˜ ๐ด ) โŠ† โ„•0
17 16 a1i โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( bits โ€˜ ๐ด ) โŠ† โ„•0 )
18 17 sseld โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) โ†’ ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) )
19 2cnd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ 2 โˆˆ โ„‚ )
20 2 a1i โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ 2 โˆˆ โ„• )
21 20 nnne0d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ 2 โ‰  0 )
22 simplr โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ๐‘ โˆˆ โ„•0 )
23 22 nn0zd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ๐‘ โˆˆ โ„ค )
24 simprl โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ๐‘› โˆˆ โ„•0 )
25 24 nn0zd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ๐‘› โˆˆ โ„ค )
26 19 21 23 25 expsubd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) = ( ( 2 โ†‘ ๐‘› ) / ( 2 โ†‘ ๐‘ ) ) )
27 26 oveq2d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) = ( ๐ด / ( ( 2 โ†‘ ๐‘› ) / ( 2 โ†‘ ๐‘ ) ) ) )
28 simpl โŠข ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โ†’ ๐ด โˆˆ โ„ค )
29 28 zcnd โŠข ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โ†’ ๐ด โˆˆ โ„‚ )
30 29 adantr โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ๐ด โˆˆ โ„‚ )
31 20 24 nnexpcld โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ๐‘› ) โˆˆ โ„• )
32 31 nncnd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ๐‘› ) โˆˆ โ„‚ )
33 20 22 nnexpcld โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ๐‘ ) โˆˆ โ„• )
34 33 nncnd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ๐‘ ) โˆˆ โ„‚ )
35 31 nnne0d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ๐‘› ) โ‰  0 )
36 33 nnne0d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โ†‘ ๐‘ ) โ‰  0 )
37 30 32 34 35 36 divdiv2d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ๐ด / ( ( 2 โ†‘ ๐‘› ) / ( 2 โ†‘ ๐‘ ) ) ) = ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) )
38 27 37 eqtr2d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) = ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) )
39 38 fveq2d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( โŒŠ โ€˜ ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) ) = ( โŒŠ โ€˜ ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) ) )
40 39 breq2d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( 2 โˆฅ ( โŒŠ โ€˜ ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) ) โ†” 2 โˆฅ ( โŒŠ โ€˜ ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) ) ) )
41 40 notbid โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ยฌ 2 โˆฅ ( โŒŠ โ€˜ ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) ) โ†” ยฌ 2 โˆฅ ( โŒŠ โ€˜ ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) ) ) )
42 9 adantrr โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) โˆˆ โ„ค )
43 bitsval2 โŠข ( ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) โˆˆ โ„ค โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†” ยฌ 2 โˆฅ ( โŒŠ โ€˜ ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) ) ) )
44 42 24 43 syl2anc โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†” ยฌ 2 โˆฅ ( โŒŠ โ€˜ ( ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) / ( 2 โ†‘ ๐‘› ) ) ) ) )
45 bitsval2 โŠข ( ( ๐ด โˆˆ โ„ค โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) โ†’ ( ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) โ†” ยฌ 2 โˆฅ ( โŒŠ โ€˜ ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) ) ) )
46 45 ad2ant2rl โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) โ†” ยฌ 2 โˆฅ ( โŒŠ โ€˜ ( ๐ด / ( 2 โ†‘ ( ๐‘› โˆ’ ๐‘ ) ) ) ) ) )
47 41 44 46 3bitr4d โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ( ๐‘› โˆˆ โ„•0 โˆง ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 ) ) โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†” ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) ) )
48 47 expr โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ( ๐‘› โˆ’ ๐‘ ) โˆˆ โ„•0 โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†” ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) ) ) )
49 15 18 48 pm5.21ndd โŠข ( ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โˆง ๐‘› โˆˆ โ„•0 ) โ†’ ( ๐‘› โˆˆ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โ†” ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) ) )
50 49 rabbi2dva โŠข ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โ†’ ( โ„•0 โˆฉ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) ) = { ๐‘› โˆˆ โ„•0 โˆฃ ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) } )
51 bitsss โŠข ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โŠ† โ„•0
52 sseqin2 โŠข ( ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) โŠ† โ„•0 โ†” ( โ„•0 โˆฉ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) ) = ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) )
53 51 52 mpbi โŠข ( โ„•0 โˆฉ ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) ) = ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) )
54 50 53 eqtr3di โŠข ( ( ๐ด โˆˆ โ„ค โˆง ๐‘ โˆˆ โ„•0 ) โ†’ { ๐‘› โˆˆ โ„•0 โˆฃ ( ๐‘› โˆ’ ๐‘ ) โˆˆ ( bits โ€˜ ๐ด ) } = ( bits โ€˜ ( ๐ด ยท ( 2 โ†‘ ๐‘ ) ) ) )