@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Alex Best, Riccardo Brasca, Eric Rodriguez
5
5
-/
6
6
7
+ import data.pnat.prime
7
8
import algebra.is_prime_pow
8
9
import number_theory.cyclotomic.basic
9
10
import ring_theory.adjoin.power_basis
@@ -31,15 +32,14 @@ in the implementation details section.
31
32
`zeta n A B` is a primitive `n`-th root of unity.
32
33
* `is_cyclotomic_extension.finrank`: if `irreducible (cyclotomic n K)` (in particular for
33
34
`K = ℚ`), then the `finrank` of a cyclotomic extension is `n.totient`.
34
- * `is_primitive_root.norm_eq_one`: If `K` is linearly ordered (in particular for `K = ℚ`), the norm
35
- of a primitive root is `1` if `n` is odd .
35
+ * `is_primitive_root.norm_eq_one`: if `irreducible (cyclotomic n K)` (in particular for `K = ℚ`),
36
+ the norm of a primitive root is `1` if `n ≠ 2` .
36
37
* `is_primitive_root.sub_one_norm_eq_eval_cyclotomic`: if `irreducible (cyclotomic n K)`
37
38
(in particular for `K = ℚ`), then the norm of `ζ - 1` is `eval 1 (cyclotomic n ℤ)`, for a
38
39
primitive root ζ. We also prove the analogous of this result for `zeta`.
39
- * `is_primitive_root.prime_ne_two_pow.sub_one_norm ` : if `irreducible (cyclotomic (p ^ (k + 1)) K)`
40
+ * `is_primitive_root.sub_one_norm_prime_ne_two ` : if `irreducible (cyclotomic (p ^ (k + 1)) K)`
40
41
(in particular for `K = ℚ`) and `p` is an odd prime, then the norm of `ζ - 1` is `p`. We also
41
42
prove the analogous of this result for `zeta`.
42
- gives a K-power basis for L given a primitive root `ζ`.
43
43
* `is_primitive_root.embeddings_equiv_primitive_roots`: the equivalence between `L →ₐ[K] A`
44
44
and `primitive_roots n A` given by the choice of `ζ`.
45
45
@@ -175,20 +175,52 @@ section norm
175
175
namespace is_primitive_root
176
176
177
177
variables [field L] {ζ : L} (hζ : is_primitive_root ζ n)
178
+ variables {K} [field K] [algebra K L] [ne_zero ((n : ℕ) : K)]
179
+
180
+ /-- This mathematically trivial result is complementary to `norm_eq_one` below. -/
181
+ lemma norm_eq_neg_one_pow (hζ : is_primitive_root ζ 2 ) : norm K ζ = (-1 ) ^ finrank K L :=
182
+ by rw [hζ.eq_neg_one_of_two_right , show -1 = algebra_map K L (-1 ), by simp, norm_algebra_map]
178
183
179
184
include hζ
180
185
181
- /-- If `K` is linearly ordered (in particular for `K = ℚ`), the norm of a primitive root is `1`
186
+ /-- If `irreducible (cyclotomic n K)` (in particular for `K = ℚ`), the norm of a primitive root is
187
+ `1` if `n ≠ 2`. -/
188
+ lemma norm_eq_one [is_cyclotomic_extension {n} K L] (hn : n ≠ 2 )
189
+ (hirr : irreducible (cyclotomic n K)) : norm K ζ = 1 :=
190
+ begin
191
+ by_cases h1 : n = 1 ,
192
+ { rw [h1, one_coe, one_right_iff] at hζ,
193
+ rw [hζ, show 1 = algebra_map K L 1 , by simp, norm_algebra_map, one_pow] },
194
+ { replace h1 : 2 ≤ n,
195
+ { by_contra' h,
196
+ exact h1 (pnat.eq_one_of_lt_two h) },
197
+ rw [← hζ.power_basis_gen K, power_basis.norm_gen_eq_coeff_zero_minpoly, hζ.power_basis_gen K,
198
+ ← hζ.minpoly_eq_cyclotomic_of_irreducible hirr, cyclotomic_coeff_zero _ h1, mul_one,
199
+ hζ.power_basis_dim K, ← hζ.minpoly_eq_cyclotomic_of_irreducible hirr, nat_degree_cyclotomic],
200
+ exact neg_one_pow_of_even (totient_even (lt_of_le_of_ne h1 (λ h, hn (pnat.coe_inj.1 h.symm)))) }
201
+ end
202
+
203
+ /-- If `K` is linearly ordered, the norm of a primitive root is `1`
182
204
if `n` is odd. -/
183
- lemma norm_eq_one [linear_ordered_field K] [algebra K L] (hodd : odd (n : ℕ)) : norm K ζ = 1 :=
205
+ lemma norm_eq_one_of_linearly_ordered {K : Type *} [linear_ordered_field K] [algebra K L]
206
+ (hodd : odd (n : ℕ)) : norm K ζ = 1 :=
184
207
begin
185
208
haveI := ne_zero.of_no_zero_smul_divisors K L n,
186
209
have hz := congr_arg (norm K) ((is_primitive_root.iff_def _ n).1 hζ).1 ,
187
210
rw [←(algebra_map K L).map_one , norm_algebra_map, one_pow, map_pow, ←one_pow ↑n] at hz,
188
211
exact strict_mono.injective hodd.strict_mono_pow hz
189
212
end
190
213
191
- variables {K} [field K] [algebra K L] [ne_zero ((n : ℕ) : K)]
214
+ lemma norm_of_cyclotomic_irreducible [is_cyclotomic_extension {n} K L]
215
+ (hirr : irreducible (cyclotomic n K)) : norm K ζ = ite (n = 2 ) (-1 ) 1 :=
216
+ begin
217
+ split_ifs with hn,
218
+ { unfreezingI {subst hn},
219
+ convert norm_eq_neg_one_pow hζ,
220
+ erw [is_cyclotomic_extension.finrank _ hirr, totient_two, pow_one],
221
+ apply_instance },
222
+ { exact hζ.norm_eq_one hn hirr }
223
+ end
192
224
193
225
/-- If `irreducible (cyclotomic n K)` (in particular for `K = ℚ`), then the norm of
194
226
`ζ - 1` is `eval 1 (cyclotomic n ℤ)`. -/
@@ -238,7 +270,7 @@ omit hζ
238
270
239
271
/-- If `irreducible (cyclotomic (p ^ (k + 1)) K)` (in particular for `K = ℚ`) and `p` is an odd
240
272
prime, then the norm of `ζ - 1` is `p`. -/
241
- lemma prime_ne_two_pow_sub_one_norm {p : ℕ+} [ne_zero ((p : ℕ) : K)] {k : ℕ}
273
+ lemma sub_one_norm_prime_ne_two {p : ℕ+} [ne_zero ((p : ℕ) : K)] {k : ℕ}
242
274
(hζ : is_primitive_root ζ ↑(p ^ (k + 1 ))) [hpri : fact (p : ℕ).prime]
243
275
[is_cyclotomic_extension {p ^ (k + 1 )} K L]
244
276
(hirr : irreducible (cyclotomic (↑(p ^ (k + 1 )) : ℕ) K)) (h : p ≠ 2 ) :
@@ -267,13 +299,13 @@ begin
267
299
replace hζ : is_primitive_root ζ (↑(p ^ (0 + 1 )) : ℕ) := by simp [hζ],
268
300
haveI : ne_zero ((↑(p ^ (0 + 1 )) : ℕ) : K) := ⟨by simp [ne_zero.ne ((p : ℕ) : K)]⟩,
269
301
haveI : is_cyclotomic_extension {p ^ (0 + 1 )} K L := by simp [hcyc],
270
- simpa using prime_ne_two_pow_sub_one_norm hζ hirr h
302
+ simpa using sub_one_norm_prime_ne_two hζ hirr h
271
303
end
272
304
273
305
/-- If `irreducible (cyclotomic (2 ^ k) K)` (in particular for `K = ℚ`) and `k` is at least `2`,
274
306
then the norm of `ζ - 1` is `2`. -/
275
- lemma sub_one_norm_pow_two [ne_zero (2 : K)] {k : ℕ} (hζ : is_primitive_root ζ (2 ^ k)) (hk : 2 ≤ k)
276
- [is_cyclotomic_extension {2 ^ k} K L] (hirr : irreducible (cyclotomic (2 ^ k) K)) :
307
+ lemma sub_one_norm_pow_two [ne_zero (2 : K)] {k : ℕ} (hζ : is_primitive_root ζ (2 ^ k))
308
+ (hk : 2 ≤ k) [is_cyclotomic_extension {2 ^ k} K L] (hirr : irreducible (cyclotomic (2 ^ k) K)) :
277
309
norm K (ζ - 1 ) = 2 :=
278
310
begin
279
311
haveI : ne_zero (((2 ^ k : ℕ+) : ℕ) : K),
@@ -298,17 +330,17 @@ namespace is_cyclotomic_extension
298
330
299
331
open is_primitive_root
300
332
301
- /-- If `K` is linearly ordered (in particular for `K = ℚ`), the norm of `zeta n K L` is `1`
333
+ variables {K} (L) [field K] [field L] [algebra K L] [ne_zero ((n : ℕ) : K)]
334
+
335
+ /-- If `irreducible (cyclotomic n K)` (in particular for `K = ℚ`), the norm of `zeta n K L` is `1`
302
336
if `n` is odd. -/
303
- lemma norm_zeta_eq_one (K : Type u) [linear_ordered_field K ] (L : Type v) [field L] [algebra K L]
304
- [is_cyclotomic_extension {n} K L] (hodd : odd (n : ℕ )) : norm K (zeta n K L) = 1 :=
337
+ lemma norm_zeta_eq_one [is_cyclotomic_extension {n} K L ] (hn : n ≠ 2 )
338
+ (hirr : irreducible (cyclotomic n K )) : norm K (zeta n K L) = 1 :=
305
339
begin
306
340
haveI := ne_zero.of_no_zero_smul_divisors K L n,
307
- exact norm_eq_one K (zeta_primitive_root n K L) hodd ,
341
+ exact norm_eq_one (zeta_primitive_root n K L) hn hirr ,
308
342
end
309
343
310
- variables {K} (L) [field K] [field L] [algebra K L] [ne_zero ((n : ℕ) : K)]
311
-
312
344
/-- If `is_prime_pow (n : ℕ)`, `n ≠ 2` and `irreducible (cyclotomic n K)` (in particular for
313
345
`K = ℚ`), then the norm of `zeta n K L - 1` is `(n : ℕ).min_fac`. -/
314
346
lemma is_prime_pow_norm_zeta_sub_one (hn : is_prime_pow (n : ℕ))
@@ -333,7 +365,7 @@ begin
333
365
{ refine ⟨λ hzero, _⟩,
334
366
rw [pow_coe] at hzero,
335
367
simpa [ne_zero.ne ((p : ℕ) : L)] using hzero },
336
- exact prime_ne_two_pow_sub_one_norm (zeta_primitive_root _ K L) hirr h,
368
+ exact sub_one_norm_prime_ne_two (zeta_primitive_root _ K L) hirr h,
337
369
end
338
370
339
371
/-- If `irreducible (cyclotomic p K)` (in particular for `K = ℚ`) and `p` is an odd prime,
0 commit comments