Documentation

TauCeti.Algebra.Module.ZLattice.GaussSum

Gauss sums of an even lattice #

Let L be an even lattice in a real inner product space E, write e(x) = exp (2 π i x), and let c be a natural number. For a : ℤ the Gauss sum of L is the finite sum

G_L(a, c) = ∑_{y ∈ L / cL} e(a ‖y‖² / (2c)),

and for m in the dual lattice L^∨ the twisted Gauss sum is

G_L(a, c; m) = ∑_{y ∈ L / cL} e(a ‖y‖² / (2c) + ⟪y, m⟫ / c).

The summand is a function on the quotient L / cL because L is even and m ∈ L^∨: replacing y by y + c w with w ∈ L changes the argument of e by a ⟪y, w⟫ + a c ‖w‖² / 2 + ⟪w, m⟫ ∈ ℤ. Both hypotheses are needed: on the odd lattice ℤ ⊆ ℝ, with a = c = 1 and m = 0, the representatives 0 and 1 of the single class of ℤ / ℤ give e(0) = 1 and e(1/2) = -1. They are therefore arguments of the summand ZLattice.gaussTerm: the evenness of L as a proof, and m as an element of L^∨ rather than of E. Here cL is the lattice (c : ℝ) • L, read in L through Submodule.submoduleOf, so that the classes of L / cL are those used to split a theta series of L into theta series of translates of cL. For a full lattice of rank n and c ≠ 0 the quotient is finite of order c ^ n (ZLattice.card_quotient_smul_submoduleOf).

These sums are the arithmetic input to the transformation law of the theta series of an even lattice under Γ₀(N), where N = ZLattice.level L is the level of L: the least N > 0 with N ‖x‖² ∈ 2ℤ for every x ∈ L^∨. Splitting L into classes modulo c expresses the theta series at a cusp a / c through the twisted Gauss sums, and two facts proved here reduce them to the untwisted sum. For a multiple c of the level, G_L(a, c; m) vanishes unless m ∈ L, by the shift y ↦ y + c w, w ∈ L^∨, which multiplies the sum by e(⟪w, m⟫); and for m ∈ L and a d ≡ 1 (mod c), completing the square gives G_L(a, c; m) = e(-a d² ‖m‖² / (2c)) G_L(a, c).

The reciprocity law for these sums exchanges the modulus and the coefficient and passes to the dual lattice: its other side is the sum

∑_{y ∈ L^∨ / cL} e(a ‖y‖² / (2c))

over the classes of L^∨ modulo cL, again well defined because L is even. For an integral full lattice of rank n and c ≠ 0 the quotient L^∨ / cL is finite with cⁿ |L^∨ / L| = cⁿ det L elements (ZLattice.IsIntegral.card_quotient_smul_submoduleOf_dual). When the coefficient is a multiple N b of the level, the summand is invariant under the larger lattice c L^∨, and the scaling y ↦ √N • y turns the sum into |L^∨ / L| times the Gauss sum G_{√N • L^∨}(b, c) of the Fricke partner √N • L^∨, which is again an even lattice.

At an odd modulus both sums are evaluated by the Jacobi symbol of the signed discriminant D_L = (-1)^k det L of an even lattice of rank 2k, where det L = |L^∨ / L|. In a ℤ-basis of L with Gram matrix B, the quotient L / cL is (ℤ / c)^{2k} (Module.Basis.quotientSmulEquivPiZMod) and a ‖y‖² / 2 is the quadratic form xᵀ (a B / 2) x. Since 2 is invertible modulo an odd c, G_L(a, c) is the Gauss sum of a quadratic form modulo c (Matrix.IsSymm.sum_stdAddChar_dotProduct_mulVec_eq_jacobiSym), and G_L(a, c) = (D_L / c) c^k when c is prime to a and to det L. The Fricke partner has determinant N^{2k} / det L, which differs from det L by the square (N^k / det L)², so the descent gives ∑_{y ∈ L^∨ / aL} e(t ‖y‖² / (2a)) = det L · (D_L / a) · a^k for an odd a and a multiple t of the level prime to a.

Main definitions #

Main statements #

References #

The summand #

noncomputable def ZLattice.gaussTerm {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] (L : Submodule ℤ E) (hL : IsEven L) (a : ℤ) (c : ℕ) (m : ↥(dual L)) (y : ↥L ⧸ (↑c • L).submoduleOf L) :

The summand e(a ‖y‖² / (2c) + ⟪y, m⟫ / c) of the twisted Gauss sums of an even lattice L, as a function of the class y ∈ L / cL. It is well defined because L is even and m ∈ L^∨; both are therefore arguments.

Instances For
    @[simp]
    theorem ZLattice.gaussTerm_mk {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) (m : ↥(dual L)) (v : ↥L) :
    gaussTerm L hL a c m (Submodule.Quotient.mk v) = Complex.exp (2 * ↑Real.pi * Complex.I * ↑((↑a * ‖↑v‖ ^ 2 / 2 + inner ℝ ↑v ↑m) / ↑c))

    The Gauss summand of the class of v ∈ L is e((a ‖v‖² / 2 + ⟪v, m⟫) / c).

    @[simp]
    theorem ZLattice.norm_gaussTerm {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) (m : ↥(dual L)) (y : ↥L ⧸ (↑c • L).submoduleOf L) :
    ‖gaussTerm L hL a c m y‖ = 1

    The Gauss summand has absolute value 1.

    Gauss sums #

    noncomputable def ZLattice.gaussSumTwisted {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] (L : Submodule ℤ E) (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (m : ↥(dual L)) :

    The twisted Gauss sum G_L(a, c; m) = ∑_{y ∈ L / cL} e(a ‖y‖² / (2c) + ⟪y, m⟫ / c) of an even lattice L, for m ∈ L^∨. The quotient L / cL is finite for a full lattice and c ≠ 0.

    Instances For
      noncomputable def ZLattice.gaussSum {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] (L : Submodule ℤ E) (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] :

      The Gauss sum G_L(a, c) = ∑_{y ∈ L / cL} e(a ‖y‖² / (2c)) of an even lattice L.

      Instances For
        theorem ZLattice.gaussSumTwisted_def {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (m : ↥(dual L)) :
        gaussSumTwisted L hL a c m = ∑ y : ↥L ⧸ (↑c • L).submoduleOf L, gaussTerm L hL a c m y
        theorem ZLattice.gaussSum_def {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] :
        gaussSum L hL a c = ∑ y : ↥L ⧸ (↑c • L).submoduleOf L, gaussTerm L hL a c 0 y
        theorem ZLattice.norm_gaussSumTwisted_le {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (m : ↥(dual L)) :
        ‖gaussSumTwisted L hL a c m‖ ≤ ↑(Fintype.card (↥L ⧸ (↑c • L).submoduleOf L))

        The twisted Gauss sum is bounded by the number of classes of L / cL.

        @[simp]
        theorem ZLattice.gaussSumTwisted_zero {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] :
        gaussSumTwisted L hL a c 0 = gaussSum L hL a c

        The twisted Gauss sum at m = 0 is the Gauss sum.

        theorem ZLattice.gaussTerm_eq_of_modEq {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) {a a' : ℤ} {c : ℕ} (h : a ≡ a' [ZMOD ↑c]) (m : ↥(dual L)) (y : ↥L ⧸ (↑c • L).submoduleOf L) :
        gaussTerm L hL a c m y = gaussTerm L hL a' c m y

        The Gauss summand depends on a only modulo c, because ‖y‖² / 2 ∈ ℤ on the even lattice L.

        theorem ZLattice.gaussSumTwisted_eq_of_modEq {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) {a a' : ℤ} {c : ℕ} (h : a ≡ a' [ZMOD ↑c]) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (m : ↥(dual L)) :
        gaussSumTwisted L hL a c m = gaussSumTwisted L hL a' c m

        The twisted Gauss sums depend on a only modulo c.

        theorem ZLattice.gaussSum_eq_of_modEq {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) {a a' : ℤ} {c : ℕ} (h : a ≡ a' [ZMOD ↑c]) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] :
        gaussSum L hL a c = gaussSum L hL a' c

        The Gauss sums depend on a only modulo c.

        @[simp]
        theorem ZLattice.gaussSumTwisted_one {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) [Fintype (↥L ⧸ (↑1 • L).submoduleOf L)] (m : ↥(dual L)) :
        gaussSumTwisted L hL a 1 m = 1

        For c = 1 the quotient L / cL is trivial and the twisted Gauss sum is 1.

        @[simp]
        theorem ZLattice.gaussSum_one {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) [Fintype (↥L ⧸ (↑1 • L).submoduleOf L)] :
        gaussSum L hL a 1 = 1

        For c = 1 the Gauss sum is 1.

        Invariance under isometries #

        theorem ZLattice.gaussSumTwisted_comap {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [NormedAddCommGroup F] [InnerProductSpace ℝ F] {L : Submodule ℤ E} (hL : IsEven L) (e : F ≃ₗᵢ[ℝ] E) (hL' : IsEven (ZLattice.comap ℝ L ↑e.toLinearEquiv)) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] [Fintype (↥(ZLattice.comap ℝ L ↑e.toLinearEquiv) ⧸ (↑c • ZLattice.comap ℝ L ↑e.toLinearEquiv).submoduleOf (ZLattice.comap ℝ L ↑e.toLinearEquiv))] {m' : ↥(dual (ZLattice.comap ℝ L ↑e.toLinearEquiv))} {m : ↥(dual L)} (hm : ↑m = e ↑m') :

        The twisted Gauss sums are invariant under linear isometry equivalences: pulling L back along e and the twisting vector along with it does not change G_L(a, c; m).

        The Gauss sums are invariant under linear isometry equivalences.

        Orthogonal direct sums #

        theorem ZLattice.gaussSumTwisted_orthSum {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [NormedAddCommGroup F] [InnerProductSpace ℝ F] {L : Submodule ℤ E} (hL : IsEven L) {M : Submodule ℤ F} (hM : IsEven M) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] [Fintype (↥M ⧸ (↑c • M).submoduleOf M)] [Fintype (↥(orthSum L M) ⧸ (↑c • orthSum L M).submoduleOf (orthSum L M))] {m : ↥(dual (orthSum L M))} {m₁ : ↥(dual L)} {m₂ : ↥(dual M)} (hm : ↑m = WithLp.toLp 2 (↑m₁, ↑m₂)) :
        gaussSumTwisted (orthSum L M) ⋯ a c m = gaussSumTwisted L hL a c m₁ * gaussSumTwisted M hM a c m₂

        The twisted Gauss sums are multiplicative under orthogonal direct sums: for m ∈ (L ⊕ M)^∨ with components m₁ ∈ L^∨ and m₂ ∈ M^∨, G_{L ⊕ M}(a, c; m) = G_L(a, c; m₁) G_M(a, c; m₂).

        theorem ZLattice.gaussSum_orthSum {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [NormedAddCommGroup F] [InnerProductSpace ℝ F] {L : Submodule ℤ E} (hL : IsEven L) {M : Submodule ℤ F} (hM : IsEven M) (a : ℤ) (c : ℕ) [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] [Fintype (↥M ⧸ (↑c • M).submoduleOf M)] [Fintype (↥(orthSum L M) ⧸ (↑c • orthSum L M).submoduleOf (orthSum L M))] :
        gaussSum (orthSum L M) ⋯ a c = gaussSum L hL a c * gaussSum M hM a c

        The Gauss sums are multiplicative under orthogonal direct sums: G_{L ⊕ M}(a, c) = G_L(a, c) G_M(a, c).

        Vanishing and completing the square #

        theorem ZLattice.gaussSumTwisted_eq_zero {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) [FiniteDimensional ℝ E] [DiscreteTopology ↥L] [IsZLattice ℝ L] (a : ℤ) {c : ℕ} [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (hc : level L ∣ c) {m : ↥(dual L)} (hm : ↑m ∉ L) :
        gaussSumTwisted L hL a c m = 0

        For a multiple c of the level of L, that is, c ‖x‖² ∈ 2ℤ for every x ∈ L^∨, the twisted Gauss sum G_L(a, c; m) vanishes unless m ∈ L. Indeed c • L^∨ ≤ L, and shifting the summation variable by c w, w ∈ L^∨, multiplies the sum by e(⟪w, m⟫); as L = (L^∨)^∨, some w ∈ L^∨ has ⟪w, m⟫ ∉ ℤ when m ∉ L.

        theorem ZLattice.gaussSumTwisted_eq_of_mem {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) {a d : ℤ} {c : ℕ} [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (had : a * d ≡ 1 [ZMOD ↑c]) {m : ↥(dual L)} (hm : ↑m ∈ L) :
        gaussSumTwisted L hL a c m = Complex.exp (-(2 * ↑Real.pi * Complex.I * ↑(↑a * ↑d ^ 2 * ‖↑m‖ ^ 2 / (2 * ↑c)))) * gaussSum L hL a c

        Completing the square. For m ∈ L and a d ≡ 1 (mod c), the twisted Gauss sum is a multiple of the untwisted one: G_L(a, c; m) = e(-a d² ‖m‖² / (2c)) G_L(a, c). The shift y ↦ y + d m turns e(a ‖y‖² / (2c)) into e(a d² ‖m‖² / (2c)) times the twisted summand.

        Gauss sums over L^∨ / cL #

        noncomputable def ZLattice.dualGaussTerm {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] (L : Submodule ℤ E) (hL : IsEven L) (a : ℤ) (c : ℕ) (y : ↥(dual L) ⧸ (↑c • L).submoduleOf (dual L)) :

        The summand e(a ‖y‖² / (2c)) of the Gauss sums of an even lattice L over L^∨ / cL, as a function of the class y. It is well defined because L is even: replacing y ∈ L^∨ by y + c w with w ∈ L changes the argument of e by the integer a ⟪y, w⟫ + a c ‖w‖² / 2.

        Instances For
          @[simp]
          theorem ZLattice.dualGaussTerm_mk {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) (v : ↥(dual L)) :
          dualGaussTerm L hL a c (Submodule.Quotient.mk v) = Complex.exp (2 * ↑Real.pi * Complex.I * ↑(↑a * ‖↑v‖ ^ 2 / (2 * ↑c)))

          The dual Gauss summand of the class of v ∈ L^∨ is e(a ‖v‖² / (2c)).

          noncomputable def ZLattice.dualGaussSum {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] (L : Submodule ℤ E) (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥(dual L) ⧸ (↑c • L).submoduleOf (dual L))] :

          The Gauss sum ∑_{y ∈ L^∨ / cL} e(a ‖y‖² / (2c)) of an even lattice L over the classes of its dual lattice modulo cL. For a full lattice of rank n and c ≠ 0 the quotient is finite of order cⁿ |L^∨ / L| (ZLattice.IsIntegral.card_quotient_smul_submoduleOf_dual).

          Instances For
            theorem ZLattice.dualGaussSum_def {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥(dual L) ⧸ (↑c • L).submoduleOf (dual L))] :
            dualGaussSum L hL a c = ∑ y : ↥(dual L) ⧸ (↑c • L).submoduleOf (dual L), dualGaussTerm L hL a c y
            theorem ZLattice.dualGaussSum_one {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) [Fintype (↥(dual L) ⧸ (↑1 • L).submoduleOf (dual L))] [Fintype (DiscriminantGroup L)] (f : DiscriminantGroup L → ℂ) (hf : ∀ (v : ↥(dual L)), f (Submodule.Quotient.mk v) = Complex.exp (2 * ↑Real.pi * Complex.I * ↑(↑a * ‖↑v‖ ^ 2 / 2))) :
            dualGaussSum L hL a 1 = ∑ γ : DiscriminantGroup L, f γ

            For c = 1 the Gauss sum over L^∨ / cL is the sum ∑_{γ ∈ L^∨ / L} e(a ‖γ‖² / 2) over the discriminant group, computed with any function f on L^∨ / L taking the value e(a ‖v‖² / 2) at the class of each v ∈ L^∨.

            @[simp]
            theorem ZLattice.conj_dualGaussSum {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) (a : ℤ) (c : ℕ) [Fintype (↥(dual L) ⧸ (↑c • L).submoduleOf (dual L))] :
            (starRingEnd ℂ) (dualGaussSum L hL a c) = dualGaussSum L hL (-a) c

            Complex conjugation negates the coefficient of the Gauss sum over L^∨ / cL: conj (∑_y e(a ‖y‖² / (2c))) = ∑_y e(-a ‖y‖² / (2c)).

            theorem ZLattice.dualGaussSum_level_mul {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) [FiniteDimensional ℝ E] [DiscreteTopology ↥L] [IsZLattice ℝ L] (b : ℤ) (c : ℕ) [Fintype (↥(dual L) ⧸ (↑c • L).submoduleOf (dual L))] [Fintype (↥(√↑(level L) • dual L) ⧸ (↑c • √↑(level L) • dual L).submoduleOf (√↑(level L) • dual L))] :
            dualGaussSum L hL (↑(level L) * b) c = ↑(Nat.card (DiscriminantGroup L)) * gaussSum (√↑(level L) • dual L) ⋯ b c

            Descent to the Fricke partner. Let L be an even full lattice of level N. For a coefficient N b divisible by the level, the Gauss sum over L^∨ / cL is |L^∨ / L| times the Gauss sum of the Fricke partner √N • L^∨: ∑_{y ∈ L^∨ / cL} e(N b ‖y‖² / (2c)) = |L^∨ / L| · G_{√N • L^∨}(b, c). Here |L^∨ / L| = det L (ZLattice.IsIntegral.det_eq_card_discriminantGroup), and the right side is a sum over L^∨ / c L^∨, read on the scaled lattice √N • L^∨.

            The trivial dual Gauss sum. Let L be an even full lattice of rank n and level N. If a N divides t, then every summand e(t ‖y‖² / (2a)) is 1, since N ‖y‖² / 2 ∈ ℤ for y ∈ L^∨, and the Gauss sum over L^∨ / aL is its number of classes: ∑_{y ∈ L^∨ / aL} e(t ‖y‖² / (2a)) = aⁿ |L^∨ / L|.

            Evaluation at an odd modulus #

            theorem ZLattice.IsEven.gaussSum_eq_jacobiSym {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) [FiniteDimensional ℝ E] [DiscreteTopology ↥L] [IsZLattice ℝ L] {k : ℕ} (hk : Module.finrank ℝ E = 2 * k) {a : ℤ} {c : ℕ} [Fintype (↥L ⧸ (↑c • L).submoduleOf L)] (hc : Odd c) (ha : IsCoprime a ↑c) (hdet : IsCoprime ↑(Nat.card (DiscriminantGroup L)) ↑c) :
            gaussSum L hL a c = ↑(jacobiSym ((-1) ^ k * ↑(Nat.card (DiscriminantGroup L))) c) * ↑c ^ k

            Gauss sums of an even lattice at an odd modulus. Let L be an even full lattice of even rank 2k, and c an odd modulus prime to a and to det L = |L^∨ / L|. With the Jacobi symbol (· / c), G_L(a, c) = ∑_{y ∈ L / cL} e(a ‖y‖² / (2c)) = ((-1)^k det L / c) c^k.

            theorem ZLattice.IsEven.dualGaussSum_eq_jacobiSym {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace ℝ E] {L : Submodule ℤ E} (hL : IsEven L) [FiniteDimensional ℝ E] [DiscreteTopology ↥L] [IsZLattice ℝ L] {k : ℕ} (hk : Module.finrank ℝ E = 2 * k) {t : ℤ} {a : ℕ} [Fintype (↥(dual L) ⧸ (↑a • L).submoduleOf (dual L))] (ha : Odd a) (hN : ↑(level L) ∣ t) (ht : IsCoprime t ↑a) :
            dualGaussSum L hL t a = ↑(Nat.card (DiscriminantGroup L)) * ↑(jacobiSym ((-1) ^ k * ↑(Nat.card (DiscriminantGroup L))) a) * ↑a ^ k

            The dual Gauss sum at an odd modulus. Let L be an even full lattice of even rank 2k and level N, a an odd modulus, and t a multiple of N prime to a. With the Jacobi symbol (· / a) and the signed discriminant D_L = (-1)^k det L, where det L = |L^∨ / L|, ∑_{y ∈ L^∨ / aL} e(t ‖y‖² / (2a)) = det L · (D_L / a) · a^k. At t = -c, for a multiple c of the level prime to a, this evaluates the side over L^∨ / aL of the reciprocity law for the Gauss sums G_L(a, c).