@@ -374,6 +374,11 @@ theorem unit_inv_conj_not_neg_zeta_runity (h : p ≠ 2) (u : Rˣ) (n : ℕ) (hp
374
374
apply hζ.two_not_mem_one_sub_zeta h
375
375
rw [← Ideal.Quotient.eq_zero_iff_mem, map_two, ← neg_one_eq_one_iff_two_eq_zero, ← hμ', hμ]
376
376
377
+ -- Add to mathlib
378
+ @[norm_cast]
379
+ lemma NumberField.RingOfIntegers.eq_iff {K : Type *} [Field K] {x y : 𝓞 K} :
380
+ (x : K) = (y : K) ↔ x = y :=
381
+ NumberField.RingOfIntegers.ext_iff.symm
377
382
378
383
-- this proof has mild coe annoyances rn
379
384
theorem unit_inv_conj_is_root_of_unity (h : p ≠ 2 ) (hp : (p : ℕ).Prime) (u : Rˣ) :
@@ -389,15 +394,14 @@ theorem unit_inv_conj_is_root_of_unity (h : p ≠ 2) (hp : (p : ℕ).Prime) (u :
389
394
have hk := Nat.even_or_odd k
390
395
cases' hk with hk hk
391
396
· simp only [hk.neg_one_pow, one_mul] at hz
392
- rw [← map_mul, ← Units.val_mul, ← map_pow, ← Units.val_pow_eq_pow_val,
393
- ← NumberField.RingOfIntegers.ext_iff, ← Units.ext_iff] at hz
397
+ rw [← map_mul, ← Units.val_mul, ← map_pow, ← Units.val_pow_eq_pow_val] at hz
398
+ norm_cast at hz
394
399
rw [hz]
395
400
refine' (exists_congr fun a => _).mp (zeta_runity_pow_even hζ hpo n)
396
401
· rw [mul_comm]
397
402
· by_contra
398
403
simp only [hk.neg_one_pow, neg_mul, one_mul] at hz
399
- rw [← map_mul, ← Units.val_mul, ← map_pow, ← Units.val_pow_eq_pow_val, ← map_neg,
400
- ← NumberField.RingOfIntegers.ext_iff] at hz
404
+ rw [← map_mul, ← Units.val_mul, ← map_pow, ← Units.val_pow_eq_pow_val, ← map_neg] at hz
401
405
norm_cast at hz
402
406
simpa [hz] using unit_inv_conj_not_neg_zeta_runity hζ h u n hp
403
407
· apply RingHom.IsIntegralElem.mul
0 commit comments