@@ -78,7 +78,7 @@ lemma changeLevel_injective {m : ℕ} [NeZero m] (hm : n ∣ m) :
7878 simpa [changeLevel_def] using h z
7979
8080@[simp]
81- lemma changeLevel_eq_one_iff {m : ℕ} {χ : DirichletCharacter R n} (hm : n ∣ m) [NeZero m] :
81+ lemma changeLevel_eq_one_iff {m : ℕ} [NeZero m] {χ : DirichletCharacter R n} (hm : n ∣ m) :
8282 changeLevel hm χ = 1 ↔ χ = 1 :=
8383 map_eq_one_iff _ (changeLevel_injective hm)
8484
@@ -217,8 +217,8 @@ lemma level_mem_conductorSet : n ∈ conductorSet χ := FactorsThrough.same_leve
217217
218218lemma mem_conductorSet_dvd {x : ℕ} (hx : x ∈ conductorSet χ) : x ∣ n := hx.dvd
219219
220- theorem zero_ne_mem_conductorSet (hn : n ≠ 0 ) : 0 ∉ χ.conductorSet :=
221- fun h ↦ hn <| Nat.eq_zero_of_zero_dvd <| FactorsThrough.dvd h
220+ theorem zero_ne_mem_conductorSet [NeZero n] : 0 ∉ χ.conductorSet :=
221+ fun h ↦ NeZero.ne n <| Nat.eq_zero_of_zero_dvd <| FactorsThrough.dvd h
222222
223223/-- The minimum natural number level `n` through which `χ` factors. -/
224224noncomputable def conductor : ℕ := sInf (conductorSet χ)
@@ -230,28 +230,30 @@ lemma conductor_dvd_level : conductor χ ∣ n := (conductor_mem_conductorSet χ
230230
231231lemma factorsThrough_conductor : FactorsThrough χ (conductor χ) := conductor_mem_conductorSet χ
232232
233- lemma conductor_ne_zero (hn : n ≠ 0 ) : conductor χ ≠ 0 :=
234- fun h ↦ hn <| Nat.eq_zero_of_zero_dvd <| h ▸ conductor_dvd_level _
233+ lemma conductor_ne_zero [NeZero n] : conductor χ ≠ 0 :=
234+ fun h ↦ NeZero.ne n <| Nat.eq_zero_of_zero_dvd <| h ▸ conductor_dvd_level _
235235
236236/-- The conductor of the trivial character is 1. -/
237- lemma conductor_one (hn : n ≠ 0 ) : conductor (1 : DirichletCharacter R n) = 1 := by
237+ lemma conductor_one [NeZero n] : conductor (1 : DirichletCharacter R n) = 1 := by
238238 suffices FactorsThrough (1 : DirichletCharacter R n) 1 by
239239 have h : conductor (1 : DirichletCharacter R n) ≤ 1 :=
240240 Nat.sInf_le <| (mem_conductorSet_iff _).mpr this
241- exact Nat.le_antisymm h (Nat.pos_of_ne_zero <| conductor_ne_zero _ hn )
241+ exact Nat.le_antisymm h (Nat.pos_of_ne_zero <| conductor_ne_zero _)
242242 exact (factorsThrough_one_iff _).mpr rfl
243243
244244variable {χ}
245245
246- lemma eq_one_iff_conductor_eq_one (hn : n ≠ 0 ) : χ = 1 ↔ conductor χ = 1 := by
247- refine ⟨fun h ↦ h ▸ conductor_one hn , fun hχ ↦ ?_⟩
246+ lemma eq_one_iff_conductor_eq_one [NeZero n] : χ = 1 ↔ conductor χ = 1 := by
247+ refine ⟨fun h ↦ h ▸ conductor_one, fun hχ ↦ ?_⟩
248248 obtain ⟨h', χ₀, h⟩ := factorsThrough_conductor χ
249249 exact (level_one' χ₀ hχ ▸ h).trans <| changeLevel_one h'
250250
251251lemma conductor_eq_zero_iff_level_eq_zero : conductor χ = 0 ↔ n = 0 := by
252- refine ⟨(conductor_ne_zero χ).mtr, ?_⟩
253- rintro rfl
254- exact Nat.sInf_eq_zero.mpr <| Or.inl <| level_mem_conductorSet χ
252+ refine ⟨?_, ?_⟩
253+ · contrapose!
254+ exact fun h ↦ @conductor_ne_zero _ _ _ χ ⟨h⟩
255+ · rintro rfl
256+ exact Nat.sInf_eq_zero.mpr <| Or.inl <| level_mem_conductorSet χ
255257
256258lemma conductor_le_conductor_mem_conductorSet {d : ℕ} (hd : d ∈ conductorSet χ) :
257259 χ.conductor ≤ (Classical.choose hd.2 ).conductor := by
@@ -294,30 +296,31 @@ lemma primitiveCharacter_isPrimitive : IsPrimitive (χ.primitiveCharacter) := by
294296 · exact le_antisymm (Nat.le_of_dvd (Nat.pos_of_ne_zero h) (conductor_dvd_level _)) <|
295297 conductor_le_conductor_mem_conductorSet <| conductor_mem_conductorSet χ
296298
297- lemma primitiveCharacter_one (hn : n ≠ 0 ) :
298- (1 : DirichletCharacter R n).primitiveCharacter = 1 := by
299- rw [eq_one_iff_conductor_eq_one <| (@conductor_one R _ _ hn) ▸ Nat.one_ne_zero,
300- (isPrimitive_def _).1 (1 : DirichletCharacter R n).primitiveCharacter_isPrimitive,
301- conductor_one hn]
299+ lemma primitiveCharacter_one [NeZero n] : (1 : DirichletCharacter R n).primitiveCharacter = 1 := by
300+ have : NeZero (conductor (1 : DirichletCharacter R n)) :=
301+ ⟨@conductor_one R _ n _ ▸ Nat.one_ne_zero⟩
302+ rw [eq_one_iff_conductor_eq_one,
303+ (isPrimitive_def _).1 (1 : DirichletCharacter R n).primitiveCharacter_isPrimitive,
304+ conductor_one]
302305
303- theorem conductor_dvd_of_mem_conductorSet {d : ℕ} (hn : n ≠ 0 ) (hd : d ∈ χ.conductorSet) :
306+ theorem conductor_dvd_of_mem_conductorSet {d : ℕ} [NeZero n] (hd : d ∈ χ.conductorSet) :
304307 χ.conductor ∣ d := by
305308 have : NeZero d := ⟨by
306309 contrapose! hd
307- exact hd ▸ zero_ne_mem_conductorSet χ hn ⟩
310+ exact hd ▸ zero_ne_mem_conductorSet χ⟩
308311 suffices d.gcd χ.conductor ∈ χ.conductorSet by
309312 have : χ.conductor ≤ d.gcd χ.conductor := Nat.sInf_le this
310313 contrapose! this
311314 refine Nat.lt_of_le_of_ne ?_ (Nat.gcd_eq_right_iff_dvd.not.mpr this)
312- exact Nat.gcd_le_right _ <| Nat.pos_of_ne_zero <| conductor_ne_zero χ hn
315+ exact Nat.gcd_le_right _ <| Nat.pos_of_ne_zero <| conductor_ne_zero χ
313316 obtain ⟨hd, χ₀, hχ₀⟩ := hd
314317 suffices (changeLevel (d.dvd_mul_right χ.conductor)) χ₀ =
315318 (changeLevel (χ.conductor.dvd_mul_left d)) χ.primitiveCharacter by
316319 obtain ⟨_, χ₁, hχ₁⟩ := factorsThrough_gcd χ₀ χ.primitiveCharacter this
317320 refine ⟨Nat.dvd_trans (d.gcd_dvd_left χ.conductor) hd, χ₁, ?_⟩
318321 rw [changeLevel_trans _ (d.gcd_dvd_left χ.conductor), ← hχ₁, hχ₀]
319322 have : NeZero (d * χ.conductor * n) :=
320- ⟨Nat.mul_ne_zero (Nat.mul_ne_zero (NeZero.ne d) (conductor_ne_zero χ hn) ) hn ⟩
323+ ⟨Nat.mul_ne_zero (Nat.mul_ne_zero (NeZero.ne d) χ.conductor_ne_zero) (NeZero.ne n) ⟩
321324 apply changeLevel_injective <| Nat.dvd_mul_right (d * χ.conductor) n
322325 rw [← changeLevel_trans, ← changeLevel_trans,
323326 changeLevel_trans _ hd (n.dvd_mul_left (d * χ.conductor)), ← hχ₀,
0 commit comments