Skip to content

Commit 406d494

Browse files
committed
chore(NumberTheory/EllipticDivisibilitySequence): simplify proofs and deprecate lemmas (leanprover-community#24964)
Simplify proofs with terminal `rw`s to terminal `simp`s and deprecate `even/odd_ofNat` lemmas.
1 parent 82b03c0 commit 406d494

3 files changed

Lines changed: 204 additions & 279 deletions

File tree

Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

Lines changed: 79 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,6 @@ open scoped Polynomial.Bivariate
9595
local macro "C_simp" : tactic =>
9696
`(tactic| simp only [map_ofNat, C_0, C_1, C_neg, C_add, C_sub, C_mul, C_pow])
9797

98-
local macro "map_simp" : tactic =>
99-
`(tactic| simp only [map_ofNat, map_neg, map_add, map_sub, map_mul, map_pow, map_div₀,
100-
Polynomial.map_ofNat, Polynomial.map_one, map_C, map_X, Polynomial.map_neg, Polynomial.map_add,
101-
Polynomial.map_sub, Polynomial.map_mul, Polynomial.map_pow, Polynomial.map_div, coe_mapRingHom,
102-
apply_ite <| mapRingHom _, WeierstrassCurve.map])
103-
10498
universe r s u v
10599

106100
namespace WeierstrassCurve
@@ -125,10 +119,10 @@ lemma C_Ψ₂Sq : C W.Ψ₂Sq = W.ψ₂ ^ 2 - 4 * W.toAffine.polynomial := by
125119
ring1
126120

127121
lemma ψ₂_sq : W.ψ₂ ^ 2 = C W.Ψ₂Sq + 4 * W.toAffine.polynomial := by
128-
rw [C_Ψ₂Sq, sub_add_cancel]
122+
simp [C_Ψ₂Sq]
129123

130124
lemma Affine.CoordinateRing.mk_ψ₂_sq : mk W W.ψ₂ ^ 2 = mk W (C W.Ψ₂Sq) := by
131-
rw [C_Ψ₂Sq, map_sub, map_mul, AdjoinRoot.mk_self, mul_zero, sub_zero, map_pow]
125+
simp [C_Ψ₂Sq]
132126

133127
-- TODO: remove `twoTorsionPolynomial` in favour of `Ψ₂Sq`
134128
lemma Ψ₂Sq_eq : W.Ψ₂Sq = W.twoTorsionPolynomial.toPoly :=
@@ -220,16 +214,6 @@ lemma preΨ_three : W.preΨ 3 = W.Ψ₃ :=
220214
lemma preΨ_four : W.preΨ 4 = W.preΨ₄ :=
221215
preNormEDS_four ..
222216

223-
lemma preΨ_even_ofNat (m : ℕ) : W.preΨ (2 * (m + 3)) =
224-
W.preΨ (m + 2) ^ 2 * W.preΨ (m + 3) * W.preΨ (m + 5) -
225-
W.preΨ (m + 1) * W.preΨ (m + 3) * W.preΨ (m + 4) ^ 2 :=
226-
preNormEDS_even_ofNat ..
227-
228-
lemma preΨ_odd_ofNat (m : ℕ) : W.preΨ (2 * (m + 2) + 1) =
229-
W.preΨ (m + 4) * W.preΨ (m + 2) ^ 3 * (if Even m then W.Ψ₂Sq ^ 2 else 1) -
230-
W.preΨ (m + 1) * W.preΨ (m + 3) ^ 3 * (if Even m then 1 else W.Ψ₂Sq ^ 2) :=
231-
preNormEDS_odd_ofNat ..
232-
233217
@[simp]
234218
lemma preΨ_neg (n : ℤ) : W.preΨ (-n) = -W.preΨ n :=
235219
preNormEDS_neg ..
@@ -239,11 +223,15 @@ lemma preΨ_even (m : ℤ) : W.preΨ (2 * m) =
239223
W.preΨ (m - 2) * W.preΨ m * W.preΨ (m + 1) ^ 2 :=
240224
preNormEDS_even ..
241225

226+
@[deprecated (since := "2025-05-15")] alias preΨ_even_ofNat := preΨ_even
227+
242228
lemma preΨ_odd (m : ℤ) : W.preΨ (2 * m + 1) =
243229
W.preΨ (m + 2) * W.preΨ m ^ 3 * (if Even m then W.Ψ₂Sq ^ 2 else 1) -
244230
W.preΨ (m - 1) * W.preΨ (m + 1) ^ 3 * (if Even m then 1 else W.Ψ₂Sq ^ 2) :=
245231
preNormEDS_odd ..
246232

233+
@[deprecated (since := "2025-05-15")] alias preΨ_odd_ofNat := preΨ_odd
234+
247235
end preΨ
248236

249237
section ΨSq
@@ -256,52 +244,46 @@ noncomputable def ΨSq (n : ℤ) : R[X] :=
256244

257245
@[simp]
258246
lemma ΨSq_ofNat (n : ℕ) : W.ΨSq n = W.preΨ' n ^ 2 * if Even n then W.Ψ₂Sq else 1 := by
259-
simp only [ΨSq, preΨ_ofNat, Int.even_coe_nat]
247+
simp [ΨSq]
260248

261249
@[simp]
262250
lemma ΨSq_zero : W.ΨSq 0 = 0 := by
263-
rw [← Nat.cast_zero, ΨSq_ofNat, preΨ'_zero, zero_pow two_ne_zero, zero_mul]
251+
simp [ΨSq]
264252

265253
@[simp]
266254
lemma ΨSq_one : W.ΨSq 1 = 1 := by
267-
rw [← Nat.cast_one, ΨSq_ofNat, preΨ'_one, one_pow, one_mul, if_neg Nat.not_even_one]
255+
simp [ΨSq]
268256

269257
@[simp]
270258
lemma ΨSq_two : W.ΨSq 2 = W.Ψ₂Sq := by
271-
rw [← Nat.cast_two, ΨSq_ofNat, preΨ'_two, one_pow, one_mul, if_pos even_two]
259+
simp [ΨSq]
272260

273261
@[simp]
274262
lemma ΨSq_three : W.ΨSq 3 = W.Ψ₃ ^ 2 := by
275-
rw [← Nat.cast_three, ΨSq_ofNat, preΨ'_three, if_neg <| by decide, mul_one]
263+
simp [ΨSq, show ¬Even (3 : ℤ) by decide]
276264

277265
@[simp]
278266
lemma ΨSq_four : W.ΨSq 4 = W.preΨ₄ ^ 2 * W.Ψ₂Sq := by
279-
rw [← Nat.cast_four, ΨSq_ofNat, preΨ'_four, if_pos <| by decide]
280-
281-
lemma ΨSq_even_ofNat (m : ℕ) : W.ΨSq (2 * (m + 3)) =
282-
(W.preΨ' (m + 2) ^ 2 * W.preΨ' (m + 3) * W.preΨ' (m + 5) -
283-
W.preΨ' (m + 1) * W.preΨ' (m + 3) * W.preΨ' (m + 4) ^ 2) ^ 2 * W.Ψ₂Sq := by
284-
rw_mod_cast [ΨSq_ofNat, preΨ'_even, if_pos <| even_two_mul _]
285-
286-
lemma ΨSq_odd_ofNat (m : ℕ) : W.ΨSq (2 * (m + 2) + 1) =
287-
(W.preΨ' (m + 4) * W.preΨ' (m + 2) ^ 3 * (if Even m then W.Ψ₂Sq ^ 2 else 1) -
288-
W.preΨ' (m + 1) * W.preΨ' (m + 3) ^ 3 * (if Even m then 1 else W.Ψ₂Sq ^ 2)) ^ 2 := by
289-
rw_mod_cast [ΨSq_ofNat, preΨ'_odd, if_neg (m + 2).not_even_two_mul_add_one, mul_one]
267+
simp [ΨSq, show ¬Odd (4 : ℤ) by decide]
290268

291269
@[simp]
292270
lemma ΨSq_neg (n : ℤ) : W.ΨSq (-n) = W.ΨSq n := by
293-
simp only [ΨSq, preΨ_neg, neg_sq, even_neg]
271+
simp [ΨSq]
294272

295273
lemma ΨSq_even (m : ℤ) : W.ΨSq (2 * m) =
296274
(W.preΨ (m - 1) ^ 2 * W.preΨ m * W.preΨ (m + 2) -
297275
W.preΨ (m - 2) * W.preΨ m * W.preΨ (m + 1) ^ 2) ^ 2 * W.Ψ₂Sq := by
298-
rw [ΨSq, preΨ_even, if_pos <| even_two_mul _]
276+
rw [ΨSq, preΨ_even, if_pos <| even_two_mul m]
277+
278+
@[deprecated (since := "2025-05-15")] alias ΨSq_even_ofNat := ΨSq_even
299279

300280
lemma ΨSq_odd (m : ℤ) : W.ΨSq (2 * m + 1) =
301281
(W.preΨ (m + 2) * W.preΨ m ^ 3 * (if Even m then W.Ψ₂Sq ^ 2 else 1) -
302282
W.preΨ (m - 1) * W.preΨ (m + 1) ^ 3 * (if Even m then 1 else W.Ψ₂Sq ^ 2)) ^ 2 := by
303283
rw [ΨSq, preΨ_odd, if_neg m.not_even_two_mul_add_one, mul_one]
304284

285+
@[deprecated (since := "2025-05-15")] alias ΨSq_odd_ofNat := ΨSq_odd
286+
305287
end ΨSq
306288

307289
section Ψ
@@ -316,67 +298,54 @@ open WeierstrassCurve (Ψ)
316298

317299
@[simp]
318300
lemma Ψ_ofNat (n : ℕ) : W.Ψ n = C (W.preΨ' n) * if Even n then W.ψ₂ else 1 := by
319-
simp only [Ψ, preΨ_ofNat, Int.even_coe_nat]
301+
simp ]
320302

321303
@[simp]
322304
lemma Ψ_zero : W.Ψ 0 = 0 := by
323-
rw [← Nat.cast_zero, Ψ_ofNat, preΨ'_zero, C_0, zero_mul]
305+
simp [Ψ]
324306

325307
@[simp]
326308
lemma Ψ_one : W.Ψ 1 = 1 := by
327-
rw [← Nat.cast_one, Ψ_ofNat, preΨ'_one, C_1, if_neg Nat.not_even_one, mul_one]
309+
simp [Ψ]
328310

329311
@[simp]
330312
lemma Ψ_two : W.Ψ 2 = W.ψ₂ := by
331-
rw [← Nat.cast_two, Ψ_ofNat, preΨ'_two, C_1, one_mul, if_pos even_two]
313+
simp [Ψ]
332314

333315
@[simp]
334316
lemma Ψ_three : W.Ψ 3 = C W.Ψ₃ := by
335-
rw [← Nat.cast_three, Ψ_ofNat, preΨ'_three, if_neg <| by decide, mul_one]
317+
simp [Ψ, show ¬Even (3 : ℤ) by decide]
336318

337319
@[simp]
338320
lemma Ψ_four : W.Ψ 4 = C W.preΨ₄ * W.ψ₂ := by
339-
rw [← Nat.cast_four, Ψ_ofNat, preΨ'_four, if_pos <| by decide]
340-
341-
lemma Ψ_even_ofNat (m : ℕ) : W.Ψ (2 * (m + 3)) * W.ψ₂ =
342-
W.Ψ (m + 2) ^ 2 * W.Ψ (m + 3) * W.Ψ (m + 5) - W.Ψ (m + 1) * W.Ψ (m + 3) * W.Ψ (m + 4) ^ 2 := by
343-
repeat rw_mod_cast [Ψ_ofNat]
344-
simp_rw [preΨ'_even, if_pos <| even_two_mul _, Nat.even_add_one, ite_not]
345-
split_ifs <;> C_simp <;> ring1
346-
347-
lemma Ψ_odd_ofNat (m : ℕ) : W.Ψ (2 * (m + 2) + 1) =
348-
W.Ψ (m + 4) * W.Ψ (m + 2) ^ 3 - W.Ψ (m + 1) * W.Ψ (m + 3) ^ 3 +
349-
W.toAffine.polynomial * (16 * W.toAffine.polynomial - 8 * W.ψ₂ ^ 2) *
350-
C (if Even m then W.preΨ' (m + 4) * W.preΨ' (m + 2) ^ 3
351-
else -W.preΨ' (m + 1) * W.preΨ' (m + 3) ^ 3) := by
352-
repeat rw_mod_cast [Ψ_ofNat]
353-
simp_rw [preΨ'_odd, if_neg (m + 2).not_even_two_mul_add_one, Nat.even_add_one, ite_not]
354-
split_ifs <;> C_simp <;> rw [C_Ψ₂Sq] <;> ring1
321+
simp [Ψ, show ¬Odd (4 : ℤ) by decide]
355322

356323
@[simp]
357324
lemma Ψ_neg (n : ℤ) : W.Ψ (-n) = -W.Ψ n := by
358-
simp only [Ψ, preΨ_neg, C_neg, neg_mul (α := R[X][Y]), even_neg]
325+
simp_rw [Ψ, preΨ_neg, C_neg, neg_mul, even_neg]
359326

360327
lemma Ψ_even (m : ℤ) : W.Ψ (2 * m) * W.ψ₂ =
361328
W.Ψ (m - 1) ^ 2 * W.Ψ m * W.Ψ (m + 2) - W.Ψ (m - 2) * W.Ψ m * W.Ψ (m + 1) ^ 2 := by
362-
repeat rw [Ψ]
363-
simp_rw [preΨ_even, if_pos <| even_two_mul _, Int.even_add_one, show m + 2 = m + 1 + 1 by ring1,
364-
Int.even_add_one, show m - 2 = m - 1 - 1 by ring1, Int.even_sub_one, ite_not]
329+
simp_rw [Ψ, preΨ_even, if_pos <| even_two_mul m, Int.even_add, Int.even_sub, even_two, iff_true,
330+
Int.not_even_one, iff_false]
365331
split_ifs <;> C_simp <;> ring1
366332

333+
@[deprecated (since := "2025-05-15")] alias Ψ_even_ofNat := Ψ_even
334+
367335
lemma Ψ_odd (m : ℤ) : W.Ψ (2 * m + 1) =
368336
W.Ψ (m + 2) * W.Ψ m ^ 3 - W.Ψ (m - 1) * W.Ψ (m + 1) ^ 3 +
369337
W.toAffine.polynomial * (16 * W.toAffine.polynomial - 8 * W.ψ₂ ^ 2) *
370338
C (if Even m then W.preΨ (m + 2) * W.preΨ m ^ 3
371339
else -W.preΨ (m - 1) * W.preΨ (m + 1) ^ 3) := by
372-
repeat rw [Ψ]
373-
simp_rw [preΨ_odd, if_neg m.not_even_two_mul_add_one, show m + 2 = m + 1 + 1 by ring1,
374-
Int.even_add_one, Int.even_sub_one, ite_not]
340+
simp_rw [Ψ, preΨ_odd, if_neg m.not_even_two_mul_add_one, Int.even_add, Int.even_sub, even_two,
341+
iff_true, Int.not_even_one, iff_false]
375342
split_ifs <;> C_simp <;> rw [C_Ψ₂Sq] <;> ring1
376343

344+
@[deprecated (since := "2025-05-15")] alias Ψ_odd_ofNat := Ψ_odd
345+
377346
lemma Affine.CoordinateRing.mk_Ψ_sq (n : ℤ) : mk W (W.Ψ n) ^ 2 = mk W (C <| W.ΨSq n) := by
378-
simp only [Ψ, ΨSq, map_one, map_mul, map_pow, one_pow, mul_pow, ite_pow, apply_ite C,
379-
apply_ite <| mk W, mk_ψ₂_sq]
347+
simp_rw [Ψ, ΨSq, map_mul, apply_ite C, apply_ite <| mk W, mul_pow, ite_pow, mk_ψ₂_sq, map_one,
348+
one_pow, map_pow]
380349

381350
end Ψ
382351

@@ -394,19 +363,17 @@ open WeierstrassCurve (Φ)
394363
lemma Φ_ofNat (n : ℕ) : W.Φ (n + 1) =
395364
X * W.preΨ' (n + 1) ^ 2 * (if Even n then 1 else W.Ψ₂Sq) -
396365
W.preΨ' (n + 2) * W.preΨ' n * (if Even n then W.Ψ₂Sq else 1) := by
397-
rw [Φ, ← Nat.cast_one, ← Nat.cast_add, ΨSq_ofNat, ← mul_assoc, ← Nat.cast_add, preΨ_ofNat,
398-
Nat.cast_add, add_sub_cancel_right, preΨ_ofNat, ← Nat.cast_add]
399-
simp only [Nat.even_add_one, Int.even_add_one, Int.even_coe_nat, ite_not]
366+
rw [Φ, add_sub_cancel_right]
367+
norm_cast
368+
simp_rw [ΨSq_ofNat, Nat.even_add_one, ite_not, ← mul_assoc, preΨ_ofNat]
400369

401370
@[simp]
402371
lemma Φ_zero : W.Φ 0 = 1 := by
403-
rw [Φ, ΨSq_zero, mul_zero, zero_sub, zero_add, preΨ_one, one_mul, zero_sub, preΨ_neg, preΨ_one,
404-
neg_one_mul, neg_neg, if_pos Even.zero]
372+
simp [Φ]
405373

406374
@[simp]
407375
lemma Φ_one : W.Φ 1 = X := by
408-
rw [show 1 = ((0 : ℕ) + 1 : ℤ) by rfl, Φ_ofNat, preΨ'_one, one_pow, mul_one, if_pos Even.zero,
409-
mul_one, preΨ'_zero, mul_zero, zero_mul, sub_zero]
376+
simp [Φ]
410377

411378
@[simp]
412379
lemma Φ_two : W.Φ 2 = X ^ 4 - C W.b₄ * X ^ 2 - C (2 * W.b₆) * X - C W.b₈ := by
@@ -429,8 +396,8 @@ lemma Φ_four : W.Φ 4 = X * W.preΨ₄ ^ 2 * W.Ψ₂Sq - W.Ψ₃ * (W.preΨ₄
429396

430397
@[simp]
431398
lemma Φ_neg (n : ℤ) : W.Φ (-n) = W.Φ n := by
432-
simp only [Φ, ΨSq_neg, neg_add_eq_sub, ← neg_sub n, preΨ_neg, ← neg_add', preΨ_neg, neg_mul_neg,
433-
mul_comm <| W.preΨ <| n - 1, even_neg]
399+
simp_rw [Φ, ΨSq_neg, ← sub_neg_eq_add, ← neg_sub', sub_neg_eq_add, ← neg_add', preΨ_neg,
400+
neg_mul_neg, mul_comm <| W.preΨ <| n - 1, even_neg]
434401

435402
end Φ
436403

@@ -464,14 +431,6 @@ lemma ψ_three : W.ψ 3 = C W.Ψ₃ :=
464431
lemma ψ_four : W.ψ 4 = C W.preΨ₄ * W.ψ₂ :=
465432
normEDS_four ..
466433

467-
lemma ψ_even_ofNat (m : ℕ) : W.ψ (2 * (m + 3)) * W.ψ₂ =
468-
W.ψ (m + 2) ^ 2 * W.ψ (m + 3) * W.ψ (m + 5) - W.ψ (m + 1) * W.ψ (m + 3) * W.ψ (m + 4) ^ 2 :=
469-
normEDS_even_ofNat ..
470-
471-
lemma ψ_odd_ofNat (m : ℕ) : W.ψ (2 * (m + 2) + 1) =
472-
W.ψ (m + 4) * W.ψ (m + 2) ^ 3 - W.ψ (m + 1) * W.ψ (m + 3) ^ 3 :=
473-
normEDS_odd_ofNat ..
474-
475434
@[simp]
476435
lemma ψ_neg (n : ℤ) : W.ψ (-n) = -W.ψ n :=
477436
normEDS_neg ..
@@ -480,12 +439,16 @@ lemma ψ_even (m : ℤ) : W.ψ (2 * m) * W.ψ₂ =
480439
W.ψ (m - 1) ^ 2 * W.ψ m * W.ψ (m + 2) - W.ψ (m - 2) * W.ψ m * W.ψ (m + 1) ^ 2 :=
481440
normEDS_even ..
482441

442+
@[deprecated (since := "2025-05-15")] alias ψ_even_ofNat := ψ_even
443+
483444
lemma ψ_odd (m : ℤ) : W.ψ (2 * m + 1) =
484445
W.ψ (m + 2) * W.ψ m ^ 3 - W.ψ (m - 1) * W.ψ (m + 1) ^ 3 :=
485446
normEDS_odd ..
486447

448+
@[deprecated (since := "2025-05-15")] alias ψ_odd_ofNat := ψ_odd
449+
487450
lemma Affine.CoordinateRing.mk_ψ (n : ℤ) : mk W (W.ψ n) = mk W (W.Ψ n) := by
488-
simp only [ψ, normEDS, Ψ, preΨ, map_mul, map_pow, map_preNormEDS, ← mk_ψ₂_sq, ← pow_mul]
451+
simp_rw [ψ, normEDS, Ψ, preΨ, map_mul, map_preNormEDS, map_pow, ← mk_ψ₂_sq, ← pow_mul]
489452

490453
end ψ
491454

@@ -501,21 +464,19 @@ open WeierstrassCurve (Ψ Φ φ)
501464

502465
@[simp]
503466
lemma φ_zero : W.φ 0 = 1 := by
504-
rw [φ, ψ_zero, zero_pow two_ne_zero, mul_zero, zero_sub, zero_add, ψ_one, one_mul, zero_sub,
505-
ψ_neg, neg_neg, ψ_one]
467+
simp [φ]
506468

507469
@[simp]
508470
lemma φ_one : W.φ 1 = C X := by
509-
rw, ψ_one, one_pow, mul_one, sub_self, ψ_zero, mul_zero, sub_zero]
471+
simp [φ]
510472

511473
@[simp]
512474
lemma φ_two : W.φ 2 = C X * W.ψ₂ ^ 2 - C W.Ψ₃ := by
513-
rw, ψ_two, two_add_one_eq_three, ψ_three, show (2 - 1 : ℤ) = 1 by rfl, ψ_one, mul_one]
475+
simp [φ]
514476

515477
@[simp]
516478
lemma φ_three : W.φ 3 = C X * C W.Ψ₃ ^ 2 - C W.preΨ₄ * W.ψ₂ ^ 2 := by
517-
rw [φ, ψ_three, three_add_one_eq_four, ψ_four, mul_assoc, show (3 - 1 : ℤ) = 2 by rfl, ψ_two,
518-
← sq]
479+
simp [φ, mul_assoc, sq]
519480

520481
@[simp]
521482
lemma φ_four :
@@ -527,12 +488,12 @@ lemma φ_four :
527488

528489
@[simp]
529490
lemma φ_neg (n : ℤ) : W.φ (-n) = W.φ n := by
530-
rw [φ, ψ_neg, neg_sq (R := R[X][Y]), neg_add_eq_sub, ← neg_sub n, ψ_neg, ← neg_add', ψ_neg,
531-
neg_mul_neg (α := R[X][Y]), mul_comm <| W.ψ _, φ]
491+
simp_rw [φ, ψ_neg, neg_sq, ← sub_neg_eq_add, ← neg_sub', sub_neg_eq_add, ← neg_add', ψ_neg,
492+
neg_mul_neg, mul_comm <| W.ψ <| n - 1]
532493

533494
lemma Affine.CoordinateRing.mk_φ (n : ℤ) : mk W (W.φ n) = mk W (C <| W.Φ n) := by
534495
simp_rw [φ, Φ, map_sub, map_mul, map_pow, mk_ψ, mk_Ψ_sq, Ψ, map_mul,
535-
mul_mul_mul_comm _ <| mk W <| ite .., Int.even_add_one, Int.even_sub_one, ← sq, ite_not,
496+
mul_mul_mul_comm _ <| mk W <| ite .., Int.even_add_one, Int.even_sub_one, ite_not, ← sq,
536497
apply_ite C, apply_ite <| mk W, ite_pow, map_one, one_pow, mk_ψ₂_sq]
537498

538499
end φ
@@ -545,48 +506,52 @@ open WeierstrassCurve (Ψ Φ ψ φ)
545506

546507
variable (f : R →+* S)
547508

509+
@[simp]
548510
lemma map_ψ₂ : (W.map f).ψ₂ = W.ψ₂.map (mapRingHom f) := by
549-
simp only [ψ₂, Affine.map_polynomialY]
511+
simp_rw [ψ₂, Affine.map_polynomialY]
550512

513+
@[simp]
551514
lemma map_Ψ₂Sq : (W.map f).Ψ₂Sq = W.Ψ₂Sq.map f := by
552-
simp only [Ψ₂Sq, map_b₂, map_b₄, map_b₆]
553-
map_simp
515+
simp [Ψ₂Sq, map_ofNat]
554516

517+
@[simp]
555518
lemma map_Ψ₃ : (W.map f).Ψ₃ = W.Ψ₃.map f := by
556-
simp only [Ψ₃, map_b₂, map_b₄, map_b₆, map_b₈]
557-
map_simp
519+
simp [Ψ₃]
558520

521+
@[simp]
559522
lemma map_preΨ₄ : (W.map f).preΨ₄ = W.preΨ₄.map f := by
560-
simp only [preΨ₄, map_b₂, map_b₄, map_b₆, map_b₈]
561-
map_simp
523+
simp [preΨ₄]
562524

525+
@[simp]
563526
lemma map_preΨ' (n : ℕ) : (W.map f).preΨ' n = (W.preΨ' n).map f := by
564-
simp only [preΨ', map_Ψ₂Sq, map_Ψ₃, map_preΨ₄, ← coe_mapRingHom, map_preNormEDS']
565-
map_simp
527+
simp [preΨ', ← coe_mapRingHom]
566528

529+
@[simp]
567530
lemma map_preΨ (n : ℤ) : (W.map f).preΨ n = (W.preΨ n).map f := by
568-
simp only [preΨ, map_Ψ₂Sq, map_Ψ₃, map_preΨ₄, ← coe_mapRingHom, map_preNormEDS]
569-
map_simp
531+
simp [preΨ, ← coe_mapRingHom]
570532

533+
@[simp]
571534
lemma map_ΨSq (n : ℤ) : (W.map f).ΨSq n = (W.ΨSq n).map f := by
572-
simp only [ΨSq, map_preΨ, map_Ψ₂Sq, ← coe_mapRingHom]
573-
map_simp
535+
simp [ΨSq, ← coe_mapRingHom, apply_ite <| mapRingHom f]
574536

537+
@[simp]
575538
lemma map_Ψ (n : ℤ) : (W.map f).Ψ n = (W.Ψ n).map (mapRingHom f) := by
576-
simp only [Ψ, map_preΨ, map_ψ₂, ← coe_mapRingHom]
577-
map_simp
539+
rw [← coe_mapRingHom]
540+
simp [Ψ, apply_ite <| mapRingHom _]
578541

542+
@[simp]
579543
lemma map_Φ (n : ℤ) : (W.map f).Φ n = (W.Φ n).map f := by
580-
simp only [Φ, map_ΨSq, map_preΨ, map_Ψ₂Sq, ← coe_mapRingHom]
581-
map_simp
544+
rw [← coe_mapRingHom]
545+
simp [Φ, map_sub, apply_ite <| mapRingHom f]
582546

547+
@[simp]
583548
lemma map_ψ (n : ℤ) : (W.map f).ψ n = (W.ψ n).map (mapRingHom f) := by
584-
simp only [ψ, map_ψ₂, map_Ψ₃, map_preΨ₄, ← coe_mapRingHom, map_normEDS]
585-
map_simp
549+
rw [← coe_mapRingHom]
550+
simp [ψ]
586551

552+
@[simp]
587553
lemma map_φ (n : ℤ) : (W.map f).φ n = (W.φ n).map (mapRingHom f) := by
588-
simp only [φ, map_ψ]
589-
map_simp
554+
simp [φ]
590555

591556
end Map
592557

0 commit comments

Comments
 (0)