Documentation

Mathlib.NumberTheory.DirichletCharacter.Basic

Dirichlet Characters #

Let R be a commutative monoid with zero. A Dirichlet character χ of level n over R is a multiplicative character from ZMod n to R sending non-units to 0. We then obtain some properties of toUnitHom χ, the restriction of χ to a group homomorphism (ZMod n)ˣ →* Rˣ.

Main definitions:

Tags #

dirichlet character, multiplicative character

Definitions #

@[reducible, inline]
abbrev DirichletCharacter (R : Type u_1) [CommMonoidWithZero R] (n : ) :
Type u_1

The type of Dirichlet characters of level n.

Instances For
    theorem DirichletCharacter.toUnitHom_eq_char' {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {a : ZMod n} (ha : IsUnit a) :
    χ a = ((MulChar.toUnitHom χ) ha.unit)
    theorem DirichletCharacter.eval_modulus_sub {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) (x : ZMod n) :
    χ (n - x) = χ (-x)

    Changing levels #

    noncomputable def DirichletCharacter.changeLevel {R : Type u_1} [CommMonoidWithZero R] {n m : } (hm : n m) :

    A function that modifies the level of a Dirichlet character to some multiple of its original level.

    Instances For
      theorem DirichletCharacter.changeLevel_injective {R : Type u_1} [CommMonoidWithZero R] {n m : } [NeZero m] (hm : n m) :
      Function.Injective (changeLevel hm)

      The changeLevel map is injective (except in the degenerate case m = 0).

      @[simp]
      theorem DirichletCharacter.changeLevel_eq_one_iff {R : Type u_1} [CommMonoidWithZero R] {n m : } {χ : DirichletCharacter R n} (hm : n m) [NeZero m] :
      (changeLevel hm) χ = 1 χ = 1
      @[simp]
      theorem DirichletCharacter.changeLevel_self {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) :
      (changeLevel ) χ = χ
      theorem DirichletCharacter.changeLevel_trans {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {m d : } (hm : n m) (hd : m d) :
      (changeLevel ) χ = (changeLevel hd) ((changeLevel hm) χ)
      theorem DirichletCharacter.changeLevel_eq_cast_of_dvd {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {m : } (hm : n m) (a : (ZMod m)ˣ) :
      ((changeLevel hm) χ) a = χ (↑a).cast
      def DirichletCharacter.FactorsThrough {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) (d : ) :

      χ of level n factors through a Dirichlet character χ₀ of level d if d ∣ n and χ₀ = χ ∘ (ZMod n → ZMod d).

      Instances For
        theorem DirichletCharacter.changeLevel_factorsThrough {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {m : } (hm : n m) :
        theorem DirichletCharacter.FactorsThrough.dvd {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} {d : } (h : χ.FactorsThrough d) :
        d n

        The fact that d divides n when χ factors through a Dirichlet character at level d

        noncomputable def DirichletCharacter.FactorsThrough.χ₀ {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} {d : } (h : χ.FactorsThrough d) :

        The Dirichlet character at level d through which χ factors

        Instances For
          theorem DirichletCharacter.FactorsThrough.eq_changeLevel {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} {d : } (h : χ.FactorsThrough d) :
          χ = (changeLevel ) h.χ₀

          The fact that χ factors through χ₀ of level d

          theorem DirichletCharacter.FactorsThrough.existsUnique {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} {d : } [NeZero n] (h : χ.FactorsThrough d) :
          ∃! χ' : DirichletCharacter R d, χ = (changeLevel ) χ'

          The character of level d through which χ factors is uniquely determined.

          theorem DirichletCharacter.factorsThrough_iff_ker_unitsMap {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} {d : } [NeZero n] (hd : d n) :

          A Dirichlet character χ factors through d | n iff its associated unit-group hom is trivial on the kernel of ZMod.unitsMap.

          theorem DirichletCharacter.factorsThrough_gcd {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {m : } [NeZero n] (ψ : DirichletCharacter R m) (h : (changeLevel ) χ = (changeLevel ) ψ) :
          χ.FactorsThrough (n.gcd m)

          Let χ and ψ be Dirichlet characters of level n and m respectively. Assume that they agree at level n * m. Then χ factors through gcd(n, m).

          Edge cases #

          theorem DirichletCharacter.level_one' {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) (hn : n = 1) :
          χ = 1
          @[implicit_reducible]
          theorem DirichletCharacter.map_zero' {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) (hn : n 1) :
          χ 0 = 0

          A Dirichlet character of modulus ≠ 1 maps 0 to 0.

          theorem DirichletCharacter.changeLevel_one {R : Type u_1} [CommMonoidWithZero R] {n d : } (h : d n) :
          (changeLevel h) 1 = 1

          The conductor #

          The set of natural numbers d such that χ factors through a character of level d.

          Instances For
            theorem DirichletCharacter.mem_conductorSet_dvd {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {x : } (hx : x χ.conductorSet) :
            x n
            noncomputable def DirichletCharacter.conductor {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) :

            The minimum natural number level n through which χ factors.

            Instances For
              theorem DirichletCharacter.conductor_ne_zero {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) (hn : n 0) :
              χ.conductor 0
              theorem DirichletCharacter.conductor_one {R : Type u_1} [CommMonoidWithZero R] {n : } (hn : n 0) :
              conductor 1 = 1

              The conductor of the trivial character is 1.

              theorem DirichletCharacter.eq_one_iff_conductor_eq_one {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} (hn : n 0) :
              χ = 1 χ.conductor = 1
              theorem DirichletCharacter.conductor_le_conductor_mem_conductorSet {R : Type u_1} [CommMonoidWithZero R] {n : } {χ : DirichletCharacter R n} {d : } (hd : d χ.conductorSet) :
              χ.conductor (Classical.choose ).conductor

              A character is primitive if its level is equal to its conductor.

              Instances For

                The primitive character associated to a Dirichlet character.

                Instances For
                  theorem DirichletCharacter.conductor_dvd_of_mem_conductorSet {R : Type u_1} [CommMonoidWithZero R] {n : } (χ : DirichletCharacter R n) {d : } (hn : n 0) (hd : d χ.conductorSet) :
                  χ.conductor d
                  noncomputable def DirichletCharacter.mul {R : Type u_1} [CommMonoidWithZero R] {n m : } (χ₁ : DirichletCharacter R n) (χ₂ : DirichletCharacter R m) :
                  DirichletCharacter R (n.lcm m)

                  Dirichlet character associated to multiplication of Dirichlet characters, after changing both levels to the same

                  Instances For
                    noncomputable def DirichletCharacter.primitive_mul {R : Type u_1} [CommMonoidWithZero R] {n m : } (χ₁ : DirichletCharacter R n) (χ₂ : DirichletCharacter R m) :

                    Primitive character associated to multiplication of Dirichlet characters, after changing both levels to the same

                    Instances For
                      def DirichletCharacter.Odd {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) :

                      A Dirichlet character is odd if its value at -1 is -1.

                      Instances For
                        def DirichletCharacter.Even {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) :

                        A Dirichlet character is even if its value at -1 is 1.

                        Instances For
                          theorem DirichletCharacter.not_even_and_odd {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) [NeZero 2] :
                          ¬(ψ.Even ψ.Odd)
                          theorem DirichletCharacter.Even.not_odd {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) [NeZero 2] ( : ψ.Even) :
                          ¬ψ.Odd
                          theorem DirichletCharacter.Odd.not_even {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) [NeZero 2] ( : ψ.Odd) :
                          ¬ψ.Even
                          theorem DirichletCharacter.Odd.toUnitHom_eval_neg_one {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) ( : ψ.Odd) :
                          (MulChar.toUnitHom ψ) (-1) = -1
                          theorem DirichletCharacter.Odd.eval_neg {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) (x : ZMod m) ( : ψ.Odd) :
                          ψ (-x) = -ψ x
                          theorem DirichletCharacter.Even.eval_neg {S : Type u_2} [CommRing S] {m : } (ψ : DirichletCharacter S m) (x : ZMod m) ( : ψ.Even) :
                          ψ (-x) = ψ x
                          theorem DirichletCharacter.Even.to_fun {S : Type u_2} [CommRing S] {m : } {χ : DirichletCharacter S m} ( : χ.Even) :

                          An even Dirichlet character is an even function.

                          theorem DirichletCharacter.Odd.to_fun {S : Type u_2} [CommRing S] {m : } {χ : DirichletCharacter S m} ( : χ.Odd) :

                          An odd Dirichlet character is an odd function.