Metamath Proof Explorer


Theorem sadadd3

Description: Sum of initial segments of the sadd sequence. (Contributed by Mario Carneiro, 9-Sep-2016)

Ref Expression
Hypotheses sadval.a ⊢ φ → A ⊆ ℕ 0
sadval.b ⊢ φ → B ⊆ ℕ 0
sadval.c ⊢ C = seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A m ∈ B ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1
sadcp1.n ⊢ φ → N ∈ ℕ 0
sadcadd.k ⊢ K = bits ↾ ℕ 0 -1
Assertion sadadd3 ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N mod 2 N = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N mod 2 N

Proof

Step Hyp Ref Expression
1 sadval.a ⊢ φ → A ⊆ ℕ 0
2 sadval.b ⊢ φ → B ⊆ ℕ 0
3 sadval.c ⊢ C = seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A m ∈ B ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1
4 sadcp1.n ⊢ φ → N ∈ ℕ 0
5 sadcadd.k ⊢ K = bits ↾ ℕ 0 -1
6 2nn ⊢ 2 ∈ ℕ
7 6 a1i ⊢ φ → 2 ∈ ℕ
8 7 4 nnexpcld ⊢ φ → 2 N ∈ ℕ
9 8 nnzd ⊢ φ → 2 N ∈ ℤ
10 iddvds ⊢ 2 N ∈ ℤ → 2 N ∥ 2 N
11 9 10 syl ⊢ φ → 2 N ∥ 2 N
12 dvds0 ⊢ 2 N ∈ ℤ → 2 N ∥ 0
13 9 12 syl ⊢ φ → 2 N ∥ 0
14 breq2 ⊢ 2 N = if ∅ ∈ C ⁡ N 2 N 0 → 2 N ∥ 2 N ↔ 2 N ∥ if ∅ ∈ C ⁡ N 2 N 0
15 breq2 ⊢ 0 = if ∅ ∈ C ⁡ N 2 N 0 → 2 N ∥ 0 ↔ 2 N ∥ if ∅ ∈ C ⁡ N 2 N 0
16 14 15 ifboth ⊢ 2 N ∥ 2 N ∧ 2 N ∥ 0 → 2 N ∥ if ∅ ∈ C ⁡ N 2 N 0
17 11 13 16 syl2anc ⊢ φ → 2 N ∥ if ∅ ∈ C ⁡ N 2 N 0
18 inss1 ⊢ A sadd B ∩ 0 ..^ N ⊆ A sadd B
19 1 2 3 sadfval ⊢ φ → A sadd B = k ∈ ℕ 0 | hadd k ∈ A k ∈ B ∅ ∈ C ⁡ k
20 ssrab2 ⊢ k ∈ ℕ 0 | hadd k ∈ A k ∈ B ∅ ∈ C ⁡ k ⊆ ℕ 0
21 19 20 eqsstrdi ⊢ φ → A sadd B ⊆ ℕ 0
22 18 21 sstrid ⊢ φ → A sadd B ∩ 0 ..^ N ⊆ ℕ 0
23 fzofi ⊢ 0 ..^ N ∈ Fin
24 23 a1i ⊢ φ → 0 ..^ N ∈ Fin
25 inss2 ⊢ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N
26 ssfi ⊢ 0 ..^ N ∈ Fin ∧ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N → A sadd B ∩ 0 ..^ N ∈ Fin
27 24 25 26 sylancl ⊢ φ → A sadd B ∩ 0 ..^ N ∈ Fin
28 elfpw ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ↔ A sadd B ∩ 0 ..^ N ⊆ ℕ 0 ∧ A sadd B ∩ 0 ..^ N ∈ Fin
29 22 27 28 sylanbrc ⊢ φ → A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin
30 bitsf1o ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin
31 f1ocnv ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0
32 f1of ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0 → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
33 30 31 32 mp2b ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
34 5 feq1i ⊢ K : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0 ↔ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
35 33 34 mpbir ⊢ K : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
36 35 ffvelcdmi ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℕ 0
37 29 36 syl ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℕ 0
38 37 nn0cnd ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℂ
39 8 nncnd ⊢ φ → 2 N ∈ ℂ
40 0cn ⊢ 0 ∈ ℂ
41 ifcl ⊢ 2 N ∈ ℂ ∧ 0 ∈ ℂ → if ∅ ∈ C ⁡ N 2 N 0 ∈ ℂ
42 39 40 41 sylancl ⊢ φ → if ∅ ∈ C ⁡ N 2 N 0 ∈ ℂ
43 38 42 pncan2d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 - K ⁡ A sadd B ∩ 0 ..^ N = if ∅ ∈ C ⁡ N 2 N 0
44 17 43 breqtrrd ⊢ φ → 2 N ∥ K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 - K ⁡ A sadd B ∩ 0 ..^ N
45 37 nn0zd ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N ∈ ℤ
46 9 adantr ⊢ φ ∧ ∅ ∈ C ⁡ N → 2 N ∈ ℤ
47 0zd ⊢ φ ∧ ¬ ∅ ∈ C ⁡ N → 0 ∈ ℤ
48 46 47 ifclda ⊢ φ → if ∅ ∈ C ⁡ N 2 N 0 ∈ ℤ
49 45 48 zaddcld ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 ∈ ℤ
50 moddvds ⊢ 2 N ∈ ℕ ∧ K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 ∈ ℤ ∧ K ⁡ A sadd B ∩ 0 ..^ N ∈ ℤ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 mod 2 N = K ⁡ A sadd B ∩ 0 ..^ N mod 2 N ↔ 2 N ∥ K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 - K ⁡ A sadd B ∩ 0 ..^ N
51 8 49 45 50 syl3anc ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 mod 2 N = K ⁡ A sadd B ∩ 0 ..^ N mod 2 N ↔ 2 N ∥ K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 - K ⁡ A sadd B ∩ 0 ..^ N
52 44 51 mpbird ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 mod 2 N = K ⁡ A sadd B ∩ 0 ..^ N mod 2 N
53 1 2 3 4 5 sadadd2 ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N
54 53 oveq1d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N + if ∅ ∈ C ⁡ N 2 N 0 mod 2 N = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N mod 2 N
55 52 54 eqtr3d ⊢ φ → K ⁡ A sadd B ∩ 0 ..^ N mod 2 N = K ⁡ A ∩ 0 ..^ N + K ⁡ B ∩ 0 ..^ N mod 2 N