Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -5686,6 +5686,7 @@ public import Mathlib.NumberTheory.LSeries.ZMod
public import Mathlib.NumberTheory.LSeries.ZetaZeros
public import Mathlib.NumberTheory.LegendreSymbol.AddCharacter
public import Mathlib.NumberTheory.LegendreSymbol.Basic
public import Mathlib.NumberTheory.LegendreSymbol.Complex
public import Mathlib.NumberTheory.LegendreSymbol.GaussEisensteinLemmas
public import Mathlib.NumberTheory.LegendreSymbol.JacobiSymbol
public import Mathlib.NumberTheory.LegendreSymbol.QuadraticChar.Basic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ Authors: David Loeffler
-/
module

public import Mathlib.Analysis.Complex.Polynomial.Basic
public import Mathlib.Analysis.SpecialFunctions.Complex.Circle
public import Mathlib.NumberTheory.LegendreSymbol.AddCharacter
public import Mathlib.RingTheory.RootsOfUnity.AlgebraicallyClosed
public import Mathlib.Topology.Instances.AddCircle.Real

/-!
# Additive characters valued in the unit circle
Expand Down
23 changes: 1 addition & 22 deletions Mathlib/NumberTheory/LegendreSymbol/AddCharacter.lean
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ public import Mathlib.NumberTheory.Cyclotomic.PrimitiveRoots
public import Mathlib.FieldTheory.Finite.Trace
public import Mathlib.Algebra.Group.AddChar
public import Mathlib.Data.ZMod.Units
public import Mathlib.Analysis.Complex.Polynomial.Basic

/-!
# Additive characters of finite rings and fields
Expand Down Expand Up @@ -40,6 +39,7 @@ additive character

@[expose] public section

assert_not_exists MeasureTheory.integral

universe u v

Expand Down Expand Up @@ -291,25 +291,4 @@ lemma starComp_apply (hR : 0 < ringChar R) {φ : AddChar R ℂ} (a : R) :

end Ring

section Field

variable (F : Type*) [Field F] [Finite F]

private lemma ringChar_ne : ringChar ℂ ≠ ringChar F := by
simpa only [ringChar.eq_zero] using (CharP.ringChar_ne_zero_of_finite F).symm

/-- A primitive additive character on the finite field `F` with values in `ℂ`. -/
noncomputable def FiniteField.primitiveChar_to_Complex : AddChar F ℂ := by
letI ch := primitiveChar F ℂ <| by exact ringChar_ne F
refine MonoidHom.compAddChar ?_ ch.char
exact (IsCyclotomicExtension.algEquiv {(ch.n : ℕ)} ℂ (CyclotomicField ch.n ℂ) ℂ).toMonoidHom

lemma FiniteField.primitiveChar_to_Complex_isPrimitive :
(primitiveChar_to_Complex F).IsPrimitive := by
refine IsPrimitive.compMulHom_of_isPrimitive (PrimitiveAddChar.prim _) ?_
let nn := (primitiveChar F ℂ <| ringChar_ne F).n
exact (IsCyclotomicExtension.algEquiv {(nn : ℕ)} ℂ (CyclotomicField nn ℂ) ℂ).injective

end Field

end AddChar
42 changes: 42 additions & 0 deletions Mathlib/NumberTheory/LegendreSymbol/Complex.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/-
Copyright (c) 2022 Michael Stoll. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Michael Stoll
-/
module

public import Mathlib.Analysis.Complex.Polynomial.Basic
Comment thread
b-mehta marked this conversation as resolved.
public import Mathlib.NumberTheory.LegendreSymbol.AddCharacter

/-!
# Additive characters on finite fields

We construct a primitive additive character on a finite field `F` with values in `ℂ`.
This file is kept separate from `Mathlib.NumberTheory.LegendreSymbol.AddCharacter` to avoid
importing the fundamental theorem of algebra and Bochner integral into that file.
-/

Comment thread
b-mehta marked this conversation as resolved.
namespace AddChar

section Field

variable (F : Type*) [Field F] [Finite F]

lemma ringChar_ne : ringChar ℂ ≠ ringChar F := by
simpa only [ringChar.eq_zero] using (CharP.ringChar_ne_zero_of_finite F).symm

/-- A primitive additive character on the finite field `F` with values in `ℂ`. -/
public noncomputable def FiniteField.primitiveChar_to_Complex : AddChar F ℂ := by
letI ch := primitiveChar F ℂ <| by exact ringChar_ne F
refine MonoidHom.compAddChar ?_ ch.char
exact (IsCyclotomicExtension.algEquiv {(ch.n : ℕ)} ℂ (CyclotomicField ch.n ℂ) ℂ).toMonoidHom

public lemma FiniteField.primitiveChar_to_Complex_isPrimitive :
(primitiveChar_to_Complex F).IsPrimitive := by
refine IsPrimitive.compMulHom_of_isPrimitive (PrimitiveAddChar.prim _) ?_
let nn := (primitiveChar F ℂ <| ringChar_ne F).n
exact (IsCyclotomicExtension.algEquiv {(nn : ℕ)} ℂ (CyclotomicField nn ℂ) ℂ).injective

end Field

end AddChar
Loading