@@ -27,12 +27,6 @@ local attribute [simp] -- euclidean_domain.mod_eq_zero uses (2 ∣ n) as normal
27
27
theorem mod_two_ne_zero : ¬ n % 2 = 0 ↔ n % 2 = 1 :=
28
28
by cases mod_two_eq_zero_or_one n with h h; simp [h]
29
29
30
- @[simp] theorem even_coe_nat (n : ℕ) : even (n : ℤ) ↔ even n :=
31
- have ∀ m, 2 * to_nat m = to_nat (2 * m),
32
- from λ m, by cases m; refl,
33
- ⟨λ ⟨m, hm⟩, ⟨to_nat m, by rw [this , ←to_nat_coe_nat n, hm]⟩,
34
- λ ⟨m, hm⟩, ⟨m, by simp [hm]⟩⟩
35
-
36
30
theorem even_iff : even n ↔ n % 2 = 0 :=
37
31
⟨λ ⟨m, hm⟩, by simp [hm], λ h, ⟨n / 2 , (mod_add_div n 2 ).symm.trans (by simp [h])⟩⟩
38
32
@@ -158,9 +152,12 @@ theorem odd.of_mul_left (h : odd (m * n)) : odd m :=
158
152
theorem odd.of_mul_right (h : odd (m * n)) : odd n :=
159
153
(odd_mul.mp h).2
160
154
161
- @[parity_simps] theorem even_pow {n : ℕ} : even (m^ n) ↔ even m ∧ n ≠ 0 :=
155
+ @[parity_simps] theorem even_pow {n : ℕ} : even (m ^ n) ↔ even m ∧ n ≠ 0 :=
162
156
by { induction n with n ih; simp [*, even_mul, pow_succ], tauto }
163
157
158
+ theorem even_pow' {n : ℕ} (h : n ≠ 0 ) : even (m ^ n) ↔ even m :=
159
+ even_pow.trans $ and_iff_left h
160
+
164
161
@[parity_simps] theorem odd_add : odd (m + n) ↔ (odd m ↔ even n) :=
165
162
by rw [odd_iff_not_even, even_add, not_iff, odd_iff_not_even]
166
163
@@ -195,6 +192,18 @@ begin
195
192
simp with parity_simps
196
193
end
197
194
195
+ @[simp, norm_cast] theorem even_coe_nat (n : ℕ) : even (n : ℤ) ↔ even n :=
196
+ by rw_mod_cast [even_iff, nat.even_iff]
197
+
198
+ @[simp, norm_cast] theorem odd_coe_nat (n : ℕ) : odd (n : ℤ) ↔ odd n :=
199
+ by rw [odd_iff_not_even, nat.odd_iff_not_even, even_coe_nat]
200
+
201
+ @[simp] theorem nat_abs_even : even n.nat_abs ↔ even n :=
202
+ coe_nat_dvd_left.symm
203
+
204
+ @[simp] theorem nat_abs_odd : odd n.nat_abs ↔ odd n :=
205
+ by rw [odd_iff_not_even, nat.odd_iff_not_even, nat_abs_even]
206
+
198
207
-- Here are examples of how `parity_simps` can be used with `int`.
199
208
200
209
example (m n : ℤ) (h : even m) : ¬ even (n + 3 ) ↔ even (m^2 + m + n) :=
0 commit comments