Skip to content

Commit e6937e6

Browse files
committed
feat: conductor of Dirichlet character (#7320)
Co-authored-by: Michael Stoll <Michael.Stoll@uni-bayreuth.de> Co-authored-by: Moritz Firsching <firsching@google.com>
1 parent e876531 commit e6937e6

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

Mathlib/Data/ZMod/Units.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,7 @@ lemma unitsMap_comp {d : ℕ} (hm : n ∣ m) (hd : m ∣ d) :
3030
lemma unitsMap_self (n : ℕ) : unitsMap (dvd_refl n) = MonoidHom.id _ := by
3131
simp [unitsMap, castHom_self]
3232

33+
lemma IsUnit_cast_of_dvd (hm : n ∣ m) (a : Units (ZMod m)) : IsUnit ((a : ZMod m) : ZMod n) :=
34+
Units.isUnit (unitsMap hm a)
35+
3336
end ZMod

Mathlib/NumberTheory/DirichletCharacter/Basic.lean

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Main definitions:
2323
2424
## TODO
2525
26-
- definition of conductor
26+
- properties of the conductor
2727
2828
## Tags
2929
@@ -74,4 +74,44 @@ lemma changeLevel_trans {m d : ℕ} (hm : n ∣ m) (hd : m ∣ d) :
7474
changeLevel (dvd_trans hm hd) χ = changeLevel hd (changeLevel hm χ) := by
7575
simp [changeLevel_def, MonoidHom.comp_assoc, ZMod.unitsMap_comp]
7676

77+
lemma changeLevel_eq_cast_of_dvd {m : ℕ} (hm : n ∣ m) (a : Units (ZMod m)) :
78+
(changeLevel hm χ) a = χ a := by
79+
simpa [changeLevel_def, Function.comp_apply, MonoidHom.coe_comp] using
80+
toUnitHom_eq_char' _ <| ZMod.IsUnit_cast_of_dvd hm a
81+
82+
/-- `χ` of level `n` factors through a Dirichlet character `χ₀` of level `d` if `d ∣ n` and
83+
`χ₀ = χ ∘ (ZMod n → ZMod d)`. -/
84+
def FactorsThrough (d : ℕ) : Prop :=
85+
∃ (h : d ∣ n) (χ₀ : DirichletCharacter R d), χ = changeLevel h χ₀
86+
87+
namespace FactorsThrough
88+
89+
/-- The fact that `d` divides `n` when `χ` factors through a Dirichlet character at level `d` -/
90+
lemma dvd {d : ℕ} (h : FactorsThrough χ d) : d ∣ n := h.1
91+
92+
/-- The Dirichlet character at level `d` through which `χ` factors -/
93+
noncomputable
94+
def χ₀ {d : ℕ} (h : FactorsThrough χ d) : DirichletCharacter R d := Classical.choose h.2
95+
96+
/-- The fact that `χ` factors through `χ₀` of level `d` -/
97+
lemma eq_changeLevel {d : ℕ} (h : FactorsThrough χ d) : χ = changeLevel h.dvd h.χ₀ :=
98+
Classical.choose_spec h.2
99+
100+
lemma same_level : FactorsThrough χ n := ⟨dvd_refl n, χ, (changeLevel_self χ).symm⟩
101+
102+
end FactorsThrough
103+
104+
/-- The set of natural numbers for which a Dirichlet character is periodic. -/
105+
def conductorSet : Set ℕ := {x : ℕ | FactorsThrough χ x}
106+
107+
lemma mem_conductorSet_iff {x : ℕ} : x ∈ conductorSet χ ↔ FactorsThrough χ x := Iff.refl _
108+
109+
lemma level_mem_conductorSet : n ∈ conductorSet χ := FactorsThrough.same_level χ
110+
111+
lemma mem_conductorSet_dvd {x : ℕ} (hx : x ∈ conductorSet χ) : x ∣ n := hx.dvd
112+
113+
/-- The minimum natural number `n` for which a Dirichlet character is periodic.
114+
The Dirichlet character `χ` can then alternatively be reformulated on `ℤ/nℤ`. -/
115+
noncomputable def conductor : ℕ := sInf (conductorSet χ)
116+
77117
end DirichletCharacter

0 commit comments

Comments
 (0)