Skip to content

Commit 81ebc69

Browse files
Squashed commit of the following:
commit 8a6aa79 Author: Riccardo Brasca <[email protected]> Date: Mon May 6 12:17:19 2024 +0200 fix again commit 2c7f85c Author: Riccardo Brasca <[email protected]> Date: Mon May 6 12:12:52 2024 +0200 bump again commit 4a97d0c Author: Riccardo Brasca <[email protected]> Date: Mon May 6 12:09:43 2024 +0200 fix build commit de3819e Author: Riccardo Brasca <[email protected]> Date: Sun May 5 14:14:26 2024 +0200 progress commit 0400baa Author: Riccardo Brasca <[email protected]> Date: Sun May 5 13:24:42 2024 +0200 this is done commit 2efb0a3 Author: Riccardo Brasca <[email protected]> Date: Sun May 5 12:03:10 2024 +0200 better commit 68c61b7 Author: Ruben Van de Velde <[email protected]> Date: Fri May 3 23:16:18 2024 +0200 note commit 9ab7b4f Author: Riccardo Brasca <[email protected]> Date: Fri May 3 22:39:38 2024 +0200 start
1 parent d41c868 commit 81ebc69

16 files changed

+157
-230
lines changed

FltRegular/CaseI/Statement.lean

+8-10
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,14 @@ theorem is_principal {a b c : ℤ} {ζ : R} (hreg : IsRegularPrime p) (hp5 : 5
138138
· rwa [IsRegularPrime, IsRegularNumber] at hreg
139139
· exact hI
140140

141-
set_option maxHeartbeats 400000 in
142141
theorem ex_fin_div {a b c : ℤ} {ζ : R} (hp5 : 5 ≤ p) (hreg : IsRegularPrime p)
143142
(hζ : IsPrimitiveRoot ζ p) (hgcd : ({a, b, c} : Finset ℤ).gcd id = 1) (caseI : ¬↑p ∣ a * b * c)
144143
(H : a ^ p + b ^ p = c ^ p) :
145144
∃ k₁ k₂ : Fin p,
146145
k₂ ≡ k₁ - 1 [ZMOD p] ∧ ↑p ∣ ↑a + ↑b * ζ - ↑a * ζ ^ (k₁ : ℕ) - ↑b * ζ ^ (k₂ : ℕ) := by
147146
let ζ' := (ζ : K)
148147
have hζ' : IsPrimitiveRoot ζ' P := IsPrimitiveRoot.coe_submonoidClass_iff.2
149-
have h : ζ = (hζ'.unit' : R) := by simp only [IsPrimitiveRoot.unit', SetLike.eta, Units.val_mk]
148+
have h : ζ = (hζ'.unit' : R) := by rfl
150149
have hP : P ≠ (2 : ℕ+) := by
151150
intro hP
152151
rw [← PNat.coe_inj, PNat.mk_coe] at hP
@@ -170,17 +169,16 @@ theorem ex_fin_div {a b c : ℤ} {ζ : R} (hp5 : 5 ≤ p) (hreg : IsRegularPrime
170169
convert hk using 3
171170
rw [mul_add, mul_comm (↑a : R), ← mul_assoc _ (↑b : R), mul_comm _ (↑b : R), mul_assoc (↑b : R)]
172171
congr 2
173-
· rw [← Subtype.coe_inj]
174-
simp only [Fin.val_mk, SubsemiringClass.coe_pow, NumberField.Units.coe_zpow,
175-
IsPrimitiveRoot.coe_unit'_coe]
176-
refine' eq_of_div_eq_one _
172+
· ext
173+
simp only [Fin.val_mk, map_pow, NumberField.Units.coe_zpow, IsPrimitiveRoot.coe_unit'_coe]
174+
refine eq_of_div_eq_one ?_
177175
rw [← zpow_natCast, ← zpow_sub₀ (hζ'.ne_zero hpri.out.ne_zero), hζ'.zpow_eq_one_iff_dvd]
178176
simp only [natAbs_of_nonneg (emod_nonneg _ hpcoe), ← ZMod.intCast_zmod_eq_zero_iff_dvd,
179177
Int.cast_sub, ZMod.intCast_mod, Int.cast_mul, Int.cast_natCast, sub_self]
180-
· rw [← Subtype.coe_inj]
181-
simp only [Fin.val_mk, SubsemiringClass.coe_pow, MulMemClass.coe_mul,
182-
NumberField.Units.coe_zpow, IsPrimitiveRoot.coe_unit'_coe, IsPrimitiveRoot.coe_inv_unit'_coe]
183-
refine' eq_of_div_eq_one _
178+
· ext
179+
simp only [Fin.val_mk, map_pow, _root_.map_mul, NumberField.Units.coe_zpow,
180+
IsPrimitiveRoot.coe_unit'_coe, IsPrimitiveRoot.coe_inv_unit'_coe]
181+
refine eq_of_div_eq_one ?_
184182
rw [← zpow_natCast, ← zpow_sub_one₀ (hζ'.ne_zero hpri.out.ne_zero), ←
185183
zpow_sub₀ (hζ'.ne_zero hpri.out.ne_zero), hζ'.zpow_eq_one_iff_dvd]
186184
simp only [natAbs_of_nonneg (emod_nonneg _ hpcoe), ← ZMod.intCast_zmod_eq_zero_iff_dvd,

FltRegular/CaseII/AuxLemmas.lean

-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ variable {ζ : K} (hζ : IsPrimitiveRoot ζ p)
1313
open scoped BigOperators nonZeroDivisors NumberField
1414
open Polynomial
1515

16-
instance : CharZero (𝓞 K) := SubsemiringClass.instCharZero (𝓞 K)
17-
1816
instance foofoo [NumberField K] : IsDomain (Ideal (𝓞 K)) := by convert Ideal.isDomain (A := 𝓞 K)
1917

2018
instance [NumberField K] : CancelMonoidWithZero (Ideal (𝓞 K)) :=

FltRegular/CaseII/InductionStep.lean

+5-15
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ lemma zeta_sub_one_dvd : π ∣ x ^ (p : ℕ) + y ^ (p : ℕ) := by
4040
apply dvd_pow_self
4141
simp
4242

43-
set_option synthInstance.maxHeartbeats 160000 in
44-
set_option maxHeartbeats 400000 in
4543
lemma one_sub_zeta_dvd_zeta_pow_sub : π ∣ x + y * η := by
4644
letI : Fact (Nat.Prime p) := hpri
4745
letI := IsCyclotomicExtension.numberField {p} ℚ K
@@ -55,15 +53,15 @@ lemma one_sub_zeta_dvd_zeta_pow_sub : π ∣ x + y * η := by
5553
rw [Finset.prod_const, ← map_pow, Ideal.Quotient.eq_zero_iff_dvd] at h
5654
exact hζ.zeta_sub_one_prime'.dvd_of_dvd_pow h
5755

58-
lemma div_one_sub_zeta_mem : (x + y * η : 𝓞 K) / (ζ - 1) ∈ 𝓞 K := by
56+
lemma div_one_sub_zeta_mem : IsIntegral ℤ ((x + y * η : 𝓞 K) / (ζ - 1)) := by
5957
obtain ⟨⟨a, ha⟩, e⟩ := one_sub_zeta_dvd_zeta_pow_sub hp hζ e η
6058
rw [e, mul_comm]
61-
simp only [Submonoid.coe_mul, Subsemiring.coe_toSubmonoid, Subalgebra.coe_toSubsemiring,
62-
AddSubgroupClass.coe_sub, IsPrimitiveRoot.val_unit'_coe, OneMemClass.coe_one, ne_eq]
59+
simp only [map_mul, NumberField.RingOfIntegers.map_mk, map_sub, IsPrimitiveRoot.coe_unit'_coe,
60+
map_one]
6361
rwa [mul_div_cancel_right₀ _ (hζ.sub_one_ne_zero hpri.out.one_lt)]
6462

6563
def div_zeta_sub_one : nthRootsFinset p (𝓞 K) → 𝓞 K :=
66-
fun η ↦ ⟨(x + y * η) / (ζ - 1), div_one_sub_zeta_mem hp hζ e η⟩
64+
fun η ↦ ⟨(x + y * η.1) / (ζ - 1), div_one_sub_zeta_mem hp hζ e η⟩
6765

6866
lemma div_zeta_sub_one_mul_zeta_sub_one (η) :
6967
div_zeta_sub_one hp hζ e η * (π) = x + y * η := by
@@ -83,7 +81,6 @@ lemma div_zeta_sub_one_sub (η₁ η₂) (hη : η₁ ≠ η₂) :
8381
rw [Ne, ← Subtype.ext_iff.not]
8482
exact hη
8583

86-
set_option synthInstance.maxHeartbeats 40000 in
8784
lemma div_zeta_sub_one_Injective :
8885
Function.Injective (fun η ↦ Ideal.Quotient.mk 𝔭 (div_zeta_sub_one hp hζ e η)) := by
8986
letI : AddGroup (𝓞 K ⧸ 𝔭) := inferInstance
@@ -153,13 +150,11 @@ lemma m_mul_c_mul_p : 𝔪 * 𝔠 η * 𝔭 = 𝔦 η := by
153150
rw [div_zeta_sub_one_dvd_gcd_spec, Ideal.span_singleton_mul_span_singleton,
154151
div_zeta_sub_one_mul_zeta_sub_one]
155152

156-
set_option synthInstance.maxHeartbeats 40000 in
157153
lemma m_ne_zero : 𝔪 ≠ 0 := by
158154
simp_rw [Ne, gcd_eq_zero_iff, Ideal.zero_eq_bot, Ideal.span_singleton_eq_bot]
159155
rintro ⟨rfl, rfl⟩
160156
exact hy (dvd_zero _)
161157

162-
set_option synthInstance.maxHeartbeats 40000 in
163158
lemma p_ne_zero : 𝔭 ≠ 0 := by
164159
letI := IsCyclotomicExtension.numberField {p} ℚ K
165160
rw [Ne, Ideal.zero_eq_bot, Ideal.span_singleton_eq_bot]
@@ -286,7 +281,7 @@ lemma p_dvd_c_iff : 𝔭 ∣ (𝔠 η) ↔ η = η₀ := by
286281
← Ideal.dvd_span_singleton, ← div_zeta_sub_one_dvd_gcd_spec (hy := hy),
287282
← dvd_gcd_mul_iff_dvd_mul, gcd_comm, gcd_zeta_sub_one_eq_one hζ hy, one_mul]
288283

289-
lemma p_pow_dvd_c_eta_zero_aux [DecidableEq K] :
284+
lemma p_pow_dvd_c_eta_zero_aux [DecidableEq (𝓞 K)] :
290285
gcd (𝔭 ^ (m * p)) (∏ η in Finset.attach (nthRootsFinset p (𝓞 K)) \ {η₀}, 𝔠 η) = 1 := by
291286
rw [← Ideal.isCoprime_iff_gcd]
292287
apply IsCoprime.pow_left
@@ -395,7 +390,6 @@ lemma a_mul_denom_eq_a_zero_mul_num (hη : η ≠ η₀) :
395390
simp only [FractionalIdeal.coeIdeal_mul, FractionalIdeal.coeIdeal_span_singleton]
396391
rw [mul_comm (𝔞₀ : FractionalIdeal (𝓞 K)⁰ K), ← div_eq_div_iff,
397392
← a_div_a_zero_eq hp hreg hζ e hy hz η hη, FractionalIdeal.spanSingleton_div_spanSingleton]
398-
· rfl
399393
· intro ha
400394
rw [FractionalIdeal.coeIdeal_eq_zero] at ha
401395
apply not_p_div_a_zero hp hζ e hy hz
@@ -425,7 +419,6 @@ def associated_eta_zero_unit (hη : η ≠ η₀) : (𝓞 K)ˣ :=
425419

426420
local notation "ε" => associated_eta_zero_unit hp hreg hζ e hy hz
427421

428-
set_option synthInstance.maxHeartbeats 40000 in
429422
lemma associated_eta_zero_unit_spec (η) (hη : η ≠ η₀) :
430423
ε η hη * (x + y * η₀) * α η hη ^ (p : ℕ) = (x + y * η) * π ^ (m * p) * β η hη ^ (p : ℕ) := by
431424
rw [mul_assoc, mul_comm (ε η hη : 𝓞 K)]
@@ -457,7 +450,6 @@ lemma stuff (η₁) (hη₁ : η₁ ≠ η₀) (η₂) (hη₂ : η₂ ≠ η₀
457450
congr 1
458451
ring
459452

460-
set_option maxHeartbeats 400000 in
461453
lemma exists_solution :
462454
∃ (x' y' z' : 𝓞 K) (ε₁ ε₂ ε₃ : (𝓞 K)ˣ), ¬ π ∣ x' ∧ ¬ π ∣ y' ∧ ¬ π ∣ z' ∧
463455
↑ε₁ * x' ^ (p : ℕ) + ε₂ * y' ^ (p : ℕ) = ε₃ * (π ^ m * z') ^ (p : ℕ) := by
@@ -524,8 +516,6 @@ lemma exists_solution'_aux {ε₁ ε₂ : (𝓞 K)ˣ} (hx : ¬ π ∣ x)
524516
rw [neg_mul, (Nat.Prime.odd_of_ne_two hpri.out (PNat.coe_injective.ne hp)).neg_pow,
525517
sub_neg_eq_add, mul_sub, mul_one, mul_comm x b, add_sub_sub_cancel, add_comm]
526518

527-
set_option synthInstance.maxHeartbeats 160000 in
528-
set_option maxHeartbeats 400000 in
529519
lemma exists_solution' :
530520
∃ (x' y' z' : 𝓞 K) (ε₃ : (𝓞 K)ˣ),
531521
¬ π ∣ y' ∧ ¬ π ∣ z' ∧ x' ^ (p : ℕ) + y' ^ (p : ℕ) = ε₃ * (π ^ m * z') ^ (p : ℕ) := by

FltRegular/NumberTheory/Cyclotomic/CaseI.lean

+4-3
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@ theorem exists_int_sum_eq_zero'_aux (x y i : ℤ) :
3333
intGal (galConj K p) (x + y * ↑(hζ.unit' ^ i) : 𝓞 K) = x + y * (hζ.unit' ^ (-i) : (𝓞 K)ˣ) := by
3434
ext1
3535
rw [intGal_apply_coe]
36-
push_cast
36+
simp only [_root_.map_add, map_intCast, _root_.map_mul, AlgHom.coe_coe, zpow_neg, map_units_inv,
37+
add_right_inj, mul_eq_mul_left_iff, Int.cast_eq_zero]
3738
simp_rw [NumberField.Units.coe_zpow]
39+
left
3840
push_cast
39-
simp only [zpow_neg, _root_.map_add, map_intCast, _root_.map_mul, map_zpow₀, AlgHom.coe_coe,
40-
galConj_zeta_runity hζ, add_right_inj, mul_eq_mul_left_iff, Int.cast_eq_zero, inv_zpow]
41+
simp only [map_zpow₀, galConj_zeta_runity hζ, inv_zpow', zpow_neg]
4142

4243
theorem exists_int_sum_eq_zero' (hpodd : p ≠ 2) (hp : (p : ℕ).Prime) (x y i : ℤ) {u : (𝓞 K)ˣ}
4344
{α : 𝓞 K} (h : (x : 𝓞 K) + y * (hζ.unit' ^ i : (𝓞 K)ˣ) = u * α ^ (p : ℕ)) :

FltRegular/NumberTheory/Cyclotomic/CyclRat.lean

+6-11
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,8 @@ theorem zeta_sub_one_dvb_p [Fact (p : ℕ).Prime] (ph : 5 ≤ p) {η : R} (hη :
154154
have h2 := IsPrimitiveRoot.sub_one_norm_prime this (cyclotomic.irreducible_rat p.2) h0
155155
convert h
156156
ext
157-
rw [RingOfIntegers.coe_algebraMap_norm]
158-
norm_cast at h2
159-
rw [h2]
157+
rw [show (η : CyclotomicField p ℚ) - 1 = (η - 1 : _) by simp] at h2
158+
rw [RingOfIntegers.coe_algebraMap_norm, h2]
160159
simp
161160

162161
theorem one_sub_zeta_prime [Fact (p : ℕ).Prime] {η : R} (hη : η ∈ nthRootsFinset p R)
@@ -191,8 +190,6 @@ theorem diff_of_roots2 [Fact (p : ℕ).Prime] (ph : 5 ≤ p) {η₁ η₂ : R} (
191190
noncomputable
192191
instance : AddCommGroup R := AddCommGroupWithOne.toAddCommGroup
193192

194-
set_option maxHeartbeats 300000 in
195-
set_option synthInstance.maxHeartbeats 80000 in
196193
lemma fltIdeals_coprime2_lemma [Fact (p : ℕ).Prime] (ph : 5 ≤ p) {x y : ℤ} {η₁ η₂ : R}
197194
(hη₁ : η₁ ∈ nthRootsFinset p R)
198195
(hη₂ : η₂ ∈ nthRootsFinset p R) (hdiff : η₁ ≠ η₂) (hp : IsCoprime x y)
@@ -345,7 +342,7 @@ theorem dvd_last_coeff_cycl_integer [hp : Fact (p : ℕ).Prime] {ζ : 𝓞 L}
345342
⟨x, lt_trans x.2 (pred_lt hp.out.ne_zero)⟩ := fun x => Fin.ext rfl
346343
let ζ' := (ζ : L)
347344
have hζ' : IsPrimitiveRoot ζ' p := IsPrimitiveRoot.coe_submonoidClass_iff.2
348-
have hcoe : ζ = ⟨ζ', hζ'.isIntegral p.pos⟩ := by simp
345+
have hcoe : ζ = ⟨ζ', hζ'.isIntegral p.pos⟩ := by rfl
349346
set b := hζ'.integralPowerBasis' with hb
350347
have hdim : b.dim = (p : ℕ).pred := by rw [hζ'.power_basis_int'_dim, totient_prime hp.out,
351348
pred_eq_sub_one]
@@ -371,8 +368,7 @@ theorem dvd_last_coeff_cycl_integer [hp : Fact (p : ℕ).Prime] {ζ : 𝓞 L}
371368
rw [hcoe, ← IsPrimitiveRoot.toInteger, ← hζ'.integralPowerBasis'_gen, ← hb]
372369
conv_lhs at hy =>
373370
congr; rfl; ext x
374-
rw [← SubsemiringClass.coe_pow, ← show ∀ y, _ = _ from fun y => congr_fun b.coe_basis y,
375-
← sub_eq_add_neg]
371+
rw [← show ∀ y, _ = _ from fun y => congr_fun b.coe_basis y, ← sub_eq_add_neg]
376372
norm_cast at hy
377373
rw [sum_sub_distrib] at hy
378374
replace hy := congr_arg (b.basis.coord ((Fin.castIso hdim.symm) ⟨i, hi⟩)) hy
@@ -392,7 +388,7 @@ theorem dvd_coeff_cycl_integer (hp : (p : ℕ).Prime) {ζ : 𝓞 L} (hζ : IsPri
392388
let ζ' := (ζ : L)
393389
have : Fact (p : ℕ).Prime := ⟨hp⟩
394390
have hζ' : IsPrimitiveRoot ζ' p := IsPrimitiveRoot.coe_submonoidClass_iff.2
395-
have hcoe : ζ = ⟨ζ', hζ'.isIntegral p.pos⟩ := by simp
391+
have hcoe : ζ = ⟨ζ', hζ'.isIntegral p.pos⟩ := by rfl
396392
have hlast : (Fin.castIso (succ_pred_prime hp)) (Fin.last (p : ℕ).pred) =
397393
⟨(p : ℕ).pred, pred_lt hp.ne_zero⟩ := Fin.ext rfl
398394
have h : ∀ x, (Fin.castIso (succ_pred_prime hp)) (Fin.castSuccEmb x) =
@@ -424,8 +420,7 @@ theorem dvd_coeff_cycl_integer (hp : (p : ℕ).Prime) {ζ : 𝓞 L} (hζ : IsPri
424420
rw [hcoe, ← IsPrimitiveRoot.toInteger, ← hζ'.integralPowerBasis'_gen, ← hb]
425421
conv_lhs at hy =>
426422
congr; rfl; ext x
427-
rw [← SubsemiringClass.coe_pow, ← show ∀ y, _ = _ from fun y => congr_fun b.coe_basis y,
428-
← sub_eq_add_neg]
423+
rw [← show ∀ y, _ = _ from fun y => congr_fun b.coe_basis y, ← sub_eq_add_neg]
429424
norm_cast at hy
430425
rw [sum_sub_distrib] at hy
431426
replace hy := congr_arg (b.basis.coord ((Fin.castIso hdim.symm) ⟨j, hj⟩)) hy

FltRegular/NumberTheory/Cyclotomic/GaloisActionOnCyclo.lean

+7-7
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,16 @@ theorem galConj_idempotent : (galConj K p).trans (galConj K p) = AlgEquiv.refl :
8888
variable (p)
8989

9090
--generalize this
91-
theorem gal_map_mem {x : K} (hx : x ∈ RR) (σ : K →ₐ[ℚ] K) : σ x ∈ RR :=
91+
theorem gal_map_mem {x : K} (hx : IsIntegral ℤ x) (σ : K →ₐ[ℚ] K) : IsIntegral ℤ (σ x) :=
9292
map_isIntegral_int (σ.restrictScalars ℤ) hx
9393

94-
theorem gal_map_mem_subtype (σ : K →ₐ[ℚ] K) (x : RR) : σ x ∈ RR := by simp [gal_map_mem]
94+
theorem gal_map_mem_subtype (σ : K →ₐ[ℚ] K) (x : RR) : IsIntegral ℤ (σ x) :=
95+
gal_map_mem x.2 _
9596

9697
/-- Restriction of `σ : K →ₐ[ℚ] K` to the ring of integers. -/
9798
def intGal (σ : K →ₐ[ℚ] K) : RR →ₐ[ℤ] RR :=
98-
((σ.restrictScalars ℤ).restrictDomain RR).codRestrict RR (gal_map_mem_subtype σ)
99+
((σ.restrictScalars ℤ).restrictDomain RR).codRestrict (integralClosure ℤ K)
100+
(gal_map_mem_subtype σ)
99101

100102
@[simp]
101103
theorem intGal_apply_coe (σ : K →ₐ[ℚ] K) (x : RR) : (intGal σ x : K) = σ x :=
@@ -111,7 +113,7 @@ variable (K)
111113
def unitGalConj : RRˣ →* RRˣ :=
112114
unitsGal (galConj K p)
113115

114-
theorem unitGalConj_spec (u : RRˣ) : galConj K p (u : 𝓞 K) = ↑(unitGalConj K p u : 𝓞 K) := rfl
116+
theorem unitGalConj_spec (u : RRˣ) : galConj K p u = unitGalConj K p u := rfl
115117

116118
variable {K}
117119

@@ -123,6 +125,4 @@ theorem unit_lemma_val_one (u : RRˣ) (φ : K →+* ℂ) :
123125
simp only [map_inv₀, Complex.abs_conj]
124126
rw [mul_inv_eq_one₀]
125127
intro h
126-
simp only [_root_.map_eq_zero] at h
127-
rw [← Subalgebra.coe_zero (𝓞 K), Subtype.coe_inj] at h
128-
exact Units.ne_zero _ h
128+
simp at h

FltRegular/NumberTheory/Cyclotomic/MoreLemmas.lean

+2-1
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ lemma quotient_zero_sub_one_comp_aut (σ : 𝓞 K →+* 𝓞 K) :
179179
· rw [mem_nthRootsFinset p.pos, ← map_pow, hζ.unit'_coe.pow_eq_one, map_one]
180180
· rw [mem_nthRootsFinset p.pos, hζ.unit'_coe.pow_eq_one]
181181

182+
set_option synthInstance.maxHeartbeats 80000 in
182183
lemma zeta_sub_one_dvd_trace_sub_smul (x : 𝓞 K) :
183184
(hζ.unit' - 1 : 𝓞 K) ∣ Algebra.trace ℤ _ x - (p - 1 : ℕ) • x := by
184185
letI := IsCyclotomicExtension.numberField {p} ℚ K
@@ -226,7 +227,7 @@ lemma norm_add_one_smul_of_isUnit {K} [Field K] [NumberField K] {p : ℕ} (hpri
226227
apply Int.natAbs_eq_iff.mp
227228
apply (Int.cast_injective (α := ℚ)).comp Nat.cast_injective
228229
simp only [Int.cast_abs, Function.comp_apply, Nat.cast_one, Int.cast_one, ← Int.abs_eq_natAbs,
229-
Algebra.coe_norm_int, ← NumberField.isUnit_iff_norm.mp hx, RingOfIntegers.norm_apply_coe]
230+
Algebra.coe_norm_int, ← NumberField.isUnit_iff_norm.mp hx, RingOfIntegers.coe_norm]
230231
have : Algebra.norm ℤ (1 + (p : ℕ) • x) ≠ -1 := by
231232
intro e; apply hp
232233
obtain ⟨r, hr⟩ := Algebra.norm_one_add_smul (p : ℤ) x

0 commit comments

Comments
 (0)