@@ -7,7 +7,7 @@ Author: Riccardo Brasca
7
7
import field_theory.splitting_field
8
8
import ring_theory.roots_of_unity
9
9
import algebra.polynomial.big_operators
10
- import number_theory.divisors
10
+ import number_theory.arithmetic_function
11
11
import data.polynomial.lifts
12
12
import analysis.complex.roots_of_unity
13
13
@@ -29,7 +29,9 @@ with coefficients in any ring `R`.
29
29
* `int_coeff_of_cycl` : If there is a primitive `n`-th root of unity in `K`, then `cyclotomic' n K`
30
30
comes from a polynomial with integer coefficients.
31
31
* `deg_of_cyclotomic` : The degree of `cyclotomic n` is `totient n`.
32
- * `X_pow_sub_one_eq_prod_cycl` : `X ^ n - 1 = ∏ (cyclotomic i)`, where `i` divides `n`.
32
+ * `prod_cyclotomic_eq_X_pow_sub_one` : `X ^ n - 1 = ∏ (cyclotomic i)`, where `i` divides `n`.
33
+ * `cyclotomic_eq_prod_X_pow_sub_one_pow_moebius` : The Möbius inversion formula for
34
+ `cyclotomic n R` over an abstract fraction field for `polynomial R`.
33
35
34
36
## Implementation details
35
37
@@ -408,6 +410,30 @@ begin
408
410
(λ i, cyclotomic i ℤ), integer]
409
411
end
410
412
413
+ section arithmetic_function
414
+ open nat.arithmetic_function
415
+ open_locale arithmetic_function
416
+
417
+ /-- `cyclotomic n R` can be expressed as a product in a fraction field of `polynomial R`
418
+ using Möbius inversion. -/
419
+ lemma cyclotomic_eq_prod_X_pow_sub_one_pow_moebius {n : ℕ} (hpos : 0 < n) (R : Type *) [comm_ring R]
420
+ [nontrivial R] {K : Type *} [field K] (f : fraction_map (polynomial R) K) :
421
+ f.to_map (cyclotomic n R) =
422
+ ∏ i in n.divisors_antidiagonal, (f.to_map (X ^ i.snd - 1 )) ^ μ i.fst :=
423
+ begin
424
+ have h : ∀ (n : ℕ), 0 < n →
425
+ ∏ i in nat.divisors n, f.to_map (cyclotomic i R) = f.to_map (X ^ n - 1 ),
426
+ { intros n hn,
427
+ rw [← prod_cyclotomic_eq_X_pow_sub_one hn R, ring_hom.map_prod] },
428
+ rw (prod_eq_iff_prod_pow_moebius_eq_of_nonzero (λ n hn, _) (λ n hn, _)).1 h n hpos;
429
+ rw [ne.def, fraction_map.to_map_eq_zero_iff],
430
+ { apply cyclotomic_ne_zero },
431
+ { apply monic.ne_zero,
432
+ apply monic_X_pow_sub_C _ (ne_of_gt hn) }
433
+ end
434
+
435
+ end arithmetic_function
436
+
411
437
/-- We have
412
438
`cyclotomic n R = (X ^ k - 1) /ₘ (∏ i in nat.proper_divisors k, cyclotomic i K)`. -/
413
439
lemma cyclotomic_eq_X_pow_sub_one_div {R : Type *} [comm_ring R] [nontrivial R] {n : ℕ}
0 commit comments