Skip to content

Commit 96b5d75

Browse files
feat: add zeta_sub_one_dvd_intCast_iff and related declarations (leanprover-community#40232)
1 parent cce5343 commit 96b5d75

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

Mathlib/NumberTheory/NumberField/Cyclotomic/Ideal.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ theorem associated_norm_zeta_sub_one : Associated (Algebra.norm ℤ (hζ.toInteg
7272
rw [hζ.norm_toInteger_sub_one_of_eq_two_pow, h, Int.ofNat_two]
7373
· rw [hζ.norm_toInteger_sub_one_of_prime_ne_two h]
7474

75+
/-- An integer `n` is divisible by `ζ - 1` in `𝓞 K` if and only if it is divisible by `p`,
76+
where `ζ` is a primitive `p ^ (k + 1)`-th root of unity. -/
77+
theorem zeta_sub_one_dvd_intCast_iff {n : ℤ} :
78+
hζ.toInteger - 1 ∣ (n : 𝓞 K) ↔ (p : ℤ) ∣ n := by
79+
have h := associated_norm_zeta_sub_one p k hζ
80+
rw [← Ideal.norm_dvd_iff (h.symm.prime (Nat.prime_iff_prime_int.mp hp.out))]
81+
exact h.dvd_iff_dvd_left
82+
7583
theorem absNorm_span_zeta_sub_one : absNorm (span {hζ.toInteger - 1}) = p := by
7684
simpa using congr_arg absNorm <|
7785
span_singleton_eq_span_singleton.mpr <| associated_norm_zeta_sub_one p k hζ
@@ -231,6 +239,13 @@ theorem ramificationIdx_span_zeta_sub_one' :
231239
rw [← pow_one p] at hK hζ
232240
rw [ramificationIdx_span_zeta_sub_one p 0 hζ, pow_zero, one_mul]
233241

242+
/-- An integer `n` is divisible by `ζ - 1` in `𝓞 K` if and only if it is divisible by `p`,
243+
where `ζ` is a primitive `p`-th root of unity. -/
244+
theorem zeta_sub_one_dvd_intCast_iff' {n : ℤ} :
245+
hζ.toInteger - 1 ∣ (n : 𝓞 K) ↔ (p : ℤ) ∣ n := by
246+
rw [← pow_one p] at hK hζ
247+
exact zeta_sub_one_dvd_intCast_iff p 0
248+
234249
variable (K)
235250

236251
include hK in

Mathlib/RingTheory/RootsOfUnity/CyclotomicUnits.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,16 @@ lemma nthRootsFinset_pairwise_associated_sub_one_sub_of_prime (hζ : IsPrimitive
150150
alias ntRootsFinset_pairwise_associated_sub_one_sub_of_prime :=
151151
nthRootsFinset_pairwise_associated_sub_one_sub_of_prime
152152

153+
/-- If `p` is prime and `ζ` is a `p`-th primitive root of unity, then `ζ - 1` divides `η₁ - η₂`
154+
for all `p`-th roots of unity `η₁` and `η₂`. -/
155+
lemma sub_one_dvd_sub (hζ : IsPrimitiveRoot ζ p) (hp : p.Prime)
156+
{η₁ : A} (hη₁ : η₁ ∈ nthRootsFinset p (1 : A))
157+
{η₂ : A} (hη₂ : η₂ ∈ nthRootsFinset p (1 : A)) :
158+
ζ - 1 ∣ η₁ - η₂ := by
159+
rcases eq_or_ne η₁ η₂ with rfl | h
160+
· simp
161+
· exact (hζ.nthRootsFinset_pairwise_associated_sub_one_sub_of_prime hp hη₁ hη₂ h).dvd
162+
153163
/-- Given an `n`-th primitive root of unity `ζ`, where `1 < n`, we have that `ζ - 1` divides `n`.
154164
In particular, if `ζ` is a `p`-th primitive root of unity with `p` prime, then `ζ - 1` divides
155165
`p`. -/

0 commit comments

Comments
 (0)