Metamath Proof Explorer


Theorem nn0sumshdig

Description: A nonnegative integer can be represented as sum of its shifted bits. (Contributed by AV, 7-Jun-2020)

Ref Expression
Assertion nn0sumshdig ( 𝐴 ∈ ℕ0𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) )

Proof

Step Hyp Ref Expression
1 blennn0elnn ( 𝐴 ∈ ℕ0 → ( #b𝐴 ) ∈ ℕ )
2 nn0sumshdiglem2 ( ( #b𝐴 ) ∈ ℕ → ∀ 𝑎 ∈ ℕ0 ( ( #b𝑎 ) = ( #b𝐴 ) → 𝑎 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) ) )
3 eqid ( #b𝐴 ) = ( #b𝐴 )
4 fveqeq2 ( 𝑎 = 𝐴 → ( ( #b𝑎 ) = ( #b𝐴 ) ↔ ( #b𝐴 ) = ( #b𝐴 ) ) )
5 id ( 𝑎 = 𝐴𝑎 = 𝐴 )
6 oveq2 ( 𝑎 = 𝐴 → ( 𝑘 ( digit ‘ 2 ) 𝑎 ) = ( 𝑘 ( digit ‘ 2 ) 𝐴 ) )
7 6 oveq1d ( 𝑎 = 𝐴 → ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) = ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) )
8 7 adantr ( ( 𝑎 = 𝐴𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ) → ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) = ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) )
9 8 sumeq2dv ( 𝑎 = 𝐴 → Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) )
10 5 9 eqeq12d ( 𝑎 = 𝐴 → ( 𝑎 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) ↔ 𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) ) )
11 4 10 imbi12d ( 𝑎 = 𝐴 → ( ( ( #b𝑎 ) = ( #b𝐴 ) → 𝑎 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) ) ↔ ( ( #b𝐴 ) = ( #b𝐴 ) → 𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) ) ) )
12 11 rspcva ( ( 𝐴 ∈ ℕ0 ∧ ∀ 𝑎 ∈ ℕ0 ( ( #b𝑎 ) = ( #b𝐴 ) → 𝑎 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) ) ) → ( ( #b𝐴 ) = ( #b𝐴 ) → 𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) ) )
13 3 12 mpi ( ( 𝐴 ∈ ℕ0 ∧ ∀ 𝑎 ∈ ℕ0 ( ( #b𝑎 ) = ( #b𝐴 ) → 𝑎 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) ) ) → 𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) )
14 13 ex ( 𝐴 ∈ ℕ0 → ( ∀ 𝑎 ∈ ℕ0 ( ( #b𝑎 ) = ( #b𝐴 ) → 𝑎 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝑎 ) · ( 2 ↑ 𝑘 ) ) ) → 𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) ) )
15 2 14 syl5 ( 𝐴 ∈ ℕ0 → ( ( #b𝐴 ) ∈ ℕ → 𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) ) )
16 1 15 mpd ( 𝐴 ∈ ℕ0𝐴 = Σ 𝑘 ∈ ( 0 ..^ ( #b𝐴 ) ) ( ( 𝑘 ( digit ‘ 2 ) 𝐴 ) · ( 2 ↑ 𝑘 ) ) )