Database
ELEMENTARY NUMBER THEORY
Elementary properties of divisibility
Bit sequences
sadaddlem
Next ⟩
sadadd
Metamath Proof Explorer
Ascii
Unicode
Theorem
sadaddlem
Description:
Lemma for
sadadd
.
(Contributed by
Mario Carneiro
, 9-Sep-2016)
Ref
Expression
Hypotheses
sadaddlem.c
⊢
C
=
seq
0
c
∈
2
𝑜
,
m
∈
ℕ
0
⟼
if
cadd
m
∈
bits
A
m
∈
bits
B
∅
∈
c
1
𝑜
∅
n
∈
ℕ
0
⟼
if
n
=
0
∅
n
−
1
sadaddlem.k
⊢
K
=
bits
↾
ℕ
0
-1
sadaddlem.1
⊢
φ
→
A
∈
ℤ
sadaddlem.2
⊢
φ
→
B
∈
ℤ
sadaddlem.3
⊢
φ
→
N
∈
ℕ
0
Assertion
sadaddlem
⊢
φ
→
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
A
+
B
mod
2
N
Proof
Step
Hyp
Ref
Expression
1
sadaddlem.c
⊢
C
=
seq
0
c
∈
2
𝑜
,
m
∈
ℕ
0
⟼
if
cadd
m
∈
bits
A
m
∈
bits
B
∅
∈
c
1
𝑜
∅
n
∈
ℕ
0
⟼
if
n
=
0
∅
n
−
1
2
sadaddlem.k
⊢
K
=
bits
↾
ℕ
0
-1
3
sadaddlem.1
⊢
φ
→
A
∈
ℤ
4
sadaddlem.2
⊢
φ
→
B
∈
ℤ
5
sadaddlem.3
⊢
φ
→
N
∈
ℕ
0
6
2nn
⊢
2
∈
ℕ
7
6
a1i
⊢
φ
→
2
∈
ℕ
8
7
5
nnexpcld
⊢
φ
→
2
N
∈
ℕ
9
8
nnzd
⊢
φ
→
2
N
∈
ℤ
10
inss1
⊢
bits
A
∩
0
..^
N
⊆
bits
A
11
bitsss
⊢
bits
A
⊆
ℕ
0
12
10
11
sstri
⊢
bits
A
∩
0
..^
N
⊆
ℕ
0
13
fzofi
⊢
0
..^
N
∈
Fin
14
inss2
⊢
bits
A
∩
0
..^
N
⊆
0
..^
N
15
ssfi
⊢
0
..^
N
∈
Fin
∧
bits
A
∩
0
..^
N
⊆
0
..^
N
→
bits
A
∩
0
..^
N
∈
Fin
16
13
14
15
mp2an
⊢
bits
A
∩
0
..^
N
∈
Fin
17
elfpw
⊢
bits
A
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
↔
bits
A
∩
0
..^
N
⊆
ℕ
0
∧
bits
A
∩
0
..^
N
∈
Fin
18
12
16
17
mpbir2an
⊢
bits
A
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
19
bitsf1o
⊢
bits
↾
ℕ
0
:
ℕ
0
⟶
1-1 onto
𝒫
ℕ
0
∩
Fin
20
f1ocnv
⊢
bits
↾
ℕ
0
:
ℕ
0
⟶
1-1 onto
𝒫
ℕ
0
∩
Fin
→
bits
↾
ℕ
0
-1
:
𝒫
ℕ
0
∩
Fin
⟶
1-1 onto
ℕ
0
21
f1of
⊢
bits
↾
ℕ
0
-1
:
𝒫
ℕ
0
∩
Fin
⟶
1-1 onto
ℕ
0
→
bits
↾
ℕ
0
-1
:
𝒫
ℕ
0
∩
Fin
⟶
ℕ
0
22
19
20
21
mp2b
⊢
bits
↾
ℕ
0
-1
:
𝒫
ℕ
0
∩
Fin
⟶
ℕ
0
23
2
feq1i
⊢
K
:
𝒫
ℕ
0
∩
Fin
⟶
ℕ
0
↔
bits
↾
ℕ
0
-1
:
𝒫
ℕ
0
∩
Fin
⟶
ℕ
0
24
22
23
mpbir
⊢
K
:
𝒫
ℕ
0
∩
Fin
⟶
ℕ
0
25
24
ffvelcdmi
⊢
bits
A
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
→
K
bits
A
∩
0
..^
N
∈
ℕ
0
26
18
25
mp1i
⊢
φ
→
K
bits
A
∩
0
..^
N
∈
ℕ
0
27
26
nn0zd
⊢
φ
→
K
bits
A
∩
0
..^
N
∈
ℤ
28
3
27
zsubcld
⊢
φ
→
A
−
K
bits
A
∩
0
..^
N
∈
ℤ
29
inss1
⊢
bits
B
∩
0
..^
N
⊆
bits
B
30
bitsss
⊢
bits
B
⊆
ℕ
0
31
29
30
sstri
⊢
bits
B
∩
0
..^
N
⊆
ℕ
0
32
inss2
⊢
bits
B
∩
0
..^
N
⊆
0
..^
N
33
ssfi
⊢
0
..^
N
∈
Fin
∧
bits
B
∩
0
..^
N
⊆
0
..^
N
→
bits
B
∩
0
..^
N
∈
Fin
34
13
32
33
mp2an
⊢
bits
B
∩
0
..^
N
∈
Fin
35
elfpw
⊢
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
↔
bits
B
∩
0
..^
N
⊆
ℕ
0
∧
bits
B
∩
0
..^
N
∈
Fin
36
31
34
35
mpbir2an
⊢
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
37
24
ffvelcdmi
⊢
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
→
K
bits
B
∩
0
..^
N
∈
ℕ
0
38
36
37
mp1i
⊢
φ
→
K
bits
B
∩
0
..^
N
∈
ℕ
0
39
38
nn0zd
⊢
φ
→
K
bits
B
∩
0
..^
N
∈
ℤ
40
4
39
zsubcld
⊢
φ
→
B
−
K
bits
B
∩
0
..^
N
∈
ℤ
41
2
fveq1i
⊢
K
bits
A
∩
0
..^
N
=
bits
↾
ℕ
0
-1
bits
A
∩
0
..^
N
42
3
8
zmodcld
⊢
φ
→
A
mod
2
N
∈
ℕ
0
43
42
fvresd
⊢
φ
→
bits
↾
ℕ
0
A
mod
2
N
=
bits
A
mod
2
N
44
bitsmod
⊢
A
∈
ℤ
∧
N
∈
ℕ
0
→
bits
A
mod
2
N
=
bits
A
∩
0
..^
N
45
3
5
44
syl2anc
⊢
φ
→
bits
A
mod
2
N
=
bits
A
∩
0
..^
N
46
43
45
eqtrd
⊢
φ
→
bits
↾
ℕ
0
A
mod
2
N
=
bits
A
∩
0
..^
N
47
f1ocnvfv
⊢
bits
↾
ℕ
0
:
ℕ
0
⟶
1-1 onto
𝒫
ℕ
0
∩
Fin
∧
A
mod
2
N
∈
ℕ
0
→
bits
↾
ℕ
0
A
mod
2
N
=
bits
A
∩
0
..^
N
→
bits
↾
ℕ
0
-1
bits
A
∩
0
..^
N
=
A
mod
2
N
48
19
42
47
sylancr
⊢
φ
→
bits
↾
ℕ
0
A
mod
2
N
=
bits
A
∩
0
..^
N
→
bits
↾
ℕ
0
-1
bits
A
∩
0
..^
N
=
A
mod
2
N
49
46
48
mpd
⊢
φ
→
bits
↾
ℕ
0
-1
bits
A
∩
0
..^
N
=
A
mod
2
N
50
41
49
eqtrid
⊢
φ
→
K
bits
A
∩
0
..^
N
=
A
mod
2
N
51
50
oveq2d
⊢
φ
→
A
−
K
bits
A
∩
0
..^
N
=
A
−
A
mod
2
N
52
51
oveq1d
⊢
φ
→
A
−
K
bits
A
∩
0
..^
N
2
N
=
A
−
A
mod
2
N
2
N
53
3
zred
⊢
φ
→
A
∈
ℝ
54
8
nnrpd
⊢
φ
→
2
N
∈
ℝ
+
55
moddifz
⊢
A
∈
ℝ
∧
2
N
∈
ℝ
+
→
A
−
A
mod
2
N
2
N
∈
ℤ
56
53
54
55
syl2anc
⊢
φ
→
A
−
A
mod
2
N
2
N
∈
ℤ
57
52
56
eqeltrd
⊢
φ
→
A
−
K
bits
A
∩
0
..^
N
2
N
∈
ℤ
58
8
nnne0d
⊢
φ
→
2
N
≠
0
59
dvdsval2
⊢
2
N
∈
ℤ
∧
2
N
≠
0
∧
A
−
K
bits
A
∩
0
..^
N
∈
ℤ
→
2
N
∥
A
−
K
bits
A
∩
0
..^
N
↔
A
−
K
bits
A
∩
0
..^
N
2
N
∈
ℤ
60
9
58
28
59
syl3anc
⊢
φ
→
2
N
∥
A
−
K
bits
A
∩
0
..^
N
↔
A
−
K
bits
A
∩
0
..^
N
2
N
∈
ℤ
61
57
60
mpbird
⊢
φ
→
2
N
∥
A
−
K
bits
A
∩
0
..^
N
62
2
fveq1i
⊢
K
bits
B
∩
0
..^
N
=
bits
↾
ℕ
0
-1
bits
B
∩
0
..^
N
63
4
8
zmodcld
⊢
φ
→
B
mod
2
N
∈
ℕ
0
64
63
fvresd
⊢
φ
→
bits
↾
ℕ
0
B
mod
2
N
=
bits
B
mod
2
N
65
bitsmod
⊢
B
∈
ℤ
∧
N
∈
ℕ
0
→
bits
B
mod
2
N
=
bits
B
∩
0
..^
N
66
4
5
65
syl2anc
⊢
φ
→
bits
B
mod
2
N
=
bits
B
∩
0
..^
N
67
64
66
eqtrd
⊢
φ
→
bits
↾
ℕ
0
B
mod
2
N
=
bits
B
∩
0
..^
N
68
f1ocnvfv
⊢
bits
↾
ℕ
0
:
ℕ
0
⟶
1-1 onto
𝒫
ℕ
0
∩
Fin
∧
B
mod
2
N
∈
ℕ
0
→
bits
↾
ℕ
0
B
mod
2
N
=
bits
B
∩
0
..^
N
→
bits
↾
ℕ
0
-1
bits
B
∩
0
..^
N
=
B
mod
2
N
69
19
63
68
sylancr
⊢
φ
→
bits
↾
ℕ
0
B
mod
2
N
=
bits
B
∩
0
..^
N
→
bits
↾
ℕ
0
-1
bits
B
∩
0
..^
N
=
B
mod
2
N
70
67
69
mpd
⊢
φ
→
bits
↾
ℕ
0
-1
bits
B
∩
0
..^
N
=
B
mod
2
N
71
62
70
eqtrid
⊢
φ
→
K
bits
B
∩
0
..^
N
=
B
mod
2
N
72
71
oveq2d
⊢
φ
→
B
−
K
bits
B
∩
0
..^
N
=
B
−
B
mod
2
N
73
72
oveq1d
⊢
φ
→
B
−
K
bits
B
∩
0
..^
N
2
N
=
B
−
B
mod
2
N
2
N
74
4
zred
⊢
φ
→
B
∈
ℝ
75
moddifz
⊢
B
∈
ℝ
∧
2
N
∈
ℝ
+
→
B
−
B
mod
2
N
2
N
∈
ℤ
76
74
54
75
syl2anc
⊢
φ
→
B
−
B
mod
2
N
2
N
∈
ℤ
77
73
76
eqeltrd
⊢
φ
→
B
−
K
bits
B
∩
0
..^
N
2
N
∈
ℤ
78
dvdsval2
⊢
2
N
∈
ℤ
∧
2
N
≠
0
∧
B
−
K
bits
B
∩
0
..^
N
∈
ℤ
→
2
N
∥
B
−
K
bits
B
∩
0
..^
N
↔
B
−
K
bits
B
∩
0
..^
N
2
N
∈
ℤ
79
9
58
40
78
syl3anc
⊢
φ
→
2
N
∥
B
−
K
bits
B
∩
0
..^
N
↔
B
−
K
bits
B
∩
0
..^
N
2
N
∈
ℤ
80
77
79
mpbird
⊢
φ
→
2
N
∥
B
−
K
bits
B
∩
0
..^
N
81
9
28
40
61
80
dvds2addd
⊢
φ
→
2
N
∥
A
−
K
bits
A
∩
0
..^
N
+
B
-
K
bits
B
∩
0
..^
N
82
3
zcnd
⊢
φ
→
A
∈
ℂ
83
4
zcnd
⊢
φ
→
B
∈
ℂ
84
26
nn0cnd
⊢
φ
→
K
bits
A
∩
0
..^
N
∈
ℂ
85
38
nn0cnd
⊢
φ
→
K
bits
B
∩
0
..^
N
∈
ℂ
86
82
83
84
85
addsub4d
⊢
φ
→
A
+
B
-
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
=
A
−
K
bits
A
∩
0
..^
N
+
B
-
K
bits
B
∩
0
..^
N
87
81
86
breqtrrd
⊢
φ
→
2
N
∥
A
+
B
-
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
88
3
4
zaddcld
⊢
φ
→
A
+
B
∈
ℤ
89
27
39
zaddcld
⊢
φ
→
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
∈
ℤ
90
moddvds
⊢
2
N
∈
ℕ
∧
A
+
B
∈
ℤ
∧
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
∈
ℤ
→
A
+
B
mod
2
N
=
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
mod
2
N
↔
2
N
∥
A
+
B
-
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
91
8
88
89
90
syl3anc
⊢
φ
→
A
+
B
mod
2
N
=
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
mod
2
N
↔
2
N
∥
A
+
B
-
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
92
87
91
mpbird
⊢
φ
→
A
+
B
mod
2
N
=
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
mod
2
N
93
11
a1i
⊢
φ
→
bits
A
⊆
ℕ
0
94
30
a1i
⊢
φ
→
bits
B
⊆
ℕ
0
95
93
94
1
5
2
sadadd3
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
mod
2
N
=
K
bits
A
∩
0
..^
N
+
K
bits
B
∩
0
..^
N
mod
2
N
96
inss1
⊢
bits
A
sadd
bits
B
∩
0
..^
N
⊆
bits
A
sadd
bits
B
97
sadcl
⊢
bits
A
⊆
ℕ
0
∧
bits
B
⊆
ℕ
0
→
bits
A
sadd
bits
B
⊆
ℕ
0
98
11
30
97
mp2an
⊢
bits
A
sadd
bits
B
⊆
ℕ
0
99
96
98
sstri
⊢
bits
A
sadd
bits
B
∩
0
..^
N
⊆
ℕ
0
100
inss2
⊢
bits
A
sadd
bits
B
∩
0
..^
N
⊆
0
..^
N
101
ssfi
⊢
0
..^
N
∈
Fin
∧
bits
A
sadd
bits
B
∩
0
..^
N
⊆
0
..^
N
→
bits
A
sadd
bits
B
∩
0
..^
N
∈
Fin
102
13
100
101
mp2an
⊢
bits
A
sadd
bits
B
∩
0
..^
N
∈
Fin
103
elfpw
⊢
bits
A
sadd
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
↔
bits
A
sadd
bits
B
∩
0
..^
N
⊆
ℕ
0
∧
bits
A
sadd
bits
B
∩
0
..^
N
∈
Fin
104
99
102
103
mpbir2an
⊢
bits
A
sadd
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
105
24
ffvelcdmi
⊢
bits
A
sadd
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
ℕ
0
106
104
105
mp1i
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
ℕ
0
107
106
nn0red
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
ℝ
108
106
nn0ge0d
⊢
φ
→
0
≤
K
bits
A
sadd
bits
B
∩
0
..^
N
109
2
fveq1i
⊢
K
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
↾
ℕ
0
-1
bits
A
sadd
bits
B
∩
0
..^
N
110
109
fveq2i
⊢
bits
↾
ℕ
0
K
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
↾
ℕ
0
bits
↾
ℕ
0
-1
bits
A
sadd
bits
B
∩
0
..^
N
111
106
fvresd
⊢
φ
→
bits
↾
ℕ
0
K
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
K
bits
A
sadd
bits
B
∩
0
..^
N
112
104
a1i
⊢
φ
→
bits
A
sadd
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
113
f1ocnvfv2
⊢
bits
↾
ℕ
0
:
ℕ
0
⟶
1-1 onto
𝒫
ℕ
0
∩
Fin
∧
bits
A
sadd
bits
B
∩
0
..^
N
∈
𝒫
ℕ
0
∩
Fin
→
bits
↾
ℕ
0
bits
↾
ℕ
0
-1
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
A
sadd
bits
B
∩
0
..^
N
114
19
112
113
sylancr
⊢
φ
→
bits
↾
ℕ
0
bits
↾
ℕ
0
-1
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
A
sadd
bits
B
∩
0
..^
N
115
110
111
114
3eqtr3a
⊢
φ
→
bits
K
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
A
sadd
bits
B
∩
0
..^
N
116
115
100
eqsstrdi
⊢
φ
→
bits
K
bits
A
sadd
bits
B
∩
0
..^
N
⊆
0
..^
N
117
106
nn0zd
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
ℤ
118
bitsfzo
⊢
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
ℤ
∧
N
∈
ℕ
0
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
0
..^
2
N
↔
bits
K
bits
A
sadd
bits
B
∩
0
..^
N
⊆
0
..^
N
119
117
5
118
syl2anc
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
0
..^
2
N
↔
bits
K
bits
A
sadd
bits
B
∩
0
..^
N
⊆
0
..^
N
120
116
119
mpbird
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
0
..^
2
N
121
elfzolt2
⊢
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
0
..^
2
N
→
K
bits
A
sadd
bits
B
∩
0
..^
N
<
2
N
122
120
121
syl
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
<
2
N
123
modid
⊢
K
bits
A
sadd
bits
B
∩
0
..^
N
∈
ℝ
∧
2
N
∈
ℝ
+
∧
0
≤
K
bits
A
sadd
bits
B
∩
0
..^
N
∧
K
bits
A
sadd
bits
B
∩
0
..^
N
<
2
N
→
K
bits
A
sadd
bits
B
∩
0
..^
N
mod
2
N
=
K
bits
A
sadd
bits
B
∩
0
..^
N
124
107
54
108
122
123
syl22anc
⊢
φ
→
K
bits
A
sadd
bits
B
∩
0
..^
N
mod
2
N
=
K
bits
A
sadd
bits
B
∩
0
..^
N
125
92
95
124
3eqtr2d
⊢
φ
→
A
+
B
mod
2
N
=
K
bits
A
sadd
bits
B
∩
0
..^
N
126
125
fveq2d
⊢
φ
→
bits
A
+
B
mod
2
N
=
bits
K
bits
A
sadd
bits
B
∩
0
..^
N
127
126
115
eqtr2d
⊢
φ
→
bits
A
sadd
bits
B
∩
0
..^
N
=
bits
A
+
B
mod
2
N