Metamath Proof Explorer


Theorem sadeq

Description: Any element of a sequence sum only depends on the values of the argument sequences up to and including that point. (Contributed by Mario Carneiro, 9-Sep-2016)

Ref Expression
Hypotheses sadeq.a ⊢ φ → A ⊆ ℕ 0
sadeq.b ⊢ φ → B ⊆ ℕ 0
sadeq.n ⊢ φ → N ∈ ℕ 0
Assertion sadeq ⊢ φ → A sadd B ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N

Proof

Step Hyp Ref Expression
1 sadeq.a ⊢ φ → A ⊆ ℕ 0
2 sadeq.b ⊢ φ → B ⊆ ℕ 0
3 sadeq.n ⊢ φ → N ∈ ℕ 0
4 inass ⊢ A ∩ 0 ..^ N ∩ 0 ..^ N = A ∩ 0 ..^ N ∩ 0 ..^ N
5 inidm ⊢ 0 ..^ N ∩ 0 ..^ N = 0 ..^ N
6 5 ineq2i ⊢ A ∩ 0 ..^ N ∩ 0 ..^ N = A ∩ 0 ..^ N
7 4 6 eqtri ⊢ A ∩ 0 ..^ N ∩ 0 ..^ N = A ∩ 0 ..^ N
8 7 fveq2i ⊢ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N
9 inass ⊢ B ∩ 0 ..^ N ∩ 0 ..^ N = B ∩ 0 ..^ N ∩ 0 ..^ N
10 5 ineq2i ⊢ B ∩ 0 ..^ N ∩ 0 ..^ N = B ∩ 0 ..^ N
11 9 10 eqtri ⊢ B ∩ 0 ..^ N ∩ 0 ..^ N = B ∩ 0 ..^ N
12 11 fveq2i ⊢ bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N
13 8 12 oveq12i ⊢ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N ∩ 0 ..^ N + bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N + bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N
14 13 oveq1i ⊢ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N ∩ 0 ..^ N + bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N + bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N mod 2 N
15 inss1 ⊢ A ∩ 0 ..^ N ⊆ A
16 15 1 sstrid ⊢ φ → A ∩ 0 ..^ N ⊆ ℕ 0
17 inss1 ⊢ B ∩ 0 ..^ N ⊆ B
18 17 2 sstrid ⊢ φ → B ∩ 0 ..^ N ⊆ ℕ 0
19 eqid ⊢ seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A ∩ 0 ..^ N m ∈ B ∩ 0 ..^ N ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1 = seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A ∩ 0 ..^ N m ∈ B ∩ 0 ..^ N ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1
20 eqid ⊢ bits ↾ ℕ 0 -1 = bits ↾ ℕ 0 -1
21 16 18 19 3 20 sadadd3 ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N ∩ 0 ..^ N + bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N ∩ 0 ..^ N mod 2 N
22 eqid ⊢ seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A m ∈ B ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1 = seq 0 c ∈ 2 𝑜 , m ∈ ℕ 0 ⟼ if cadd m ∈ A m ∈ B ∅ ∈ c 1 𝑜 ∅ n ∈ ℕ 0 ⟼ if n = 0 ∅ n − 1
23 1 2 22 3 20 sadadd3 ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N + bits ↾ ℕ 0 -1 ⁡ B ∩ 0 ..^ N mod 2 N
24 14 21 23 3eqtr4a ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N mod 2 N
25 inss1 ⊢ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N
26 sadcl ⊢ A ∩ 0 ..^ N ⊆ ℕ 0 ∧ B ∩ 0 ..^ N ⊆ ℕ 0 → A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ⊆ ℕ 0
27 16 18 26 syl2anc ⊢ φ → A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ⊆ ℕ 0
28 25 27 sstrid ⊢ φ → A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ ℕ 0
29 fzofi ⊢ 0 ..^ N ∈ Fin
30 29 a1i ⊢ φ → 0 ..^ N ∈ Fin
31 inss2 ⊢ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ 0 ..^ N
32 ssfi ⊢ 0 ..^ N ∈ Fin ∧ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ 0 ..^ N → A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ Fin
33 30 31 32 sylancl ⊢ φ → A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ Fin
34 elfpw ⊢ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ↔ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ ℕ 0 ∧ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ Fin
35 28 33 34 sylanbrc ⊢ φ → A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin
36 bitsf1o ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin
37 f1ocnv ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0
38 f1of ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0 → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
39 36 37 38 mp2b ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ ℕ 0
40 39 ffvelcdmi ⊢ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ ℕ 0
41 35 40 syl ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ ℕ 0
42 41 nn0red ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ ℝ
43 2rp ⊢ 2 ∈ ℝ +
44 43 a1i ⊢ φ → 2 ∈ ℝ +
45 3 nn0zd ⊢ φ → N ∈ ℤ
46 44 45 rpexpcld ⊢ φ → 2 N ∈ ℝ +
47 41 nn0ge0d ⊢ φ → 0 ≤ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
48 41 fvresd ⊢ φ → bits ↾ ℕ 0 ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N = bits ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
49 f1ocnvfv2 ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin ∧ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
50 36 35 49 sylancr ⊢ φ → bits ↾ ℕ 0 ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
51 48 50 eqtr3d ⊢ φ → bits ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
52 51 31 eqsstrdi ⊢ φ → bits ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ 0 ..^ N
53 41 nn0zd ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ ℤ
54 bitsfzo ⊢ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ ℤ ∧ N ∈ ℕ 0 → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 0 ..^ 2 N ↔ bits ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ 0 ..^ N
55 53 3 54 syl2anc ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 0 ..^ 2 N ↔ bits ⁡ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ⊆ 0 ..^ N
56 52 55 mpbird ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 0 ..^ 2 N
57 elfzolt2 ⊢ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 0 ..^ 2 N → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N < 2 N
58 56 57 syl ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N < 2 N
59 modid ⊢ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ ℝ ∧ 2 N ∈ ℝ + ∧ 0 ≤ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∧ bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N < 2 N → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
60 42 46 47 58 59 syl22anc ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
61 inss1 ⊢ A sadd B ∩ 0 ..^ N ⊆ A sadd B
62 sadcl ⊢ A ⊆ ℕ 0 ∧ B ⊆ ℕ 0 → A sadd B ⊆ ℕ 0
63 1 2 62 syl2anc ⊢ φ → A sadd B ⊆ ℕ 0
64 61 63 sstrid ⊢ φ → A sadd B ∩ 0 ..^ N ⊆ ℕ 0
65 inss2 ⊢ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N
66 ssfi ⊢ 0 ..^ N ∈ Fin ∧ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N → A sadd B ∩ 0 ..^ N ∈ Fin
67 30 65 66 sylancl ⊢ φ → A sadd B ∩ 0 ..^ N ∈ Fin
68 elfpw ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ↔ A sadd B ∩ 0 ..^ N ⊆ ℕ 0 ∧ A sadd B ∩ 0 ..^ N ∈ Fin
69 64 67 68 sylanbrc ⊢ φ → A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin
70 39 ffvelcdmi ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ ℕ 0
71 69 70 syl ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ ℕ 0
72 71 nn0red ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ ℝ
73 71 nn0ge0d ⊢ φ → 0 ≤ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N
74 71 fvresd ⊢ φ → bits ↾ ℕ 0 ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = bits ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N
75 f1ocnvfv2 ⊢ bits ↾ ℕ 0 : ℕ 0 ⟶ 1-1 onto 𝒫 ℕ 0 ∩ Fin ∧ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = A sadd B ∩ 0 ..^ N
76 36 69 75 sylancr ⊢ φ → bits ↾ ℕ 0 ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = A sadd B ∩ 0 ..^ N
77 74 76 eqtr3d ⊢ φ → bits ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = A sadd B ∩ 0 ..^ N
78 77 65 eqsstrdi ⊢ φ → bits ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N
79 71 nn0zd ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ ℤ
80 bitsfzo ⊢ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ ℤ ∧ N ∈ ℕ 0 → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ 0 ..^ 2 N ↔ bits ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N
81 79 3 80 syl2anc ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ 0 ..^ 2 N ↔ bits ⁡ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ⊆ 0 ..^ N
82 78 81 mpbird ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ 0 ..^ 2 N
83 elfzolt2 ⊢ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ 0 ..^ 2 N → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N < 2 N
84 82 83 syl ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N < 2 N
85 modid ⊢ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∈ ℝ ∧ 2 N ∈ ℝ + ∧ 0 ≤ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N ∧ bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N < 2 N → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N
86 72 46 73 84 85 syl22anc ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N mod 2 N = bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N
87 24 60 86 3eqtr3rd ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
88 f1of1 ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 onto ℕ 0 → bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 ℕ 0
89 36 37 88 mp2b ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 ℕ 0
90 f1fveq ⊢ bits ↾ ℕ 0 -1 : 𝒫 ℕ 0 ∩ Fin ⟶ 1-1 ℕ 0 ∧ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ∧ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ↔ A sadd B ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
91 89 90 mpan ⊢ A sadd B ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin ∧ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ∈ 𝒫 ℕ 0 ∩ Fin → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ↔ A sadd B ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
92 69 35 91 syl2anc ⊢ φ → bits ↾ ℕ 0 -1 ⁡ A sadd B ∩ 0 ..^ N = bits ↾ ℕ 0 -1 ⁡ A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N ↔ A sadd B ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N
93 87 92 mpbid ⊢ φ → A sadd B ∩ 0 ..^ N = A ∩ 0 ..^ N sadd B ∩ 0 ..^ N ∩ 0 ..^ N